adding the breathe files
This commit is contained in:
0
doc/breathe/directive/__init__.py
Normal file
0
doc/breathe/directive/__init__.py
Normal file
BIN
doc/breathe/directive/__init__.pyc
Normal file
BIN
doc/breathe/directive/__init__.pyc
Normal file
Binary file not shown.
88
doc/breathe/directive/base.py
Normal file
88
doc/breathe/directive/base.py
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
from ..renderer.rst.doxygen.base import RenderContext
|
||||
from ..renderer.rst.doxygen import format_parser_error
|
||||
from ..parser import ParserError, FileIOError
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.parsers import rst
|
||||
|
||||
|
||||
class WarningHandler(object):
|
||||
|
||||
def __init__(self, state, context):
|
||||
self.state = state
|
||||
self.context = context
|
||||
|
||||
def warn(self, raw_text, rendered_nodes=None):
|
||||
raw_text = self.format(raw_text)
|
||||
if rendered_nodes is None:
|
||||
rendered_nodes = [nodes.paragraph("", "", nodes.Text(raw_text))]
|
||||
return [
|
||||
nodes.warning("", *rendered_nodes),
|
||||
self.state.document.reporter.warning(raw_text, line=self.context['lineno'])
|
||||
]
|
||||
|
||||
def format(self, text):
|
||||
return text.format(**self.context)
|
||||
|
||||
|
||||
def create_warning(project_info, state, lineno, **kwargs):
|
||||
|
||||
tail = ''
|
||||
if project_info:
|
||||
tail = 'in doxygen xml output for project "{project}" from directory: {path}'.format(
|
||||
project=project_info.name(),
|
||||
path=project_info.project_path()
|
||||
)
|
||||
|
||||
context = dict(
|
||||
lineno=lineno,
|
||||
tail=tail,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
return WarningHandler(state, context)
|
||||
|
||||
|
||||
class BaseDirective(rst.Directive):
|
||||
|
||||
def __init__(self, root_data_object, renderer_factory_creator_constructor, finder_factory,
|
||||
project_info_factory, filter_factory, target_handler_factory, parser_factory, *args):
|
||||
rst.Directive.__init__(self, *args)
|
||||
self.directive_args = list(args) # Convert tuple to list to allow modification.
|
||||
|
||||
self.root_data_object = root_data_object
|
||||
self.renderer_factory_creator_constructor = renderer_factory_creator_constructor
|
||||
self.finder_factory = finder_factory
|
||||
self.project_info_factory = project_info_factory
|
||||
self.filter_factory = filter_factory
|
||||
self.target_handler_factory = target_handler_factory
|
||||
self.parser_factory = parser_factory
|
||||
|
||||
def render(self, node_stack, project_info, options, filter_, target_handler, mask_factory):
|
||||
"Standard render process used by subclasses"
|
||||
|
||||
renderer_factory_creator = self.renderer_factory_creator_constructor.create_factory_creator(
|
||||
project_info,
|
||||
self.state.document,
|
||||
options,
|
||||
target_handler
|
||||
)
|
||||
|
||||
try:
|
||||
renderer_factory = renderer_factory_creator.create_factory(
|
||||
node_stack,
|
||||
self.state,
|
||||
self.state.document,
|
||||
filter_,
|
||||
target_handler,
|
||||
)
|
||||
except ParserError as e:
|
||||
return format_parser_error("doxygenclass", e.error, e.filename, self.state,
|
||||
self.lineno, True)
|
||||
except FileIOError as e:
|
||||
return format_parser_error("doxygenclass", e.error, e.filename, self.state, self.lineno)
|
||||
|
||||
context = RenderContext(node_stack, mask_factory, self.directive_args)
|
||||
object_renderer = renderer_factory.create_renderer(context)
|
||||
return object_renderer.render()
|
BIN
doc/breathe/directive/base.pyc
Normal file
BIN
doc/breathe/directive/base.pyc
Normal file
Binary file not shown.
123
doc/breathe/directive/file.py
Normal file
123
doc/breathe/directive/file.py
Normal file
@@ -0,0 +1,123 @@
|
||||
|
||||
from ..renderer.rst.doxygen.base import RenderContext
|
||||
from ..renderer.rst.doxygen.mask import NullMaskFactory
|
||||
from ..directive.base import BaseDirective
|
||||
from ..project import ProjectError
|
||||
from .base import create_warning
|
||||
|
||||
from docutils.parsers.rst.directives import unchanged_required, flag
|
||||
from docutils.parsers import rst
|
||||
|
||||
|
||||
class BaseFileDirective(BaseDirective):
|
||||
"""Base class handle the main work when given the appropriate file and project info to work
|
||||
from.
|
||||
"""
|
||||
|
||||
# We use inheritance here rather than a separate object and composition, because so much
|
||||
# information is present in the Directive class from the docutils framework that we'd have to
|
||||
# pass way too much stuff to a helper object to be reasonable.
|
||||
|
||||
def handle_contents(self, file_, project_info):
|
||||
|
||||
finder = self.finder_factory.create_finder(project_info)
|
||||
|
||||
finder_filter = self.filter_factory.create_file_finder_filter(file_)
|
||||
|
||||
matches = []
|
||||
finder.filter_(finder_filter, matches)
|
||||
|
||||
if len(matches) > 1:
|
||||
warning = create_warning(None, self.state, self.lineno, file=file_,
|
||||
directivename=self.directive_name)
|
||||
return warning.warn('{directivename}: Found multiple matches for file "{file} {tail}')
|
||||
|
||||
elif not matches:
|
||||
warning = create_warning(None, self.state, self.lineno, file=file_,
|
||||
directivename=self.directive_name)
|
||||
return warning.warn('{directivename}: Cannot find file "{file} {tail}')
|
||||
|
||||
target_handler = self.target_handler_factory.create_target_handler(
|
||||
self.options, project_info, self.state.document)
|
||||
filter_ = self.filter_factory.create_file_filter(file_, self.options)
|
||||
|
||||
renderer_factory_creator = self.renderer_factory_creator_constructor.create_factory_creator(
|
||||
project_info,
|
||||
self.state.document,
|
||||
self.options,
|
||||
target_handler
|
||||
)
|
||||
node_list = []
|
||||
for node_stack in matches:
|
||||
|
||||
renderer_factory = renderer_factory_creator.create_factory(
|
||||
node_stack,
|
||||
self.state,
|
||||
self.state.document,
|
||||
filter_,
|
||||
target_handler,
|
||||
)
|
||||
|
||||
mask_factory = NullMaskFactory()
|
||||
context = RenderContext(node_stack, mask_factory, self.directive_args)
|
||||
object_renderer = renderer_factory.create_renderer(context)
|
||||
node_list.extend(object_renderer.render())
|
||||
|
||||
return node_list
|
||||
|
||||
|
||||
class DoxygenFileDirective(BaseFileDirective):
|
||||
|
||||
directive_name = 'doxygenfile'
|
||||
|
||||
required_arguments = 0
|
||||
optional_arguments = 2
|
||||
option_spec = {
|
||||
"path": unchanged_required,
|
||||
"project": unchanged_required,
|
||||
"outline": flag,
|
||||
"no-link": flag,
|
||||
}
|
||||
has_content = False
|
||||
|
||||
def run(self):
|
||||
"""Get the file from the argument and the project info from the factory."""
|
||||
|
||||
file_ = self.arguments[0]
|
||||
|
||||
try:
|
||||
project_info = self.project_info_factory.create_project_info(self.options)
|
||||
except ProjectError as e:
|
||||
warning = create_warning(None, self.state, self.lineno)
|
||||
return warning.warn('doxygenfile: %s' % e)
|
||||
|
||||
return self.handle_contents(file_, project_info)
|
||||
|
||||
|
||||
class AutoDoxygenFileDirective(BaseFileDirective):
|
||||
|
||||
directive_name = 'autodoxygenfile'
|
||||
|
||||
required_arguments = 1
|
||||
option_spec = {
|
||||
"project": unchanged_required,
|
||||
"outline": flag,
|
||||
"no-link": flag,
|
||||
}
|
||||
has_content = False
|
||||
|
||||
def run(self):
|
||||
"""Get the file from the argument and extract the associated project info for the named
|
||||
project given that it is an auto-project.
|
||||
"""
|
||||
|
||||
file_ = self.arguments[0]
|
||||
|
||||
try:
|
||||
project_info = self.project_info_factory.retrieve_project_info_for_auto(self.options)
|
||||
except ProjectError as e:
|
||||
warning = create_warning(None, self.state, self.lineno)
|
||||
return warning.warn('autodoxygenfile: %s' % e)
|
||||
|
||||
return self.handle_contents(file_, project_info)
|
||||
|
BIN
doc/breathe/directive/file.pyc
Normal file
BIN
doc/breathe/directive/file.pyc
Normal file
Binary file not shown.
115
doc/breathe/directive/index.py
Normal file
115
doc/breathe/directive/index.py
Normal file
@@ -0,0 +1,115 @@
|
||||
|
||||
from ..renderer.rst.doxygen.base import RenderContext
|
||||
from ..renderer.rst.doxygen.mask import NullMaskFactory
|
||||
from ..renderer.rst.doxygen import format_parser_error
|
||||
from ..directive.base import BaseDirective
|
||||
from ..project import ProjectError
|
||||
from ..parser import ParserError, FileIOError
|
||||
from .base import create_warning
|
||||
|
||||
from docutils.parsers import rst
|
||||
from docutils.parsers.rst.directives import unchanged_required, flag
|
||||
|
||||
|
||||
class BaseIndexDirective(BaseDirective):
|
||||
"""Base class handle the main work when given the appropriate project info to work from.
|
||||
"""
|
||||
|
||||
# We use inheritance here rather than a separate object and composition, because so much
|
||||
# information is present in the Directive class from the docutils framework that we'd have to
|
||||
# pass way too much stuff to a helper object to be reasonable.
|
||||
|
||||
def handle_contents(self, project_info):
|
||||
|
||||
try:
|
||||
finder = self.finder_factory.create_finder(project_info)
|
||||
except ParserError as e:
|
||||
return format_parser_error(self.name, e.error, e.filename, self.state,
|
||||
self.lineno, True)
|
||||
except FileIOError as e:
|
||||
return format_parser_error(self.name, e.error, e.filename, self.state, self.lineno)
|
||||
|
||||
data_object = finder.root()
|
||||
|
||||
target_handler = self.target_handler_factory.create_target_handler(
|
||||
self.options, project_info, self.state.document)
|
||||
filter_ = self.filter_factory.create_index_filter(self.options)
|
||||
|
||||
renderer_factory_creator = self.renderer_factory_creator_constructor.create_factory_creator(
|
||||
project_info,
|
||||
self.state.document,
|
||||
self.options,
|
||||
target_handler
|
||||
)
|
||||
renderer_factory = renderer_factory_creator.create_factory(
|
||||
[data_object],
|
||||
self.state,
|
||||
self.state.document,
|
||||
filter_,
|
||||
target_handler,
|
||||
)
|
||||
|
||||
mask_factory = NullMaskFactory()
|
||||
context = RenderContext([data_object, self.root_data_object], mask_factory, self.directive_args)
|
||||
object_renderer = renderer_factory.create_renderer(context)
|
||||
|
||||
try:
|
||||
node_list = object_renderer.render()
|
||||
except ParserError as e:
|
||||
return format_parser_error(self.name, e.error, e.filename, self.state,
|
||||
self.lineno, True)
|
||||
except FileIOError as e:
|
||||
return format_parser_error(self.name, e.error, e.filename, self.state, self.lineno)
|
||||
|
||||
return node_list
|
||||
|
||||
|
||||
class DoxygenIndexDirective(BaseIndexDirective):
|
||||
|
||||
required_arguments = 0
|
||||
optional_arguments = 2
|
||||
option_spec = {
|
||||
"path": unchanged_required,
|
||||
"project": unchanged_required,
|
||||
"outline": flag,
|
||||
"no-link": flag,
|
||||
}
|
||||
has_content = False
|
||||
|
||||
def run(self):
|
||||
"""Extract the project info and pass it to the helper method"""
|
||||
|
||||
try:
|
||||
project_info = self.project_info_factory.create_project_info(self.options)
|
||||
except ProjectError as e:
|
||||
warning = create_warning(None, self.state, self.lineno)
|
||||
return warning.warn('doxygenindex: %s' % e)
|
||||
|
||||
return self.handle_contents(project_info)
|
||||
|
||||
|
||||
class AutoDoxygenIndexDirective(BaseIndexDirective):
|
||||
|
||||
required_arguments = 0
|
||||
final_argument_whitespace = True
|
||||
option_spec = {
|
||||
"project": unchanged_required,
|
||||
"outline": flag,
|
||||
"no-link": flag,
|
||||
}
|
||||
has_content = False
|
||||
|
||||
def run(self):
|
||||
"""Extract the project info from the auto project info store and pass it to the helper
|
||||
method
|
||||
"""
|
||||
|
||||
try:
|
||||
project_info = self.project_info_factory.retrieve_project_info_for_auto(self.options)
|
||||
except ProjectError as e:
|
||||
warning = create_warning(None, self.state, self.lineno)
|
||||
return warning.warn('autodoxygenindex: %s' % e)
|
||||
|
||||
return self.handle_contents(project_info)
|
||||
|
||||
|
BIN
doc/breathe/directive/index.pyc
Normal file
BIN
doc/breathe/directive/index.pyc
Normal file
Binary file not shown.
Reference in New Issue
Block a user