github-markup 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +12 -2
- data/github-markup.gemspec +1 -0
- data/lib/github-markup.rb +1 -1
- data/lib/github/commands/rest2html +48 -29
- data/lib/github/markup/markdown.rb +3 -0
- data/lib/github/markups.rb +3 -1
- data/test/markups/README.mediawiki +3 -0
- data/test/markups/README.mediawiki.html +3 -0
- data/test/markups/README.rst +18 -0
- data/test/markups/README.rst.html +12 -0
- metadata +17 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: afc82c320a97a18e1f5b60f73dc24655e976a44b
         | 
| 4 | 
            +
              data.tar.gz: 191b767ae24fda9f343857c6a74c308b87cb91f9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 5e377067276eedcc237ad87a899b023308def31c966c6cc13ed038d5738d70a6a5536a551acf77d88094270fb23b1b4e12259d1c49a60f12cc0ba3ae55fc4f4c
         | 
| 7 | 
            +
              data.tar.gz: 3a379abbdebf7fa103412865ebd0b702cd6b14ea3144720e12f6f6e4a1f48f95e79f8e1e6a5003878e074b41cd905530f1bf310e70dd95b6e30e40203b2b0986
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -1,7 +1,5 @@ | |
| 1 1 | 
             
            language: ruby
         | 
| 2 | 
            -
            before_install: sudo pip install docutils
         | 
| 3 2 | 
             
            rvm:
         | 
| 4 | 
            -
              - 1.9.3
         | 
| 5 3 | 
             
              - 2.0.0
         | 
| 6 4 | 
             
              - 2.1.1
         | 
| 7 5 | 
             
              - jruby-19mode
         | 
| @@ -9,3 +7,15 @@ jdk: | |
| 9 7 | 
             
              - oraclejdk8
         | 
| 10 8 | 
             
            notifications:
         | 
| 11 9 | 
             
              email: false
         | 
| 10 | 
            +
            git:
         | 
| 11 | 
            +
              depth: 10
         | 
| 12 | 
            +
            before_install: sudo pip install docutils
         | 
| 13 | 
            +
            cache:
         | 
| 14 | 
            +
              - bundler
         | 
| 15 | 
            +
              - pip
         | 
| 16 | 
            +
            env:
         | 
| 17 | 
            +
              global:
         | 
| 18 | 
            +
                - "JRUBY_OPTS=-Xcext.enabled=true"
         | 
| 19 | 
            +
            matrix:
         | 
| 20 | 
            +
             allow_failures:
         | 
| 21 | 
            +
               - rvm: jruby-19mode
         | 
    
        data/github-markup.gemspec
    CHANGED
    
    | @@ -16,6 +16,7 @@ Gem::Specification.new do |s| | |
| 16 16 | 
             
              s.test_files    = s.files.grep(%r{^(test|spec|features)/})
         | 
| 17 17 | 
             
              s.require_paths = %w[lib]
         | 
| 18 18 |  | 
| 19 | 
            +
              s.add_development_dependency 'activesupport', '~> 4.0'
         | 
| 19 20 | 
             
              s.add_development_dependency 'minitest', '~> 5.4.3'
         | 
| 20 21 | 
             
              s.add_development_dependency 'html-pipeline', '~> 1.0'
         | 
| 21 22 | 
             
              s.add_development_dependency 'sanitize', '~> 2.1.0'
         | 
    
        data/lib/github-markup.rb
    CHANGED
    
    
| @@ -45,31 +45,45 @@ except: | |
| 45 45 | 
             
            import codecs
         | 
| 46 46 |  | 
| 47 47 | 
             
            from docutils import nodes
         | 
| 48 | 
            -
            from docutils.parsers.rst import roles
         | 
| 48 | 
            +
            from docutils.parsers.rst import directives, roles
         | 
| 49 | 
            +
            from docutils.parsers.rst.directives.body import CodeBlock
         | 
| 49 50 | 
             
            from docutils.core import publish_parts
         | 
| 50 51 | 
             
            from docutils.writers.html4css1 import Writer, HTMLTranslator
         | 
