kramdown-rfc2629 1.3.15 → 1.3.21

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 354d5f23ac1b7c316806141e245839cd8b23a27588163318d1cf320441c64165
4
- data.tar.gz: 48398c27fc7bd37dd1bfacb4bcb850456d80196b3b2d733df518e1a23e4e439d
3
+ metadata.gz: 34bc0c22021d827ebe3c42abda25c3255a6f9902fb8ab94cb7b758c29119016b
4
+ data.tar.gz: 5e457122aa29c8f2ffac9db511ebc50c036b56d170879e8f9cbd46477099f81d
5
5
  SHA512:
6
- metadata.gz: '008b6ccb511c6711eeb4fcc53695cf385da93d5687f29608c914fb967a2749d13816ed61f9dd170a727e7d5fd2b6f5c8f448c35a6c8d07e3bf3ab95aed7db208'
7
- data.tar.gz: cbb09a56c79df192c8e0ac25ca6e0121b636598b96326e4debe3b60d9c340a5dacc26605f2b0fdbf28586c02fb90c333a0a36bbf17ad52f6ef3ae34676fe781e
6
+ metadata.gz: c9a397ece10c7c210ea7231e35ea0f949146db5fce32799a1b4bbb91fa59f3bfe7fda9d7b8e3a40127c426cecdd8b304a1370e5f60934ab8bc7af1c94e466518
7
+ data.tar.gz: 0b22b30f1ca35a27b27d671b2b081c2881d10388f50abffb079c8af506e0ac706f6bf47f3d19d7c20c52029d1654fe854fc3c1098fb0e80aba8edd9cdfac5ede
data/bin/kdrfc CHANGED
@@ -121,6 +121,9 @@ BANNER
121
121
  opts.on("-p", "--[no-]prep", "Convert xml to prepped xml") do |v|
122
122
  $options.prep = v
123
123
  end
124
+ opts.on("-c", "--[no-]convert", "Convert xml to v3 xml") do |v|
125
+ $options.v2v3 = v
126
+ end
124
127
  opts.on("-h", "--[no-]html", "Convert to html as well") do |v|
125
128
  $options.html = v
126
129
  end
@@ -135,6 +138,7 @@ op.parse!
135
138
 
136
139
  def process_the_xml(fn, base)
137
140
  process_xml(fn, "#{base}.prepped.xml", "--preptool") if $options.prep
141
+ process_xml(fn, "#{base}.v2v3.xml", "--v2v3") if $options.v2v3
138
142
  process_xml(fn, "#{base}.txt") if $options.txt
139
143
  process_xml(fn, "#{base}.html", "--html") if $options.html
140
144
  end
