Source code for github_docs_index.index_document

"""
The latest version of this package is available at:
<http://github.com/jantman/github-docs-index>

##################################################################################
Copyright 2018 Jason Antman <jason@jasonantman.com> <http://www.jasonantman.com>

    This file is part of github-docs-index, also known as github-docs-index.

    github-docs-index is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    github-docs-index is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with github-docs-index.  If not, see <http://www.gnu.org/licenses/>.

The Copyright and Authors attributions contained herein may not be removed or
otherwise altered, except to add the Author attribution of a contributor to
this work. (Additional Terms pursuant to Section 7b of the AGPL v3)
##################################################################################
While not legally required, I sincerely request that anyone who finds
bugs please submit them at <https://github.com/jantman/github-docs-index> or
to me via email, and that you send any contributions or improvements
either as a pull request on GitHub, or to me via email.
##################################################################################

AUTHORS:
Jason Antman <jason@jasonantman.com> <http://www.jasonantman.com>
##################################################################################
"""

from textwrap import dedent
import logging

logger = logging.getLogger(__name__)


[docs]class IndexDocument(object): """Class to represent the actual index document""" doc_template = dedent(""" .. _top: {title} < `Chronological Index <#chrono>`_ | `Alphabetical Index <#alpha>`_ > .. _quicklinks: Quick Links ----------- {quicklinks} < `top. <#top>`_ | `Quick Links <#quicklinks>`_ | `Alphabetical Index <#alpha>`_ > .. _chrono: Chronological Index (most recently updated first) ------------------------------------------------- {chrono} < `top. <#top>`_ | `Quick Links <#quicklinks>`_ | `Chronological Index <#chrono>`_ > .. _alpha: Alphabetical Index ------------------ {alpha} < `top. <#top>`_ | `Quick Links <#quicklinks>`_ | `Chronological Index <#chrono>`_ | `Alphabetical Index <#alpha>`_ > {footer} """) def __init__(self, config): self._conf = config self._repo_links = [] self._doc = ''
[docs] def generate_rst(self): title = self._conf.title + "\n" + '=' * len(self._conf.title) if self._conf.subtitle != '': title += '\n\n' + self._conf.subtitle footer = '' if self._conf.footer != '': footer = '\n' + self._conf.footer return self.doc_template.format( title=title, footer=footer, quicklinks='\n'.join([ '* %s' % ql.rst_line for ql in self._conf.quick_links ]), chrono='\n'.join([ '* %s' % r.rst_line for r in sorted( self._repo_links, key=lambda x: x.sort_datetime, reverse=True ) ]), alpha='\n'.join([ '* %s' % r.rst_line for r in sorted( self._repo_links, key=lambda x: x.sort_name ) ]) )