| 51 52 |  | 
| 52 53 | 
             
            SETTINGS = {
         | 
| 53 54 | 
             
                'cloak_email_addresses': False,
         | 
| 54 55 | 
             
                'file_insertion_enabled': False,
         | 
| 55 | 
            -
                'raw_enabled':  | 
| 56 | 
            +
                'raw_enabled': True,
         | 
| 56 57 | 
             
                'strip_comments': True,
         | 
| 57 58 | 
             
                'doctitle_xform': True,
         | 
| 58 59 | 
             
                'sectsubtitle_xform': True,
         | 
| 59 60 | 
             
                'initial_header_level': 2,
         | 
| 60 61 | 
             
                'report_level': 5,
         | 
| 61 | 
            -
                'syntax_highlight' | 
| 62 | 
            -
                'math_output' | 
| 62 | 
            +
                'syntax_highlight': 'none',
         | 
| 63 | 
            +
                'math_output': 'latex',
         | 
| 63 64 | 
             
                'field_name_limit': 50,
         | 
| 64 65 | 
             
            }
         | 
| 65 66 |  | 
| 67 | 
            +
             | 
| 68 | 
            +
            class DoctestDirective(CodeBlock):
         | 
| 69 | 
            +
                """Render Sphinx 'doctest:: [group]' blocks as 'code:: python'
         | 
| 70 | 
            +
                """
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                def run(self):
         | 
| 73 | 
            +
                    """Discard any doctest group argument, render contents as python code
         | 
| 74 | 
            +
                    """
         | 
| 75 | 
            +
                    self.arguments = ['python']
         | 
| 76 | 
            +
                    return super(DoctestDirective, self).run()
         | 
| 77 | 
            +
             | 
| 78 | 
            +
             | 
| 66 79 | 
             
            class GitHubHTMLTranslator(HTMLTranslator):
         | 
| 80 | 
            +
             | 
| 67 81 | 
             
                # removes the <div class="document"> tag wrapped around docs
         | 
| 68 82 | 
             
                # see also: http://bit.ly/1exfq2h (warning! sourceforge link.)
         | 
| 69 83 | 
             
                def depart_document(self, node):
         | 
| 70 84 | 
             
                    HTMLTranslator.depart_document(self, node)
         | 
| 71 | 
            -
                    self.html_body.pop(0) | 
| 72 | 
            -
                    self.html_body.pop() | 
| 85 | 
            +
                    self.html_body.pop(0)  # pop the starting <div> off
         | 
| 86 | 
            +
                    self.html_body.pop()   # pop the ending </div> off
         | 
| 73 87 |  | 
| 74 88 | 
             
                # technique for visiting sections, without generating additional divs
         | 
| 75 89 | 
             
                # see also: http://bit.ly/NHtyRx
         | 
| @@ -102,36 +116,38 @@ class GitHubHTMLTranslator(HTMLTranslator): | |
| 102 116 | 
             
                def visit_table(self, node):
         | 
| 103 117 | 
             
                    classes = ' '.join(['docutils', self.settings.table_style]).strip()
         | 
| 104 118 | 
             
                    self.body.append(
         | 
| 105 | 
            -
             | 
| 119 | 
            +
                        self.starttag(node, 'table', CLASS=classes))
         | 
| 106 120 |  | 
| 107 121 | 
             
                def depart_table(self, node):
         | 
| 108 122 | 
             
                    self.body.append('</table>\n')
         | 
| 109 123 |  | 
| 110 124 | 
             
                def depart_image(self, node):
         | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 116 | 
            -
             | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 122 | 
            -
             | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 125 | 
            +
                    uri = node['uri']
         | 
| 126 | 
            +
                    ext = os.path.splitext(uri)[1].lower()
         | 
| 127 | 
            +
                    # we need to swap RST's use of `object` with `img` tags
         | 
| 128 | 
            +
                    # see http://git.io/5me3dA
         | 
| 129 | 
            +
                    if ext == ".svg":
         | 
| 130 | 
            +
                        # preserve essential attributes
         | 
| 131 | 
            +
                        atts = {}
         | 
| 132 | 
            +
                        for attribute, value in node.attributes.items():
         | 
| 133 | 
            +
                            # we have no time for empty values
         | 
| 134 | 
            +
                            if value:
         | 
| 135 | 
            +
                                if attribute == "uri":
         | 
| 136 | 
            +
                                    atts['src'] = value
         | 
| 137 | 
            +
                                else:
         | 
| 138 | 
            +
                                    atts[attribute] = value
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                        # toss off `object` tag
         | 
| 141 | 
            +
                        self.body.pop()
         | 
| 128 142 | 
             
                    # add on `img` with attributes
         | 
| 129 | 
            -
             | 
| 130 | 
            -
             | 
| 143 | 
            +
                        self.body.append(self.starttag(node, 'img', **atts))
         | 
| 144 | 
            +
                    self.body.append(self.context.pop())
         | 
| 145 | 
            +
             | 