@@ -0,0 +1 @@
1
+ {"replacements":[["\\textfractionsolidus","⁄"],["\\leftrightsquigarrow","↭"],["\\textpertenthousand","‱"],["\\blacktriangleright","▸"],["\\blacktriangledown","▾"],["\\blacktriangleleft","◂"],["\\twoheadrightarrow","↠"],["\\leftrightharpoons","⇋"],["\\rightleftharpoons","⇌"],["\\textreferencemark","※"],["\\circlearrowright","↻"],["\\rightrightarrows","⇉"],["\\vartriangleright","⊳"],["\\textordmasculine","º"],["\\textvisiblespace","␣"],["\\twoheadleftarrow","↞"],["\\downharpoonright","⇂"],["\\ntrianglerighteq","⋭"],["\\rightharpoondown","⇁"],["\\textperthousand","‰"],["\\leftrightarrows","⇆"],["\\textmusicalnote","♪"],["\\nleftrightarrow","↮"],["\\rightleftarrows","⇄"],["\\bigtriangledown","▽"],["\\textordfeminine","ª"],["\\ntrianglelefteq","⋬"],["\\rightthreetimes","⋌"],["\\trianglerighteq","⊵"],["\\vartriangleleft","⊲"],["\\rightsquigarrow","⇝"],["\\downharpoonleft","⇃"],["\\curvearrowright","↷"],["\\circlearrowleft","↺"],["\\leftharpoondown","↽"],["\\nLeftrightarrow","⇎"],["\\curvearrowleft","↶"],["\\guilsinglright","›"],["\\leftthreetimes","⋋"],["\\leftrightarrow","↔"],["\\rightharpoonup","⇀"],["\\guillemotright","»"],["\\downdownarrows","⇊"],["\\hookrightarrow","↪"],["\\hspace{0.25em}"," "],["\\dashrightarrow","⇢"],["\\leftleftarrows","⇇"],["\\trianglelefteq","⊴"],["\\ntriangleright","⋫"],["\\doublebarwedge","⌆"],["\\upharpoonright","↾"],["\\rightarrowtail","↣"],["\\looparrowright","↬"],["\\Leftrightarrow","⇔"],["\\sphericalangle","∢"],["\\divideontimes","⋇"],["\\measuredangle","∡"],["\\blacktriangle","▴"],["\\ntriangleleft","⋪"],["\\mathchar\"1356","⁁"],["\\texttrademark","™"],["\\mathchar\"2208","⌖"],["\\triangleright","▹"],["\\leftarrowtail","↢"],["\\guilsinglleft","‹"],["\\upharpoonleft","↿"],["\\mathbb{gamma}","ℽ"],["\\fallingdotseq","≒"],["\\looparrowleft","↫"],["\\textbrokenbar","¦"],["\\hookleftarrow","↩"],["\\smallsetminus","﹨"],["\\dashleftarrow","⇠"],["\\guillemotleft","«"],["\\leftharpoonup","↼"],["\\mathbb{Gamma}","ℾ"],["\\bigtriangleup","△"],["\\textcircledP","℗"],["\\risingdotseq","≓"],["\\triangleleft","◃"],["\\mathsterling","£"],["\\textcurrency","¤"],["\\triangledown","▿"],["\\blacklozenge",""],["\\sfrac{5}{6}","⅚"],["\\preccurlyeq","≼"],["\\Rrightarrow","⇛"],["\\circledcirc","⊚"],["\\nRightarrow","⇏"],["\\sfrac{3}{8}","⅜"],["\\sfrac{1}{3}","⅓"],["\\sfrac{2}{5}","⅖"],["\\vartriangle","▵"],["\\Updownarrow","⇕"],["\\nrightarrow","↛"],["\\sfrac{1}{2}","½"],["\\sfrac{3}{5}","⅗"],["\\succcurlyeq","≽"],["\\sfrac{4}{5}","⅘"],["\\diamondsuit","♦"],["\\hphantom{0}"," "],["\\sfrac{1}{6}","⅙"],["\\curlyeqsucc","⋟"],["\\blacksquare","▪"],["\\hphantom{,}"," "],["\\curlyeqprec","⋞"],["\\sfrac{1}{8}","⅛"],["\\sfrac{7}{8}","⅞"],["\\sfrac{1}{5}","⅕"],["\\sfrac{2}{3}","⅔"],["\\updownarrow","↕"],["\\backepsilon","∍"],["\\circleddash","⊝"],["\\eqslantless","⋜"],["\\sfrac{3}{4}","¾"],["\\sfrac{5}{8}","⅝"],["\\hspace{1pt}"," "],["\\sfrac{1}{4}","¼"],["\\mathbb{Pi}","ℿ"],["\\mathcal{M}","ℳ"],["\\mathcal{o}","ȓ4"],["\\mathcal{O}","ᵊA"],["\\nsupseteqq","⊉"],["\\mathcal{B}","ℬ"],["\\textrecipe","℞"],["\\nsubseteqq","⊈"],["\\subsetneqq","⊊"],["\\mathcal{I}","ℑ"],["\\upuparrows","⇈"],["\\mathcal{e}","ℯ"],["\\mathcal{L}","ℒ"],["\\nleftarrow","↚"],["\\mathcal{H}","ℋ"],["\\mathcal{E}","ℰ"],["\\eqslantgtr","⋝"],["\\curlywedge","⋏"],["\\varepsilon","ε"],["\\supsetneqq","⊋"],["\\rightarrow","→"],["\\mathcal{R}","ℛ"],["\\sqsubseteq","⊑"],["\\mathcal{g}","ℊ"],["\\sqsupseteq","⊒"],["\\complement","∁"],["\\Rightarrow","⇒"],["\\gtreqqless","⋛"],["\\lesseqqgtr","⋚"],["\\circledast","⊛"],["\\nLeftarrow","⇍"],["\\Lleftarrow","⇚"],["\\varnothing","∅"],["\\mathcal{N}","𝒩"],["\\Leftarrow","⇐"],["\\gvertneqq","≩"],["\\mathbb{C}","ℂ"],["\\supsetneq","⊋"],["\\leftarrow","←"],["\\nleqslant","≰"],["\\mathbb{Q}","ℚ"],["\\mathbb{Z}","ℤ"],["\\llbracket","〚"],["\\mathbb{H}","ℍ"],["\\spadesuit","♠"],["\\mathit{o}","ℴ"],["\\mathbb{P}","ℙ"],["\\rrbracket","〛"],["\\supseteqq","⊇"],["\\copyright","©"],["\\textsc{k}","ĸ"],["\\gtreqless","⋛"],["\\mathbb{j}","ⅉ"],["\\pitchfork","⋔"],["\\estimated","℮"],["\\ngeqslant","≱"],["\\mathbb{e}","ⅇ"],["\\therefore","∴"],["\\triangleq","≜"],["\\varpropto","∝"],["\\subsetneq","⊊"],["\\heartsuit","♥"],["\\mathbb{d}","ⅆ"],["\\lvertneqq","≨"],["\\checkmark","✓"],["\\nparallel","∦"],["\\mathbb{R}","ℝ"],["\\lesseqgtr","⋚"],["\\downarrow","↓"],["\\mathbb{D}","ⅅ"],["\\mathbb{i}","ⅈ"],["\\backsimeq","⋍"],["\\mathbb{N}","ℕ"],["\\Downarrow","⇓"],["\\subseteqq","⊆"],["\\setminus","∖"],["\\succnsim","⋩"],["\\doteqdot","≑"],["\\clubsuit","♣"],["\\emptyset","∅"],["\\sqsupset","⊐"],["\\fbox{~~}","▭"],["\\curlyvee","⋎"],["\\varkappa","ϰ"],["\\llcorner","⌞"],["\\varsigma","ς"],["\\approxeq","≊"],["\\backcong","≌"],["\\supseteq","⊇"],["\\circledS","Ⓢ"],["\\circledR","®"],["\\textcent","¢"],["\\urcorner","⌝"],["\\lrcorner","⌟"],["\\boxminus","⊟"],["\\texteuro","€"],["\\vartheta","ϑ"],["\\barwedge","⊼"],["\\ding{86}","✶"],["\\sqsubset","⊏"],["\\subseteq","⊆"],["\\intercal","⊺"],["\\ding{73}","☆"],["\\ulcorner","⌜"],["\\recorder","⌕"],["\\precnsim","⋨"],["\\parallel","∥"],["\\boxtimes","⊠"],["\\ding{55}","✗"],["\\multimap","⊸"],["\\maltese","✠"],["\\nearrow","↗"],["\\swarrow","↙"],["\\lozenge","◊"],["\\sqrt[3]","∛"],["\\succsim","≿"],["\\dotplus","∔"],["\\tilde{}","~"],["\\check{}","ˇ"],["\\lessgtr","≶"],["\\Upsilon","ϒ"],["\\Cdprime","Ъ"],["\\gtrless","≷"],["\\backsim","∽"],["\\nexists","∄"],["\\dotplus","∔"],["\\searrow","↘"],["\\lessdot","⋖"],["\\boxplus","⊞"],["\\upsilon","υ"],["\\epsilon","ε"],["\\diamond","⋄"],["\\bigstar","★"],["\\ddagger","‡"],["\\cdprime","ъ"],["\\Uparrow","⇑"],["\\sqrt[4]","∜"],["\\between","≬"],["\\sqangle","∟"],["\\digamma","Ϝ"],["\\uparrow","↑"],["\\nwarrow","↖"],["\\precsim","≾"],["\\breve{}","˘"],["\\because","∵"],["\\bigcirc","◯"],["\\acute{}","´"],["\\grave{}","`"],["\\check{}","ˇ"],["\\lesssim","≲"],["\\partial","∂"],["\\natural","♮"],["\\supset","⊃"],["\\hstrok","ħ"],["\\Tstrok","Ŧ"],["\\coprod","∐"],["\\models","⊧"],["\\otimes","⊗"],["\\degree","°"],["\\gtrdot","⋗"],["\\preceq","≼"],["\\Lambda","Λ"],["\\lambda","λ"],["\\cprime","ь"],["\\varrho","ϱ"],["\\Bumpeq","≎"],["\\hybull","⁃"],["\\lmidot","ŀ"],["\\nvdash","⊬"],["\\lbrace","{"],["\\bullet","•"],["\\varphi","φ"],["\\bumpeq","≏"],["\\ddot{}","¨"],["\\Lmidot","Ŀ"],["\\Cprime","Ь"],["\\female","♀"],["\\rtimes","⋊"],["\\gtrsim","≳"],["\\mapsto","↦"],["\\daleth","ℸ"],["\\square","■"],["\\nVDash","⊯"],["\\rangle","〉"],["\\tstrok","ŧ"],["\\oslash","⊘"],["\\ltimes","⋉"],["\\lfloor","⌊"],["\\marker","▮"],["\\Subset","⋐"],["\\Vvdash","⊪"],["\\propto","∝"],["\\Hstrok","Ħ"],["\\dlcrop","⌍"],["\\forall","∀"],["\\nVdash","⊮"],["\\Supset","⋑"],["\\langle","〈"],["\\ominus","⊖"],["\\rfloor","⌋"],["\\circeq","≗"],["\\eqcirc","≖"],["\\drcrop","⌌"],["\\veebar","⊻"],["\\ulcrop","⌏"],["\\nvDash","⊭"],["\\urcrop","⌎"],["\\exists","∃"],["\\approx","≈"],["\\dagger","†"],["\\boxdot","⊡"],["\\succeq","≽"],["\\bowtie","⋈"],["\\subset","⊂"],["\\Sigma","Σ"],["\\Omega","Ω"],["\\nabla","∇"],["\\colon",":"],["\\boxHu","╧"],["\\boxHd","╤"],["\\aleph","ℵ"],["\\gnsim","⋧"],["\\boxHU","╩"],["\\boxHD","╦"],["\\equiv","≡"],["\\lneqq","≨"],["\\alpha","α"],["\\amalg","∐"],["\\boxhU","╨"],["\\boxhD","╥"],["\\uplus","⊎"],["\\boxhu","┴"],["\\kappa","κ"],["\\sigma","σ"],["\\boxDL","╗"],["\\Theta","Θ"],["\\Vdash","⊩"],["\\boxDR","╔"],["\\boxDl","╖"],["\\sqcap","⊓"],["\\boxDr","╓"],["\\bar{}","¯"],["\\dashv","⊣"],["\\vDash","⊨"],["\\boxdl","┐"],["\\boxVl","╢"],["\\boxVh","╫"],["\\boxVr","╟"],["\\boxdr","┌"],["\\boxdL","╕"],["\\boxVL","╣"],["\\boxVH","╬"],["\\boxVR","╠"],["\\boxdR","╒"],["\\theta","θ"],["\\lhblk","▄"],["\\uhblk","▀"],["\\ldotp","."],["\\ldots","…"],["\\boxvL","╡"],["\\boxvH","╪"],["\\boxvR","╞"],["\\boxvl","┤"],["\\boxvh","┼"],["\\boxvr","├"],["\\Delta","Δ"],["\\boxUR","╚"],["\\boxUL","╝"],["\\oplus","⊕"],["\\boxUr","╙"],["\\boxUl","╜"],["\\doteq","≐"],["\\happy","㋡"],["\\varpi","ϖ"],["\\smile","☺"],["\\boxul","┘"],["\\simeq","≃"],["\\boxuR","╘"],["\\boxuL","╛"],["\\boxhd","┬"],["\\gimel","ℷ"],["\\Gamma","Γ"],["\\lnsim","⋦"],["\\sqcup","⊔"],["\\omega","ω"],["\\sharp","♯"],["\\times","×"],["\\block","█"],["\\hat{}","^"],["\\wedge","∧"],["\\vdash","⊢"],["\\angle","∠"],["\\infty","∞"],["\\gamma","γ"],["\\asymp","≍"],["\\rceil","⌉"],["\\dot{}","˙"],["\\lceil","⌈"],["\\delta","δ"],["\\gneqq","≩"],["\\frown","⌢"],["\\phone","☎"],["\\vdots","⋮"],["\\boxr","└"],["\\k{i}","į"],["\\`{I}","Ì"],["\\perp","⊥"],["\\\"{o}","ö"],["\\={I}","Ī"],["\\`{a}","à"],["\\v{T}","Ť"],["\\surd","√"],["\\H{O}","Ő"],["\\vert","|"],["\\k{I}","Į"],["\\\"{y}","ÿ"],["\\\"{O}","Ö"],["\\'{Y}","Ý"],["\\u{u}","ў"],["\\u{G}","Ğ"],["\\.{E}","Ė"],["\\.{z}","ż"],["\\v{t}","ť"],["\\prec","≺"],["\\H{o}","ő"],["\\mldr","…"],["\\'{y}","ý"],["\\cong","≅"],["\\.{e}","ė"],["\\'{L}","Ĺ"],["\\star","*"],["\\.{Z}","Ż"],["\\'{e}","é"],["\\geqq","≧"],["\\cdot","⋅"],["\\`{U}","Ù"],["\\'{l}","ĺ"],["\\v{L}","Ľ"],["\\c{s}","ş"],["\\'{s}","ś"],["\\~{A}","Ã"],["\\Vert","‖"],["\\k{e}","ę"],["\\lnot","¬"],["\\'{z}","ź"],["\\leqq","≦"],["\\beta","β"],["\\beth","ℶ"],["\\'{E}","É"],["\\~{n}","ñ"],["\\u{i}","й"],["\\c{S}","Ş"],["\\c{N}","Ņ"],["\\H{u}","ű"],["\\v{n}","ň"],["\\'{S}","Ś"],["\\={U}","Ū"],["\\~{O}","Õ"],["\\'{Z}","Ź"],["\\v{E}","Ě"],["\\'{R}","Ŕ"],["\\H{U}","Ű"],["\\v{N}","Ň"],["\\prod","∏"],["\\v{s}","š"],["\\\"{U}","Ü"],["\\c{n}","ņ"],["\\k{U}","Ų"],["\\c{R}","Ŗ"],["\\'{A}","Á"],["\\~{o}","õ"],["\\v{e}","ě"],["\\v{S}","Š"],["\\u{A}","Ă"],["\\circ","∘"],["\\\"{u}","ü"],["\\flat","♭"],["\\v{z}","ž"],["\\r{U}","Ů"],["\\`{O}","Ò"],["\\={u}","ū"],["\\oint","∮"],["\\c{K}","Ķ"],["\\k{u}","ų"],["\\not<","≮"],["\\not>","≯"],["\\`{o}","ò"],["\\\"{I}","Ï"],["\\v{D}","Ď"],["\\.{G}","Ġ"],["\\r{u}","ů"],["\\not=","≠"],["\\`{u}","ù"],["\\v{c}","č"],["\\c{k}","ķ"],["\\.{g}","ġ"],["\\'{N}","Ń"],["\\odot","⊙"],["\\`{e}","э"],["\\c{T}","Ţ"],["\\v{d}","ď"],["\\\"{e}","ё"],["\\'{I}","Í"],["\\v{R}","Ř"],["\\k{a}","ą"],["\\nldr","‥"],["\\`{A}","À"],["\\'{n}","ń"],["\\~{N}","Ñ"],["\\nmid","∤"],["\\.{C}","Ċ"],["\\zeta","ζ"],["\\~{u}","ũ"],["\\`{E}","Э"],["\\~{a}","ã"],["\\c{t}","ţ"],["\\={o}","ō"],["\\v{r}","ř"],["\\={A}","Ā"],["\\.{c}","ċ"],["\\~{U}","Ũ"],["\\k{A}","Ą"],["\\\"{a}","ä"],["\\u{U}","Ў"],["\\iota","ι"],["\\={O}","Ō"],["\\c{C}","Ç"],["\\gneq","≩"],["\\'{c}","ć"],["\\boxH","═"],["\\hbar","ℏ"],["\\\"{A}","Ä"],["\\boxv","│"],["\\boxh","─"],["\\male","♂"],["\\'{u}","ú"],["\\sqrt","√"],["\\succ","≻"],["\\c{c}","ç"],["\\'{C}","Ć"],["\\v{l}","ľ"],["\\u{a}","ă"],["\\v{Z}","Ž"],["\\'{o}","ó"],["\\c{G}","Ģ"],["\\v{C}","Č"],["\\lneq","≨"],["\\\"{E}","Ё"],["\\={a}","ā"],["\\c{l}","ļ"],["\\'{a}","á"],["\\={E}","Ē"],["\\boxV","║"],["\\u{g}","ğ"],["\\'{O}","Ó"],["\\'{g}","ǵ"],["\\u{I}","Й"],["\\c{L}","Ļ"],["\\k{E}","Ę"],["\\.{I}","İ"],["\\~{I}","Ĩ"],["\\quad"," "],["\\c{r}","ŗ"],["\\'{r}","ŕ"],["\\\"{Y}","Ÿ"],["\\={e}","ē"],["\\'{U}","Ú"],["\\leq","≤"],["\\Cup","⋓"],["\\Psi","Ψ"],["\\neq","≠"],["\\k{}","˛"],["\\={}","‾"],["\\H{}","˝"],["\\cup","∪"],["\\geq","≥"],["\\mho","℧"],["\\Dzh","Џ"],["\\cap","∩"],["\\bot","⊥"],["\\psi","ψ"],["\\chi","χ"],["\\c{}","¸"],["\\Phi","Φ"],["\\ast","*"],["\\ell","ℓ"],["\\top","⊤"],["\\lll","⋘"],["\\tau","τ"],["\\Cap","⋒"],["\\sad","☹"],["\\iff","⇔"],["\\eta","η"],["\\eth","ð"],["\\d{}","̣"],["\\rho","ρ"],["\\dzh","џ"],["\\div","÷"],["\\phi","ϕ"],["\\Rsh","↱"],["\\vee","∨"],["\\b{}","ˍ"],["\\t{}","͡"],["\\int","∫"],["\\sim","∼"],["\\r{}","˚"],["\\Lsh","↰"],["\\yen","¥"],["\\ggg","⋙"],["\\mid","∣"],["\\sum","∑"],["\\Dz","Ѕ"],["\\Re","ℜ"],["\\oe","œ"],["\\DH","Ð"],["\\ll","≪"],["\\ng","ŋ"],["\\'G","Ѓ"],["\\wr","≀"],["\\wp","℘"],["\\=I","І"],["\\:)","☺"],["\\:(","☹"],["\\AE","Æ"],["\\AA","Å"],["\\ss","ß"],["\\dz","ѕ"],["\\ae","æ"],["\\aa","å"],["\\th","þ"],["\\to","→"],["\\Pi","Π"],["\\mp","∓"],["\\Im","ℑ"],["\\pm","±"],["\\pi","π"],["\\\"I","Ї"],["\\'C","Ћ"],["\\in","∈"],["\\'K","Ќ"],["\\'k","ќ"],["\\'c","ћ"],["\\'g","ѓ"],["\\ni","∋"],["\\ne","≠"],["\\TH","Þ"],["\\Xi","Ξ"],["\\nu","ν"],["\\NG","Ŋ"],["\\:G","㋡"],["\\xi","ξ"],["\\OE","Œ"],["\\gg","≫"],["\\DJ","Đ"],["\\=e","є"],["\\=E","Є"],["\\mu","μ"],["\\dj","đ"],["\\:"," "],["\\;"," "],["\\&","&"],["\\$","$"],["\\%","%"],["\\#","#"],["\\,"," "],["\\-","­"],["\\S","§"],["\\P","¶"],["\\O","Ø"],["\\L","Ł"],["\\}","}"],["\\o","ø"],["\\l","ł"],["\\h","ℎ"],["\\i","ℹ"],["-","−"]],"combiningmarks":[["\\doubleunderline","̳"],["\\strikethrough","̵"],["\\underline","̲"],["\\overline","̅"],["\\tilde","̃"],["\\grave","̀"],["\\acute","́"],["\\slash","̸"],["\\breve","̆"],["\\ddot","̈"],["\\dot","̇"],["\\bar","̅"],["\\vec","⃗"],["\\hat","̂"]],"subsuperscripts":[["_x","ₓ"],["_v","ᵥ"],["_u","ᵤ"],["_t","ₜ"],["_s","ₛ"],["_r","ᵣ"],["_p","ₚ"],["_o","ₒ"],["_n","ₙ"],["_m","ₘ"],["_l","ₗ"],["_k","ₖ"],["_j","ⱼ"],["_i","ᵢ"],["_h","ₕ"],["_e","ₑ"],["_a","ₐ"],["^∫","ᶴ"],["_>","˲"],["_=","₌"],["_<","˱"],["_9","₉"],["_8","₈"],["_7","₇"],["_6","₆"],["_5","₅"],["_4","₄"],["_3","₃"],["_2","₂"],["_1","₁"],["_0","₀"],["_-","₋"],["_−","₋"],["_+","₊"],["_)","₎"],["_(","₍"],["_ρ","ᵨ"],["_χ","ᵪ"],["_φ","ᵩ"],["_β","ᵦ"],["_γ","ᵧ"],["^φ","ᵠ"],["^χ","ᵡ"],["^δ","ᵟ"],["^γ","ᵞ"],["^β","ᵝ"],["^8","⁸"],["^9","⁹"],["^<","˂"],["^=","⁼"],["^>","˃"],["^0","⁰"],["^1","¹"],["^2","²"],["^3","³"],["^4","⁴"],["^5","⁵"],["^6","⁶"],["^7","⁷"],["^(","⁽"],["^)","⁾"],["^*","*"],["^+","⁺"],["^-","⁻"],["^−","⁻"],["^P","ᴾ"],["^R","ᴿ"],["^T","ᵀ"],["^U","ᵁ"],["^V","ᄑ"],["^W","ᵂ"],["^H","ᴴ"],["^I","ᴵ"],["^J","ᴶ"],["^K","ᴷ"],["^L","ᴸ"],["^M","ᴹ"],["^N","ᴺ"],["^O","ᴼ"],["^A","ᴬ"],["^B","ᴮ"],["^D","ᴰ"],["^E","ᴱ"],["^G","ᴳ"],["^x","ˣ"],["^y","ʸ"],["^z","ᶻ"],["^p","ᵖ"],["^r","ʳ"],["^s","ˢ"],["^t","ᵗ"],["^u","ᵘ"],["^v","ᵛ"],["^w","ʷ"],["^h","ʰ"],["^i","ⁱ"],["^j","ʲ"],["^k","ᵏ"],["^l","ˡ"],["^m","ᵐ"],["^n","ⁿ"],["^o","ᵒ"],["^a","ᵃ"],["^b","ᵇ"],["^c","ᶜ"],["^d","ᵈ"],["^e","ᵉ"],["^f","ᶠ"],["^g","ᵍ"]]}
@@ -1,12 +1,13 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.3.15'
3
+ s.version = '1.3.21'
4
4
  s.summary = "Kramdown extension for generating RFC 7749 XML."
