rouge 3.18.0

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 (444) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +40 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +18 -0
  5. data/lib/rouge.rb +107 -0
  6. data/lib/rouge/cli.rb +498 -0
  7. data/lib/rouge/demos/abap +6 -0
  8. data/lib/rouge/demos/actionscript +4 -0
  9. data/lib/rouge/demos/ada +26 -0
  10. data/lib/rouge/demos/apache +21 -0
  11. data/lib/rouge/demos/apex +9 -0
  12. data/lib/rouge/demos/apiblueprint +33 -0
  13. data/lib/rouge/demos/applescript +2 -0
  14. data/lib/rouge/demos/armasm +12 -0
  15. data/lib/rouge/demos/awk +4 -0
  16. data/lib/rouge/demos/batchfile +3 -0
  17. data/lib/rouge/demos/bbcbasic +6 -0
  18. data/lib/rouge/demos/biml +38 -0
  19. data/lib/rouge/demos/bpf +7 -0
  20. data/lib/rouge/demos/brainfuck +5 -0
  21. data/lib/rouge/demos/bsl +7 -0
  22. data/lib/rouge/demos/c +8 -0
  23. data/lib/rouge/demos/ceylon +7 -0
  24. data/lib/rouge/demos/cfscript +18 -0
  25. data/lib/rouge/demos/clean +6 -0
  26. data/lib/rouge/demos/clojure +5 -0
  27. data/lib/rouge/demos/cmake +7 -0
  28. data/lib/rouge/demos/cmhg +8 -0
  29. data/lib/rouge/demos/coffeescript +5 -0
  30. data/lib/rouge/demos/common_lisp +1 -0
  31. data/lib/rouge/demos/conf +4 -0
  32. data/lib/rouge/demos/console +6 -0
  33. data/lib/rouge/demos/coq +13 -0
  34. data/lib/rouge/demos/cpp +8 -0
  35. data/lib/rouge/demos/crystal +45 -0
  36. data/lib/rouge/demos/csharp +5 -0
  37. data/lib/rouge/demos/css +4 -0
  38. data/lib/rouge/demos/csvs +8 -0
  39. data/lib/rouge/demos/cuda +11 -0
  40. data/lib/rouge/demos/cypher +5 -0
  41. data/lib/rouge/demos/cython +6 -0
  42. data/lib/rouge/demos/d +16 -0
  43. data/lib/rouge/demos/dart +6 -0
  44. data/lib/rouge/demos/datastudio +21 -0
  45. data/lib/rouge/demos/diff +7 -0
  46. data/lib/rouge/demos/digdag +19 -0
  47. data/lib/rouge/demos/docker +9 -0
  48. data/lib/rouge/demos/dot +5 -0
  49. data/lib/rouge/demos/ecl +18 -0
  50. data/lib/rouge/demos/eex +1 -0
  51. data/lib/rouge/demos/eiffel +30 -0
  52. data/lib/rouge/demos/elixir +1 -0
  53. data/lib/rouge/demos/elm +4 -0
  54. data/lib/rouge/demos/epp +4 -0
  55. data/lib/rouge/demos/erb +1 -0
  56. data/lib/rouge/demos/erlang +7 -0
  57. data/lib/rouge/demos/escape +3 -0
  58. data/lib/rouge/demos/factor +5 -0
  59. data/lib/rouge/demos/fortran +22 -0
  60. data/lib/rouge/demos/freefem +16 -0
  61. data/lib/rouge/demos/fsharp +12 -0
  62. data/lib/rouge/demos/gdscript +18 -0
  63. data/lib/rouge/demos/ghc-cmm +23 -0
  64. data/lib/rouge/demos/ghc-core +26 -0
  65. data/lib/rouge/demos/gherkin +17 -0
  66. data/lib/rouge/demos/glsl +14 -0
  67. data/lib/rouge/demos/go +7 -0
  68. data/lib/rouge/demos/gradle +10 -0
  69. data/lib/rouge/demos/graphql +17 -0
  70. data/lib/rouge/demos/groovy +9 -0
  71. data/lib/rouge/demos/hack +5 -0
  72. data/lib/rouge/demos/haml +5 -0
  73. data/lib/rouge/demos/handlebars +7 -0
  74. data/lib/rouge/demos/haskell +6 -0
  75. data/lib/rouge/demos/haxe +5 -0
  76. data/lib/rouge/demos/hcl +7 -0
  77. data/lib/rouge/demos/hocon +8 -0
  78. data/lib/rouge/demos/hql +5 -0
  79. data/lib/rouge/demos/html +8 -0
  80. data/lib/rouge/demos/http +14 -0
  81. data/lib/rouge/demos/hylang +10 -0
  82. data/lib/rouge/demos/idlang +8 -0
  83. data/lib/rouge/demos/igorpro +9 -0
  84. data/lib/rouge/demos/ini +4 -0
  85. data/lib/rouge/demos/io +11 -0
  86. data/lib/rouge/demos/irb +4 -0
  87. data/lib/rouge/demos/irb_output +2 -0
  88. data/lib/rouge/demos/isbl +4 -0
  89. data/lib/rouge/demos/java +5 -0
  90. data/lib/rouge/demos/javascript +1 -0
  91. data/lib/rouge/demos/jinja +9 -0
  92. data/lib/rouge/demos/jsl +3 -0
  93. data/lib/rouge/demos/json +1 -0
  94. data/lib/rouge/demos/json-doc +1 -0
  95. data/lib/rouge/demos/jsonnet +28 -0
  96. data/lib/rouge/demos/jsp +29 -0
  97. data/lib/rouge/demos/jsx +17 -0
  98. data/lib/rouge/demos/julia +11 -0
  99. data/lib/rouge/demos/kotlin +3 -0
  100. data/lib/rouge/demos/lasso +12 -0
  101. data/lib/rouge/demos/liquid +10 -0
  102. data/lib/rouge/demos/literate_coffeescript +3 -0
  103. data/lib/rouge/demos/literate_haskell +7 -0
  104. data/lib/rouge/demos/llvm +20 -0
  105. data/lib/rouge/demos/lua +12 -0
  106. data/lib/rouge/demos/lustre +6 -0
  107. data/lib/rouge/demos/lutin +18 -0
  108. data/lib/rouge/demos/m68k +16 -0
  109. data/lib/rouge/demos/magik +6 -0
  110. data/lib/rouge/demos/make +6 -0
  111. data/lib/rouge/demos/markdown +4 -0
  112. data/lib/rouge/demos/mason +22 -0
  113. data/lib/rouge/demos/mathematica +8 -0
  114. data/lib/rouge/demos/matlab +6 -0
  115. data/lib/rouge/demos/minizinc +23 -0
  116. data/lib/rouge/demos/moonscript +16 -0
  117. data/lib/rouge/demos/mosel +10 -0
  118. data/lib/rouge/demos/msgtrans +4 -0
  119. data/lib/rouge/demos/mxml +22 -0
  120. data/lib/rouge/demos/nasm +26 -0
  121. data/lib/rouge/demos/nesasm +11 -0
  122. data/lib/rouge/demos/nginx +5 -0
  123. data/lib/rouge/demos/nim +27 -0
  124. data/lib/rouge/demos/nix +19 -0
  125. data/lib/rouge/demos/objective_c +18 -0
  126. data/lib/rouge/demos/objective_cpp +17 -0
  127. data/lib/rouge/demos/ocaml +12 -0
  128. data/lib/rouge/demos/openedge +4 -0
  129. data/lib/rouge/demos/opentype_feature_file +6 -0
  130. data/lib/rouge/demos/pascal +14 -0
  131. data/lib/rouge/demos/perl +5 -0
  132. data/lib/rouge/demos/php +3 -0
  133. data/lib/rouge/demos/plaintext +1 -0
  134. data/lib/rouge/demos/plist +11 -0
  135. data/lib/rouge/demos/pony +17 -0
  136. data/lib/rouge/demos/powershell +13 -0
  137. data/lib/rouge/demos/praat +26 -0
  138. data/lib/rouge/demos/prolog +9 -0
  139. data/lib/rouge/demos/prometheus +9 -0
  140. data/lib/rouge/demos/properties +7 -0
  141. data/lib/rouge/demos/protobuf +5 -0
  142. data/lib/rouge/demos/puppet +6 -0
  143. data/lib/rouge/demos/python +6 -0
  144. data/lib/rouge/demos/q +8 -0
  145. data/lib/rouge/demos/qml +9 -0
  146. data/lib/rouge/demos/r +8 -0
  147. data/lib/rouge/demos/racket +24 -0
  148. data/lib/rouge/demos/reasonml +12 -0
  149. data/lib/rouge/demos/rego +8 -0
  150. data/lib/rouge/demos/robot_framework +27 -0
  151. data/lib/rouge/demos/ruby +9 -0
  152. data/lib/rouge/demos/rust +12 -0
  153. data/lib/rouge/demos/sas +13 -0
  154. data/lib/rouge/demos/sass +3 -0
  155. data/lib/rouge/demos/scala +3 -0
  156. data/lib/rouge/demos/scheme +4 -0
  157. data/lib/rouge/demos/scss +5 -0
  158. data/lib/rouge/demos/sed +4 -0
  159. data/lib/rouge/demos/shell +2 -0
  160. data/lib/rouge/demos/sieve +10 -0
  161. data/lib/rouge/demos/slice +10 -0
  162. data/lib/rouge/demos/slim +17 -0
  163. data/lib/rouge/demos/smalltalk +6 -0
  164. data/lib/rouge/demos/smarty +12 -0
  165. data/lib/rouge/demos/sml +4 -0
  166. data/lib/rouge/demos/solidity +13 -0
  167. data/lib/rouge/demos/sparql +6 -0
  168. data/lib/rouge/demos/sqf +14 -0
  169. data/lib/rouge/demos/sql +1 -0
  170. data/lib/rouge/demos/supercollider +11 -0
  171. data/lib/rouge/demos/swift +5 -0
  172. data/lib/rouge/demos/tap +5 -0
  173. data/lib/rouge/demos/tcl +1 -0
  174. data/lib/rouge/demos/terraform +16 -0
  175. data/lib/rouge/demos/tex +1 -0
  176. data/lib/rouge/demos/toml +9 -0
  177. data/lib/rouge/demos/tsx +17 -0
  178. data/lib/rouge/demos/ttcn3 +6 -0
  179. data/lib/rouge/demos/tulip +13 -0
  180. data/lib/rouge/demos/turtle +26 -0
  181. data/lib/rouge/demos/twig +9 -0
  182. data/lib/rouge/demos/typescript +1 -0
  183. data/lib/rouge/demos/vala +8 -0
  184. data/lib/rouge/demos/vb +4 -0
  185. data/lib/rouge/demos/vcl +12 -0
  186. data/lib/rouge/demos/verilog +27 -0
  187. data/lib/rouge/demos/vhdl +23 -0
  188. data/lib/rouge/demos/viml +14 -0
  189. data/lib/rouge/demos/vue +11 -0
  190. data/lib/rouge/demos/wollok +11 -0
  191. data/lib/rouge/demos/xml +2 -0
  192. data/lib/rouge/demos/xojo +14 -0
  193. data/lib/rouge/demos/xpath +2 -0
  194. data/lib/rouge/demos/xquery +22 -0
  195. data/lib/rouge/demos/yaml +4 -0
  196. data/lib/rouge/demos/yang +17 -0
  197. data/lib/rouge/formatter.rb +112 -0
  198. data/lib/rouge/formatters/html.rb +56 -0
  199. data/lib/rouge/formatters/html_inline.rb +31 -0
  200. data/lib/rouge/formatters/html_legacy.rb +45 -0
  201. data/lib/rouge/formatters/html_line_table.rb +53 -0
  202. data/lib/rouge/formatters/html_linewise.rb +23 -0
  203. data/lib/rouge/formatters/html_pygments.rb +18 -0
  204. data/lib/rouge/formatters/html_table.rb +51 -0
  205. data/lib/rouge/formatters/null.rb +20 -0
  206. data/lib/rouge/formatters/terminal256.rb +198 -0
  207. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  208. data/lib/rouge/formatters/tex.rb +92 -0
  209. data/lib/rouge/guesser.rb +57 -0
  210. data/lib/rouge/guessers/disambiguation.rb +136 -0
  211. data/lib/rouge/guessers/filename.rb +27 -0
  212. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  213. data/lib/rouge/guessers/mimetype.rb +16 -0
  214. data/lib/rouge/guessers/modeline.rb +46 -0
  215. data/lib/rouge/guessers/source.rb +31 -0
  216. data/lib/rouge/guessers/util.rb +34 -0
  217. data/lib/rouge/lexer.rb +517 -0
  218. data/lib/rouge/lexers/abap.rb +240 -0
  219. data/lib/rouge/lexers/actionscript.rb +196 -0
  220. data/lib/rouge/lexers/ada.rb +162 -0
  221. data/lib/rouge/lexers/apache.rb +69 -0
  222. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  223. data/lib/rouge/lexers/apex.rb +126 -0
  224. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  225. data/lib/rouge/lexers/apple_script.rb +370 -0
  226. data/lib/rouge/lexers/armasm.rb +145 -0
  227. data/lib/rouge/lexers/awk.rb +162 -0
  228. data/lib/rouge/lexers/batchfile.rb +164 -0
  229. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  230. data/lib/rouge/lexers/biml.rb +43 -0
  231. data/lib/rouge/lexers/bpf.rb +118 -0
  232. data/lib/rouge/lexers/brainfuck.rb +53 -0
  233. data/lib/rouge/lexers/bsl.rb +82 -0
  234. data/lib/rouge/lexers/c.rb +190 -0
  235. data/lib/rouge/lexers/ceylon.rb +96 -0
  236. data/lib/rouge/lexers/cfscript.rb +154 -0
  237. data/lib/rouge/lexers/clean.rb +156 -0
  238. data/lib/rouge/lexers/clojure.rb +113 -0
  239. data/lib/rouge/lexers/cmake.rb +208 -0
  240. data/lib/rouge/lexers/cmhg.rb +34 -0
  241. data/lib/rouge/lexers/coffeescript.rb +215 -0
  242. data/lib/rouge/lexers/common_lisp.rb +346 -0
  243. data/lib/rouge/lexers/conf.rb +25 -0
  244. data/lib/rouge/lexers/console.rb +190 -0
  245. data/lib/rouge/lexers/coq.rb +191 -0
  246. data/lib/rouge/lexers/cpp.rb +89 -0
  247. data/lib/rouge/lexers/crystal.rb +430 -0
  248. data/lib/rouge/lexers/csharp.rb +114 -0
  249. data/lib/rouge/lexers/css.rb +274 -0
  250. data/lib/rouge/lexers/csvs.rb +44 -0
  251. data/lib/rouge/lexers/cuda.rb +35 -0
  252. data/lib/rouge/lexers/cypher.rb +108 -0
  253. data/lib/rouge/lexers/cython.rb +151 -0
  254. data/lib/rouge/lexers/d.rb +177 -0
  255. data/lib/rouge/lexers/dart.rb +105 -0
  256. data/lib/rouge/lexers/datastudio.rb +138 -0
  257. data/lib/rouge/lexers/diff.rb +37 -0
  258. data/lib/rouge/lexers/digdag.rb +70 -0
  259. data/lib/rouge/lexers/docker.rb +51 -0
  260. data/lib/rouge/lexers/dot.rb +69 -0
  261. data/lib/rouge/lexers/ecl.rb +175 -0
  262. data/lib/rouge/lexers/eex.rb +52 -0
  263. data/lib/rouge/lexers/eiffel.rb +66 -0
  264. data/lib/rouge/lexers/elixir.rb +149 -0
  265. data/lib/rouge/lexers/elm.rb +90 -0
  266. data/lib/rouge/lexers/epp.rb +51 -0
  267. data/lib/rouge/lexers/erb.rb +53 -0
  268. data/lib/rouge/lexers/erlang.rb +115 -0
  269. data/lib/rouge/lexers/escape.rb +58 -0
  270. data/lib/rouge/lexers/factor.rb +303 -0
  271. data/lib/rouge/lexers/fortran.rb +178 -0
  272. data/lib/rouge/lexers/freefem.rb +240 -0
  273. data/lib/rouge/lexers/fsharp.rb +120 -0
  274. data/lib/rouge/lexers/gdscript.rb +171 -0
  275. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  276. data/lib/rouge/lexers/ghc_core.rb +151 -0
  277. data/lib/rouge/lexers/gherkin.rb +140 -0
  278. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  279. data/lib/rouge/lexers/glsl.rb +132 -0
  280. data/lib/rouge/lexers/go.rb +175 -0
  281. data/lib/rouge/lexers/gradle.rb +38 -0
  282. data/lib/rouge/lexers/graphql.rb +261 -0
  283. data/lib/rouge/lexers/groovy.rb +111 -0
  284. data/lib/rouge/lexers/hack.rb +49 -0
  285. data/lib/rouge/lexers/haml.rb +226 -0
  286. data/lib/rouge/lexers/handlebars.rb +91 -0
  287. data/lib/rouge/lexers/haskell.rb +199 -0
  288. data/lib/rouge/lexers/haxe.rb +246 -0
  289. data/lib/rouge/lexers/hcl.rb +163 -0
  290. data/lib/rouge/lexers/hocon.rb +86 -0
  291. data/lib/rouge/lexers/hql.rb +139 -0
  292. data/lib/rouge/lexers/html.rb +141 -0
  293. data/lib/rouge/lexers/http.rb +81 -0
  294. data/lib/rouge/lexers/hylang.rb +94 -0
  295. data/lib/rouge/lexers/idlang.rb +312 -0
  296. data/lib/rouge/lexers/igorpro.rb +664 -0
  297. data/lib/rouge/lexers/ini.rb +54 -0
  298. data/lib/rouge/lexers/io.rb +69 -0
  299. data/lib/rouge/lexers/irb.rb +67 -0
  300. data/lib/rouge/lexers/isbl.rb +97 -0
  301. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  302. data/lib/rouge/lexers/java.rb +91 -0
  303. data/lib/rouge/lexers/javascript.rb +279 -0
  304. data/lib/rouge/lexers/jinja.rb +154 -0
  305. data/lib/rouge/lexers/jsl.rb +55 -0
  306. data/lib/rouge/lexers/json.rb +72 -0
  307. data/lib/rouge/lexers/json_doc.rb +26 -0
  308. data/lib/rouge/lexers/jsonnet.rb +152 -0
  309. data/lib/rouge/lexers/jsp.rb +120 -0
  310. data/lib/rouge/lexers/jsx.rb +104 -0
  311. data/lib/rouge/lexers/julia.rb +290 -0
  312. data/lib/rouge/lexers/kotlin.rb +131 -0
  313. data/lib/rouge/lexers/lasso.rb +210 -0
  314. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  315. data/lib/rouge/lexers/liquid.rb +285 -0
  316. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  317. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  318. data/lib/rouge/lexers/llvm.rb +97 -0
  319. data/lib/rouge/lexers/lua.rb +164 -0
  320. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  321. data/lib/rouge/lexers/lustre.rb +79 -0
  322. data/lib/rouge/lexers/lutin.rb +33 -0
  323. data/lib/rouge/lexers/m68k.rb +143 -0
  324. data/lib/rouge/lexers/magik.rb +127 -0
  325. data/lib/rouge/lexers/make.rb +135 -0
  326. data/lib/rouge/lexers/markdown.rb +182 -0
  327. data/lib/rouge/lexers/mason.rb +110 -0
  328. data/lib/rouge/lexers/mathematica.rb +96 -0
  329. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  330. data/lib/rouge/lexers/matlab.rb +80 -0
  331. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  332. data/lib/rouge/lexers/minizinc.rb +87 -0
  333. data/lib/rouge/lexers/moonscript.rb +115 -0
  334. data/lib/rouge/lexers/mosel.rb +232 -0
  335. data/lib/rouge/lexers/msgtrans.rb +26 -0
  336. data/lib/rouge/lexers/mxml.rb +69 -0
  337. data/lib/rouge/lexers/nasm.rb +72 -0
  338. data/lib/rouge/lexers/nesasm.rb +78 -0
  339. data/lib/rouge/lexers/nginx.rb +72 -0
  340. data/lib/rouge/lexers/nim.rb +154 -0
  341. data/lib/rouge/lexers/nix.rb +211 -0
  342. data/lib/rouge/lexers/objective_c.rb +21 -0
  343. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  344. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  345. data/lib/rouge/lexers/ocaml.rb +65 -0
  346. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  347. data/lib/rouge/lexers/openedge.rb +429 -0
  348. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  349. data/lib/rouge/lexers/pascal.rb +67 -0
  350. data/lib/rouge/lexers/perl.rb +231 -0
  351. data/lib/rouge/lexers/php.rb +231 -0
  352. data/lib/rouge/lexers/php/builtins.rb +203 -0
  353. data/lib/rouge/lexers/plain_text.rb +27 -0
  354. data/lib/rouge/lexers/plist.rb +47 -0
  355. data/lib/rouge/lexers/pony.rb +94 -0
  356. data/lib/rouge/lexers/powershell.rb +230 -0
  357. data/lib/rouge/lexers/praat.rb +351 -0
  358. data/lib/rouge/lexers/prolog.rb +67 -0
  359. data/lib/rouge/lexers/prometheus.rb +123 -0
  360. data/lib/rouge/lexers/properties.rb +52 -0
  361. data/lib/rouge/lexers/protobuf.rb +71 -0
  362. data/lib/rouge/lexers/puppet.rb +129 -0
  363. data/lib/rouge/lexers/python.rb +257 -0
  364. data/lib/rouge/lexers/q.rb +126 -0
  365. data/lib/rouge/lexers/qml.rb +74 -0
  366. data/lib/rouge/lexers/r.rb +89 -0
  367. data/lib/rouge/lexers/racket.rb +568 -0
  368. data/lib/rouge/lexers/reasonml.rb +65 -0
  369. data/lib/rouge/lexers/rego.rb +45 -0
  370. data/lib/rouge/lexers/robot_framework.rb +249 -0
  371. data/lib/rouge/lexers/ruby.rb +454 -0
  372. data/lib/rouge/lexers/rust.rb +193 -0
  373. data/lib/rouge/lexers/sas.rb +563 -0
  374. data/lib/rouge/lexers/sass.rb +75 -0
  375. data/lib/rouge/lexers/sass/common.rb +181 -0
  376. data/lib/rouge/lexers/scala.rb +169 -0
  377. data/lib/rouge/lexers/scheme.rb +113 -0
  378. data/lib/rouge/lexers/scss.rb +35 -0
  379. data/lib/rouge/lexers/sed.rb +173 -0
  380. data/lib/rouge/lexers/shell.rb +201 -0
  381. data/lib/rouge/lexers/sieve.rb +97 -0
  382. data/lib/rouge/lexers/slice.rb +32 -0
  383. data/lib/rouge/lexers/slim.rb +229 -0
  384. data/lib/rouge/lexers/smalltalk.rb +117 -0
  385. data/lib/rouge/lexers/smarty.rb +81 -0
  386. data/lib/rouge/lexers/sml.rb +345 -0
  387. data/lib/rouge/lexers/solidity.rb +185 -0
  388. data/lib/rouge/lexers/sparql.rb +129 -0
  389. data/lib/rouge/lexers/sqf.rb +109 -0
  390. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  391. data/lib/rouge/lexers/sql.rb +161 -0
  392. data/lib/rouge/lexers/supercollider.rb +116 -0
  393. data/lib/rouge/lexers/swift.rb +186 -0
  394. data/lib/rouge/lexers/tap.rb +89 -0
  395. data/lib/rouge/lexers/tcl.rb +193 -0
  396. data/lib/rouge/lexers/terraform.rb +128 -0
  397. data/lib/rouge/lexers/tex.rb +70 -0
  398. data/lib/rouge/lexers/toml.rb +106 -0
  399. data/lib/rouge/lexers/tsx.rb +20 -0
  400. data/lib/rouge/lexers/ttcn3.rb +119 -0
  401. data/lib/rouge/lexers/tulip.rb +108 -0
  402. data/lib/rouge/lexers/turtle.rb +61 -0
  403. data/lib/rouge/lexers/twig.rb +40 -0
  404. data/lib/rouge/lexers/typescript.rb +34 -0
  405. data/lib/rouge/lexers/typescript/common.rb +34 -0
  406. data/lib/rouge/lexers/vala.rb +78 -0
  407. data/lib/rouge/lexers/varnish.rb +168 -0
  408. data/lib/rouge/lexers/vb.rb +165 -0
  409. data/lib/rouge/lexers/verilog.rb +163 -0
  410. data/lib/rouge/lexers/vhdl.rb +98 -0
  411. data/lib/rouge/lexers/viml.rb +102 -0
  412. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  413. data/lib/rouge/lexers/vue.rb +127 -0
  414. data/lib/rouge/lexers/wollok.rb +104 -0
  415. data/lib/rouge/lexers/xml.rb +54 -0
  416. data/lib/rouge/lexers/xojo.rb +61 -0
  417. data/lib/rouge/lexers/xpath.rb +332 -0
  418. data/lib/rouge/lexers/xquery.rb +145 -0
  419. data/lib/rouge/lexers/yaml.rb +376 -0
  420. data/lib/rouge/lexers/yang.rb +147 -0
  421. data/lib/rouge/plugins/redcarpet.rb +37 -0
  422. data/lib/rouge/regex_lexer.rb +443 -0
  423. data/lib/rouge/template_lexer.rb +21 -0
  424. data/lib/rouge/tex_theme_renderer.rb +132 -0
  425. data/lib/rouge/text_analyzer.rb +50 -0
  426. data/lib/rouge/theme.rb +218 -0
  427. data/lib/rouge/themes/base16.rb +131 -0
  428. data/lib/rouge/themes/bw.rb +41 -0
  429. data/lib/rouge/themes/colorful.rb +68 -0
  430. data/lib/rouge/themes/github.rb +72 -0
  431. data/lib/rouge/themes/gruvbox.rb +168 -0
  432. data/lib/rouge/themes/igor_pro.rb +21 -0
  433. data/lib/rouge/themes/magritte.rb +78 -0
  434. data/lib/rouge/themes/molokai.rb +83 -0
  435. data/lib/rouge/themes/monokai.rb +93 -0
  436. data/lib/rouge/themes/monokai_sublime.rb +93 -0
  437. data/lib/rouge/themes/pastie.rb +70 -0
  438. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  439. data/lib/rouge/themes/tulip.rb +70 -0
  440. data/lib/rouge/token.rb +191 -0
  441. data/lib/rouge/util.rb +102 -0
  442. data/lib/rouge/version.rb +8 -0
  443. data/rouge.gemspec +26 -0
  444. metadata +491 -0
