Revision d59633a6

b/lib/build/sphinx_ext.py
570 570
    return []
571 571

  
572 572

  
573
class RapiResourceDetails(s_compat.Directive):
574
  """Custom directive for RAPI resource details.
575

  
576
  See also <http://docutils.sourceforge.net/docs/howto/rst-directives.html>.
577

  
578
  """
579
  has_content = False
580
  required_arguments = 1
581
  optional_arguments = 0
582
  final_argument_whitespace = False
583

  
584
  def run(self):
585
    uri = self.arguments[0]
586

  
587
    try:
588
      handler = _RAPI_RESOURCES_FOR_DOCS[uri]
589
    except KeyError:
590
      raise self.error("Unknown resource URI '%s'" % uri)
591

  
592
    lines = [
593
      ".. list-table::",
594
      "   :widths: 1 4",
595
      "   :header-rows: 1",
596
      "",
597
      "   * - Method",
598
      "     - :ref:`Required permissions <rapi-users>`",
599
      ]
600

  
601
    for method in _GetHandlerMethods(handler):
602
      lines.extend([
603
        "   * - :ref:`%s <%s>`" % (method, _MakeRapiResourceLink(method, uri)),
604
        "     - %s" % _DescribeHandlerAccess(handler, method),
605
        ])
606

  
607
    # Inject into state machine
608
    include_lines = \
609
      docutils.statemachine.string2lines("\n".join(lines), _TAB_WIDTH,
610
                                         convert_whitespace=1)
611
    self.state_machine.insert_input(include_lines, self.__class__.__name__)
612

  
613
    return []
614

  
615

  
573 616
def setup(app):
574 617
  """Sphinx extension callback.
575 618

  
......
580 623
  app.add_directive("pyassert", PythonAssert)
581 624
  app.add_role("pyeval", PythonEvalRole)
582 625
  app.add_directive("rapi_access_table", RapiAccessTable)
626
  app.add_directive("rapi_resource_details", RapiResourceDetails)
583 627

  
584 628
  app.add_config_value("enable_manpages", False, True)
585 629
  app.add_role("manpage", _ManPageRole)

Also available in: Unified diff