@@ -27,27 +27,24 @@ interface
2727 SysUtils, Classes, TypInfo,
2828 MarkdownProcessor, MarkdownUtils;
2929
30-
3130type
3231
3332 TMarkdownDaringFireball = class (TMarkdownProcessor)
3433 private
35- FConfig : TConfiguration;
34+ // Config : TConfiguration;
3635 Femitter: TEmitter;
3736 FuseExtensions: boolean;
3837 function readLines (reader : TReader): TBlock;
3938 procedure initListBlock (root: TBlock);
4039 procedure recurse (root: TBlock; listMode: boolean);
41-
4240 protected
4341 function GetUnSafe : boolean; override;
4442 procedure SetUnSafe (const value : boolean); override;
4543 public
4644 Constructor Create;
4745 Destructor Destroy; override;
4846 function process (source: String): String; override;
49- property config: TConfiguration read FConfig;
50-
47+ // property config: TConfiguration read Config;
5148 end ;
5249
5350implementation
@@ -57,20 +54,20 @@ implementation
5754constructor TMarkdownDaringFireball.Create;
5855begin
5956 inherited Create;
60- FConfig := TConfiguration.Create(true);
57+ Config := TConfiguration.Create(true);
6158 Femitter := TEmitter.Create(config);
6259end ;
6360
6461destructor TMarkdownDaringFireball.Destroy;
6562begin
66- FConfig .Free;
63+ Config .Free;
6764 Femitter.Free;
6865 inherited ;
6966end ;
7067
7168function TMarkdownDaringFireball.GetUnSafe : boolean;
7269begin
73- result := not FConfig .safeMode;
70+ result := not Config .safeMode;
7471end ;
7572
7673procedure TMarkdownDaringFireball.initListBlock (root: TBlock);
@@ -82,7 +79,7 @@ procedure TMarkdownDaringFireball.initListBlock(root: TBlock);
8279 line := line.next;
8380 while (line <> nil ) do
8481 begin
85- t := line.getLineType(FConfig );
82+ t := line.getLineType(Config );
8683 if ((t = ltOLIST) or (t = ltULIST) or (not line.isEmpty and (line.prevEmpty and (line.leading = 0 ) and not ((t = ltOLIST) or (t = ltULIST))))) then
8784 root.split(line.previous).type_ := btLIST_ITEM;
8885 line := line.next;
@@ -96,8 +93,7 @@ function TMarkdownDaringFireball.process(source: String): String;
9693 parent, block: TBlock;
9794 rdr : TReader;
9895begin
99- FuseExtensions := config.forceExtendedProfile;
100- Femitter.FuseExtensions:=config.forceExtendedProfile;
96+ FuseExtensions := Config.isDialect([mdTxtMark,mdCommonMark]);
10197 rdr := TReader.Create(source);
10298 try
10399 out_ := TStringBuilder.Create;
@@ -175,7 +171,7 @@ function TMarkdownDaringFireball.readLines(reader : TReader): TBlock;
175171 c := reader.read();
176172 end ;
177173 else
178- if (c <> ' <' ) or (not FConfig .panicMode) then
174+ if (c <> ' <' ) or (not Config .panicMode) then
179175 begin
180176 inc(position);
181177 sb.append(c);
@@ -259,8 +255,7 @@ function TMarkdownDaringFireball.readLines(reader : TReader): TBlock;
259255 if LowerCase(link) = ' extended' then
260256 begin
261257 FuseExtensions:=true;
262- Config.forceExtendedProfile:=true;
263- Femitter.FuseExtensions := true;
258+ Config.Dialect:=mdTxtMark;
264259 end ;
265260 lastLinkRef := nil ;
266261 end
@@ -324,8 +319,8 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
324319 line := root.lines;
325320 if (listMode) then
326321 begin
327- root.removeListIndent(FConfig );
328- if (FuseExtensions and (root.lines <> nil ) and (root.lines.getLineType(FConfig ) <> ltCODE)) then
322+ root.removeListIndent(Config );
323+ if (Config.isDialect([mdTxtMark]) and (root.lines <> nil ) and (root.lines.getLineType(Config ) <> ltCODE)) then
329324 root.id := root.lines.stripID();
330325 end ;
331326
@@ -336,14 +331,14 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
336331
337332 while (line <> nil ) do
338333 begin
339- type_ := line.getLineType(FConfig );
334+ type_ := line.getLineType(Config );
340335 case type_ of
341336 ltOTHER:
342337 begin
343338 wasEmpty := line.prevEmpty;
344339 while (line <> nil ) and (not line.isEmpty) do
345340 begin
346- t := line.getLineType(FConfig );
341+ t := line.getLineType(Config );
347342 if (listMode or FuseExtensions) and (t in [ltOLIST, ltULIST]) then
348343 break;
349344 if (FuseExtensions and (t in [ltCODE, ltFENCED_CODE])) then
@@ -403,7 +398,7 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
403398 begin
404399 while (line <> nil ) do
405400 begin
406- if (not line.isEmpty and (line.prevEmpty and (line.leading = 0 ) and (line.getLineType(FConfig ) <> ltBQUOTE))) then
401+ if (not line.isEmpty and (line.prevEmpty and (line.leading = 0 ) and (line.getLineType(Config ) <> ltBQUOTE))) then
407402 break;
408403 line := line.next;
409404 end ;
@@ -431,7 +426,7 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
431426 line := line.next;
432427 while (line <> nil ) do
433428 begin
434- if (line.getLineType(FConfig ) = ltFENCED_CODE) then
429+ if (line.getLineType(Config ) = ltFENCED_CODE) then
435430 break;
436431 // TODO ... is this really necessary? Maybe add a special flag?
437432 line := line.next;
@@ -446,7 +441,7 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
446441 block.type_ := btFENCED_CODE;
447442 block.meta := TUtils.getMetaFromFence(block.lines.value );
448443 block.lines.setEmpty();
449- if (block.lineTail.getLineType(FConfig ) = ltFENCED_CODE) then
444+ if (block.lineTail.getLineType(Config ) = ltFENCED_CODE) then
450445 block.lineTail.setEmpty();
451446 block.removeSurroundingEmptyLines();
452447 end ;
@@ -463,7 +458,7 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
463458 block.hlDepth := 1
464459 else
465460 block.hlDepth := 2 ;
466- if (FuseExtensions ) then
461+ if Config.isDialect([mdTxtMark] ) then
467462 block.id := block.lines.stripID();
468463 block.transfromHeadline();
469464 root.removeLeadingEmptyLines();
@@ -473,7 +468,7 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
473468 begin
474469 while (line <> nil ) do
475470 begin
476- t := line.getLineType(FConfig );
471+ t := line.getLineType(Config );
477472 if (not line.isEmpty and (line.prevEmpty and (line.leading = 0 ) and (not (t = type_)))) then
478473 break;
479474 line := line.next;
@@ -508,7 +503,7 @@ procedure TMarkdownDaringFireball.recurse(root: TBlock; listMode: boolean);
508503
509504procedure TMarkdownDaringFireball.SetUnSafe (const value : boolean);
510505begin
511- FConfig .safeMode := not value ;
506+ Config .safeMode := not value ;
512507end ;
513508
514509end .
0 commit comments