gitdown 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. data/AUTHORS +1 -0
  2. data/COPYING +24 -0
  3. data/GPL +674 -0
  4. data/README +43 -0
  5. data/Rakefile +370 -0
  6. data/VERSION +1 -0
  7. data/benchmark/benchmark.rb +34 -0
  8. data/benchmark/benchmark.sh +74 -0
  9. data/benchmark/generate_data.rb +119 -0
  10. data/benchmark/mdbasics.text +306 -0
  11. data/benchmark/mdsyntax.text +888 -0
  12. data/benchmark/testing.sh +9 -0
  13. data/benchmark/timing.sh +10 -0
  14. data/bin/kramdown +78 -0
  15. data/data/kramdown/document.html +18 -0
  16. data/data/kramdown/document.latex +43 -0
  17. data/doc/default.scss.css +530 -0
  18. data/doc/default.template +80 -0
  19. data/doc/documentation.page +71 -0
  20. data/doc/index.page +98 -0
  21. data/doc/installation.page +88 -0
  22. data/doc/links.markdown +6 -0
  23. data/doc/news.feed +10 -0
  24. data/doc/news.page +28 -0
  25. data/doc/quickref.page +585 -0
  26. data/doc/syntax.page +1644 -0
  27. data/doc/tests.page +52 -0
  28. data/doc/virtual +2 -0
  29. data/lib/kramdown.rb +23 -0
  30. data/lib/kramdown/compatibility.rb +35 -0
  31. data/lib/kramdown/converter.rb +41 -0
  32. data/lib/kramdown/converter/base.rb +169 -0
  33. data/lib/kramdown/converter/html.rb +410 -0
  34. data/lib/kramdown/converter/kramdown.rb +422 -0
  35. data/lib/kramdown/converter/latex.rb +607 -0
  36. data/lib/kramdown/converter/toc.rb +82 -0
  37. data/lib/kramdown/document.rb +117 -0
  38. data/lib/kramdown/element.rb +524 -0
  39. data/lib/kramdown/error.rb +30 -0
  40. data/lib/kramdown/options.rb +373 -0
  41. data/lib/kramdown/parser.rb +40 -0
  42. data/lib/kramdown/parser/base.rb +136 -0
  43. data/lib/kramdown/parser/github_markdown.rb +44 -0
  44. data/lib/kramdown/parser/github_markdown/github_codeblock.rb +44 -0
  45. data/lib/kramdown/parser/html.rb +570 -0
  46. data/lib/kramdown/parser/kramdown.rb +338 -0
  47. data/lib/kramdown/parser/kramdown/abbreviation.rb +71 -0
  48. data/lib/kramdown/parser/kramdown/autolink.rb +53 -0
  49. data/lib/kramdown/parser/kramdown/blank_line.rb +43 -0
  50. data/lib/kramdown/parser/kramdown/block_boundary.rb +46 -0
  51. data/lib/kramdown/parser/kramdown/blockquote.rb +51 -0
  52. data/lib/kramdown/parser/kramdown/codeblock.rb +63 -0
  53. data/lib/kramdown/parser/kramdown/codespan.rb +56 -0
  54. data/lib/kramdown/parser/kramdown/emphasis.rb +70 -0
  55. data/lib/kramdown/parser/kramdown/eob.rb +39 -0
  56. data/lib/kramdown/parser/kramdown/escaped_chars.rb +38 -0
  57. data/lib/kramdown/parser/kramdown/extensions.rb +204 -0
  58. data/lib/kramdown/parser/kramdown/footnote.rb +74 -0
  59. data/lib/kramdown/parser/kramdown/header.rb +68 -0
  60. data/lib/kramdown/parser/kramdown/horizontal_rule.rb +39 -0
  61. data/lib/kramdown/parser/kramdown/html.rb +169 -0
  62. data/lib/kramdown/parser/kramdown/html_entity.rb +44 -0
  63. data/lib/kramdown/parser/kramdown/line_break.rb +38 -0
  64. data/lib/kramdown/parser/kramdown/link.rb +148 -0
  65. data/lib/kramdown/parser/kramdown/list.rb +240 -0
  66. data/lib/kramdown/parser/kramdown/math.rb +64 -0
  67. data/lib/kramdown/parser/kramdown/paragraph.rb +63 -0
  68. data/lib/kramdown/parser/kramdown/smart_quotes.rb +214 -0
  69. data/lib/kramdown/parser/kramdown/table.rb +178 -0
  70. data/lib/kramdown/parser/kramdown/typographic_symbol.rb +52 -0
  71. data/lib/kramdown/parser/markdown.rb +69 -0
  72. data/lib/kramdown/utils.rb +37 -0
  73. data/lib/kramdown/utils/entities.rb +348 -0
  74. data/lib/kramdown/utils/html.rb +85 -0
  75. data/lib/kramdown/utils/ordered_hash.rb +100 -0
  76. data/lib/kramdown/version.rb +28 -0
  77. data/setup.rb +1585 -0
  78. data/test/run_tests.rb +59 -0
  79. data/test/test_files.rb +197 -0
  80. data/test/testcases/block/01_blank_line/spaces.html +1 -0
  81. data/test/testcases/block/01_blank_line/spaces.text +3 -0
  82. data/test/testcases/block/01_blank_line/tabs.html +1 -0
  83. data/test/testcases/block/01_blank_line/tabs.text +6 -0
  84. data/test/testcases/block/02_eob/beginning.html +1 -0
  85. data/test/testcases/block/02_eob/beginning.text +3 -0
  86. data/test/testcases/block/02_eob/end.html +1 -0
  87. data/test/testcases/block/02_eob/end.text +3 -0
  88. data/test/testcases/block/02_eob/middle.html +1 -0
  89. data/test/testcases/block/02_eob/middle.text +5 -0
  90. data/test/testcases/block/03_paragraph/indented.html +18 -0
  91. data/test/testcases/block/03_paragraph/indented.text +19 -0
  92. data/test/testcases/block/03_paragraph/no_newline_at_end.html +5 -0
  93. data/test/testcases/block/03_paragraph/no_newline_at_end.text +5 -0
  94. data/test/testcases/block/03_paragraph/one_para.html +1 -0
  95. data/test/testcases/block/03_paragraph/one_para.text +1 -0
  96. data/test/testcases/block/03_paragraph/two_para.html +4 -0
  97. data/test/testcases/block/03_paragraph/two_para.text +4 -0
  98. data/test/testcases/block/04_header/atx_header.html +37 -0
  99. data/test/testcases/block/04_header/atx_header.text +34 -0
  100. data/test/testcases/block/04_header/atx_header_no_newline_at_end.html +1 -0
  101. data/test/testcases/block/04_header/atx_header_no_newline_at_end.text +1 -0
  102. data/test/testcases/block/04_header/setext_header.html +30 -0
  103. data/test/testcases/block/04_header/setext_header.html.19 +30 -0
  104. data/test/testcases/block/04_header/setext_header.text +36 -0
  105. data/test/testcases/block/04_header/setext_header_no_newline_at_end.html +1 -0
  106. data/test/testcases/block/04_header/setext_header_no_newline_at_end.text +2 -0
  107. data/test/testcases/block/04_header/with_auto_id_prefix.html +3 -0
  108. data/test/testcases/block/04_header/with_auto_id_prefix.options +2 -0
  109. data/test/testcases/block/04_header/with_auto_id_prefix.text +3 -0
  110. data/test/testcases/block/04_header/with_auto_ids.html +17 -0
  111. data/test/testcases/block/04_header/with_auto_ids.options +1 -0
  112. data/test/testcases/block/04_header/with_auto_ids.text +19 -0
  113. data/test/testcases/block/05_blockquote/indented.html +25 -0
  114. data/test/testcases/block/05_blockquote/indented.text +14 -0
  115. data/test/testcases/block/05_blockquote/lazy.html +34 -0
  116. data/test/testcases/block/05_blockquote/lazy.text +20 -0
  117. data/test/testcases/block/05_blockquote/nested.html +10 -0
  118. data/test/testcases/block/05_blockquote/nested.text +6 -0
  119. data/test/testcases/block/05_blockquote/no_newline_at_end.html +4 -0
  120. data/test/testcases/block/05_blockquote/no_newline_at_end.text +2 -0
  121. data/test/testcases/block/05_blockquote/very_long_line.html +3 -0
  122. data/test/testcases/block/05_blockquote/very_long_line.text +1 -0
  123. data/test/testcases/block/05_blockquote/with_code_blocks.html +15 -0
  124. data/test/testcases/block/05_blockquote/with_code_blocks.text +11 -0
  125. data/test/testcases/block/06_codeblock/error.html +4 -0
  126. data/test/testcases/block/06_codeblock/error.text +4 -0
  127. data/test/testcases/block/06_codeblock/lazy.html +4 -0
  128. data/test/testcases/block/06_codeblock/lazy.text +5 -0
  129. data/test/testcases/block/06_codeblock/no_newline_at_end.html +2 -0
  130. data/test/testcases/block/06_codeblock/no_newline_at_end.text +1 -0
  131. data/test/testcases/block/06_codeblock/no_newline_at_end_1.html +2 -0
  132. data/test/testcases/block/06_codeblock/no_newline_at_end_1.text +2 -0
  133. data/test/testcases/block/06_codeblock/normal.html +13 -0
  134. data/test/testcases/block/06_codeblock/normal.text +10 -0
  135. data/test/testcases/block/06_codeblock/tilde_syntax.html +7 -0
  136. data/test/testcases/block/06_codeblock/tilde_syntax.text +9 -0
  137. data/test/testcases/block/06_codeblock/whitespace.html +3 -0
  138. data/test/testcases/block/06_codeblock/whitespace.text +3 -0
  139. data/test/testcases/block/06_codeblock/with_blank_line.html +13 -0
  140. data/test/testcases/block/06_codeblock/with_blank_line.text +12 -0
  141. data/test/testcases/block/06_codeblock/with_eob_marker.html +6 -0
  142. data/test/testcases/block/06_codeblock/with_eob_marker.text +5 -0
  143. data/test/testcases/block/06_codeblock/with_ial.html +6 -0
  144. data/test/testcases/block/06_codeblock/with_ial.text +5 -0
  145. data/test/testcases/block/07_horizontal_rule/error.html +7 -0
  146. data/test/testcases/block/07_horizontal_rule/error.html.19 +7 -0
  147. data/test/testcases/block/07_horizontal_rule/error.text +7 -0
  148. data/test/testcases/block/07_horizontal_rule/normal.html +17 -0
  149. data/test/testcases/block/07_horizontal_rule/normal.text +17 -0
  150. data/test/testcases/block/07_horizontal_rule/sepspaces.html +3 -0
  151. data/test/testcases/block/07_horizontal_rule/sepspaces.text +3 -0
  152. data/test/testcases/block/07_horizontal_rule/septabs.html +3 -0
  153. data/test/testcases/block/07_horizontal_rule/septabs.text +3 -0
  154. data/test/testcases/block/08_list/escaping.html +17 -0
  155. data/test/testcases/block/08_list/escaping.text +17 -0
  156. data/test/testcases/block/08_list/item_ial.html +10 -0
  157. data/test/testcases/block/08_list/item_ial.text +8 -0
  158. data/test/testcases/block/08_list/lazy.html +39 -0
  159. data/test/testcases/block/08_list/lazy.text +29 -0
  160. data/test/testcases/block/08_list/list_and_hr.html +9 -0
  161. data/test/testcases/block/08_list/list_and_hr.text +5 -0
  162. data/test/testcases/block/08_list/list_and_others.html +40 -0
  163. data/test/testcases/block/08_list/list_and_others.text +26 -0
  164. data/test/testcases/block/08_list/mixed.html +117 -0
  165. data/test/testcases/block/08_list/mixed.text +66 -0
  166. data/test/testcases/block/08_list/nested.html +17 -0
  167. data/test/testcases/block/08_list/nested.text +7 -0
  168. data/test/testcases/block/08_list/other_first_element.html +39 -0
  169. data/test/testcases/block/08_list/other_first_element.text +18 -0
  170. data/test/testcases/block/08_list/simple_ol.html +19 -0
  171. data/test/testcases/block/08_list/simple_ol.text +13 -0
  172. data/test/testcases/block/08_list/simple_ul.html +48 -0
  173. data/test/testcases/block/08_list/simple_ul.text +36 -0
  174. data/test/testcases/block/08_list/single_item.html +3 -0
  175. data/test/testcases/block/08_list/single_item.text +1 -0
  176. data/test/testcases/block/08_list/special_cases.html +55 -0
  177. data/test/testcases/block/08_list/special_cases.text +35 -0
  178. data/test/testcases/block/09_html/comment.html +18 -0
  179. data/test/testcases/block/09_html/comment.text +15 -0
  180. data/test/testcases/block/09_html/content_model/deflists.html +6 -0
  181. data/test/testcases/block/09_html/content_model/deflists.options +1 -0
  182. data/test/testcases/block/09_html/content_model/deflists.text +6 -0
  183. data/test/testcases/block/09_html/content_model/tables.html +14 -0
  184. data/test/testcases/block/09_html/content_model/tables.options +1 -0
  185. data/test/testcases/block/09_html/content_model/tables.text +14 -0
  186. data/test/testcases/block/09_html/html_and_codeblocks.html +15 -0
  187. data/test/testcases/block/09_html/html_and_codeblocks.options +1 -0
  188. data/test/testcases/block/09_html/html_and_codeblocks.text +13 -0
  189. data/test/testcases/block/09_html/html_and_headers.html +5 -0
  190. data/test/testcases/block/09_html/html_and_headers.text +6 -0
  191. data/test/testcases/block/09_html/html_to_native/code.html +10 -0
  192. data/test/testcases/block/09_html/html_to_native/code.text +9 -0
  193. data/test/testcases/block/09_html/html_to_native/comment.html +7 -0
  194. data/test/testcases/block/09_html/html_to_native/comment.text +8 -0
  195. data/test/testcases/block/09_html/html_to_native/emphasis.html +6 -0
  196. data/test/testcases/block/09_html/html_to_native/emphasis.text +6 -0
  197. data/test/testcases/block/09_html/html_to_native/entity.html +1 -0
  198. data/test/testcases/block/09_html/html_to_native/entity.text +1 -0
  199. data/test/testcases/block/09_html/html_to_native/header.html +6 -0
  200. data/test/testcases/block/09_html/html_to_native/header.options +2 -0
  201. data/test/testcases/block/09_html/html_to_native/header.text +6 -0
  202. data/test/testcases/block/09_html/html_to_native/list_dl.html +8 -0
  203. data/test/testcases/block/09_html/html_to_native/list_dl.text +8 -0
  204. data/test/testcases/block/09_html/html_to_native/list_ol.html +15 -0
  205. data/test/testcases/block/09_html/html_to_native/list_ol.text +17 -0
  206. data/test/testcases/block/09_html/html_to_native/list_ul.html +19 -0
  207. data/test/testcases/block/09_html/html_to_native/list_ul.text +22 -0
  208. data/test/testcases/block/09_html/html_to_native/options +1 -0
  209. data/test/testcases/block/09_html/html_to_native/paragraph.html +3 -0
  210. data/test/testcases/block/09_html/html_to_native/paragraph.text +4 -0
  211. data/test/testcases/block/09_html/html_to_native/table_normal.html +12 -0
  212. data/test/testcases/block/09_html/html_to_native/table_normal.text +12 -0
  213. data/test/testcases/block/09_html/html_to_native/table_simple.html +48 -0
  214. data/test/testcases/block/09_html/html_to_native/table_simple.text +56 -0
  215. data/test/testcases/block/09_html/html_to_native/typography.html +1 -0
  216. data/test/testcases/block/09_html/html_to_native/typography.html.19 +1 -0
  217. data/test/testcases/block/09_html/html_to_native/typography.text +1 -0
  218. data/test/testcases/block/09_html/invalid_html_1.html +5 -0
  219. data/test/testcases/block/09_html/invalid_html_1.text +5 -0
  220. data/test/testcases/block/09_html/invalid_html_2.html +5 -0
  221. data/test/testcases/block/09_html/invalid_html_2.text +5 -0
  222. data/test/testcases/block/09_html/markdown_attr.html +38 -0
  223. data/test/testcases/block/09_html/markdown_attr.text +38 -0
  224. data/test/testcases/block/09_html/not_parsed.html +24 -0
  225. data/test/testcases/block/09_html/not_parsed.text +24 -0
  226. data/test/testcases/block/09_html/parse_as_raw.html +35 -0
  227. data/test/testcases/block/09_html/parse_as_raw.htmlinput +34 -0
  228. data/test/testcases/block/09_html/parse_as_raw.options +1 -0
  229. data/test/testcases/block/09_html/parse_as_raw.text +33 -0
  230. data/test/testcases/block/09_html/parse_as_span.html +12 -0
  231. data/test/testcases/block/09_html/parse_as_span.htmlinput +12 -0
  232. data/test/testcases/block/09_html/parse_as_span.options +1 -0
  233. data/test/testcases/block/09_html/parse_as_span.text +9 -0
  234. data/test/testcases/block/09_html/parse_block_html.html +21 -0
  235. data/test/testcases/block/09_html/parse_block_html.options +1 -0
  236. data/test/testcases/block/09_html/parse_block_html.text +17 -0
  237. data/test/testcases/block/09_html/processing_instruction.html +13 -0
  238. data/test/testcases/block/09_html/processing_instruction.text +12 -0
  239. data/test/testcases/block/09_html/simple.html +64 -0
  240. data/test/testcases/block/09_html/simple.html.19 +64 -0
  241. data/test/testcases/block/09_html/simple.options +1 -0
  242. data/test/testcases/block/09_html/simple.text +59 -0
  243. data/test/testcases/block/10_ald/simple.html +2 -0
  244. data/test/testcases/block/10_ald/simple.text +8 -0
  245. data/test/testcases/block/11_ial/auto_id_and_ial.html +1 -0
  246. data/test/testcases/block/11_ial/auto_id_and_ial.options +1 -0
  247. data/test/testcases/block/11_ial/auto_id_and_ial.text +2 -0
  248. data/test/testcases/block/11_ial/nested.html +11 -0
  249. data/test/testcases/block/11_ial/nested.text +15 -0
  250. data/test/testcases/block/11_ial/simple.html +25 -0
  251. data/test/testcases/block/11_ial/simple.text +34 -0
  252. data/test/testcases/block/12_extension/comment.html +8 -0
  253. data/test/testcases/block/12_extension/comment.text +12 -0
  254. data/test/testcases/block/12_extension/ignored.html +8 -0
  255. data/test/testcases/block/12_extension/ignored.text +8 -0
  256. data/test/testcases/block/12_extension/nomarkdown.html +10 -0
  257. data/test/testcases/block/12_extension/nomarkdown.kramdown +20 -0
  258. data/test/testcases/block/12_extension/nomarkdown.latex +13 -0
  259. data/test/testcases/block/12_extension/nomarkdown.text +21 -0
  260. data/test/testcases/block/12_extension/options.html +21 -0
  261. data/test/testcases/block/12_extension/options.text +21 -0
  262. data/test/testcases/block/12_extension/options2.html +10 -0
  263. data/test/testcases/block/12_extension/options2.text +5 -0
  264. data/test/testcases/block/12_extension/options3.html +7 -0
  265. data/test/testcases/block/12_extension/options3.text +7 -0
  266. data/test/testcases/block/13_definition_list/definition_at_beginning.html +1 -0
  267. data/test/testcases/block/13_definition_list/definition_at_beginning.text +1 -0
  268. data/test/testcases/block/13_definition_list/item_ial.html +12 -0
  269. data/test/testcases/block/13_definition_list/item_ial.text +8 -0
  270. data/test/testcases/block/13_definition_list/multiple_terms.html +13 -0
  271. data/test/testcases/block/13_definition_list/multiple_terms.text +10 -0
  272. data/test/testcases/block/13_definition_list/no_def_list.html +2 -0
  273. data/test/testcases/block/13_definition_list/no_def_list.text +2 -0
  274. data/test/testcases/block/13_definition_list/para_wrapping.html +10 -0
  275. data/test/testcases/block/13_definition_list/para_wrapping.text +6 -0
  276. data/test/testcases/block/13_definition_list/separated_by_eob.html +8 -0
  277. data/test/testcases/block/13_definition_list/separated_by_eob.text +5 -0
  278. data/test/testcases/block/13_definition_list/simple.html +8 -0
  279. data/test/testcases/block/13_definition_list/simple.text +7 -0
  280. data/test/testcases/block/13_definition_list/styled_terms.html +4 -0
  281. data/test/testcases/block/13_definition_list/styled_terms.text +2 -0
  282. data/test/testcases/block/13_definition_list/too_much_space.html +3 -0
  283. data/test/testcases/block/13_definition_list/too_much_space.text +4 -0
  284. data/test/testcases/block/13_definition_list/with_blocks.html +38 -0
  285. data/test/testcases/block/13_definition_list/with_blocks.text +24 -0
  286. data/test/testcases/block/14_table/errors.html +8 -0
  287. data/test/testcases/block/14_table/errors.text +9 -0
  288. data/test/testcases/block/14_table/escaping.html +52 -0
  289. data/test/testcases/block/14_table/escaping.text +19 -0
  290. data/test/testcases/block/14_table/footer.html +65 -0
  291. data/test/testcases/block/14_table/footer.text +25 -0
  292. data/test/testcases/block/14_table/header.html +96 -0
  293. data/test/testcases/block/14_table/header.text +32 -0
  294. data/test/testcases/block/14_table/no_table.html +3 -0
  295. data/test/testcases/block/14_table/no_table.text +3 -0
  296. data/test/testcases/block/14_table/simple.html +177 -0
  297. data/test/testcases/block/14_table/simple.html.19 +177 -0
  298. data/test/testcases/block/14_table/simple.text +49 -0
  299. data/test/testcases/block/14_table/table_with_footnote.html +25 -0
  300. data/test/testcases/block/14_table/table_with_footnote.latex +11 -0
  301. data/test/testcases/block/14_table/table_with_footnote.text +6 -0
  302. data/test/testcases/block/15_math/normal.html +26 -0
  303. data/test/testcases/block/15_math/normal.text +28 -0
  304. data/test/testcases/block/16_toc/no_toc.html +33 -0
  305. data/test/testcases/block/16_toc/no_toc.options +1 -0
  306. data/test/testcases/block/16_toc/no_toc.text +16 -0
  307. data/test/testcases/block/16_toc/toc_levels.html +24 -0
  308. data/test/testcases/block/16_toc/toc_levels.options +1 -0
  309. data/test/testcases/block/16_toc/toc_levels.text +16 -0
  310. data/test/testcases/block/17_github_codeblock/backtick_syntax.html +7 -0
  311. data/test/testcases/block/17_github_codeblock/backtick_syntax.text +9 -0
  312. data/test/testcases/block/17_github_codeblock/error.html +4 -0
  313. data/test/testcases/block/17_github_codeblock/error.text +4 -0
  314. data/test/testcases/block/17_github_codeblock/no_newline_at_end.html +2 -0
  315. data/test/testcases/block/17_github_codeblock/no_newline_at_end.text +3 -0
  316. data/test/testcases/encoding.html +46 -0
  317. data/test/testcases/encoding.text +28 -0
  318. data/test/testcases/span/01_link/empty.html +5 -0
  319. data/test/testcases/span/01_link/empty.text +5 -0
  320. data/test/testcases/span/01_link/image_in_a.html +5 -0
  321. data/test/testcases/span/01_link/image_in_a.text +5 -0
  322. data/test/testcases/span/01_link/imagelinks.html +14 -0
  323. data/test/testcases/span/01_link/imagelinks.text +16 -0
  324. data/test/testcases/span/01_link/inline.html +46 -0
  325. data/test/testcases/span/01_link/inline.html.19 +46 -0
  326. data/test/testcases/span/01_link/inline.text +48 -0
  327. data/test/testcases/span/01_link/link_defs.html +9 -0
  328. data/test/testcases/span/01_link/link_defs.text +26 -0
  329. data/test/testcases/span/01_link/links_with_angle_brackets.html +3 -0
  330. data/test/testcases/span/01_link/links_with_angle_brackets.text +3 -0
  331. data/test/testcases/span/01_link/reference.html +36 -0
  332. data/test/testcases/span/01_link/reference.html.19 +36 -0
  333. data/test/testcases/span/01_link/reference.text +50 -0
  334. data/test/testcases/span/02_emphasis/empty.html +3 -0
  335. data/test/testcases/span/02_emphasis/empty.text +3 -0
  336. data/test/testcases/span/02_emphasis/errors.html +9 -0
  337. data/test/testcases/span/02_emphasis/errors.text +9 -0
  338. data/test/testcases/span/02_emphasis/nesting.html +38 -0
  339. data/test/testcases/span/02_emphasis/nesting.text +33 -0
  340. data/test/testcases/span/02_emphasis/normal.html +46 -0
  341. data/test/testcases/span/02_emphasis/normal.text +46 -0
  342. data/test/testcases/span/03_codespan/empty.html +5 -0
  343. data/test/testcases/span/03_codespan/empty.text +5 -0
  344. data/test/testcases/span/03_codespan/errors.html +1 -0
  345. data/test/testcases/span/03_codespan/errors.text +1 -0
  346. data/test/testcases/span/03_codespan/highlighting.html +1 -0
  347. data/test/testcases/span/03_codespan/highlighting.text +1 -0
  348. data/test/testcases/span/03_codespan/normal.html +16 -0
  349. data/test/testcases/span/03_codespan/normal.text +16 -0
  350. data/test/testcases/span/04_footnote/definitions.html +17 -0
  351. data/test/testcases/span/04_footnote/definitions.latex +17 -0
  352. data/test/testcases/span/04_footnote/definitions.text +24 -0
  353. data/test/testcases/span/04_footnote/footnote_nr.html +12 -0
  354. data/test/testcases/span/04_footnote/footnote_nr.latex +2 -0
  355. data/test/testcases/span/04_footnote/footnote_nr.options +1 -0
  356. data/test/testcases/span/04_footnote/footnote_nr.text +4 -0
  357. data/test/testcases/span/04_footnote/markers.html +46 -0
  358. data/test/testcases/span/04_footnote/markers.latex +23 -0
  359. data/test/testcases/span/04_footnote/markers.text +26 -0
  360. data/test/testcases/span/05_html/across_lines.html +1 -0
  361. data/test/testcases/span/05_html/across_lines.text +2 -0
  362. data/test/testcases/span/05_html/invalid.html +1 -0
  363. data/test/testcases/span/05_html/invalid.text +1 -0
  364. data/test/testcases/span/05_html/link_with_mailto.html +1 -0
  365. data/test/testcases/span/05_html/link_with_mailto.text +1 -0
  366. data/test/testcases/span/05_html/markdown_attr.html +6 -0
  367. data/test/testcases/span/05_html/markdown_attr.text +6 -0
  368. data/test/testcases/span/05_html/normal.html +34 -0
  369. data/test/testcases/span/05_html/normal.text +34 -0
  370. data/test/testcases/span/abbreviations/abbrev.html +8 -0
  371. data/test/testcases/span/abbreviations/abbrev.text +15 -0
  372. data/test/testcases/span/abbreviations/abbrev_defs.html +2 -0
  373. data/test/testcases/span/abbreviations/abbrev_defs.text +5 -0
  374. data/test/testcases/span/autolinks/url_links.html +12 -0
  375. data/test/testcases/span/autolinks/url_links.text +12 -0
  376. data/test/testcases/span/escaped_chars/normal.html +47 -0
  377. data/test/testcases/span/escaped_chars/normal.text +47 -0
  378. data/test/testcases/span/extension/comment.html +6 -0
  379. data/test/testcases/span/extension/comment.text +6 -0
  380. data/test/testcases/span/extension/ignored.html +1 -0
  381. data/test/testcases/span/extension/ignored.text +1 -0
  382. data/test/testcases/span/extension/nomarkdown.html +1 -0
  383. data/test/testcases/span/extension/nomarkdown.text +1 -0
  384. data/test/testcases/span/extension/options.html +1 -0
  385. data/test/testcases/span/extension/options.text +1 -0
  386. data/test/testcases/span/ial/simple.html +6 -0
  387. data/test/testcases/span/ial/simple.text +6 -0
  388. data/test/testcases/span/line_breaks/normal.html +11 -0
  389. data/test/testcases/span/line_breaks/normal.latex +12 -0
  390. data/test/testcases/span/line_breaks/normal.text +11 -0
  391. data/test/testcases/span/math/normal.html +5 -0
  392. data/test/testcases/span/math/normal.text +5 -0
  393. data/test/testcases/span/text_substitutions/entities.html +6 -0
  394. data/test/testcases/span/text_substitutions/entities.options +1 -0
  395. data/test/testcases/span/text_substitutions/entities.text +6 -0
  396. data/test/testcases/span/text_substitutions/entities_as_char.html +1 -0
  397. data/test/testcases/span/text_substitutions/entities_as_char.html.19 +1 -0
  398. data/test/testcases/span/text_substitutions/entities_as_char.options +1 -0
  399. data/test/testcases/span/text_substitutions/entities_as_char.text +1 -0
  400. data/test/testcases/span/text_substitutions/entities_as_input.html +1 -0
  401. data/test/testcases/span/text_substitutions/entities_as_input.options +1 -0
  402. data/test/testcases/span/text_substitutions/entities_as_input.text +1 -0
  403. data/test/testcases/span/text_substitutions/entities_numeric.html +1 -0
  404. data/test/testcases/span/text_substitutions/entities_numeric.options +1 -0
  405. data/test/testcases/span/text_substitutions/entities_numeric.text +1 -0
  406. data/test/testcases/span/text_substitutions/entities_symbolic.html +1 -0
  407. data/test/testcases/span/text_substitutions/entities_symbolic.options +1 -0
  408. data/test/testcases/span/text_substitutions/entities_symbolic.text +1 -0
  409. data/test/testcases/span/text_substitutions/greaterthan.html +1 -0
  410. data/test/testcases/span/text_substitutions/greaterthan.text +1 -0
  411. data/test/testcases/span/text_substitutions/lowerthan.html +1 -0
  412. data/test/testcases/span/text_substitutions/lowerthan.text +1 -0
  413. data/test/testcases/span/text_substitutions/typography.html +18 -0
  414. data/test/testcases/span/text_substitutions/typography.html.19 +18 -0
  415. data/test/testcases/span/text_substitutions/typography.text +18 -0
  416. metadata +817 -0