5
5
  s.description = %{An RFC7749 (XML2RFC) generating backend for Thomas Leitner's
6
6
  "kramdown" markdown parser. Mostly useful for RFC writers.}
7
7
  s.add_dependency('kramdown', '~> 1.17.0')
8
8
  s.add_dependency('certified', '~> 1.0')
9
- s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc2629 bin/doilit bin/kramdown-rfc-extract-markdown data/kramdown-rfc2629.erb data/encoding-fallbacks.txt)
9
+ s.add_dependency('json', '~> 2.0')
10
+ s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc2629 bin/doilit bin/kramdown-rfc-extract-markdown data/kramdown-rfc2629.erb data/encoding-fallbacks.txt data/math.json)
10
11
  s.require_path = 'lib'
11
12
  s.executables = ['kramdown-rfc2629', 'doilit', 'kramdown-rfc-extract-markdown', 'kdrfc']
12
13
  s.required_ruby_version = '>= 2.3.0'
@@ -8,6 +8,7 @@
8
8
  # This derived work is also licensed under the MIT license, see LICENSE.
9
9
  #++
10
10
  #
11
+ require 'shellwords'
11
12
 
12
13
  raise "sorry, 1.8 was last decade" unless RUBY_VERSION >= '1.9'
13
14
 
@@ -18,6 +19,7 @@ Kramdown::Parser::Html::Constants::HTML_SPAN_ELEMENTS.concat my_span_elements
18
19
 