@@ -0,0 +1,143 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class M68k < RegexLexer
7
+ tag 'm68k'
8
+
9
+ title "M68k"
10
+ desc "Motorola 68k Assembler"
11
+
12
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
13
+
14
+ def self.keywords
15
+ @keywords ||= Set.new %w(
16
+ abcd add adda addi addq addx and andi asl asr
17
+
18
+ bcc bcs beq bge bgt bhi ble bls blt bmi bne bpl bvc bvs bhs blo
19
+ bchg bclr bfchg bfclr bfests bfextu bfffo bfins bfset bftst bkpt bra bse bsr btst
20
+
21
+ callm cas cas2 chk chk2 clr cmp cmpa cmpi cmpm cmp2
22
+
23
+ dbcc dbcs dbeq dbge dbgt dbhi dble dbls dblt dbmi dbne dbpl dbvc dbvs dbhs dblo
24
+ dbra dbf dbt divs divsl divu divul
25
+
26
+ eor eori exg ext extb
27
+
28
+ illegal jmp jsr lea link lsl lsr
29
+
30
+ move movea move16 movem movep moveq muls mulu
31
+
32
+ nbcd neg negx nop not or ori
33
+
34
+ pack pea rol ror roxl roxr rtd rtm rtr rts
35
+
36
+ sbcd
37
+
38
+ seq sne spl smi svc svs st sf sge sgt sle slt scc shi sls scs shs slo
39
+ sub suba subi subq subx swap
40
+
41
+ tas trap trapcc TODO trapv tst
42
+
43
+ unlk unpk eori
44
+ )
45
+ end
46
+
47
+ def self.keywords_type
48
+ @keywords_type ||= Set.new %w(
49
+ dc ds dcb
50
+ )
51
+ end
52
+
53
+ def self.reserved
54
+ @reserved ||= Set.new %w(
55
+ include incdir incbin end endf endfunc endmain endproc fpu func machine main mmu opword proc set opt section
56
+ rept endr
57
+ ifeq ifne ifgt ifge iflt ifle iif ifd ifnd ifc ifnc elseif else endc
58
+ even cnop fail machine
59
+ output radix __G2 __LK
60
+ list nolist plen llen ttl subttl spc page listchar format
61
+ equ equenv equr set reg
62
+ rsreset rsset offset
63
+ cargs
64
+ fequ.s fequ.d fequ.x fequ.p fequ.w fequ.l fopt
65
+ macro endm mexit narg
66
+ )
67
+ end
68
+
69
+ def self.builtins
70
+ @builtins ||=Set.new %w(
71
+ d0 d1 d2 d3 d4 d5 d6 d7
72
+ a0 a1 a2 a3 a4 a5 a6 a7 a7'
73
+ pc usp ssp ccr
74
+ )
75
+ end
76
+
77
+ start { push :expr_bol }
78
+
79
+ state :expr_bol do
80
+ mixin :inline_whitespace
81
+ rule(//) { pop! }
82
+ end
83
+
84
+ state :inline_whitespace do
85
+ rule %r/\s+/, Text
86
+ end
87
+
88
+ state :whitespace do
89
+ rule %r/\n+/m, Text, :expr_bol
90
+ rule %r(^\*(\\.|.)*?$), Comment::Single, :expr_bol
91
+ rule %r(;(\\.|.)*?$), Comment::Single, :expr_bol
92
+ mixin :inline_whitespace
93
+ end
94
+
95
+ state :root do
96
+ rule(//) { push :statements }
97
+ end
98
+
99
+ state :statements do
100
+ mixin :whitespace
101
+ rule %r/"/, Str, :string
102
+ rule %r/#/, Name::Decorator
103
+ rule %r/^\.?[a-zA-Z0-9_]+:?/, Name::Label
104
+ rule %r/\.[bswl]\s/i, Name::Decorator
105
+ rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
106
+ rule %r/\$[0-9a-f]+/i, Num::Hex
107
+ rule %r/@[0-8]+/i, Num::Oct
108
+ rule %r/%[01]+/i, Num::Bin
109
+ rule %r/\d+/i, Num::Integer
110
+ rule %r([*~&+=\|?:<>/-]), Operator
111
+ rule %r/\\./, Comment::Preproc
112
+ rule %r/[(),.]/, Punctuation
113
+ rule %r/\[[a-zA-Z0-9]*\]/, Punctuation
114
+
115
+ rule id do |m|
116
+ name = m[0]
117
+
118
+ if self.class.keywords.include? name.downcase
119
+ token Keyword
120
+ elsif self.class.keywords_type.include? name.downcase
121
+ token Keyword::Type
122
+ elsif self.class.reserved.include? name.downcase
123
+ token Keyword::Reserved
124
+ elsif self.class.builtins.include? name.downcase
125
+ token Name::Builtin
126
+ elsif name =~ /[a-zA-Z0-9]+/
127
+ token Name::Variable
128
+ else
129
+ token Name
130
+ end
131
+ end
132
+ end
133
+
134
+ state :string do
135
+ rule %r/"/, Str, :pop!
136
+ rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
137
+ rule %r/[^\\"\n]+/, Str
138
+ rule %r/\\\n/, Str
139
+ rule %r/\\/, Str # stray backslash
140
+ end
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,127 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Magik < RegexLexer
7
+ title "Magik"
8
+ desc "Smallworld Magik"
9
+ tag 'magik'
10
+ filenames '*.magik'
11
+ mimetypes 'text/x-magik', 'application/x-magik'
12
+
13
+ def self.keywords
14
+ @keywords ||= %w(
15
+ _package
16
+ _pragma
17
+ _block _endblock
18
+ _handling _default
19
+ _protect _protection _endprotect
20
+ _try _with _when _endtry
21
+ _catch _endcatch
22
+ _throw
23
+ _lock _endlock
24
+ _if _then _elif _else _endif
25
+ _for _over _while _loop _finally _endloop _loopbody _continue _leave
26
+ _return
27
+ _class
28
+ _local _constant _recursive _global _dynamic _import
29
+ _private _iter _abstract _method _endmethod
30
+ _proc _endproc
31
+ _gather _scatter _allresults _optional
32
+ _thisthread _self _clone _super
33
+ _primitive
34
+ _unset _true _false _maybe
35
+ _is _isnt _not _and _or _xor _cf _andif _orif
36
+ _div _mod
37
+ )
38
+ end
39
+
40
+ def self.string_double
41
+ @string_double ||= /"[^"\n]*?"/
42
+ end
43
+ def self.string_single
44
+ @string_single ||= /'[^'\n]*?'/
45
+ end
46
+
47
+ def self.digits
48
+ @digits ||= /[0-9]+/
49
+ end
50
+ def self.radix
51
+ @radix ||= /r[0-9a-z]/i
52
+ end
53
+ def self.exponent
54
+ @exponent ||= /(e|&)[+-]?#{Magik.digits}/i
55
+ end
56
+ def self.decimal
57
+ @decimal ||= /\.#{Magik.digits}/
58
+ end
59
+ def self.number
60
+ @number = /#{Magik.digits}(#{Magik.radix}|#{Magik.exponent}|#{Magik.decimal})*/
61
+ end
62
+
63
+ def self.character
64
+ @character ||= /%u[0-9a-z]{4}|%[^\s]+/i
65
+ end
66
+
67
+ def self.simple_identifier
68
+ @simple_identifier ||= /(?>(?:[a-z0-9_!?]|\\.)+)/i
69
+ end
70
+ def self.piped_identifier
71
+ @piped_identifier ||= /\|[^\|\n]*\|/
72
+ end
73
+ def self.identifier
74
+ @identifier ||= /(?:#{Magik.simple_identifier}|#{Magik.piped_identifier})+/i
75
+ end
76
+ def self.package_identifier
77
+ @package_identifier ||= /#{Magik.identifier}:#{Magik.identifier}/
78
+ end
79
+ def self.symbol
80
+ @symbol ||= /:#{Magik.identifier}/i
81
+ end
82
+ def self.global_ref
83
+ @global_ref ||= /@[\s]*#{Magik.identifier}:#{Magik.identifier}/
84
+ end
85
+ def self.label
86
+ @label = /@[\s]*#{Magik.identifier}/
87
+ end
88
+
89
+ state :root do
90
+ rule %r/##(.*)?/, Comment::Doc
91
+ rule %r/#(.*)?/, Comment::Single
92
+
93
+ rule %r/(_method)(\s+)/ do
94
+ groups Keyword, Text::Whitespace
95
+ push :method_name
96
+ end
97
+
98
+ rule %r/(?:#{Magik.keywords.join('|')})\b/, Keyword
99
+
100
+ rule Magik.string_double, Literal::String
101
+ rule Magik.string_single, Literal::String
102
+ rule Magik.symbol, Str::Symbol
103
+ rule Magik.global_ref, Name::Label
104
+ rule Magik.label, Name::Label
105
+ rule Magik.character, Literal::String::Char
106
+ rule Magik.number, Literal::Number
107
+ rule Magik.package_identifier, Name
108
+ rule Magik.identifier, Name
109
+
110
+ rule %r/[\[\]{}()\.,;]/, Punctuation
111
+ rule %r/\$/, Punctuation
112
+ rule %r/(<<|^<<)/, Operator
113
+ rule %r/(>>)/, Operator
114
+ rule %r/[-~+\/*%=&^<>]|!=/, Operator
115
+
116
+ rule %r/[\s]+/, Text::Whitespace
117
+ end
118
+
119
+ state :method_name do
120
+ rule %r/(#{Magik.identifier})(\.)(#{Magik.identifier})/ do
121
+ groups Name::Class, Punctuation, Name::Function
122
+ pop!
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,135 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Make < RegexLexer
7
+ title "Make"
8
+ desc "Makefile syntax"
9
+ tag 'make'
10
+ aliases 'makefile', 'mf', 'gnumake', 'bsdmake'
11
+ filenames '*.make', '*.mak', '*.mk', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile', '*,fe1'
12
+ mimetypes 'text/x-makefile'
13
+
14
+ def self.functions
15
+ @functions ||= %w(
16
+ abspath addprefix addsuffix and basename call dir error eval file
17
+ filter filter-out findstring firstword flavor foreach if join lastword
18
+ notdir or origin patsubst realpath shell sort strip subst suffix value
19
+ warning wildcard word wordlist words
20
+ )
21
+ end
22
+
23
+ # TODO: Add support for special keywords
24
+ # bsd_special = %w(
25
+ # include undef error warning if else elif endif for endfor
26
+ # )
27
+
28
+ def initialize(opts={})
29
+ super
30
+ @shell = Shell.new(opts)
31
+ end
32
+
33
+ start { @shell.reset! }
34
+
35
+ state :root do
36
+ rule %r/\s+/, Text
37
+
38
+ rule %r/#.*?\n/, Comment
39
+
40
+ rule %r/([-s]?include)((?:[\t ]+[^\t\n #]+)+)/ do
41
+ groups Keyword, Literal::String::Other
42
+ end
43
+
44
+ rule %r/(ifn?def|ifn?eq)([\t ]+)([^#\n]+)/ do
45
+ groups Keyword, Text, Name::Variable
46
+ end
47
+
48
+ rule %r/(?:else|endif)[\t ]*(?=[#\n])/, Keyword
49
+
50
+ rule %r/(export)([\t ]+)(?=[\w\${}()\t -]+\n)/ do
51
+ groups Keyword, Text
52
+ push :export
53
+ end
54
+
55
+ rule %r/export[\t ]+/, Keyword
56
+
57
+ # assignment
58
+ rule %r/([\w${}().-]+)([\t ]*)([!?:+]?=)/m do |m|
59
+ token Name::Variable, m[1]
60
+ token Text, m[2]
61
+ token Operator, m[3]
62
+ push :shell_line
63
+ end
64
+
65
+ rule %r/"(\\\\|\\.|[^"\\])*"/, Str::Double
66
+ rule %r/'(\\\\|\\.|[^'\\])*'/, Str::Single
67
+ rule %r/([^\n:]+)(:+)([ \t]*)/ do
68
+ groups Name::Label, Operator, Text
69
+ push :block_header
70
+ end
71
+ end
72
+
73
+ state :export do
74
+ rule %r/[\w\${}()-]/, Name::Variable
75
+ rule %r/\n/, Text, :pop!
76
+ rule %r/[\t ]+/, Text
77
+ end
78
+
79
+ state :block_header do
80
+ rule %r/[^,\\\n#]+/, Name::Function
81
+ rule %r/,/, Punctuation
82
+ rule %r/#.*?/, Comment
83
+ rule %r/\\\n/, Text
84
+ rule %r/\\./, Text
85
+ rule %r/\n/ do
86
+ token Text
87
+ goto :block_body
88
+ end
89
+ end
90
+
91
+ state :block_body do
92
+ rule %r/(ifn?def|ifn?eq)([\t ]+)([^#\n]+)(#.*)?(\n)/ do
93
+ groups Keyword, Text, Name::Variable, Comment, Text
94
+ end
95
+
96
+ rule %r/(else|endif)([\t ]*)(#.*)?(\n)/ do
97
+ groups Keyword, Text, Comment, Text
98
+ end
99
+
100
+ rule %r/(\t[\t ]*)([@-]?)/ do
101
+ groups Text, Punctuation
102
+ push :shell_line
103
+ end
104
+
105
+ rule(//) { @shell.reset!; pop! }
106
+ end
107
+
108
+ state :shell do
109
+ # macro interpolation
110
+ rule %r/\$[({][\t ]*\w[\w:=%.]*[\t ]*[)}]/i, Name::Variable
111
+ # function invocation
112
+ rule %r/(\$[({])([\t ]*)(#{Make.functions.join('|')})([\t ]+)/m do
113
+ groups Name::Function, Text, Name::Builtin, Text
114
+ push :shell_expr
115
+ end
116
+
117
+ rule(/\\./m) { delegate @shell }
118
+ stop = /\$\(|\$\{|\(|\)|\}|\\|$/
119
+ rule(/.+?(?=#{stop})/m) { delegate @shell }
120
+ rule(stop) { delegate @shell }
121
+ end
122
+
123
+ state :shell_expr do
124
+ rule(/[({]/) { delegate @shell; push }
125
+ rule %r/[)}]/, Name::Function, :pop!
126
+ mixin :shell
127
+ end
128
+
129
+ state :shell_line do
130
+ rule %r/\n/, Text, :pop!
131
+ mixin :shell
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,182 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Markdown < RegexLexer
7
+ title "Markdown"
8
+ desc "Markdown, a light-weight markup language for authors"
9
+
10
+ tag 'markdown'
11
+ aliases 'md', 'mkd'
12
+ filenames '*.markdown', '*.md', '*.mkd'
13
+ mimetypes 'text/x-markdown'
14
+
15
+ def html
16
+ @html ||= HTML.new(options)
17
+ end
18
+
19
+ start { html.reset! }
20
+
21
+ edot = /\\.|[^\\\n]/
22
+
23
+ state :root do
24
+ # YAML frontmatter
25
+ rule(/\A(---\s*\n.*?\n?)^(---\s*$\n?)/m) { delegate YAML }
26
+
27
+ rule %r/\\./, Str::Escape
28
+
29
+ rule %r/^[\S ]+\n(?:---*)\n/, Generic::Heading
30
+ rule %r/^[\S ]+\n(?:===*)\n/, Generic::Subheading
31
+
32
+ rule %r/^#(?=[^#]).*?$/, Generic::Heading
33
+ rule %r/^##*.*?$/, Generic::Subheading
34
+
35
+ rule %r/^([ \t]*)(`{3,}|~{3,})([^\n]*\n)((.*?)(\n\1)(\2))?/m do |m|
36
+ name = m[3].strip
37
+ sublexer =
38
+ begin
39
+ Lexer.find_fancy(name.empty? ? "guess" : name, m[5], @options)
40
+ rescue Guesser::Ambiguous => e
41
+ e.alternatives.first.new(@options)
42
+ end
43
+
44
+ sublexer ||= PlainText.new(@options.merge(:token => Str::Backtick))
45
+ sublexer.reset!
46
+
47
+ token Text, m[1]
48
+ token Punctuation, m[2]
49
+ token Name::Label, m[3]
50
+ if m[5]
51
+ delegate sublexer, m[5]
52
+ end
53
+
54
+ token Text, m[6]
55
+
56
+ if m[7]
57
+ token Punctuation, m[7]
58
+ else
59
+ push do
60
+ rule %r/^([ \t]*)(#{m[2]})/ do |mb|
61
+ pop!
62
+ token Text, mb[1]
63
+ token Punctuation, mb[2]
64
+ end
65
+ rule %r/^.*\n/ do |mb|
66
+ delegate sublexer, mb[1]
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ rule %r/\n\n(( |\t).*?\n|\n)+/, Str::Backtick
73
+
74
+ rule %r/(`+)(?:#{edot}|\n)+?\1/, Str::Backtick
75
+
76
+ # various uses of * are in order of precedence
77
+
78
+ # line breaks
79
+ rule %r/^(\s*[*]){3,}\s*$/, Punctuation
80
+ rule %r/^(\s*[-]){3,}\s*$/, Punctuation
81
+
82
+ # bulleted lists
83
+ rule %r/^\s*[*+-](?=\s)/, Punctuation
84
+
85
+ # numbered lists
86
+ rule %r/^\s*\d+\./, Punctuation
87
+
88
+ # blockquotes
89
+ rule %r/^\s*>.*?$/, Generic::Traceback
90
+
91
+ # link references
92
+ # [foo]: bar "baz"
93
+ rule %r(^
94
+ (\s*) # leading whitespace
95
+ (\[) (#{edot}+?) (\]) # the reference
96
+ (\s*) (:) # colon
97
+ )x do
98
+ groups Text, Punctuation, Str::Symbol, Punctuation, Text, Punctuation
99
+
100
+ push :title
101
+ push :url
102
+ end
103
+
104
+ # links and images
105
+ rule %r/(!?\[)(#{edot}*?|[^\]]*?)(\])(?=[\[(])/ do
106
+ groups Punctuation, Name::Variable, Punctuation
107
+ push :link
108
+ end
109
+
110
+ rule %r/[*][*]#{edot}*?[*][*]/, Generic::Strong
111
+ rule %r/__#{edot}*?__/, Generic::Strong
112
+
113
+ rule %r/[*]#{edot}*?[*]/, Generic::Emph
114
+ rule %r/_#{edot}*?_/, Generic::Emph
115
+
116
+ # Automatic links
117
+ rule %r/<.*?@.+[.].+>/, Name::Variable
118
+ rule %r[<(https?|mailto|ftp)://#{edot}*?>], Name::Variable
119
+
120
+ rule %r/[^\\`\[*\n&<]+/, Text
121
+
122
+ # inline html
123
+ rule(/&\S*;/) { delegate html }
124
+ rule(/<#{edot}*?>/) { delegate html }
125
+ rule %r/[&<]/, Text
126
+
127
+ # An opening square bracket that is not a link
128
+ rule %r/\[/, Text
129
+
130
+ rule %r/\n/, Text
131
+ end
132
+
133
+ state :link do
134
+ rule %r/(\[)(#{edot}*?)(\])/ do
135
+ groups Punctuation, Str::Symbol, Punctuation
136
+ pop!
137
+ end
138
+
139
+ rule %r/[(]/ do
140
+ token Punctuation
141
+ push :inline_title
142
+ push :inline_url
143
+ end
144
+
145
+ rule %r/[ \t]+/, Text
146
+
147
+ rule(//) { pop! }
148
+ end
149
+
150
+ state :url do
151
+ rule %r/[ \t]+/, Text
152
+
153
+ # the url
154
+ rule %r/(<)(#{edot}*?)(>)/ do
155
+ groups Name::Tag, Str::Other, Name::Tag
156
+ pop!
157
+ end
158
+
159
+ rule %r/\S+/, Str::Other, :pop!
160
+ end
161
+
162
+ state :title do
163
+ rule %r/"#{edot}*?"/, Name::Namespace
164
+ rule %r/'#{edot}*?'/, Name::Namespace
165
+ rule %r/[(]#{edot}*?[)]/, Name::Namespace
166
+ rule %r/\s*(?=["'()])/, Text
167
+ rule(//) { pop! }
168
+ end
169
+
170
+ state :inline_title do
171
+ rule %r/[)]/, Punctuation, :pop!
172
+ mixin :title
173
+ end
174
+
175
+ state :inline_url do
176
+ rule %r/[^<\s)]+/, Str::Other, :pop!
177
+ rule %r/\s+/m, Text
178
+ mixin :url
179
+ end
180
+ end
181
+ end
182
+ end