X-Git-Url: https://git.ralfj.de/rust-101.git/blobdiff_plain/cfc6a4901346f45284dcf591375f759e7193d561..6a1e87efaf3398aa56c8a52891b7edbb32c5d301:/pycco-rs?ds=sidebyside diff --git a/pycco-rs b/pycco-rs index 072dd2e..d250b20 100755 --- a/pycco-rs +++ b/pycco-rs @@ -2,7 +2,13 @@ # A little wrapper around pycco, to add Rust support. import pycco, pycco_resources from pygments import lexers, formatters -import re +import sys, re + +# helper functions +def patch_html(source, marker, new_text): + '''Find the [marker] in [source], and insert [new_text] after it.''' + assert source.count(marker) == 1 + return source.replace(marker, marker + new_text, 1) # now, monkey-patch pycco for Rust support pycco.main.languages[".rs"] = { "name": "rust", "symbol": "//"} @@ -17,16 +23,27 @@ for ext, l in pycco.main.languages.items(): l["divider_html"] = re.compile(r'\n*' + l["symbol"] + 'DIVIDER\n*') # Get the Pygments Lexer for this language. l["lexer"] = lexers.get_lexer_by_name(l["name"]) -# and monkey-patch for a custom CSS file -html_src = pycco_resources.html - -css_marker = '' -custom_css = '' -patched_html = html_src.replace(css_marker, css_marker+custom_css, 1) - -title_marker = '' -patched_html = html_src.replace(title_marker, title_marker + 'Rust-101: ', 1) -pycco.main.pycco_template = pycco.main.template(patched_html) +# and monkey-patch the function generating the output to do some post-processing +generate_documentation_orig = pycco.main.generate_documentation +generate_documentation_called = False +def generate_documentation(*args, **kwargs): + global generate_documentation_called + generate_documentation_called = True + result = generate_documentation_orig(*args, **kwargs) + # now patch it + result = patch_html(result, '<link rel="stylesheet" href="pycco.css">', + '<link rel="stylesheet" href="pycco_custom.css"><meta name="viewport" content="width=device-width">') + result = patch_html(result, '<title>', 'Rust-101: ') + ## remove empty code blocks + result = re.sub('''<div class='code'> + *<div class="highlight"><pre>(<span></span>)?</pre></div> + *</div>''', '<!-- empty code block -->', result) + # done + return result +pycco.main.generate_documentation = generate_documentation +# call pycco +assert len(sys.argv) == 2 pycco.main.main() +assert generate_documentation_called