19
20
  require 'rexml/parsers/baseparser'
20
21
  require 'open3' # for math
22
+ require 'json' # for math
21
23
 
22
24
  class Object
23
25
  def deep_clone
@@ -37,7 +39,36 @@ module Kramdown
37
39
  @span_parsers.unshift(:iref)
38
40
  end
39
41
 
40
- XREF_START = /\{\{(?:(?:\{(.*?)\}(?:\{(.*?)\})?)|(.*?))((?:\}\})|\})/u
42
+ SECTIONS_RE = /Section(?:s (?:[\w.]+, )*[\w.]+,? and)? [\w.]+/
43
+
44
+ def handle_bares(s, attr, format, href)
45
+ sa = s.sub(/\A\S+\s/, '').split(/,? and /)
46
+ sa[0..0] = *sa[0].split(', ')
47
+ sz = sa.size
48
+ if sz != 1 # we have to redo xml2rfc's work here
49
+ @tree.children << Element.new(:text, "Sections ", {}) # XXX needs to split into Section/Appendix
50
+ sa.each_with_index do |sec, i|
51
+ attr1 = {"target" => href, "section" => sec, "sectionFormat" => "bare"}
52
+ @tree.children << Element.new(:xref, nil, attr1)
53
+ text = if i == 0 && sz == 2
54
+ " and "
55
+ elsif i == sz-1
56
+ " of "
57
+ elsif i == sz-2
58
+ ", and "
59
+ else
60
+ ", "
61
+ end
62
+ @tree.children << Element.new(:text, text, {})
63
+ end
64
+ # attr stays unchanged, no section added
65
+ else
66
+ attr['section'] = sa[-1]
67
+ attr['sectionFormat'] = format
68
+ end
69
+ end
70
+
71
+ XREF_START = /\{\{(?:(?:\{(.*?)\}(?:\{(.*?)\})?)|(\X*?))((?:\}\})|\})/u
41
72
 