| 131 146 |  | 
| 132 147 | 
             
            def kbd(name, rawtext, text, lineno, inliner, options=None, content=None):
         | 
| 133 148 |  | 
| 134 | 
            -
             | 
| 149 | 
            +
                return [nodes.raw('', '<kbd>%s</kbd>' % text, format='html')], []
         | 
| 150 | 
            +
             | 
| 135 151 |  | 
| 136 152 | 
             
            def main():
         | 
| 137 153 | 
             
                """
         | 
| @@ -143,9 +159,9 @@ def main(): | |
| 143 159 | 
             
                """
         | 
| 144 160 | 
             
                try:
         | 
| 145 161 | 
             
                    text = codecs.open(sys.argv[1], 'r', 'utf-8').read()
         | 
| 146 | 
            -
                except IOError: | 
| 162 | 
            +
                except IOError:  # given filename could not be found
         | 
| 147 163 | 
             
                    return ''
         | 
| 148 | 
            -
                except IndexError: | 
| 164 | 
            +
                except IndexError:  # no filename given
         | 
| 149 165 | 
             
                    text = sys.stdin.read()
         | 
| 150 166 |  | 
| 151 167 | 
             
                writer = Writer()
         | 
| @@ -153,6 +169,9 @@ def main(): | |
| 153 169 |  | 
| 154 170 | 
             
                roles.register_canonical_role('kbd', kbd)
         | 
| 155 171 |  | 
| 172 | 
            +
                # Render source code in Sphinx doctest blocks
         | 
| 173 | 
            +
                directives.register_directive('doctest', DoctestDirective)
         | 
| 174 | 
            +
             | 
| 156 175 | 
             
                parts = publish_parts(text, writer=writer, settings_overrides=SETTINGS)
         | 
| 157 176 | 
             
                if 'html_body' in parts:
         | 
| 158 177 | 
             
                    html = parts['html_body']
         | 
| @@ -4,6 +4,9 @@ module GitHub | |
| 4 4 | 
             
              module Markup
         | 
| 5 5 | 
             
                class Markdown < Implementation
         | 