data/README ADDED
@@ -0,0 +1,43 @@
1
+ = kramdown
2
+
3
+ kramdown is yet-another-markdown-parser but fast, pure Ruby, using a strict syntax definition and
4
+ supporting several common extensions. The syntax definition for the kramdown syntax can be found in
5
+ doc/syntax.page and a quick reference is available in doc/quickref.page.
6
+
7
+ The kramdown library is mainly written to support the kramdown-to-HTML conversion chain. However,
8
+ due to its flexibility it supports other input and output formats as well. Here is a list of the
9
+ supported formats:
10
+
11
+ * input formats: kramdown (a Markdown superset), Markdown, HTML
12
+ * output formats: HTML, kramdown, LaTeX (and therefore PDF)
13
+
14
+ All the documentation on the available input and output formats is available in the doc/ directory
15
+ and online at http://kramdown.rubyforge.org.
16
+
17
+
18
+ == Usage
19
+
20
+ kramdown has a basic *Cloth API, so using kramdown is as easy as
21
+
22
+ require 'kramdown'
23
+
24
+ Kramdown::Document.new(text).to_html
25
+
26
+ For detailed information have a look at the API documentation of the Kramdown::Document class.
27
+
28
+ The full API documentation is available at http://kramdown.rubyforge.org/rdoc/, other sites with an
29
+ API documentation for kramdown probably don't provide the complete documentation!
30
+
31
+
32
+ == Development
33
+
34
+ Just clone the git repository as described in doc/installation.page and you are good to go. You
35
+ probably want to install `rake` so that you can use the provided rake tasks. Aside from that:
36
+
37
+ * The +tidy+ binary needs to be installed for the automatically derived tests to work.
38
+ * The +latex+ binary needs to be installed for the latex-compilation tests to work.
39
+
40
+
41
+ == License
42
+
43
+ GPLv3 - see the COPYING file.
data/Rakefile ADDED
@@ -0,0 +1,370 @@
1
+ # -*- ruby -*-
2
+
3
+ # load all optional developer libraries
4
+ begin
5
+ require 'rubygems'
6
+ require 'rubygems/package_task'
7
+ rescue LoadError
8
+ end
9
+
10
+ begin
11
+ require 'webgen/webgentask'
12
+ require 'webgen/page'
13
+ require 'webgen/website'
14
+ rescue LoadError
15
+ end
16
+
17
+ begin
18
+ gem 'rdoc' if RUBY_VERSION >= '1.9'
19
+ require 'rdoc/task'
20
+ require 'rdoc/rdoc'
21
+
22
+ class RDoc::RDoc
23
+
24
+ alias :old_parse_files :parse_files
25
+
26
+ def parse_files(options)
27
+ file_info = old_parse_files(options)
28
+ require 'kramdown/options'
29
+
30
+ # Add options documentation to Kramdown::Options module
31
+ opt_module = RDoc::TopLevel.all_classes_and_modules.find {|m| m.full_name == 'Kramdown::Options'}
32
+ opt_defs = Kramdown::Options.definitions.sort.collect do |n, definition|
33
+ desc = definition.desc.split(/\n/).map {|l| " #{l}"}
34
+ desc[-2] = []
35
+ desc = desc.join("\n")
36
+ "[<tt>#{n}</tt> (type: #{definition.type}, default: #{definition.default.inspect})]\n#{desc}\n\n"
37
+ end
38
+ opt_module.comment.text += "\n== Available Options\n\n" << opt_defs.join("\n\n")
39
+
40
+ file_info
41
+ end
42
+
43
+ end
44
+
45
+ rescue LoadError
46
+ end
47
+
48
+ begin
49
+ require 'rubyforge'
50
+ rescue LoadError
51
+ end
52
+
53
+ begin
54
+ require 'rcov/rcovtask'
55
+ rescue LoadError
56
+ end
57
+
58
+ require 'fileutils'
59
+ require 'rake/clean'
60
+ require 'rake/testtask'
61
+ require 'rake/packagetask'
62
+ require 'erb'
63
+
64
+ $:.unshift('lib')
65
+ require 'kramdown'
66
+
67
+ # End user tasks ################################################################
68
+
69
+ task :default => :test
70
+
71
+ desc "Install using setup.rb"
72
+ task :install do
73
+ ruby "setup.rb config"
74
+ ruby "setup.rb setup"
75
+ ruby "setup.rb install"
76
+ end
77
+
78
+ task :clobber do
79
+ ruby "setup.rb clean"
80
+ end
81
+
82
+
83
+ if defined? Webgen
84
+ desc "Generate the HTML documentation"
85
+ Webgen::WebgenTask.new('htmldoc') do |site|
86
+ site.clobber_outdir = true
87
+ site.config_block = lambda do |config|
88
+ config['sources'] = [['/', "Webgen::Source::FileSystem", 'doc']]
89
+ config['output'] = ['Webgen::Output::FileSystem', 'htmldoc']
90
+ config.default_processing_pipeline('Page' => 'erb,tags,kramdown,blocks,fragments')
91
+ config.optionsdisplay.items [], :mandatory => 'default'
92
+ config.kdlink.oid nil, :mandatory => true
93
+ config.kdlink.part nil, :mandatory => true
94
+ config['contentprocessor.tags.map']['options'] = 'OptionsDisplay'
95
+ config['contentprocessor.tags.map']['kdexample'] = 'KDExample'
96
+ config['contentprocessor.tags.map']['kdlink'] = 'KDLink'
97
+ end
98
+ end
99
+ end
100
+
101
+ if defined? RDoc::Task
102
+ rd = RDoc::Task.new do |rdoc|
103
+ rdoc.rdoc_dir = 'htmldoc/rdoc'
104
+ rdoc.title = 'kramdown'
105
+ rdoc.main = 'README'
106
+ rdoc.rdoc_files.include('lib', 'README')
107
+ end
108
+ end
109
+
110
+ if defined?(Webgen) && defined?(RDoc::Task)
111
+ desc "Build the whole user documentation"
112
+ task :doc => [:rdoc, 'htmldoc']
113
+ end
114
+
115
+ tt = Rake::TestTask.new do |test|
116
+ test.warning = true
117
+ test.libs << 'test'
118
+ end
119
+
120
+ # Release tasks and development tasks ############################################
121
+
122
+ namespace :dev do
123
+
124
+ SUMMARY = 'kramdown is a fast, pure-Ruby Markdown-superset converter.'
125
+ DESCRIPTION = <<EOF
126
+ kramdown is yet-another-markdown-parser but fast, pure Ruby,
127
+ using a strict syntax definition and supporting several common extensions.
128
+ EOF
129
+
130
+ begin
131
+ REL_PAGE = Webgen::Page.from_data(File.read('doc/news/release_' + Kramdown::VERSION.split('.').join('_') + '.page'))
132
+ rescue
133
+ puts 'NO RELEASE NOTES/CHANGES FILE'
134
+ end
135
+
136
+ PKG_FILES = FileList.new([
137
+ 'Rakefile',
138
+ 'setup.rb',
139
+ 'COPYING', 'GPL', 'README', 'AUTHORS',
140
+ 'VERSION', 'ChangeLog', 'CONTRIBUTERS',
141
+ 'bin/*',
142
+ 'benchmark/*',
143
+ 'lib/**/*.rb',
144
+ 'man/man1/kramdown.1',
145
+ 'data/**/*',
146
+ 'doc/**',
147
+ 'test/**/*'
148
+ ])
149
+
150
+ CLOBBER << "VERSION"
151
+ file 'VERSION' do
152
+ puts "Generating VERSION file"
153
+ File.open('VERSION', 'w+') {|file| file.write(Kramdown::VERSION + "\n")}
154
+ end
155
+
156
+ CLOBBER << 'ChangeLog'
157
+ file 'ChangeLog' do
158
+ puts "Generating ChangeLog file"
159
+ `git log --name-only > ChangeLog`
160
+ end
161
+
162
+ CLOBBER << 'CONTRIBUTERS'
163
+ file 'CONTRIBUTERS' do
164
+ puts "Generating CONTRIBUTERS file"
165
+ `echo " Count Name" > CONTRIBUTERS`
166
+ `echo "======= ====" >> CONTRIBUTERS`
167
+ `git log | grep ^Author: | sed 's/^Author: //' | sort | uniq -c | sort -nr >> CONTRIBUTERS`
168
+ end
169
+
170
+ CLOBBER << "man/man1/kramdown.1"
171
+ file 'man/man1/kramdown.1' => ['man/man1/kramdown.1.erb'] do
172
+ puts "Generating kramdown man page"
173
+ File.open('man/man1/kramdown.1', 'w+') do |file|
174
+ file.write(ERB.new(File.read('man/man1/kramdown.1.erb')).result(binding))
175
+ end
176
+ end
177
+
178
+ Rake::PackageTask.new('kramdown', Kramdown::VERSION) do |pkg|
179
+ pkg.need_tar = true
180
+ pkg.need_zip = true
181
+ pkg.package_files = PKG_FILES
182
+ end
183
+
184
+ if defined? Gem
185
+ spec = Gem::Specification.new do |s|
186
+
187
+ #### Basic information
188
+ s.name = 'kramdown'
189
+ s.version = Kramdown::VERSION
190
+ s.summary = SUMMARY
191
+ s.description = DESCRIPTION
192
+
193
+ #### Dependencies, requirements and files
194
+ s.files = PKG_FILES.to_a
195
+
196
+ s.require_path = 'lib'
197
+ s.executables = ['kramdown']
198
+ s.default_executable = 'kramdown'
199
+ s.add_development_dependency 'coderay', '~> 1.0.0'
200
+
201
+ #### Documentation
202
+
203
+ s.has_rdoc = true
204
+ s.rdoc_options = ['--main', 'README']
205
+ s.extra_rdoc_files = 'README'
206
+
207
+ #### Author and project details
208
+
209
+ s.author = 'Thomas Leitner'
210
+ s.email = 't_leitner@gmx.at'
211
+ s.homepage = "http://kramdown.rubyforge.org"
212
+ s.rubyforge_project = 'kramdown'
213
+ end
214
+
215
+ Gem::PackageTask.new(spec) do |pkg|
216
+ pkg.need_zip = true
217
+ pkg.need_tar = true
218
+ end
219
+
220
+ end
221
+
222
+ if defined?(RubyForge) && defined?(Webgen) && defined?(Gem) && defined?(Rake::RDocTask)
223
+ desc 'Release Kramdown version ' + Kramdown::VERSION
224
+ task :release => [:clobber, :package, :publish_files, :publish_website, :post_news]
225
+ end
226
+
227
+ if defined? RubyForge
228
+ desc "Upload the release to Rubyforge"
229
+ task :publish_files => [:package] do
230
+ print 'Uploading files to Rubyforge...'
231
+ $stdout.flush
232
+
233
+ rf = RubyForge.new
234
+ rf.configure
235
+ rf.login
236
+
237
+ rf.userconfig["release_notes"] = REL_PAGE.blocks['content'].content
238
+ rf.userconfig["preformatted"] = false
239
+
240
+ files = %w[.gem .tgz .zip].collect {|ext| "pkg/kramdown-#{Kramdown::VERSION}" + ext}
241
+
242
+ rf.add_release('kramdown', 'kramdown', Kramdown::VERSION, *files)
243
+
244
+ sh "gem push pkg/kramdown-#{Kramdown::VERSION}.gem"
245
+ puts 'done'
246
+ end
247
+
248
+ desc 'Post announcement to rubyforge.'
249
+ task :post_news do
250
+ print 'Posting announcement to Rubyforge ...'
251
+ $stdout.flush
252
+ rf = RubyForge.new
253
+ rf.configure
254
+ rf.login
255
+
256
+ content = REL_PAGE.blocks['content'].content
257
+ content += "\n\n\nAbout kramdown\n\n#{SUMMARY}\n\n#{DESCRIPTION}"
258
+ rf.post_news('kramdown', "kramdown #{Kramdown::VERSION} released", content)
259
+ puts "done"
260
+ end
261
+ end
262
+
263
+ desc "Upload the website to Rubyforge"
264
+ task :publish_website => ['doc'] do
265
+ sh "rsync -avc --delete --exclude 'MathJax' --exclude 'robots.txt' htmldoc/ gettalong@rubyforge.org:/var/www/gforge-projects/kramdown/"
266
+ end
267
+
268
+
269
+ if defined? Rcov
270
+ Rcov::RcovTask.new do |rcov|
271
+ rcov.libs << 'test'
272
+ end
273
+ end
274
+
275
+ CODING_LINE = "# -*- coding: utf-8 -*-\n"
276
+ COPYRIGHT=<<EOF
277
+ #
278
+ #--
279
+ # Copyright (C) 2009-2010 Thomas Leitner <t_leitner@gmx.at>
280
+ #
281
+ # This file is part of kramdown.
282
+ #
283
+ # kramdown is free software: you can redistribute it and/or modify
284
+ # it under the terms of the GNU General Public License as published by
285
+ # the Free Software Foundation, either version 3 of the License, or
286
+ # (at your option) any later version.
287
+ #
288
+ # This program is distributed in the hope that it will be useful,
289
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
290
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
291
+ # GNU General Public License for more details.
292
+ #
293
+ # You should have received a copy of the GNU General Public License
294
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
295
+ #++
296
+ #
297
+ EOF
298
+
299
+ desc "Insert/Update copyright notice"
300
+ task :update_copyright do
301
+ inserted = false
302
+ Dir["lib/**/*.rb"].each do |file|
303
+ if !File.read(file).start_with?(CODING_LINE + COPYRIGHT)
304
+ inserted = true
305
+ puts "Updating file #{file}"
306
+ old = File.read(file)
307
+ if !(result = old.gsub!(/\A#{Regexp.escape(CODING_LINE)}#\n#--.*?\n#\+\+\n#\n/m, CODING_LINE + COPYRIGHT))
308
+ old.gsub!(/\A(#{Regexp.escape(CODING_LINE)})?/, CODING_LINE + COPYRIGHT + "\n")
309
+ end
310
+ File.open(file, 'w+') {|f| f.puts(old)}
311
+ end
312
+ end
313
+ puts "Look through the above mentioned files and correct all problems" if inserted
314
+ end
315
+
316
+ end
317
+
318
+ task :clobber => ['dev:clobber']
319
+
320
+ # Helper methods and misc ###################################################################
321
+
322
+ if defined? Webgen
323
+
324
+ class OptionsDisplay
325
+
326
+ include Webgen::Tag::Base
327
+
328
+ def call(tag, body, context)
329
+ param('optionsdisplay.items').collect do |opt|
330
+ Kramdown::Options.definitions[opt]
331
+ end.collect do |term|
332
+ lines = term.desc.split(/\n/)
333
+ first = lines.shift
334
+ rest = lines[0..-2].collect {|l| " " + l}.join("\n")
335
+ "`#{term.name}`\n: #{first}\n#{rest}\n\n"
336
+ end.join("\n")
337
+ end
338
+
339
+ end
340
+
341
+ require 'cgi'
342
+
343
+ class KDExample
344
+
345
+ include Webgen::Tag::Base
346
+
347
+ def call(tag, body, context)
348
+ body.strip!
349
+ result = ::Kramdown::Document.new(body, :auto_ids => false).to_html
350
+ before = "<pre class='kdexample-before'><code>#{CGI::escapeHTML(body)}\n</code></pre>"
351
+ after = "<pre class='kdexample-after-source'><code>#{CGI::escapeHTML(result)}\n</code></pre>"
352
+ afterhtml = "<div class='kdexample-after-live'>#{result}</div>"
353
+
354
+ "<div class='kdexample'>#{before}#{after}#{afterhtml}\n</div><div class='clear'></div>"
355
+ end
356
+
357
+ end
358
+
359
+ class KDLink
360
+
361
+ include Webgen::Tag::Base
362
+
363
+ def call(tag, body, context)
364
+ link = "<a href='syntax.html##{param('kdlink.oid')}'>&rarr; Syntax for #{param('kdlink.part')}</a>"
365
+ "<div class='kdsyntaxlink'>#{link}\n</div>"
366
+ end
367
+
368
+ end
369
+
370
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,34 @@
1
+ require 'benchmark'
2
+ require 'stringio'
3
+
4
+ require 'kramdown'
5
+ require 'bluecloth'
6
+ require 'maruku'
7
+ require 'maruku/version'
8
+ require 'rdiscount'
9
+ require 'bluefeather'
10
+
11
+ module MaRuKu::Errors
12
+ def tell_user(s)
13
+ end
14
+ end
15
+
16
+
17
+ RUNS=20
18
+
19
+ FILES=['mdsyntax.text', 'mdbasics.text']
20
+
21
+ puts "Running tests on #{Time.now.strftime("%Y-%m-%d")} under #{RUBY_DESCRIPTION}"
22
+
23
+ FILES.each do |file|
24
+ data = File.read(File.join(File.dirname(__FILE__), file))
25
+ puts
26
+ puts "Test using file #{file} and #{RUNS} runs"
27
+ Benchmark.bmbm do |b|
28
+ b.report("kramdown #{Kramdown::VERSION}") { RUNS.times { Kramdown::Document.new(data).to_html } }
29
+ b.report("Maruku #{MaRuKu::Version}") { RUNS.times { Maruku.new(data, :on_error => :ignore).to_html } }
30
+ b.report("BlueFeather #{BlueFeather::VERSION}") { RUNS.times { BlueFeather.parse(data) } }
31
+ b.report("BlueCloth #{BlueCloth::VERSION}") { RUNS.times { BlueCloth.new(data).to_html } }
32
+ b.report("RDiscount #{RDiscount::VERSION}") { RUNS.times { RDiscount.new(data).to_html } }
33
+ end
34
+ end