42
73
  # Introduce new {{target}} syntax for empty xrefs, which would
43
74
  # otherwise be an ugly ![!](target) or ![ ](target)
@@ -55,8 +86,28 @@ module Kramdown
55
86
  el = Element.new(:contact, nil, attr)
56
87
  else
57
88
  href = @src[3]
89
+ attr = {}
90
+ if $options.v3
91
+ # match Section ... of ...; set section, sectionFormat
92
+ case href.gsub(/[\u00A0\s]+/, ' ') # may need nbsp and/or newlines
93
+ when /\A(#{SECTIONS_RE}) of (.*)\z/
94
+ href = $2
95
+ handle_bares($1, attr, "of", href)
96
+ when /\A(.*), (#{SECTIONS_RE})\z/
97
+ href = $1
98
+ handle_bares($2, attr, "comma", href)
99
+ when /\A(.*) \((#{SECTIONS_RE})\)\z/
100
+ href = $1
101
+ handle_bares($2, attr, "parens", href)
102
+ when /\A([\w.]+)<(.*)\z/
103
+ href = $2
104
+ attr['section'] = $1
105
+ attr['sectionFormat'] = 'bare'
106
+ end
107
+ end
58
108
  href = href.gsub(/\A[0-9]/) { "_#{$&}" } # can't start an IDREF with a number
59
- el = Element.new(:xref, nil, {'target' => href})
109
+ attr['target'] = href
110
+ el = Element.new(:xref, nil, attr)
60
111
  end
61
112
  @tree.children << el
62
113
  end
@@ -235,6 +286,14 @@ COLORS
235
286
  out
236
287
  end
237
288
 
289
+ def capture_croak(t, err)
290
+ if err != ''
291
+ err.lines do |l|
292
+ warn "*** [#{t}:] #{l.chomp}"
293
+ end
294
+ end
295
+ end
296
+
238
297
  def svg_tool_process(t, result)
239
298
  require 'tempfile'
240
299
  file = Tempfile.new("kramdown-rfc")
@@ -242,27 +301,34 @@ COLORS
242
301
  file.close
243
302
  case t
244
303
  when "goat"
245
- result1, _s = Open3.capture2("goat #{file.path}", stdin_data: result);
304
+ result1, err, _s = Open3.capture3("goat #{file.path}", stdin_data: result);
246
305
  when "ditaa" # XXX: This needs some form of option-setting
247
- result1, _s = Open3.capture2("ditaa #{file.path} --svg -o -", stdin_data: result);
306
+ result1, err, _s = Open3.capture3("ditaa #{file.path} --svg -o -", stdin_data: result);
248
307
  when "mscgen"
249
- result1, _s = Open3.capture2("mscgen -T svg -i #{file.path} -o -", stdin_data: result);
308
+ result1, err, _s = Open3.capture3("mscgen -T svg -i #{file.path} -o -", stdin_data: result);
250
309
  when "mermaid"
251
- result1, _s = Open3.capture2("mmdc -i #{file.path}", stdin_data: result); # -b transparent
310
+ result1, err, _s = Open3.capture3("mmdc -i #{file.path}", stdin_data: result); # -b transparent
252
311
  outpath = file.path + ".svg"
253
312
  result1 = File.read(outpath)
254
313
  File.unlink(outpath)
255
314
  when "plantuml", "plantuml-utxt"
256
315
  plantuml = "@startuml\n#{result}\n@enduml"
257
- result1, _s = Open3.capture2("plantuml -pipe -tsvg", stdin_data: plantuml);
258
- result, _s = Open3.capture2("plantuml -pipe -tutxt", stdin_data: plantuml) if t == "plantuml-utxt"
259
- end
316
+ result1, err, _s = Open3.capture3("plantuml -pipe -tsvg", stdin_data: plantuml);
317
+ result, err1, _s = Open3.capture3("plantuml -pipe -tutxt", stdin_data: plantuml) if t == "plantuml-utxt"
318
+ err << err1
319
+ when "math"
320
+ result1, err, _s = Open3.capture3("tex2svg --font STIX --speech=false #{Shellwords.escape(' ' << result)}");
321
+ result, err1, _s = Open3.capture3("asciitex -f #{file.path}")
322
+ err << err1
323
+ end
324
+ capture_croak(t, err)
260
325
  # warn ["goat:", result1.inspect]
261
326
  file.unlink
262
327
  result1 = svg_clean(result1) unless t == "goat"
263
- result1, _s = Open3.capture2("svgcheck -qa", stdin_data: result1);
328
+ result1, err, _s = Open3.capture3("svgcheck -qa", stdin_data: result1);
329
+ capture_croak("svgcheck", err)
264
330
  # warn ["svgcheck:", result1.inspect]
265
- [result, result1]
331
+ [result, result1] # text, svg
266
332
  end
267
333
 
268
334
  def convert_codeblock(el, indent, opts)
@@ -309,7 +375,7 @@ COLORS
309
375
  end
310
376
  end
311
377
  case t
312
- when "goat", "ditaa", "mscgen", "plantuml", "plantuml-utxt", "mermaid"
378
+ when "goat", "ditaa", "mscgen", "plantuml", "plantuml-utxt", "mermaid", "math"
313
379
  result, result1 = memoize(:svg_tool_process, t, result)
314
380
  "#{' '*indent}<figure#{el_html_attributes(el)}><artset><artwork #{html_attributes(artwork_attr.merge("type"=> "svg"))}>#{result1.sub(/.*?<svg/m, "<svg")}</artwork><artwork #{html_attributes(artwork_attr.merge("type"=> "ascii-art"))}><![CDATA[#{result}#{result =~ /\n\Z/ ? '' : "\n"}]]></artwork></artset></figure>\n"
315
381
  else
@@ -356,8 +422,15 @@ COLORS
356
422
  if options[:auto_ids] && !el.attr['anchor']
357
423
  el.attr['anchor'] = saner_generate_id(el.options[:raw_text])
358
424
  end
425
+ if $options.v3
426
+ if sl = el.attr.delete('slugifiedName') # could do general name- play
427
+ attrstring = html_attributes({'slugifiedName' => sl})
428
+ end
429
+ irefs = "<name#{attrstring}>#{inner(el, indent, opts)}</name>" #
430
+ else
359
431
  clean, irefs = clean_pcdata(inner_a(el, indent, opts))
360
432
  el.attr['title'] = clean
433
+ end
361
434
  "#{end_sections(el.options[:level], indent)}#{' '*indent}<section#{@sec_level += 1; el_html_attributes(el)}>#{irefs}\n"
362
435
  end
363
436
 
@@ -377,7 +450,18 @@ COLORS
377
450
  end
378
451
  end
379
452
  alias :convert_ol :convert_ul
380
- alias :convert_dl :convert_ul
453
+
454
+ def convert_dl(el, indent, opts)
455
+ if $options.v3
456
+ vspace = el.attr.delete('vspace')
457
+ if vspace && !el.attr['newline']
458
+ el.attr['newline'] = 'true'
459
+ end
460
+ "#{' '*indent}<dl#{el_html_attributes(el)}>\n#{inner(el, indent, opts.dup)}#{' '*indent}</dl>\n"
461
+ else
462
+ convert_ul(el, indent, opts)
463
+ end
464
+ end
381
465
 
382
466
  def convert_li(el, indent, opts)
383
467
  res_a = inner_a(el, indent, opts)
@@ -392,7 +476,16 @@ COLORS
392
476
  end
393
477
  "#{' '*indent}<t#{el_html_attributes(el)}>#{res}#{(res =~ /\n\Z/ ? ' '*indent : '')}</t>\n"
394
478
  end
479
+
395
480
  def convert_dd(el, indent, opts)
481
+ if $options.v3
482
+ out = ''
483
+ if !opts[:haddt]
484
+ out ="#{' '*indent}<dt/>\n" # you can't make this one up
485
+ end
486
+ opts[:haddt] = false
487
+ out << "#{' '*indent}<dd#{el_html_attributes(el)}>\n#{inner(el, indent, opts)}#{' '*indent}</dd>\n"
488
+ else
396
489
  output = ' '*indent
397
490
  if @in_dt == 1
398
491
  @in_dt = 0
@@ -406,15 +499,25 @@ COLORS
406
499
  # output << "\n" << res << ' '*indent
407
500
  # end
408
501
  output << "</t>\n"
502
+ end
409
503
  end
410
504
 
411
505
  def convert_dt(el, indent, opts) # SERIOUSLY BAD HACK:
506
+ if $options.v3
507
+ out = ''
508
+ if opts[:haddt]
509
+ out ="#{' '*indent}<dd><t/></dd>\n" # you can't make this one up
510
+ end
511
+ opts[:haddt] = true
512
+ out << "#{' '*indent}<dt#{el_html_attributes(el)}>\n#{inner(el, indent, opts)}#{' '*indent}</dt>\n"
513
+ else
412
514
  close = "#{' '*indent}</t>\n" * @in_dt
413
515
  @in_dt = 1
414
516
  vspace = opts[:vspace]
415
517
  vspaceel = "<vspace blankLines='#{vspace}'/>" if vspace
416
518
  ht = escape_html(inner(el, indent, opts), :attribute) # XXX this may leave gunk
417
- "#{close}#{' '*indent}<t#{el_html_attributes(el)} hangText='#{ht}'>#{vspaceel}\n"
519
+ "#{close}#{' '*indent}<t#{el_html_attributes(el)} hangText=\"#{ht}\">#{vspaceel}\n"
520
+ end
418
521
  end
419
522
 
420
523
  HTML_TAGS_WITH_BODY=['div', 'script']
@@ -705,9 +808,14 @@ COLORS
705
808
  EMPH = { em: "emph", strong: "strong"}
706
809
 
707
810
  def convert_em(el, indent, opts)
811
+ if $options.v3
812
+ gi = el.type
813
+ "<#{gi}#{el_html_attributes(el)}>#{inner(el, indent, opts)}</#{gi}>"
814
+ else
708
815
  attrstring = el_html_attributes_with(el, {"style" => EMPH[el.type]})
709
816
  span, irefs = clean_pcdata(inner_a(el, indent, opts))
710
817
  "<spanx#{attrstring}>#{span}</spanx>#{irefs}"
818
+ end
711
819
  end
712
820
  alias :convert_strong :convert_em
713
821
 
@@ -736,6 +844,23 @@ COLORS
736
844
  entity_to_str(smart_quote_entity(el))
737
845
  end
738
846
 
847
+ MATH_LATEX_FILENAME = File.expand_path '../../data/math.json', __FILE__
848
+ MATH_LATEX = JSON.parse(File.read(MATH_LATEX_FILENAME, encoding: Encoding::UTF_8))
849
+ MATH_REPLACEMENTS = MATH_LATEX["replacements"]
850
+ MATH_COMBININGMARKS = MATH_LATEX["combiningmarks"]
851
+
852
+ def munge_latex(s)
853
+ MATH_REPLACEMENTS.each do |o, n|
854
+ s.gsub!(o, n)
855
+ end
856
+ MATH_COMBININGMARKS.each do |m, n|
857
+ re = /\\#{m[1..-1]}\{(\X)\}/
858
+ s.gsub!(re) { "#$1#{n}" }
859
+ end
860
+ s
861
+ end
862
+ # XXX: This is missing sup/sub support, which needs to be added
863
+
739
864
  def convert_math(el, indent, opts) # XXX: This is wrong
740
865
  el = el.deep_clone
741
866
  if el.options[:category] == :block
@@ -748,15 +873,24 @@ COLORS
748
873
  artwork_attr[md[1]] = v
749
874
  end
750
875
  end
751
- result, _s = Open3.capture2("tex2mail -noindent -ragged -by_par -linelength=69", stdin_data: el.value);
876
+ result, err, _s = Open3.capture3("tex2mail -noindent -ragged -by_par -linelength=69", stdin_data: el.value);
752
877
  # warn "*** tex2mail not in path?" unless s.success? -- doesn't have useful status
878
+ capture_croak("tex2mail", err)
753
879
  "#{' '*indent}<figure#{el_html_attributes(el)}><artwork#{html_attributes(artwork_attr)}><![CDATA[#{result}#{result =~ /\n\Z/ ? '' : "\n"}]]></artwork></figure>\n"
754
880
 
755
881
  else
756
- warn "*** no support for inline math in XML2RFCv2"
757
882
  type = 'spanx'
758
- attrstring = el_html_attributes_with(el, {"style" => 'verb'})
759
- "<#{type}#{attrstring}>#{escape_html(el.value, :text)}</#{type}>"
883
+ if $options.v3
884
+ type = 'contact'
885
+ result = munge_latex(el.value)
886
+ attrstring = el_html_attributes_with(el, {"fullname" => result.chomp, "asciiFullname" => ''})
887
+ else
888
+ warn "*** no support for inline math in XML2RFCv2"
889
+ type = 'spanx'
890
+ attrstring = el_html_attributes_with(el, {"style" => 'verb'})
891
+ content = escape_html(el.value, :text)
892
+ end
893
+ "<#{type}#{attrstring}>#{content}</#{type}>"
760
894
  end
761
895
  end
762
896
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kramdown-rfc2629
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.15
4
+ version: 1.3.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-29 00:00:00.000000000 Z
11
+ date: 2020-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
41
55
  description: |-
42
56
  An RFC7749 (XML2RFC) generating backend for Thomas Leitner's
43
57
  "kramdown" markdown parser. Mostly useful for RFC writers.
@@ -58,6 +72,7 @@ files:
58
72
  - bin/kramdown-rfc2629
59
73
  - data/encoding-fallbacks.txt
60
74
  - data/kramdown-rfc2629.erb
75
+ - data/math.json
61
76
  - kramdown-rfc2629.gemspec
62
77
  - lib/kramdown-rfc/gzip-clone.rb
63
78
  - lib/kramdown-rfc/parameterset.rb
@@ -82,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
97
  - !ruby/object:Gem::Version
83
98
  version: '0'
84
99
  requirements: []
85
- rubygems_version: 3.1.2
100
+ rubygems_version: 3.1.4
86
101
  signing_key:
87
102
  specification_version: 4
88
103
  summary: Kramdown extension for generating RFC 7749 XML.