| 6 6 | 
             
                  MARKDOWN_GEMS = {
         | 
| 7 | 
            +
                    "commonmarker" => proc { |content|
         | 
| 8 | 
            +
                      CommonMarker.render_html(content, :default, %i[tagfilter autolink table strikethrough])
         | 
| 9 | 
            +
                    },
         | 
| 7 10 | 
             
                    "github/markdown" => proc { |content|
         | 
| 8 11 | 
             
                      GitHub::Markdown.render(content)
         | 
| 9 12 | 
             
                    },
         | 
    
        data/lib/github/markups.rb
    CHANGED
    
    | @@ -22,7 +22,9 @@ markup(:creole, /creole/) do |content| | |
| 22 22 | 
             
            end
         | 
| 23 23 |  | 
| 24 24 | 
             
            markup(:wikicloth, /mediawiki|wiki/) do |content|
         | 
| 25 | 
            -
              WikiCloth::WikiCloth.new(:data => content) | 
| 25 | 
            +
              wikicloth = WikiCloth::WikiCloth.new(:data => content)
         | 
| 26 | 
            +
              WikiCloth::WikiBuffer::HTMLElement::ESCAPED_TAGS << 'tt'
         | 
| 27 | 
            +
              wikicloth.to_html(:noedit => true)
         | 
| 26 28 | 
             
            end
         | 
| 27 29 |  | 
| 28 30 | 
             
            markup(:asciidoctor, /adoc|asc(iidoc)?/) do |content|
         | 
| @@ -6,6 +6,9 @@ __TOC__ | |
| 6 6 |  | 
| 7 7 | 
             
            = Red Bridge (JRuby Embed) =
         | 
| 8 8 |  | 
| 9 | 
            +
            <tt>one-<two</tt>
         | 
| 10 | 
            +
            <pre>a-b</pre>
         | 
| 11 | 
            +
             | 
| 9 12 | 
             
            JRuby has long had a private embedding API, which was closely tied to the runtime's internals and therefore changed frequently as JRuby evolved. Since version 1.4, however, we have also provided a more stable public API, known as Red Bridge or JRuby Embed. Existing Java programs written to the [[DirectJRubyEmbedding|legacy API]] should still work, but we strongly recommend Red Bridge for all new projects.
         | 
| 10 13 |  | 
| 11 14 | 
             
            == Features of Red Bridge ==
         | 
| @@ -18,6 +18,9 @@ Using Java from Ruby is JRuby's best-known feature---but you can also go in the | |
| 18 18 | 
             
            <a name="Red_Bridge_JRuby_Embed"></a>Red Bridge (JRuby Embed)</h1>
         | 
| 19 19 |  | 
| 20 20 |  | 
| 21 | 
            +
            <p><tt>one-<two</tt>
         | 
| 22 | 
            +
            </p><pre>a-b</pre>
         | 
| 23 | 
            +
             | 
| 21 24 |  | 
| 22 25 | 
             
            <p>JRuby has long had a private embedding API, which was closely tied to the runtime's internals and therefore changed frequently as JRuby evolved. Since version 1.4, however, we have also provided a more stable public API, known as Red Bridge or JRuby Embed. Existing Java programs written to the <a href="DirectJRubyEmbedding">legacy API</a> should still work, but we strongly recommend Red Bridge for all new projects.
         | 
| 23 26 | 
             
            </p>
         | 
    
        data/test/markups/README.rst
    CHANGED
    
    | @@ -31,6 +31,19 @@ The UTF-8 quote character in this table used to cause python to go boom. Now doc | |
| 31 31 | 
             
            	Tabular Data, 5
         | 
| 32 32 | 
             
            	Made up ratings, 11
         | 
| 33 33 |  | 
| 34 | 
            +
            .. code::
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            	A block of code
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            .. code:: python
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            	python.code('hooray')
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            .. doctest:: ignored
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            	>>> some_function()
         | 
| 45 | 
            +
            	'result'
         | 
| 46 | 
            +
             | 
| 34 47 | 
             
            ==============  ==========================================================
         | 
| 35 48 | 
             
            Travis          http://travis-ci.org/tony/pullv
         | 
| 36 49 | 
             
            Docs            http://pullv.rtfd.org
         | 
| @@ -59,3 +72,8 @@ Field list | |
| 59 72 | 
             
            someone@somewhere.org
         | 
| 60 73 |  | 
| 61 74 | 
             
            Press :kbd:`Ctrl+C` to quit
         | 
| 75 | 
            +
             | 
| 76 | 
            +
             | 
| 77 | 
            +
            .. raw:: html
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                <p><strong>RAW HTML!</strong></p><style> p {color:blue;} </style>
         | 
| @@ -16,6 +16,16 @@ | |
| 16 16 | 
             
            <li>Somé UTF-8°</li>
         | 
| 17 17 | 
             
            </ol>
         | 
| 18 18 | 
             
            <p>The UTF-8 quote character in this table used to cause python to go boom. Now docutils just silently ignores it.</p>
         | 
| 19 | 
            +
            <pre>
         | 
| 20 | 
            +
            A block of code
         | 
| 21 | 
            +
            </pre>
         | 
| 22 | 
            +
            <pre lang="python">
         | 
| 23 | 
            +
            python.code('hooray')
         | 
| 24 | 
            +
            </pre>
         | 
| 25 | 
            +
            <pre lang="python">
         | 
| 26 | 
            +
            >>> some_function()
         | 
| 27 | 
            +
            'result'
         | 
| 28 | 
            +
            </pre>
         | 
| 19 29 | 
             
            <table>
         | 
| 20 30 |  | 
| 21 31 |  | 
| @@ -77,3 +87,5 @@ but no problem!</td> | |
| 77 87 | 
             
            <p><a href="mailto:someone@somewhere.org">someone@somewhere.org</a></p>
         | 
| 78 88 |  | 
| 79 89 | 
             
            <p>Press <kbd>Ctrl+C</kbd> to quit</p>
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            <p><strong>RAW HTML!</strong></p> p {color:blue;}
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: github-markup
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.4. | 
| 4 | 
            +
              version: 1.4.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Chris Wanstrath
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-01-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: activesupport
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - "~>"
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '4.0'
         | 
| 20 | 
            +
              type: :development
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - "~>"
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '4.0'
         | 
| 13 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 28 | 
             
              name: minitest
         | 
| 15 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -162,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 162 176 | 
             
                  version: '0'
         | 
| 163 177 | 
             
            requirements: []
         | 
| 164 178 | 
             
            rubyforge_project: 
         | 
| 165 | 
            -
            rubygems_version: 2. | 
| 179 | 
            +
            rubygems_version: 2.5.1
         | 
| 166 180 | 
             
            signing_key: 
         | 
| 167 181 | 
             
            specification_version: 4
         | 
| 168 182 | 
             
            summary: The code GitHub uses to render README.markup
         |