• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

A Markdown shard for the Crystal programming language


Commit MetaInfo

Révision2d1f5ddddd16e49486c4056f692ae3c81f408d30 (tree)
l'heure2023-04-08 11:40:34
Auteursupercell <stigma@disr...>
Commitersupercell

Message de Log

Some cleanup and fixes for Crystal 1.0.0

Change Summary

Modification

--- a/README.md
+++ b/README.md
@@ -141,7 +141,7 @@ puts Luce.to_html("nyan", inline_syntaxes: syntaxes)
141141 ## HTML sanitization
142142
143143 This package offers no features in the way of HTML sanitization.
144-Read Read Estevão Soares dos Santos's great article,
144+Read Estevão Soares dos Santos's great article,
145145 ["Markdown's XSS Vulnerability (and how to mitigate it)"](https://github.com/showdownjs/showdown/wiki/Markdown%27s-XSS-Vulnerability-(and-how-to-mitigate-it)),
146146 to learn more.
147147
--- a/src/luce/inline_parser.cr
+++ b/src/luce/inline_parser.cr
@@ -16,10 +16,6 @@ module Luce
1616 EmailAutoLinkSyntax.new,
1717 AutolinkSyntax.new,
1818 LineBreakSyntax.new,
19- # "*" surrounded by spaces is left alone
20- TextSyntax.new(%q( \* ), start_character: Charcode::SPACE),
21- # "_" surrounded by spaces is left alone
22- TextSyntax.new(%q( _ ), start_character: Charcode::SPACE),
2319 # Parse "**strong**" and "*emphasis*" tags.
2420 EmphasisSyntax.asterisk,
2521 # Parse "__strong__" and "_emphasis_" tags.
@@ -30,19 +26,13 @@ module Luce
3026 # resolver.
3127 ]
3228
33- @@html_syntaxes = [
34- # Leave already-encoded HTML entities alone. Ensures we don't
35- # turn "&amp;" into "&amp;&amp;"
36- TextSyntax.new(%q(&[#a-zA-Z0-9]*;), start_character: Charcode::AMPERSAND),
37- ] of InlineSyntax
38-
3929 # The string of Markdown being parsed
4030 getter source : String
4131
4232 # The Markdown document this parser is parsing
4333 getter document : Document
4434
45- getter syntaxes : Array(InlineSyntax) = [] of InlineSyntax
35+ getter syntaxes = [] of InlineSyntax
4636
4737 # The current read position
4838 property pos : Int32 = 0
@@ -85,8 +75,12 @@ module Luce
8575 @syntaxes.concat @@default_syntaxes
8676 end
8777
88- @syntaxes << EscapeHTMLSyntax.new if encode_html?
89- @syntaxes.concat @@html_syntaxes if encode_html?
78+ if encode_html?
79+ @syntaxes << EscapeHTMLSyntax.new
80+ # Leave already-encoded HTML entities alone. Ensures we don't turn
81+ # "&amp;" into "&amp;amp;"
82+ @syntaxes << TextSyntax.new("&[#a-zA-Z0-9]*;", start_character: Charcode::AMPERSAND)
83+ end
9084 end
9185
9286 def parse : Array(Node)
--- a/src/luce/inline_syntaxes/escape_syntax.cr
+++ b/src/luce/inline_syntaxes/escape_syntax.cr
@@ -18,14 +18,13 @@ module Luce
1818 def on_match(parser : InlineParser, match : Regex::MatchData) : Bool
1919 chars = match.match
2020
21- if %{&"<>}.includes?(match[1].not_nil!) && parser.encode_html?
22- text = Luce.escape_html(match[1].not_nil!)
23- parser.add_node(Text.new(text))
24- true
25- else
26- parser.add_node(Text.new(chars[1].to_s))
27- true
28- end
21+ text = if %{&"<>}.includes?(match[1].not_nil!) && parser.encode_html?
22+ Luce.escape_html(match[1].not_nil!)
23+ else
24+ chars[1].to_s
25+ end
26+ parser.add_node(Text.new(text))
27+ true
2928 end
3029 end
3130 end
--- a/src/luce/util.cr
+++ b/src/luce/util.cr
@@ -136,7 +136,7 @@ module Luce
136136 unless decimal_number.nil?
137137 decimal_value = Int32.new(decimal_number)
138138 hex_value = if decimal_value < 1_114_112 && decimal_value > 1
139- Int32.new(decimal_value.to_s(16), base: 16)
139+ decimal_value.to_s(16).to_i32(16)
140140 else
141141 0xFFFD
142142 end
@@ -147,7 +147,7 @@ module Luce
147147 # Hexadecimal numeric character references, see
148148 # https://spec.commonmark.org/0.30/#hexadecimal-numeric-character-references.
149149 unless hexadecimal_number.nil?
150- hex_value = Int32.new(hexadecimal_number, base: 16)
150+ hex_value = hexadecimal_number.to_i32(16)
151151 hex_value = 0xFFFd if hex_value > 0x10FFFF || hex_value == 0
152152 return hex_value.chr.to_s
153153 end
@@ -275,14 +275,14 @@ class Regex < Reference
275275 raise IndexError.new("*start* is less than 0") if start < 0
276276 raise IndexError.new("*start* is greater than *string* size") if start > string.size
277277 matches = [] of Regex::MatchData
278- offset = start
278+ offset : Int32 = start
279279
280280 loop do
281281 _match = self.match(string, offset)
282282 break if _match.nil?
283283 matches << _match
284284 # account for empty spaces
285- offset = (_match[0].size == 0 ? offset + 1 : _match.end)
285+ offset = _match.match.size == 0 ? offset + 1 : _match.end.not_nil!
286286 end
287287 matches
288288 end
--- a/tools/common_mark_stats.json
+++ b/tools/common_mark_stats.json
@@ -1,75 +1,4 @@
11 {
2- "Tabs": {
3- "1": "strict",
4- "2": "strict",
5- "3": "strict",
6- "4": "strict",
7- "5": "strict",
8- "6": "loose",
9- "7": "loose",
10- "8": "strict",
11- "9": "strict",
12- "10": "strict",
13- "11": "strict"
14- },
15- "Backslash escapes": {
16- "12": "strict",
17- "13": "strict",
18- "14": "strict",
19- "15": "strict",
20- "16": "strict",
21- "17": "strict",
22- "18": "strict",
23- "19": "strict",
24- "20": "strict",
25- "21": "strict",
26- "22": "strict",
27- "23": "strict",
28- "24": "strict"
29- },
30- "Entity and numeric character references": {
31- "25": "loose",
32- "26": "strict",
33- "27": "strict",
34- "28": "strict",
35- "29": "strict",
36- "30": "strict",
37- "31": "strict",
38- "32": "strict",
39- "33": "strict",
40- "34": "strict",
41- "35": "strict",
42- "36": "strict",
43- "37": "strict",
44- "38": "strict",
45- "39": "strict",
46- "40": "loose",
47- "41": "strict"
48- },
49- "Precedence": {
50- "42": "strict"
51- },
52- "Thematic breaks": {
53- "43": "strict",
54- "44": "strict",
55- "45": "strict",
56- "46": "strict",
57- "47": "strict",
58- "48": "strict",
59- "49": "strict",
60- "50": "strict",
61- "51": "strict",
62- "52": "strict",
63- "53": "strict",
64- "54": "strict",
65- "55": "strict",
66- "56": "strict",
67- "57": "strict",
68- "58": "strict",
69- "59": "strict",
70- "60": "strict",
71- "61": "strict"
72- },
732 "ATX headings": {
743 "62": "strict",
754 "63": "strict",
@@ -90,164 +19,41 @@
9019 "78": "strict",
9120 "79": "fail"
9221 },
93- "Setext headings": {
94- "80": "strict",
95- "81": "strict",
96- "82": "loose",
97- "83": "strict",
98- "84": "loose",
99- "85": "strict",
100- "86": "strict",
101- "87": "strict",
102- "88": "strict",
103- "89": "strict",
104- "90": "strict",
105- "91": "strict",
106- "92": "strict",
107- "93": "fail",
108- "94": "strict",
109- "95": "strict",
110- "96": "strict",
111- "97": "strict",
112- "98": "strict",
113- "99": "strict",
114- "100": "strict",
115- "101": "strict",
116- "102": "strict",
117- "103": "strict",
118- "104": "strict",
119- "105": "strict",
120- "106": "strict"
121- },
122- "Indented code blocks": {
123- "107": "strict",
124- "108": "strict",
125- "109": "strict",
126- "110": "strict",
127- "111": "fail",
128- "112": "strict",
129- "113": "strict",
130- "114": "strict",
131- "115": "strict",
132- "116": "strict",
133- "117": "loose",
134- "118": "strict"
135- },
136- "Fenced code blocks": {
137- "119": "strict",
138- "120": "strict",
139- "121": "strict",
140- "122": "strict",
141- "123": "strict",
142- "124": "strict",
143- "125": "strict",
144- "126": "strict",
145- "127": "strict",
146- "128": "strict",
147- "129": "strict",
148- "130": "strict",
149- "131": "strict",
150- "132": "strict",
151- "133": "strict",
152- "134": "strict",
153- "135": "strict",
154- "136": "strict",
155- "137": "strict",
156- "138": "strict",
157- "139": "strict",
158- "140": "strict",
159- "141": "strict",
160- "142": "strict",
161- "143": "strict",
162- "144": "strict",
163- "145": "strict",
164- "146": "strict",
165- "147": "strict"
166- },
167- "HTML blocks": {
168- "148": "fail",
169- "149": "strict",
170- "150": "strict",
171- "151": "strict",
172- "152": "fail",
173- "153": "strict",
174- "154": "strict",
175- "155": "strict",
176- "156": "strict",
177- "157": "strict",
178- "158": "strict",
179- "159": "strict",
180- "160": "strict",
181- "161": "strict",
182- "162": "strict",
183- "163": "strict",
184- "164": "strict",
185- "165": "strict",
186- "166": "strict",
187- "167": "fail",
188- "168": "strict",
189- "169": "strict",
190- "170": "strict",
191- "171": "strict",
192- "172": "strict",
193- "173": "strict",
194- "174": "fail",
195- "175": "fail",
196- "176": "strict",
197- "177": "strict",
198- "178": "strict",
199- "179": "strict",
200- "180": "strict",
201- "181": "strict",
202- "182": "strict",
203- "183": "strict",
204- "184": "strict",
205- "185": "loose",
206- "186": "strict",
207- "187": "strict",
208- "188": "fail",
209- "189": "strict",
210- "190": "strict",
211- "191": "loose"
212- },
213- "Link reference definitions": {
214- "192": "strict",
215- "193": "strict",
216- "194": "strict",
217- "195": "fail",
218- "196": "strict",
219- "197": "strict",
220- "198": "strict",
221- "199": "strict",
222- "200": "fail",
223- "201": "fail",
224- "202": "fail",
225- "203": "strict",
226- "204": "strict",
227- "205": "strict",
228- "206": "strict",
229- "207": "loose",
230- "208": "strict",
231- "209": "strict",
232- "210": "strict",
233- "211": "strict",
234- "212": "strict",
235- "213": "strict",
236- "214": "strict",
237- "215": "fail",
238- "216": "fail",
239- "217": "strict",
240- "218": "strict"
22+ "Autolinks": {
23+ "593": "strict",
24+ "594": "strict",
25+ "595": "strict",
26+ "596": "strict",
27+ "597": "strict",
28+ "598": "strict",
29+ "599": "strict",
30+ "600": "strict",
31+ "601": "strict",
32+ "602": "strict",
33+ "603": "strict",
34+ "604": "strict",
35+ "605": "strict",
36+ "606": "strict",
37+ "607": "strict",
38+ "608": "strict",
39+ "609": "strict",
40+ "610": "strict",
41+ "611": "strict"
24142 },
242- "Paragraphs": {
243- "219": "strict",
244- "220": "strict",
245- "221": "strict",
246- "222": "strict",
247- "223": "strict",
248- "224": "strict",
249- "225": "strict",
250- "226": "strict"
43+ "Backslash escapes": {
44+ "12": "strict",
45+ "13": "strict",
46+ "14": "strict",
47+ "15": "strict",
48+ "16": "strict",
49+ "17": "strict",
50+ "18": "strict",
51+ "19": "strict",
52+ "20": "strict",
53+ "21": "strict",
54+ "22": "strict",
55+ "23": "strict",
56+ "24": "strict"
25157 },
25258 "Blank lines": {
25359 "227": "strict"
@@ -279,87 +85,6 @@
27985 "251": "strict",
28086 "252": "strict"
28187 },
282- "List items": {
283- "253": "strict",
284- "254": "strict",
285- "255": "strict",
286- "256": "strict",
287- "257": "strict",
288- "258": "strict",
289- "259": "strict",
290- "260": "strict",
291- "261": "strict",
292- "262": "fail",
293- "263": "strict",
294- "264": "fail",
295- "265": "strict",
296- "266": "strict",
297- "267": "strict",
298- "268": "strict",
299- "269": "strict",
300- "270": "strict",
301- "271": "strict",
302- "272": "strict",
303- "273": "strict",
304- "274": "strict",
305- "275": "strict",
306- "276": "strict",
307- "277": "strict",
308- "278": "strict",
309- "279": "strict",
310- "280": "fail",
311- "281": "strict",
312- "282": "strict",
313- "283": "strict",
314- "284": "strict",
315- "285": "strict",
316- "286": "strict",
317- "287": "strict",
318- "288": "strict",
319- "289": "strict",
320- "290": "strict",
321- "291": "strict",
322- "292": "strict",
323- "293": "strict",
324- "294": "strict",
325- "295": "strict",
326- "296": "strict",
327- "297": "strict",
328- "298": "strict",
329- "299": "strict",
330- "300": "loose"
331- },
332- "Lists": {
333- "301": "strict",
334- "302": "strict",
335- "303": "strict",
336- "304": "fail",
337- "305": "strict",
338- "306": "fail",
339- "307": "fail",
340- "308": "loose",
341- "309": "loose",
342- "310": "strict",
343- "311": "strict",
344- "312": "strict",
345- "313": "strict",
346- "314": "strict",
347- "315": "strict",
348- "316": "strict",
349- "317": "fail",
350- "318": "fail",
351- "319": "strict",
352- "320": "strict",
353- "321": "strict",
354- "322": "strict",
355- "323": "strict",
356- "324": "strict",
357- "325": "strict",
358- "326": "strict"
359- },
360- "Inlines": {
361- "327": "strict"
362- },
36388 "Code spans": {
36489 "328": "strict",
36590 "329": "strict",
@@ -517,6 +242,189 @@
517242 "479": "strict",
518243 "480": "strict"
519244 },
245+ "Entity and numeric character references": {
246+ "25": "loose",
247+ "26": "strict",
248+ "27": "strict",
249+ "28": "strict",
250+ "29": "strict",
251+ "30": "strict",
252+ "31": "strict",
253+ "32": "strict",
254+ "33": "strict",
255+ "34": "strict",
256+ "35": "strict",
257+ "36": "strict",
258+ "37": "strict",
259+ "38": "strict",
260+ "39": "strict",
261+ "40": "loose",
262+ "41": "strict"
263+ },
264+ "Fenced code blocks": {
265+ "119": "strict",
266+ "120": "strict",
267+ "121": "strict",
268+ "122": "strict",
269+ "123": "strict",
270+ "124": "strict",
271+ "125": "strict",
272+ "126": "strict",
273+ "127": "strict",
274+ "128": "strict",
275+ "129": "strict",
276+ "130": "strict",
277+ "131": "strict",
278+ "132": "strict",
279+ "133": "strict",
280+ "134": "strict",
281+ "135": "strict",
282+ "136": "strict",
283+ "137": "strict",
284+ "138": "strict",
285+ "139": "strict",
286+ "140": "strict",
287+ "141": "strict",
288+ "142": "strict",
289+ "143": "strict",
290+ "144": "strict",
291+ "145": "strict",
292+ "146": "strict",
293+ "147": "strict"
294+ },
295+ "HTML blocks": {
296+ "148": "fail",
297+ "149": "strict",
298+ "150": "strict",
299+ "151": "strict",
300+ "152": "fail",
301+ "153": "strict",
302+ "154": "strict",
303+ "155": "strict",
304+ "156": "strict",
305+ "157": "strict",
306+ "158": "strict",
307+ "159": "strict",
308+ "160": "strict",
309+ "161": "strict",
310+ "162": "strict",
311+ "163": "strict",
312+ "164": "strict",
313+ "165": "strict",
314+ "166": "strict",
315+ "167": "fail",
316+ "168": "strict",
317+ "169": "strict",
318+ "170": "strict",
319+ "171": "strict",
320+ "172": "strict",
321+ "173": "strict",
322+ "174": "fail",
323+ "175": "fail",
324+ "176": "strict",
325+ "177": "strict",
326+ "178": "strict",
327+ "179": "strict",
328+ "180": "strict",
329+ "181": "strict",
330+ "182": "strict",
331+ "183": "strict",
332+ "184": "strict",
333+ "185": "loose",
334+ "186": "strict",
335+ "187": "strict",
336+ "188": "fail",
337+ "189": "strict",
338+ "190": "strict",
339+ "191": "loose"
340+ },
341+ "Hard line breaks": {
342+ "633": "strict",
343+ "634": "strict",
344+ "635": "strict",
345+ "636": "strict",
346+ "637": "strict",
347+ "638": "strict",
348+ "639": "strict",
349+ "640": "strict",
350+ "641": "strict",
351+ "642": "strict",
352+ "643": "strict",
353+ "644": "strict",
354+ "645": "strict",
355+ "646": "strict",
356+ "647": "strict"
357+ },
358+ "Images": {
359+ "571": "strict",
360+ "572": "strict",
361+ "573": "fail",
362+ "574": "strict",
363+ "575": "strict",
364+ "576": "strict",
365+ "577": "strict",
366+ "578": "strict",
367+ "579": "strict",
368+ "580": "strict",
369+ "581": "strict",
370+ "582": "strict",
371+ "583": "strict",
372+ "584": "strict",
373+ "585": "strict",
374+ "586": "strict",
375+ "587": "strict",
376+ "588": "strict",
377+ "589": "strict",
378+ "590": "strict",
379+ "591": "strict",
380+ "592": "strict"
381+ },
382+ "Indented code blocks": {
383+ "107": "strict",
384+ "108": "strict",
385+ "109": "strict",
386+ "110": "strict",
387+ "111": "fail",
388+ "112": "strict",
389+ "113": "strict",
390+ "114": "strict",
391+ "115": "strict",
392+ "116": "strict",
393+ "117": "loose",
394+ "118": "strict"
395+ },
396+ "Inlines": {
397+ "327": "strict"
398+ },
399+ "Link reference definitions": {
400+ "192": "strict",
401+ "193": "strict",
402+ "194": "strict",
403+ "195": "fail",
404+ "196": "strict",
405+ "197": "strict",
406+ "198": "strict",
407+ "199": "strict",
408+ "200": "fail",
409+ "201": "fail",
410+ "202": "fail",
411+ "203": "strict",
412+ "204": "strict",
413+ "205": "strict",
414+ "206": "strict",
415+ "207": "loose",
416+ "208": "strict",
417+ "209": "strict",
418+ "210": "strict",
419+ "211": "strict",
420+ "212": "strict",
421+ "213": "strict",
422+ "214": "strict",
423+ "215": "fail",
424+ "216": "fail",
425+ "217": "strict",
426+ "218": "strict"
427+ },
520428 "Links": {
521429 "481": "strict",
522430 "482": "strict",
@@ -609,50 +517,96 @@
609517 "569": "strict",
610518 "570": "strict"
611519 },
612- "Images": {
613- "571": "strict",
614- "572": "strict",
615- "573": "fail",
616- "574": "strict",
617- "575": "strict",
618- "576": "strict",
619- "577": "strict",
620- "578": "strict",
621- "579": "strict",
622- "580": "strict",
623- "581": "strict",
624- "582": "strict",
625- "583": "strict",
626- "584": "strict",
627- "585": "strict",
628- "586": "strict",
629- "587": "strict",
630- "588": "strict",
631- "589": "strict",
632- "590": "strict",
633- "591": "strict",
634- "592": "strict"
520+ "List items": {
521+ "253": "strict",
522+ "254": "strict",
523+ "255": "strict",
524+ "256": "strict",
525+ "257": "strict",
526+ "258": "strict",
527+ "259": "strict",
528+ "260": "strict",
529+ "261": "strict",
530+ "262": "fail",
531+ "263": "strict",
532+ "264": "fail",
533+ "265": "strict",
534+ "266": "strict",
535+ "267": "strict",
536+ "268": "strict",
537+ "269": "strict",
538+ "270": "strict",
539+ "271": "strict",
540+ "272": "strict",
541+ "273": "strict",
542+ "274": "strict",
543+ "275": "strict",
544+ "276": "strict",
545+ "277": "strict",
546+ "278": "strict",
547+ "279": "strict",
548+ "280": "fail",
549+ "281": "strict",
550+ "282": "strict",
551+ "283": "strict",
552+ "284": "strict",
553+ "285": "strict",
554+ "286": "strict",
555+ "287": "strict",
556+ "288": "strict",
557+ "289": "strict",
558+ "290": "strict",
559+ "291": "strict",
560+ "292": "strict",
561+ "293": "strict",
562+ "294": "strict",
563+ "295": "strict",
564+ "296": "strict",
565+ "297": "strict",
566+ "298": "strict",
567+ "299": "strict",
568+ "300": "loose"
635569 },
636- "Autolinks": {
637- "593": "strict",
638- "594": "strict",
639- "595": "strict",
640- "596": "strict",
641- "597": "strict",
642- "598": "strict",
643- "599": "strict",
644- "600": "strict",
645- "601": "strict",
646- "602": "strict",
647- "603": "strict",
648- "604": "strict",
649- "605": "strict",
650- "606": "strict",
651- "607": "strict",
652- "608": "strict",
653- "609": "strict",
654- "610": "strict",
655- "611": "strict"
570+ "Lists": {
571+ "301": "strict",
572+ "302": "strict",
573+ "303": "strict",
574+ "304": "fail",
575+ "305": "strict",
576+ "306": "fail",
577+ "307": "fail",
578+ "308": "loose",
579+ "309": "loose",
580+ "310": "strict",
581+ "311": "strict",
582+ "312": "strict",
583+ "313": "strict",
584+ "314": "strict",
585+ "315": "strict",
586+ "316": "strict",
587+ "317": "fail",
588+ "318": "fail",
589+ "319": "strict",
590+ "320": "strict",
591+ "321": "strict",
592+ "322": "strict",
593+ "323": "strict",
594+ "324": "strict",
595+ "325": "strict",
596+ "326": "strict"
597+ },
598+ "Paragraphs": {
599+ "219": "strict",
600+ "220": "strict",
601+ "221": "strict",
602+ "222": "strict",
603+ "223": "strict",
604+ "224": "strict",
605+ "225": "strict",
606+ "226": "strict"
607+ },
608+ "Precedence": {
609+ "42": "strict"
656610 },
657611 "Raw HTML": {
658612 "612": "strict",
@@ -677,30 +631,76 @@
677631 "631": "strict",
678632 "632": "strict"
679633 },
680- "Hard line breaks": {
681- "633": "strict",
682- "634": "strict",
683- "635": "strict",
684- "636": "strict",
685- "637": "strict",
686- "638": "strict",
687- "639": "strict",
688- "640": "strict",
689- "641": "strict",
690- "642": "strict",
691- "643": "strict",
692- "644": "strict",
693- "645": "strict",
694- "646": "strict",
695- "647": "strict"
634+ "Setext headings": {
635+ "80": "strict",
636+ "81": "strict",
637+ "82": "loose",
638+ "83": "strict",
639+ "84": "loose",
640+ "85": "strict",
641+ "86": "strict",
642+ "87": "strict",
643+ "88": "strict",
644+ "89": "strict",
645+ "90": "strict",
646+ "91": "strict",
647+ "92": "strict",
648+ "93": "fail",
649+ "94": "strict",
650+ "95": "strict",
651+ "96": "strict",
652+ "97": "strict",
653+ "98": "strict",
654+ "99": "strict",
655+ "100": "strict",
656+ "101": "strict",
657+ "102": "strict",
658+ "103": "strict",
659+ "104": "strict",
660+ "105": "strict",
661+ "106": "strict"
696662 },
697663 "Soft line breaks": {
698664 "648": "strict",
699665 "649": "strict"
700666 },
667+ "Tabs": {
668+ "1": "strict",
669+ "2": "strict",
670+ "3": "strict",
671+ "4": "strict",
672+ "5": "strict",
673+ "6": "loose",
674+ "7": "loose",
675+ "8": "strict",
676+ "9": "strict",
677+ "10": "strict",
678+ "11": "strict"
679+ },
701680 "Textual content": {
702681 "650": "strict",
703682 "651": "strict",
704683 "652": "strict"
684+ },
685+ "Thematic breaks": {
686+ "43": "strict",
687+ "44": "strict",
688+ "45": "strict",
689+ "46": "strict",
690+ "47": "strict",
691+ "48": "strict",
692+ "49": "strict",
693+ "50": "strict",
694+ "51": "strict",
695+ "52": "strict",
696+ "53": "strict",
697+ "54": "strict",
698+ "55": "strict",
699+ "56": "strict",
700+ "57": "strict",
701+ "58": "strict",
702+ "59": "strict",
703+ "60": "strict",
704+ "61": "strict"
705705 }
706706 }
--- a/tools/common_mark_stats.txt
+++ b/tools/common_mark_stats.txt
@@ -1,28 +1,28 @@
1- 11 of 11 - 100.0% Tabs
1+ 17 of 18 - 94.4% ATX headings
2+ 19 of 19 - 100.0% Autolinks
23 13 of 13 - 100.0% Backslash escapes
4+ 1 of 1 - 100.0% Blank lines
5+ 25 of 25 - 100.0% Block quotes
6+ 22 of 22 - 100.0% Code spans
7+ 130 of 131 - 99.2% Emphasis and strong emphasis
38 17 of 17 - 100.0% Entity and numeric character references
4- 1 of 1 - 100.0% Precedence
5- 19 of 19 - 100.0% Thematic breaks
6- 17 of 18 - 94.4% ATX headings
7- 26 of 27 - 96.3% Setext headings
8- 11 of 12 - 91.7% Indented code blocks
99 29 of 29 - 100.0% Fenced code blocks
1010 38 of 44 - 86.4% HTML blocks
11+ 15 of 15 - 100.0% Hard line breaks
12+ 21 of 22 - 95.5% Images
13+ 11 of 12 - 91.7% Indented code blocks
14+ 1 of 1 - 100.0% Inlines
1115 21 of 27 - 77.8% Link reference definitions
12- 8 of 8 - 100.0% Paragraphs
13- 1 of 1 - 100.0% Blank lines
14- 25 of 25 - 100.0% Block quotes
16+ 89 of 90 - 98.9% Links
1517 45 of 48 - 93.8% List items
1618 21 of 26 - 80.8% Lists
17- 1 of 1 - 100.0% Inlines
18- 22 of 22 - 100.0% Code spans
19- 130 of 131 - 99.2% Emphasis and strong emphasis
20- 89 of 90 - 98.9% Links
21- 21 of 22 - 95.5% Images
22- 19 of 19 - 100.0% Autolinks
19+ 8 of 8 - 100.0% Paragraphs
20+ 1 of 1 - 100.0% Precedence
2321 21 of 21 - 100.0% Raw HTML
24- 15 of 15 - 100.0% Hard line breaks
22+ 26 of 27 - 96.3% Setext headings
2523 2 of 2 - 100.0% Soft line breaks
24+ 11 of 11 - 100.0% Tabs
2625 3 of 3 - 100.0% Textual content
26+ 19 of 19 - 100.0% Thematic breaks
2727 626 of 652 - 96.0% TOTAL
2828 610 of 626 - 97.4% TOTAL Strict
--- a/tools/gfm_stats.json
+++ b/tools/gfm_stats.json
@@ -1,41 +1,4 @@
11 {
2- "Tabs": {
3- "1": "strict",
4- "2": "strict",
5- "3": "strict",
6- "4": "strict",
7- "5": "strict",
8- "6": "loose",
9- "7": "loose",
10- "8": "strict",
11- "9": "strict",
12- "10": "strict",
13- "11": "strict"
14- },
15- "Precedence": {
16- "12": "strict"
17- },
18- "Thematic breaks": {
19- "13": "strict",
20- "14": "strict",
21- "15": "strict",
22- "16": "strict",
23- "17": "strict",
24- "18": "strict",
25- "19": "strict",
26- "20": "strict",
27- "21": "strict",
28- "22": "strict",
29- "23": "strict",
30- "24": "strict",
31- "25": "strict",
32- "26": "strict",
33- "27": "strict",
34- "28": "strict",
35- "29": "strict",
36- "30": "strict",
37- "31": "strict"
38- },
392 "ATX headings": {
403 "32": "strict",
414 "33": "strict",
@@ -51,290 +14,44 @@
5114 "43": "loose",
5215 "44": "strict",
5316 "45": "loose",
54- "46": "loose",
55- "47": "strict",
56- "48": "strict",
57- "49": "fail"
58- },
59- "Setext headings": {
60- "50": "strict",
61- "51": "strict",
62- "52": "loose",
63- "53": "strict",
64- "54": "loose",
65- "55": "strict",
66- "56": "strict",
67- "57": "strict",
68- "58": "strict",
69- "59": "strict",
70- "60": "strict",
71- "61": "strict",
72- "62": "strict",
73- "63": "fail",
74- "64": "strict",
75- "65": "strict",
76- "66": "strict",
77- "67": "strict",
78- "68": "strict",
79- "69": "strict",
80- "70": "strict",
81- "71": "strict",
82- "72": "strict",
83- "73": "strict",
84- "74": "strict",
85- "75": "strict",
86- "76": "strict"
87- },
88- "Indented code blocks": {
89- "77": "strict",
90- "78": "strict",
91- "79": "strict",
92- "80": "strict",
93- "81": "fail",
94- "82": "strict",
95- "83": "strict",
96- "84": "strict",
97- "85": "strict",
98- "86": "strict",
99- "87": "loose",
100- "88": "strict"
101- },
102- "Fenced code blocks": {
103- "89": "strict",
104- "90": "strict",
105- "91": "strict",
106- "92": "strict",
107- "93": "strict",
108- "94": "strict",
109- "95": "strict",
110- "96": "strict",
111- "97": "strict",
112- "98": "strict",
113- "99": "strict",
114- "100": "strict",
115- "101": "strict",
116- "102": "strict",
117- "103": "strict",
118- "104": "strict",
119- "105": "strict",
120- "106": "strict",
121- "107": "strict",
122- "108": "strict",
123- "109": "strict",
124- "110": "strict",
125- "111": "strict",
126- "112": "strict",
127- "113": "strict",
128- "114": "strict",
129- "115": "strict",
130- "116": "strict",
131- "117": "strict"
132- },
133- "HTML blocks": {
134- "118": "fail",
135- "119": "strict",
136- "120": "strict",
137- "121": "strict",
138- "122": "fail",
139- "123": "strict",
140- "124": "strict",
141- "125": "strict",
142- "126": "strict",
143- "127": "strict",
144- "128": "strict",
145- "129": "strict",
146- "130": "strict",
147- "131": "strict",
148- "132": "strict",
149- "133": "strict",
150- "134": "strict",
151- "135": "strict",
152- "136": "strict",
153- "137": "fail",
154- "138": "strict",
155- "139": "strict",
156- "140": "strict",
157- "141": "strict",
158- "142": "strict",
159- "143": "fail",
160- "144": "fail",
161- "145": "strict",
162- "146": "strict",
163- "147": "strict",
164- "148": "strict",
165- "149": "strict",
166- "150": "strict",
167- "151": "strict",
168- "152": "strict",
169- "153": "strict",
170- "154": "loose",
171- "155": "strict",
172- "156": "strict",
173- "157": "fail",
174- "158": "strict",
175- "159": "strict",
176- "160": "loose"
177- },
178- "Link reference definitions": {
179- "161": "strict",
180- "162": "strict",
181- "163": "strict",
182- "164": "fail",
183- "165": "strict",
184- "166": "strict",
185- "167": "strict",
186- "168": "strict",
187- "169": "fail",
188- "170": "fail",
189- "171": "fail",
190- "172": "strict",
191- "173": "strict",
192- "174": "strict",
193- "175": "strict",
194- "176": "loose",
195- "177": "strict",
196- "178": "strict",
197- "179": "strict",
198- "180": "strict",
199- "181": "strict",
200- "182": "strict",
201- "183": "strict",
202- "184": "fail",
203- "185": "fail",
204- "186": "strict",
205- "187": "strict",
206- "188": "loose"
207- },
208- "Paragraphs": {
209- "189": "strict",
210- "190": "strict",
211- "191": "strict",
212- "192": "strict",
213- "193": "strict",
214- "194": "strict",
215- "195": "strict",
216- "196": "strict"
217- },
218- "Blank lines": {
219- "197": "strict"
220- },
221- "Tables (extension)": {
222- "198": "strict",
223- "199": "strict",
224- "200": "strict",
225- "201": "strict",
226- "202": "strict",
227- "203": "strict",
228- "204": "strict",
229- "205": "strict"
230- },
231- "Block quotes": {
232- "206": "strict",
233- "207": "strict",
234- "208": "strict",
235- "209": "strict",
236- "210": "strict",
237- "211": "strict",
238- "212": "strict",
239- "213": "strict",
240- "214": "strict",
241- "215": "strict",
242- "216": "strict",
243- "217": "strict",
244- "218": "strict",
245- "219": "strict",
246- "220": "strict",
247- "221": "strict",
248- "222": "strict",
249- "223": "strict",
250- "224": "strict",
251- "225": "strict",
252- "226": "strict",
253- "227": "strict",
254- "228": "strict",
255- "229": "strict",
256- "230": "strict"
257- },
258- "List items": {
259- "231": "strict",
260- "232": "strict",
261- "233": "strict",
262- "234": "strict",
263- "235": "strict",
264- "236": "strict",
265- "237": "strict",
266- "238": "strict",
267- "239": "strict",
268- "240": "fail",
269- "241": "strict",
270- "242": "fail",
271- "243": "strict",
272- "244": "strict",
273- "245": "strict",
274- "246": "strict",
275- "247": "strict",
276- "248": "strict",
277- "249": "strict",
278- "250": "strict",
279- "251": "strict",
280- "252": "strict",
281- "253": "strict",
282- "254": "strict",
283- "255": "strict",
284- "256": "strict",
285- "257": "strict",
286- "258": "fail",
287- "259": "strict",
288- "260": "strict",
289- "261": "strict",
290- "262": "strict",
291- "263": "strict",
292- "264": "strict",
293- "265": "strict",
294- "266": "strict",
295- "267": "strict",
296- "268": "strict",
297- "269": "strict",
298- "270": "strict",
299- "271": "strict",
300- "272": "strict",
301- "273": "strict",
302- "274": "strict",
303- "275": "strict",
304- "276": "strict",
305- "277": "strict",
306- "278": "loose"
307- },
308- "Lists": {
309- "281": "strict",
310- "282": "strict",
311- "283": "strict",
312- "284": "fail",
313- "285": "strict",
314- "286": "fail",
315- "287": "fail",
316- "288": "loose",
317- "289": "loose",
318- "290": "strict",
319- "291": "strict",
320- "292": "strict",
321- "293": "strict",
322- "294": "strict",
323- "295": "strict",
324- "296": "strict",
325- "297": "fail",
326- "298": "fail",
327- "299": "strict",
328- "300": "strict",
329- "301": "strict",
330- "302": "strict",
331- "303": "strict",
332- "304": "strict",
333- "305": "strict",
334- "306": "strict"
17+ "46": "loose",
18+ "47": "strict",
19+ "48": "strict",
20+ "49": "fail"
33521 },
336- "Inlines": {
337- "307": "strict"
22+ "Autolinks": {
23+ "602": "strict",
24+ "603": "strict",
25+ "604": "strict",
26+ "605": "strict",
27+ "606": "strict",
28+ "607": "strict",
29+ "608": "strict",
30+ "609": "strict",
31+ "610": "strict",
32+ "611": "strict",
33+ "612": "strict",
34+ "613": "strict",
35+ "614": "strict",
36+ "615": "strict",
37+ "616": "strict",
38+ "617": "strict",
39+ "618": "strict",
40+ "619": "strict",
41+ "620": "strict"
42+ },
43+ "Autolinks (extension)": {
44+ "621": "strict",
45+ "622": "strict",
46+ "623": "strict",
47+ "624": "strict",
48+ "625": "strict",
49+ "626": "strict",
50+ "627": "strict",
51+ "628": "strict",
52+ "629": "strict",
53+ "630": "strict",
54+ "631": "strict"
33855 },
33956 "Backslash escapes": {
34057 "308": "strict",
@@ -351,24 +68,35 @@
35168 "319": "strict",
35269 "320": "strict"
35370 },
354- "Entity and numeric character references": {
355- "321": "loose",
356- "322": "strict",
357- "323": "strict",
358- "324": "strict",
359- "325": "strict",
360- "326": "strict",
361- "327": "strict",
362- "328": "strict",
363- "329": "strict",
364- "330": "strict",
365- "331": "strict",
366- "332": "strict",
367- "333": "strict",
368- "334": "strict",
369- "335": "strict",
370- "336": "loose",
371- "337": "strict"
71+ "Blank lines": {
72+ "197": "strict"
73+ },
74+ "Block quotes": {
75+ "206": "strict",
76+ "207": "strict",
77+ "208": "strict",
78+ "209": "strict",
79+ "210": "strict",
80+ "211": "strict",
81+ "212": "strict",
82+ "213": "strict",
83+ "214": "strict",
84+ "215": "strict",
85+ "216": "strict",
86+ "217": "strict",
87+ "218": "strict",
88+ "219": "strict",
89+ "220": "strict",
90+ "221": "strict",
91+ "222": "strict",
92+ "223": "strict",
93+ "224": "strict",
94+ "225": "strict",
95+ "226": "strict",
96+ "227": "strict",
97+ "228": "strict",
98+ "229": "strict",
99+ "230": "strict"
372100 },
373101 "Code spans": {
374102 "338": "strict",
@@ -394,6 +122,9 @@
394122 "358": "strict",
395123 "359": "strict"
396124 },
125+ "Disallowed Raw HTML (extension)": {
126+ "653": "fail"
127+ },
397128 "Emphasis and strong emphasis": {
398129 "360": "strict",
399130 "361": "strict",
@@ -527,9 +258,188 @@
527258 "489": "strict",
528259 "490": "strict"
529260 },
530- "Strikethrough (extension)": {
531- "491": "strict",
532- "492": "strict"
261+ "Entity and numeric character references": {
262+ "321": "loose",
263+ "322": "strict",
264+ "323": "strict",
265+ "324": "strict",
266+ "325": "strict",
267+ "326": "strict",
268+ "327": "strict",
269+ "328": "strict",
270+ "329": "strict",
271+ "330": "strict",
272+ "331": "strict",
273+ "332": "strict",
274+ "333": "strict",
275+ "334": "strict",
276+ "335": "strict",
277+ "336": "loose",
278+ "337": "strict"
279+ },
280+ "Fenced code blocks": {
281+ "89": "strict",
282+ "90": "strict",
283+ "91": "strict",
284+ "92": "strict",
285+ "93": "strict",
286+ "94": "strict",
287+ "95": "strict",
288+ "96": "strict",
289+ "97": "strict",
290+ "98": "strict",
291+ "99": "strict",
292+ "100": "strict",
293+ "101": "strict",
294+ "102": "strict",
295+ "103": "strict",
296+ "104": "strict",
297+ "105": "strict",
298+ "106": "strict",
299+ "107": "strict",
300+ "108": "strict",
301+ "109": "strict",
302+ "110": "strict",
303+ "111": "strict",
304+ "112": "strict",
305+ "113": "strict",
306+ "114": "strict",
307+ "115": "strict",
308+ "116": "strict",
309+ "117": "strict"
310+ },
311+ "HTML blocks": {
312+ "118": "fail",
313+ "119": "strict",
314+ "120": "strict",
315+ "121": "strict",
316+ "122": "fail",
317+ "123": "strict",
318+ "124": "strict",
319+ "125": "strict",
320+ "126": "strict",
321+ "127": "strict",
322+ "128": "strict",
323+ "129": "strict",
324+ "130": "strict",
325+ "131": "strict",
326+ "132": "strict",
327+ "133": "strict",
328+ "134": "strict",
329+ "135": "strict",
330+ "136": "strict",
331+ "137": "fail",
332+ "138": "strict",
333+ "139": "strict",
334+ "140": "strict",
335+ "141": "strict",
336+ "142": "strict",
337+ "143": "fail",
338+ "144": "fail",
339+ "145": "strict",
340+ "146": "strict",
341+ "147": "strict",
342+ "148": "strict",
343+ "149": "strict",
344+ "150": "strict",
345+ "151": "strict",
346+ "152": "strict",
347+ "153": "strict",
348+ "154": "loose",
349+ "155": "strict",
350+ "156": "strict",
351+ "157": "fail",
352+ "158": "strict",
353+ "159": "strict",
354+ "160": "loose"
355+ },
356+ "Hard line breaks": {
357+ "654": "strict",
358+ "655": "strict",
359+ "656": "strict",
360+ "657": "strict",
361+ "658": "strict",
362+ "659": "strict",
363+ "660": "strict",
364+ "661": "strict",
365+ "662": "strict",
366+ "663": "strict",
367+ "664": "strict",
368+ "665": "strict",
369+ "666": "strict",
370+ "667": "strict",
371+ "668": "strict"
372+ },
373+ "Images": {
374+ "580": "strict",
375+ "581": "strict",
376+ "582": "fail",
377+ "583": "strict",
378+ "584": "strict",
379+ "585": "strict",
380+ "586": "strict",
381+ "587": "strict",
382+ "588": "strict",
383+ "589": "strict",
384+ "590": "strict",
385+ "591": "strict",
386+ "592": "strict",
387+ "593": "strict",
388+ "594": "strict",
389+ "595": "strict",
390+ "596": "strict",
391+ "597": "strict",
392+ "598": "strict",
393+ "599": "strict",
394+ "600": "strict",
395+ "601": "strict"
396+ },
397+ "Indented code blocks": {
398+ "77": "strict",
399+ "78": "strict",
400+ "79": "strict",
401+ "80": "strict",
402+ "81": "fail",
403+ "82": "strict",
404+ "83": "strict",
405+ "84": "strict",
406+ "85": "strict",
407+ "86": "strict",
408+ "87": "loose",
409+ "88": "strict"
410+ },
411+ "Inlines": {
412+ "307": "strict"
413+ },
414+ "Link reference definitions": {
415+ "161": "strict",
416+ "162": "strict",
417+ "163": "strict",
418+ "164": "fail",
419+ "165": "strict",
420+ "166": "strict",
421+ "167": "strict",
422+ "168": "strict",
423+ "169": "fail",
424+ "170": "fail",
425+ "171": "fail",
426+ "172": "strict",
427+ "173": "strict",
428+ "174": "strict",
429+ "175": "strict",
430+ "176": "loose",
431+ "177": "strict",
432+ "178": "strict",
433+ "179": "strict",
434+ "180": "strict",
435+ "181": "strict",
436+ "182": "strict",
437+ "183": "strict",
438+ "184": "fail",
439+ "185": "fail",
440+ "186": "strict",
441+ "187": "strict",
442+ "188": "loose"
533443 },
534444 "Links": {
535445 "493": "strict",
@@ -620,63 +530,96 @@
620530 "578": "strict",
621531 "579": "strict"
622532 },
623- "Images": {
624- "580": "strict",
625- "581": "strict",
626- "582": "fail",
627- "583": "strict",
628- "584": "strict",
629- "585": "strict",
630- "586": "strict",
631- "587": "strict",
632- "588": "strict",
633- "589": "strict",
634- "590": "strict",
635- "591": "strict",
636- "592": "strict",
637- "593": "strict",
638- "594": "strict",
639- "595": "strict",
640- "596": "strict",
641- "597": "strict",
642- "598": "strict",
643- "599": "strict",
644- "600": "strict",
645- "601": "strict"
533+ "List items": {
534+ "231": "strict",
535+ "232": "strict",
536+ "233": "strict",
537+ "234": "strict",
538+ "235": "strict",
539+ "236": "strict",
540+ "237": "strict",
541+ "238": "strict",
542+ "239": "strict",
543+ "240": "fail",
544+ "241": "strict",
545+ "242": "fail",
546+ "243": "strict",
547+ "244": "strict",
548+ "245": "strict",
549+ "246": "strict",
550+ "247": "strict",
551+ "248": "strict",
552+ "249": "strict",
553+ "250": "strict",
554+ "251": "strict",
555+ "252": "strict",
556+ "253": "strict",
557+ "254": "strict",
558+ "255": "strict",
559+ "256": "strict",
560+ "257": "strict",
561+ "258": "fail",
562+ "259": "strict",
563+ "260": "strict",
564+ "261": "strict",
565+ "262": "strict",
566+ "263": "strict",
567+ "264": "strict",
568+ "265": "strict",
569+ "266": "strict",
570+ "267": "strict",
571+ "268": "strict",
572+ "269": "strict",
573+ "270": "strict",
574+ "271": "strict",
575+ "272": "strict",
576+ "273": "strict",
577+ "274": "strict",
578+ "275": "strict",
579+ "276": "strict",
580+ "277": "strict",
581+ "278": "loose"
646582 },
647- "Autolinks": {
648- "602": "strict",
649- "603": "strict",
650- "604": "strict",
651- "605": "strict",
652- "606": "strict",
653- "607": "strict",
654- "608": "strict",
655- "609": "strict",
656- "610": "strict",
657- "611": "strict",
658- "612": "strict",
659- "613": "strict",
660- "614": "strict",
661- "615": "strict",
662- "616": "strict",
663- "617": "strict",
664- "618": "strict",
665- "619": "strict",
666- "620": "strict"
583+ "Lists": {
584+ "281": "strict",
585+ "282": "strict",
586+ "283": "strict",
587+ "284": "fail",
588+ "285": "strict",
589+ "286": "fail",
590+ "287": "fail",
591+ "288": "loose",
592+ "289": "loose",
593+ "290": "strict",
594+ "291": "strict",
595+ "292": "strict",
596+ "293": "strict",
597+ "294": "strict",
598+ "295": "strict",
599+ "296": "strict",
600+ "297": "fail",
601+ "298": "fail",
602+ "299": "strict",
603+ "300": "strict",
604+ "301": "strict",
605+ "302": "strict",
606+ "303": "strict",
607+ "304": "strict",
608+ "305": "strict",
609+ "306": "strict"
667610 },
668- "Autolinks (extension)": {
669- "621": "strict",
670- "622": "strict",
671- "623": "strict",
672- "624": "strict",
673- "625": "strict",
674- "626": "strict",
675- "627": "strict",
676- "628": "strict",
677- "629": "strict",
678- "630": "strict",
679- "631": "strict"
611+ "Paragraphs": {
612+ "189": "strict",
613+ "190": "strict",
614+ "191": "strict",
615+ "192": "strict",
616+ "193": "strict",
617+ "194": "strict",
618+ "195": "strict",
619+ "196": "strict"
620+ },
621+ "Precedence": {
622+ "12": "strict"
680623 },
681624 "Raw HTML": {
682625 "632": "strict",
@@ -701,33 +644,90 @@
701644 "651": "strict",
702645 "652": "strict"
703646 },
704- "Disallowed Raw HTML (extension)": {
705- "653": "fail"
706- },
707- "Hard line breaks": {
708- "654": "strict",
709- "655": "strict",
710- "656": "strict",
711- "657": "strict",
712- "658": "strict",
713- "659": "strict",
714- "660": "strict",
715- "661": "strict",
716- "662": "strict",
717- "663": "strict",
718- "664": "strict",
719- "665": "strict",
720- "666": "strict",
721- "667": "strict",
722- "668": "strict"
647+ "Setext headings": {
648+ "50": "strict",
649+ "51": "strict",
650+ "52": "loose",
651+ "53": "strict",
652+ "54": "loose",
653+ "55": "strict",
654+ "56": "strict",
655+ "57": "strict",
656+ "58": "strict",
657+ "59": "strict",
658+ "60": "strict",
659+ "61": "strict",
660+ "62": "strict",
661+ "63": "fail",
662+ "64": "strict",
663+ "65": "strict",
664+ "66": "strict",
665+ "67": "strict",
666+ "68": "strict",
667+ "69": "strict",
668+ "70": "strict",
669+ "71": "strict",
670+ "72": "strict",
671+ "73": "strict",
672+ "74": "strict",
673+ "75": "strict",
674+ "76": "strict"
723675 },
724676 "Soft line breaks": {
725677 "669": "strict",
726678 "670": "strict"
727679 },
680+ "Strikethrough (extension)": {
681+ "491": "strict",
682+ "492": "strict"
683+ },
684+ "Tables (extension)": {
685+ "198": "strict",
686+ "199": "strict",
687+ "200": "strict",
688+ "201": "strict",
689+ "202": "strict",
690+ "203": "strict",
691+ "204": "strict",
692+ "205": "strict"
693+ },
694+ "Tabs": {
695+ "1": "strict",
696+ "2": "strict",
697+ "3": "strict",
698+ "4": "strict",
699+ "5": "strict",
700+ "6": "loose",
701+ "7": "loose",
702+ "8": "strict",
703+ "9": "strict",
704+ "10": "strict",
705+ "11": "strict"
706+ },
728707 "Textual content": {
729708 "671": "strict",
730709 "672": "strict",
731710 "673": "strict"
711+ },
712+ "Thematic breaks": {
713+ "13": "strict",
714+ "14": "strict",
715+ "15": "strict",
716+ "16": "strict",
717+ "17": "strict",
718+ "18": "strict",
719+ "19": "strict",
720+ "20": "strict",
721+ "21": "strict",
722+ "22": "strict",
723+ "23": "strict",
724+ "24": "strict",
725+ "25": "strict",
726+ "26": "strict",
727+ "27": "strict",
728+ "28": "strict",
729+ "29": "strict",
730+ "30": "strict",
731+ "31": "strict"
732732 }
733733 }
--- a/tools/gfm_stats.txt
+++ b/tools/gfm_stats.txt
@@ -1,32 +1,32 @@
1- 11 of 11 - 100.0% Tabs
2- 1 of 1 - 100.0% Precedence
3- 19 of 19 - 100.0% Thematic breaks
41 17 of 18 - 94.4% ATX headings
5- 26 of 27 - 96.3% Setext headings
6- 11 of 12 - 91.7% Indented code blocks
7- 29 of 29 - 100.0% Fenced code blocks
8- 37 of 43 - 86.0% HTML blocks
9- 22 of 28 - 78.6% Link reference definitions
10- 8 of 8 - 100.0% Paragraphs
2+ 19 of 19 - 100.0% Autolinks
3+ 11 of 11 - 100.0% Autolinks (extension)
4+ 13 of 13 - 100.0% Backslash escapes
115 1 of 1 - 100.0% Blank lines
12- 8 of 8 - 100.0% Tables (extension)
136 25 of 25 - 100.0% Block quotes
14- 45 of 48 - 93.8% List items
15- 21 of 26 - 80.8% Lists
16- 1 of 1 - 100.0% Inlines
17- 13 of 13 - 100.0% Backslash escapes
18- 17 of 17 - 100.0% Entity and numeric character references
197 22 of 22 - 100.0% Code spans
8+ 0 of 1 - 0.0% Disallowed Raw HTML (extension)
209 130 of 131 - 99.2% Emphasis and strong emphasis
21- 2 of 2 - 100.0% Strikethrough (extension)
22- 86 of 87 - 98.9% Links
10+ 17 of 17 - 100.0% Entity and numeric character references
11+ 29 of 29 - 100.0% Fenced code blocks
12+ 37 of 43 - 86.0% HTML blocks
13+ 15 of 15 - 100.0% Hard line breaks
2314 21 of 22 - 95.5% Images
24- 19 of 19 - 100.0% Autolinks
25- 11 of 11 - 100.0% Autolinks (extension)
15+ 11 of 12 - 91.7% Indented code blocks
16+ 1 of 1 - 100.0% Inlines
17+ 22 of 28 - 78.6% Link reference definitions
18+ 86 of 87 - 98.9% Links
19+ 45 of 48 - 93.8% List items
20+ 21 of 26 - 80.8% Lists
21+ 8 of 8 - 100.0% Paragraphs
22+ 1 of 1 - 100.0% Precedence
2623 21 of 21 - 100.0% Raw HTML
27- 0 of 1 - 0.0% Disallowed Raw HTML (extension)
28- 15 of 15 - 100.0% Hard line breaks
24+ 26 of 27 - 96.3% Setext headings
2925 2 of 2 - 100.0% Soft line breaks
26+ 2 of 2 - 100.0% Strikethrough (extension)
27+ 8 of 8 - 100.0% Tables (extension)
28+ 11 of 11 - 100.0% Tabs
3029 3 of 3 - 100.0% Textual content
30+ 19 of 19 - 100.0% Thematic breaks
3131 644 of 671 - 96.0% TOTAL
3232 627 of 644 - 97.4% TOTAL Strict
--- a/tools/stats_lib.cr
+++ b/tools/stats_lib.cr
@@ -16,7 +16,7 @@ def load_common_mark_sections(test_prefix : String) : Hash(String, Array(CommonM
1616 test_file = File.open(Path[tool_dir, "#{test_prefix}_tests.json"])
1717 tests_json = test_file.gets_to_end
1818
19- test_array = Array(JSON::Any).from_json(tests_json)
19+ test_array = Array(JSON::Any).from_json(tests_json).sort! { |a, b| a["section"].as_s <=> b["section"].as_s }
2020
2121 sections = Hash(String, Array(CommonMarkTestCase)).new
2222