Blame docs/src/sphinx-plugins/manpage.py

Packit Service 7c31a4
# encoding: utf-8
Packit Service 7c31a4
Packit Service 7c31a4
#
Packit Service 7c31a4
# Copyright (c) 2013 Dariusz Dwornikowski.  All rights reserved.
Packit Service 7c31a4
#
Packit Service 7c31a4
# Adapted from https://github.com/tdi/sphinxcontrib-manpage
Packit Service 7c31a4
# License: Apache 2
Packit Service 7c31a4
#
Packit Service 7c31a4
Packit Service 7c31a4
Packit Service 7c31a4
import re
Packit Service 7c31a4
Packit Service 7c31a4
from docutils import nodes, utils
Packit Service 7c31a4
from docutils.parsers.rst.roles import set_classes
Packit Service 7c31a4
from string import Template
Packit Service 7c31a4
Packit Service 7c31a4
Packit Service 7c31a4
def make_link_node(rawtext, app, name, manpage_num, options):
Packit Service 7c31a4
    ref = app.config.man_url_regex
Packit Service 7c31a4
    if not ref:
Packit Service 7c31a4
        ref = "http://man7.org/linux/man-pages/man%s/%s.%s.html" %(manpage_num, name, manpage_num)
Packit Service 7c31a4
    else:
Packit Service 7c31a4
        s = Template(ref)
Packit Service 7c31a4
        ref = s.substitute(num=manpage_num, topic=name)
Packit Service 7c31a4
    set_classes(options)
Packit Service 7c31a4
    node = nodes.reference(rawtext, "%s(%s)" % (name, manpage_num), refuri=ref, **options)
Packit Service 7c31a4
    return node
Packit Service 7c31a4
Packit Service 7c31a4
Packit Service 7c31a4
def man_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
Packit Service 7c31a4
    app = inliner.document.settings.env.app
Packit Service 7c31a4
    p = re.compile("([a-zA-Z0-9_\.-_]+)\((\d)\)")
Packit Service 7c31a4
    m = p.match(text)
Packit Service 7c31a4
Packit Service 7c31a4
    manpage_num = m.group(2)
Packit Service 7c31a4
    name = m.group(1)
Packit Service 7c31a4
    node = make_link_node(rawtext, app, name, manpage_num, options)
Packit Service 7c31a4
    return [node], []
Packit Service 7c31a4
Packit Service 7c31a4
Packit Service 7c31a4
def setup(app):
Packit Service 7c31a4
    app.add_role('man', man_role)
Packit Service 7c31a4
    app.add_config_value('man_url_regex', None, 'env')
Packit Service 7c31a4
    return
Packit Service 7c31a4