asciidoctor 1.5.6.2 → 1.5.7
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.
Potentially problematic release.
This version of asciidoctor might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +330 -143
- data/README-fr.adoc +441 -0
- data/README-jp.adoc +418 -0
- data/README-zh_CN.adoc +430 -0
- data/README.adoc +454 -0
- data/Rakefile +57 -0
- data/asciidoctor.gemspec +7 -1
- data/data/locale/attributes-ar.adoc +22 -0
- data/data/locale/attributes-bg.adoc +22 -0
- data/data/locale/attributes-ca.adoc +22 -0
- data/data/locale/attributes-cs.adoc +22 -0
- data/data/locale/attributes-da.adoc +22 -0
- data/data/locale/attributes-de.adoc +22 -0
- data/data/locale/attributes-en.adoc +23 -0
- data/data/locale/attributes-es.adoc +22 -0
- data/data/locale/attributes-fa.adoc +22 -0
- data/data/locale/attributes-fi.adoc +22 -0
- data/data/locale/attributes-fr.adoc +22 -0
- data/data/locale/attributes-hu.adoc +22 -0
- data/data/locale/attributes-id.adoc +22 -0
- data/data/locale/attributes-it.adoc +22 -0
- data/data/locale/attributes-ja.adoc +22 -0
- data/data/locale/attributes-kr.adoc +22 -0
- data/data/locale/attributes-nb.adoc +22 -0
- data/data/locale/attributes-nl.adoc +22 -0
- data/data/locale/attributes-nn.adoc +22 -0
- data/data/locale/attributes-pl.adoc +22 -0
- data/data/locale/attributes-pt.adoc +22 -0
- data/data/locale/attributes-pt_BR.adoc +22 -0
- data/data/locale/attributes-ro.adoc +22 -0
- data/data/locale/attributes-ru.adoc +22 -0
- data/data/locale/attributes-sr.adoc +22 -0
- data/data/locale/attributes-sr_Latn.adoc +22 -0
- data/data/locale/attributes-tr.adoc +22 -0
- data/data/locale/attributes-uk.adoc +22 -0
- data/data/locale/attributes-zh_CN.adoc +22 -0
- data/data/locale/attributes-zh_TW.adoc +22 -0
- data/data/locale/attributes.adoc +8 -649
- data/data/stylesheets/asciidoctor-default.css +77 -72
- data/features/xref.feature +366 -7
- data/lib/asciidoctor.rb +107 -93
- data/lib/asciidoctor/abstract_block.rb +247 -239
- data/lib/asciidoctor/abstract_node.rb +56 -58
- data/lib/asciidoctor/block.rb +3 -3
- data/lib/asciidoctor/callouts.rb +1 -1
- data/lib/asciidoctor/cli/invoker.rb +36 -9
- data/lib/asciidoctor/cli/options.rb +63 -25
- data/lib/asciidoctor/converter.rb +23 -13
- data/lib/asciidoctor/converter/base.rb +4 -0
- data/lib/asciidoctor/converter/docbook45.rb +16 -9
- data/lib/asciidoctor/converter/docbook5.rb +115 -97
- data/lib/asciidoctor/converter/factory.rb +29 -31
- data/lib/asciidoctor/converter/html5.rb +229 -192
- data/lib/asciidoctor/converter/manpage.rb +72 -50
- data/lib/asciidoctor/converter/template.rb +12 -12
- data/lib/asciidoctor/core_ext.rb +5 -1
- data/lib/asciidoctor/core_ext/1.8.7/base64/strict_encode64.rb +6 -0
- data/lib/asciidoctor/document.rb +168 -77
- data/lib/asciidoctor/extensions.rb +79 -47
- data/lib/asciidoctor/helpers.rb +33 -11
- data/lib/asciidoctor/inline.rb +3 -2
- data/lib/asciidoctor/list.rb +2 -1
- data/lib/asciidoctor/logging.rb +122 -0
- data/lib/asciidoctor/parser.rb +406 -382
- data/lib/asciidoctor/path_resolver.rb +169 -162
- data/lib/asciidoctor/reader.rb +166 -121
- data/lib/asciidoctor/section.rb +45 -28
- data/lib/asciidoctor/stylesheets.rb +13 -5
- data/lib/asciidoctor/substitutors.rb +328 -254
- data/lib/asciidoctor/table.rb +105 -48
- data/lib/asciidoctor/timings.rb +34 -6
- data/lib/asciidoctor/version.rb +1 -1
- data/man/asciidoctor.1 +41 -23
- data/man/asciidoctor.adoc +14 -8
- data/test/api_test.rb +1004 -0
- data/test/attributes_test.rb +241 -50
- data/test/blocks_test.rb +549 -124
- data/test/converter_test.rb +170 -78
- data/test/document_test.rb +208 -767
- data/test/extensions_test.rb +188 -53
- data/test/fixtures/custom-backends/slim/html5/block_paragraph.html.slim +1 -1
- data/test/fixtures/custom-backends/slim/html5/block_sidebar.html.slim +1 -1
- data/test/fixtures/file-with-missing-include.adoc +1 -0
- data/test/fixtures/include-file.jsx +8 -0
- data/test/fixtures/lists.adoc +96 -0
- data/test/fixtures/other-chapters.adoc +11 -0
- data/test/fixtures/outer-include.adoc +5 -0
- data/test/fixtures/sample.asciidoc +5 -1
- data/test/fixtures/subdir/index.adoc +3 -0
- data/test/fixtures/subdir/inner-include.adoc +3 -0
- data/test/fixtures/subdir/middle-include.adoc +5 -0
- data/test/fixtures/tagged-class-enclosed.rb +0 -1
- data/test/fixtures/unclosed-tag.adoc +3 -0
- data/test/fixtures/unexpected-end-tag.adoc +4 -0
- data/test/invoker_test.rb +101 -40
- data/test/links_test.rb +266 -72
- data/test/lists_test.rb +243 -45
- data/test/logger_test.rb +211 -0
- data/test/manpage_test.rb +124 -6
- data/test/options_test.rb +46 -1
- data/test/paragraphs_test.rb +23 -10
- data/test/parser_test.rb +30 -1
- data/test/paths_test.rb +115 -33
- data/test/preamble_test.rb +1 -1
- data/test/reader_test.rb +337 -81
- data/test/sections_test.rb +656 -72
- data/test/substitutions_test.rb +182 -57
- data/test/tables_test.rb +324 -57
- data/test/test_helper.rb +77 -32
- data/test/text_test.rb +7 -7
- metadata +67 -3
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            include::no-such-file.adoc[]
         | 
| @@ -0,0 +1,96 @@ | |
| 1 | 
            +
            = Document Title
         | 
| 2 | 
            +
            Doc Writer <thedoc@asciidoctor.org>
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Preamble paragraph.
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            NOTE: This is test, only a test.
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            == Lists
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            .Unordered, basic
         | 
| 11 | 
            +
            * Edgar Allen Poe
         | 
| 12 | 
            +
            * Sheri S. Tepper
         | 
| 13 | 
            +
            * Bill Bryson
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            .Unordered, max nesting
         | 
| 16 | 
            +
            * level 1
         | 
| 17 | 
            +
            ** level 2
         | 
| 18 | 
            +
            *** level 3
         | 
| 19 | 
            +
            **** level 4
         | 
| 20 | 
            +
            ***** level 5
         | 
| 21 | 
            +
            * level 1
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            .Checklist
         | 
| 24 | 
            +
            - [*] checked
         | 
| 25 | 
            +
            - [x] also checked
         | 
| 26 | 
            +
            - [ ] not checked
         | 
| 27 | 
            +
            -     normal list item
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            .Ordered, basic
         | 
| 30 | 
            +
            . Step 1
         | 
| 31 | 
            +
            . Step 2
         | 
| 32 | 
            +
            . Step 3
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            .Ordered, nested
         | 
| 35 | 
            +
            . Step 1
         | 
| 36 | 
            +
            . Step 2
         | 
| 37 | 
            +
            .. Step 2a
         | 
| 38 | 
            +
            .. Step 2b
         | 
| 39 | 
            +
            . Step 3
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            .Ordered, max nesting
         | 
| 42 | 
            +
            . level 1
         | 
| 43 | 
            +
            .. level 2
         | 
| 44 | 
            +
            ... level 3
         | 
| 45 | 
            +
            .... level 4
         | 
| 46 | 
            +
            ..... level 5
         | 
| 47 | 
            +
            . level 1
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            .Labeled, single-line
         | 
| 50 | 
            +
            first term:: definition of first term
         | 
| 51 | 
            +
            section term:: definition of second term
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            .Labeled, multi-line
         | 
| 54 | 
            +
            first term::
         | 
| 55 | 
            +
            definition of first term
         | 
| 56 | 
            +
            second term::
         | 
| 57 | 
            +
            definition of second term
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            .Q&A
         | 
| 60 | 
            +
            [qanda]
         | 
| 61 | 
            +
            What is Asciidoctor?::
         | 
| 62 | 
            +
              An implementation of the AsciiDoc processor in Ruby.
         | 
| 63 | 
            +
            What is the answer to the Ultimate Question?:: 42
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            .Mixed
         | 
| 66 | 
            +
            Operating Systems::
         | 
| 67 | 
            +
              Linux:::
         | 
| 68 | 
            +
                . Fedora
         | 
| 69 | 
            +
                  * Desktop
         | 
| 70 | 
            +
                . Ubuntu
         | 
| 71 | 
            +
                  * Desktop
         | 
| 72 | 
            +
                  * Server
         | 
| 73 | 
            +
              BSD:::
         | 
| 74 | 
            +
                . FreeBSD
         | 
| 75 | 
            +
                . NetBSD
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            Cloud Providers::
         | 
| 78 | 
            +
              PaaS:::
         | 
| 79 | 
            +
                . OpenShift
         | 
| 80 | 
            +
                . CloudBees
         | 
| 81 | 
            +
              IaaS:::
         | 
| 82 | 
            +
                . Amazon EC2
         | 
| 83 | 
            +
                . Rackspace
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            .Unordered, complex
         | 
| 86 | 
            +
            * level 1
         | 
| 87 | 
            +
            ** level 2
         | 
| 88 | 
            +
            *** level 3
         | 
| 89 | 
            +
            This is a new line inside an unordered list using {plus} symbol.
         | 
| 90 | 
            +
            We can even force content to start on a separate line... +
         | 
| 91 | 
            +
            Amazing, isn't it?
         | 
| 92 | 
            +
            **** level 4
         | 
| 93 | 
            +
            +
         | 
| 94 | 
            +
            The {plus} symbol is on a new line.
         | 
| 95 | 
            +
             | 
| 96 | 
            +
            ***** level 5
         | 
    
        data/test/invoker_test.rb
    CHANGED
    
    | @@ -33,8 +33,8 @@ context 'Invoker' do | |
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
| 35 35 | 
             
              test 'should set implicit doc info attributes' do
         | 
| 36 | 
            -
                sample_filepath =  | 
| 37 | 
            -
                sample_filedir =  | 
| 36 | 
            +
                sample_filepath = fixture_path 'sample.asciidoc'
         | 
| 37 | 
            +
                sample_filedir = fixturedir
         | 
| 38 38 | 
             
                invoker = invoke_cli_to_buffer %w(-o /dev/null), sample_filepath
         | 
| 39 39 | 
             
                doc = invoker.document
         | 
| 40 40 | 
             
                assert_equal 'sample', doc.attr('docname')
         | 
| @@ -48,7 +48,7 @@ context 'Invoker' do | |
| 48 48 | 
             
              end
         | 
| 49 49 |  | 
| 50 50 | 
             
              test 'should allow docdate and doctime to be overridden' do
         | 
| 51 | 
            -
                sample_filepath =  | 
| 51 | 
            +
                sample_filepath = fixture_path 'sample.asciidoc'
         | 
| 52 52 | 
             
                invoker = invoke_cli_to_buffer %w(-o /dev/null -a docdate=2015-01-01 -a doctime=10:00:00-07:00), sample_filepath
         | 
| 53 53 | 
             
                doc = invoker.document
         | 
| 54 54 | 
             
                assert doc.attr?('docdate', '2015-01-01')
         | 
| @@ -86,7 +86,7 @@ context 'Invoker' do | |
| 86 86 | 
             
              end
         | 
| 87 87 |  | 
| 88 88 | 
             
              test 'should accept document from stdin and write to output file' do
         | 
| 89 | 
            -
                sample_outpath =  | 
| 89 | 
            +
                sample_outpath = fixture_path 'sample-output.html'
         | 
| 90 90 | 
             
                begin
         | 
| 91 91 | 
             
                  invoker = invoke_cli(%W(-s -o #{sample_outpath}), '-') { 'content' }
         | 
| 92 92 | 
             
                  doc = invoker.document
         | 
| @@ -111,13 +111,13 @@ context 'Invoker' do | |
| 111 111 | 
             
              end
         | 
| 112 112 |  | 
| 113 113 | 
             
              test 'should fail if input file matches specified output file' do
         | 
| 114 | 
            -
                sample_outpath =  | 
| 114 | 
            +
                sample_outpath = fixture_path 'sample.asciidoc'
         | 
| 115 115 | 
             
                invoker = invoke_cli_to_buffer %W(-o #{sample_outpath}), 'sample.asciidoc'
         | 
| 116 116 | 
             
                assert_match(/input file and output file cannot be the same/, invoker.read_error)
         | 
| 117 117 | 
             
              end
         | 
| 118 118 |  | 
| 119 119 | 
             
              test 'should accept input from named pipe and output to stdout' do
         | 
| 120 | 
            -
                sample_inpath =  | 
| 120 | 
            +
                sample_inpath = fixture_path 'sample-pipe.adoc'
         | 
| 121 121 | 
             
                begin
         | 
| 122 122 | 
             
                  %x(mkfifo #{sample_inpath})
         | 
| 123 123 | 
             
                  write_thread = Thread.new do
         | 
| @@ -133,7 +133,7 @@ context 'Invoker' do | |
| 133 133 | 
             
              end if RUBY_MIN_VERSION_1_9 && !windows?
         | 
| 134 134 |  | 
| 135 135 | 
             
              test 'should allow docdir to be specified when input is a string' do
         | 
| 136 | 
            -
                expected_docdir =  | 
| 136 | 
            +
                expected_docdir = fixturedir
         | 
| 137 137 | 
             
                invoker = invoke_cli_to_buffer(%w(-s --base-dir test/fixtures -o /dev/null), '-') { 'content' }
         | 
| 138 138 | 
             
                doc = invoker.document
         | 
| 139 139 | 
             
                assert_equal expected_docdir, doc.attr('docdir')
         | 
| @@ -141,7 +141,7 @@ context 'Invoker' do | |
| 141 141 | 
             
              end
         | 
| 142 142 |  | 
| 143 143 | 
             
              test 'should display version and exit' do
         | 
| 144 | 
            -
                expected = %(Asciidoctor #{Asciidoctor::VERSION} [ | 
| 144 | 
            +
                expected = %(Asciidoctor #{Asciidoctor::VERSION} [https://asciidoctor.org]\nRuntime Environment (#{RUBY_DESCRIPTION}))
         | 
| 145 145 | 
             
                ['--version', '-V'].each do |switch|
         | 
| 146 146 | 
             
                  actual = nil
         | 
| 147 147 | 
             
                  redirect_streams do |out, err|
         | 
| @@ -179,6 +179,18 @@ context 'Invoker' do | |
| 179 179 | 
             
                assert_equal '', warnings
         | 
| 180 180 | 
             
              end
         | 
| 181 181 |  | 
| 182 | 
            +
              test 'should return non-zero exit code if failure level is reached' do
         | 
| 183 | 
            +
                input = <<-EOS
         | 
| 184 | 
            +
            2. second
         | 
| 185 | 
            +
            3. third
         | 
| 186 | 
            +
                EOS
         | 
| 187 | 
            +
                exit_code, messages = redirect_streams do |_, err|
         | 
| 188 | 
            +
                  [invoke_cli(%w(-q --failure-level=WARN -o /dev/null), '-') { input }.code, err.string]
         | 
| 189 | 
            +
                end
         | 
| 190 | 
            +
                assert_equal 1, exit_code
         | 
| 191 | 
            +
                assert messages.empty?
         | 
| 192 | 
            +
              end
         | 
| 193 | 
            +
             | 
| 182 194 | 
             
              test 'should report usage if no input file given' do
         | 
| 183 195 | 
             
                redirect_streams do |out, err|
         | 
| 184 196 | 
             
                  invoke_cli [], nil
         | 
| @@ -189,7 +201,7 @@ context 'Invoker' do | |
| 189 201 | 
             
              test 'should report error if input file does not exist' do
         | 
| 190 202 | 
             
                redirect_streams do |out, err|
         | 
| 191 203 | 
             
                  invoker = invoke_cli [], 'missing_file.asciidoc'
         | 
| 192 | 
            -
                  assert_match(/input file .* missing | 
| 204 | 
            +
                  assert_match(/input file .* is missing/, err.string)
         | 
| 193 205 | 
             
                  assert_equal 1, invoker.code
         | 
| 194 206 | 
             
                end
         | 
| 195 207 | 
             
              end
         | 
| @@ -197,13 +209,13 @@ context 'Invoker' do | |
| 197 209 | 
             
              test 'should treat extra arguments as files' do
         | 
| 198 210 | 
             
                redirect_streams do |out, err|
         | 
| 199 211 | 
             
                  invoker = invoke_cli %w(-o /dev/null extra arguments sample.asciidoc), nil
         | 
| 200 | 
            -
                  assert_match(/input file .* missing | 
| 212 | 
            +
                  assert_match(/input file .* is missing/, err.string)
         | 
| 201 213 | 
             
                  assert_equal 1, invoker.code
         | 
| 202 214 | 
             
                end
         | 
| 203 215 | 
             
              end
         | 
| 204 216 |  | 
| 205 217 | 
             
              test 'should output to file name based on input file name' do
         | 
| 206 | 
            -
                sample_outpath =  | 
| 218 | 
            +
                sample_outpath = fixture_path 'sample.html'
         | 
| 207 219 | 
             
                begin
         | 
| 208 220 | 
             
                  invoker = invoke_cli
         | 
| 209 221 | 
             
                  doc = invoker.document
         | 
| @@ -222,8 +234,8 @@ context 'Invoker' do | |
| 222 234 | 
             
              end
         | 
| 223 235 |  | 
| 224 236 | 
             
              test 'should output to file in destination directory if set' do
         | 
| 225 | 
            -
                destination_path = File. | 
| 226 | 
            -
                sample_outpath = File.join | 
| 237 | 
            +
                destination_path = File.join testdir, 'test_output'
         | 
| 238 | 
            +
                sample_outpath = File.join destination_path, 'sample.html'
         | 
| 227 239 | 
             
                begin
         | 
| 228 240 | 
             
                  FileUtils.mkdir_p(destination_path)
         | 
| 229 241 | 
             
                  # QUESTION should -D be relative to working directory or source directory?
         | 
| @@ -238,8 +250,25 @@ context 'Invoker' do | |
| 238 250 | 
             
                end
         | 
| 239 251 | 
             
              end
         | 
| 240 252 |  | 
| 253 | 
            +
              test 'should preserve directory structure in destination directory if source directory is set' do
         | 
| 254 | 
            +
                sample_inpath = 'subdir/index.adoc'
         | 
| 255 | 
            +
                destination_path = 'test_output'
         | 
| 256 | 
            +
                destination_subdir_path = File.join destination_path, 'subdir'
         | 
| 257 | 
            +
                sample_outpath = File.join destination_subdir_path, 'index.html'
         | 
| 258 | 
            +
                begin
         | 
| 259 | 
            +
                  FileUtils.mkdir_p(destination_path)
         | 
| 260 | 
            +
                  invoke_cli %W(-D #{destination_path} -R test/fixtures), sample_inpath
         | 
| 261 | 
            +
                  assert File.directory?(destination_subdir_path)
         | 
| 262 | 
            +
                  assert File.exist?(sample_outpath)
         | 
| 263 | 
            +
                ensure
         | 
| 264 | 
            +
                  FileUtils.rm_f(sample_outpath)
         | 
| 265 | 
            +
                  FileUtils.rmdir(destination_subdir_path)
         | 
| 266 | 
            +
                  FileUtils.rmdir(destination_path)
         | 
| 267 | 
            +
                end
         | 
| 268 | 
            +
              end
         | 
| 269 | 
            +
             | 
| 241 270 | 
             
              test 'should output to file specified' do
         | 
| 242 | 
            -
                sample_outpath =  | 
| 271 | 
            +
                sample_outpath = fixture_path 'sample-output.html'
         | 
| 243 272 | 
             
                begin
         | 
| 244 273 | 
             
                  invoker = invoke_cli %W(-o #{sample_outpath})
         | 
| 245 274 | 
             
                  doc = invoker.document
         | 
| @@ -251,9 +280,9 @@ context 'Invoker' do | |
| 251 280 | 
             
              end
         | 
| 252 281 |  | 
| 253 282 | 
             
              test 'should copy default stylesheet to target directory if linkcss is specified' do
         | 
| 254 | 
            -
                sample_outpath =  | 
| 255 | 
            -
                asciidoctor_stylesheet =  | 
| 256 | 
            -
                coderay_stylesheet =  | 
| 283 | 
            +
                sample_outpath = fixture_path 'sample-output.html'
         | 
| 284 | 
            +
                asciidoctor_stylesheet = fixture_path 'asciidoctor.css'
         | 
| 285 | 
            +
                coderay_stylesheet = fixture_path 'coderay-asciidoctor.css'
         | 
| 257 286 | 
             
                begin
         | 
| 258 287 | 
             
                  invoker = invoke_cli %W(-o #{sample_outpath} -a linkcss -a source-highlighter=coderay)
         | 
| 259 288 | 
             
                  invoker.document
         | 
| @@ -268,8 +297,8 @@ context 'Invoker' do | |
| 268 297 | 
             
              end
         | 
| 269 298 |  | 
| 270 299 | 
             
              test 'should not copy default stylesheet to target directory if linkcss is set and copycss is unset' do
         | 
| 271 | 
            -
                sample_outpath =  | 
| 272 | 
            -
                default_stylesheet =  | 
| 300 | 
            +
                sample_outpath = fixture_path 'sample-output.html'
         | 
| 301 | 
            +
                default_stylesheet = fixture_path 'asciidoctor.css'
         | 
| 273 302 | 
             
                begin
         | 
| 274 303 | 
             
                  invoker = invoke_cli %W(-o #{sample_outpath} -a linkcss -a copycss!)
         | 
| 275 304 | 
             
                  invoker.document
         | 
| @@ -282,7 +311,7 @@ context 'Invoker' do | |
| 282 311 | 
             
              end
         | 
| 283 312 |  | 
| 284 313 | 
             
              test 'should copy custom stylesheet to target directory if stylesheet and linkcss is specified' do
         | 
| 285 | 
            -
                destdir =  | 
| 314 | 
            +
                destdir = fixture_path 'output'
         | 
| 286 315 | 
             
                sample_outpath = File.join destdir, 'sample-output.html'
         | 
| 287 316 | 
             
                stylesdir = File.join destdir, 'styles'
         | 
| 288 317 | 
             
                custom_stylesheet = File.join stylesdir, 'custom.css'
         | 
| @@ -300,7 +329,7 @@ context 'Invoker' do | |
| 300 329 | 
             
              end
         | 
| 301 330 |  | 
| 302 331 | 
             
              test 'should not copy custom stylesheet to target directory if stylesheet and linkcss are set and copycss is unset' do
         | 
| 303 | 
            -
                destdir =  | 
| 332 | 
            +
                destdir = fixture_path 'output'
         | 
| 304 333 | 
             
                sample_outpath = File.join destdir, 'sample-output.html'
         | 
| 305 334 | 
             
                stylesdir = File.join destdir, 'styles'
         | 
| 306 335 | 
             
                custom_stylesheet = File.join stylesdir, 'custom.css'
         | 
| @@ -318,7 +347,7 @@ context 'Invoker' do | |
| 318 347 | 
             
              end
         | 
| 319 348 |  | 
| 320 349 | 
             
              test 'should not copy custom stylesheet to target directory if stylesdir is a URI' do
         | 
| 321 | 
            -
                destdir =  | 
| 350 | 
            +
                destdir = fixture_path 'output'
         | 
| 322 351 | 
             
                sample_outpath = File.join destdir, 'sample-output.html'
         | 
| 323 352 | 
             
                stylesdir = File.join destdir, 'http:'
         | 
| 324 353 | 
             
                begin
         | 
| @@ -334,8 +363,8 @@ context 'Invoker' do | |
| 334 363 | 
             
              end
         | 
| 335 364 |  | 
| 336 365 | 
             
              test 'should render all passed files' do
         | 
| 337 | 
            -
                basic_outpath =  | 
| 338 | 
            -
                sample_outpath =  | 
| 366 | 
            +
                basic_outpath = fixture_path 'basic.html'
         | 
| 367 | 
            +
                sample_outpath = fixture_path 'sample.html'
         | 
| 339 368 | 
             
                begin
         | 
| 340 369 | 
             
                  invoke_cli_with_filenames [], %w(basic.asciidoc sample.asciidoc)
         | 
| 341 370 | 
             
                  assert File.exist?(basic_outpath)
         | 
| @@ -347,9 +376,9 @@ context 'Invoker' do | |
| 347 376 | 
             
              end
         | 
| 348 377 |  | 
| 349 378 | 
             
              test 'options should not be modified when processing multiple files' do
         | 
| 350 | 
            -
                destination_path = File. | 
| 351 | 
            -
                basic_outpath = File.join | 
| 352 | 
            -
                sample_outpath = File.join | 
| 379 | 
            +
                destination_path = File.join testdir, 'test_output'
         | 
| 380 | 
            +
                basic_outpath = File.join destination_path, 'basic.htm'
         | 
| 381 | 
            +
                sample_outpath = File.join destination_path, 'sample.htm'
         | 
| 353 382 | 
             
                begin
         | 
| 354 383 | 
             
                  invoke_cli_with_filenames %w(-D test/test_output -a outfilesuffix=.htm), %w(basic.asciidoc sample.asciidoc)
         | 
| 355 384 | 
             
                  assert File.exist?(basic_outpath)
         | 
| @@ -362,7 +391,7 @@ context 'Invoker' do | |
| 362 391 | 
             
              end
         | 
| 363 392 |  | 
| 364 393 | 
             
              test 'should render all files that matches a glob expression' do
         | 
| 365 | 
            -
                basic_outpath =  | 
| 394 | 
            +
                basic_outpath = fixture_path 'basic.html'
         | 
| 366 395 | 
             
                begin
         | 
| 367 396 | 
             
                  invoke_cli_to_buffer [], "ba*.asciidoc"
         | 
| 368 397 | 
             
                  assert File.exist?(basic_outpath)
         | 
| @@ -372,8 +401,8 @@ context 'Invoker' do | |
| 372 401 | 
             
              end
         | 
| 373 402 |  | 
| 374 403 | 
             
              test 'should render all files that matches an absolute path glob expression' do
         | 
| 375 | 
            -
                basic_outpath =  | 
| 376 | 
            -
                glob =  | 
| 404 | 
            +
                basic_outpath = fixture_path 'basic.html'
         | 
| 405 | 
            +
                glob = fixture_path 'ba*.asciidoc'
         | 
| 377 406 | 
             
                # test Windows using backslash-style pathname
         | 
| 378 407 | 
             
                if File::ALT_SEPARATOR == '\\'
         | 
| 379 408 | 
             
                  glob = glob.tr '/', '\\'
         | 
| @@ -394,6 +423,38 @@ context 'Invoker' do | |
| 394 423 | 
             
                assert_xpath '/*[@id="preamble"]', output, 1
         | 
| 395 424 | 
             
              end
         | 
| 396 425 |  | 
| 426 | 
            +
              test 'should write page for each alternate manname' do
         | 
| 427 | 
            +
                outdir = fixturedir
         | 
| 428 | 
            +
                outfile_1 = File.join outdir, 'eve.1'
         | 
| 429 | 
            +
                outfile_2 = File.join outdir, 'islifeform.1'
         | 
| 430 | 
            +
                input = <<-EOS
         | 
| 431 | 
            +
            = eve(1)
         | 
| 432 | 
            +
            Andrew Stanton
         | 
| 433 | 
            +
            v1.0.0
         | 
| 434 | 
            +
            :doctype: manpage
         | 
| 435 | 
            +
            :manmanual: EVE
         | 
| 436 | 
            +
            :mansource: EVE
         | 
| 437 | 
            +
             | 
| 438 | 
            +
            == NAME
         | 
| 439 | 
            +
             | 
| 440 | 
            +
            eve, islifeform - analyzes an image to determine if it's a picture of a life form
         | 
| 441 | 
            +
             | 
| 442 | 
            +
            == SYNOPSIS
         | 
| 443 | 
            +
             | 
| 444 | 
            +
            *eve* ['OPTION']... 'FILE'...
         | 
| 445 | 
            +
                EOS
         | 
| 446 | 
            +
             | 
| 447 | 
            +
                begin
         | 
| 448 | 
            +
                  invoke_cli(%W(-b manpage -o #{outfile_1}), '-') { input }
         | 
| 449 | 
            +
                  assert File.exist?(outfile_1)
         | 
| 450 | 
            +
                  assert File.exist?(outfile_2)
         | 
| 451 | 
            +
                  assert_equal '.so eve.1', (IO.read outfile_2).chomp
         | 
| 452 | 
            +
                ensure
         | 
| 453 | 
            +
                  FileUtils.rm_f outfile_1
         | 
| 454 | 
            +
                  FileUtils.rm_f outfile_2
         | 
| 455 | 
            +
                end
         | 
| 456 | 
            +
              end
         | 
| 457 | 
            +
             | 
| 397 458 | 
             
              test 'should output a trailing endline to stdout' do
         | 
| 398 459 | 
             
                invoker = nil
         | 
| 399 460 | 
             
                output = nil
         | 
| @@ -467,18 +528,18 @@ context 'Invoker' do | |
| 467 528 | 
             
              end
         | 
| 468 529 |  | 
| 469 530 | 
             
              test 'should locate custom templates based on template dir, template engine and backend' do
         | 
| 470 | 
            -
                custom_backend_root =  | 
| 531 | 
            +
                custom_backend_root = fixture_path 'custom-backends'
         | 
| 471 532 | 
             
                invoker = invoke_cli_to_buffer %W(-E haml -T #{custom_backend_root} -o -)
         | 
| 472 533 | 
             
                doc = invoker.document
         | 
| 473 | 
            -
                 | 
| 534 | 
            +
                assert_kind_of Asciidoctor::Converter::CompositeConverter, doc.converter
         | 
| 474 535 | 
             
                selected = doc.converter.find_converter 'paragraph'
         | 
| 475 | 
            -
                 | 
| 476 | 
            -
                 | 
| 536 | 
            +
                assert_kind_of Asciidoctor::Converter::TemplateConverter, selected
         | 
| 537 | 
            +
                assert_kind_of Tilt::HamlTemplate, selected.templates['paragraph']
         | 
| 477 538 | 
             
              end
         | 
| 478 539 |  | 
| 479 540 | 
             
              test 'should load custom templates from multiple template directories' do
         | 
| 480 | 
            -
                custom_backend_1 =  | 
| 481 | 
            -
                custom_backend_2 =  | 
| 541 | 
            +
                custom_backend_1 = fixture_path 'custom-backends/haml/html5'
         | 
| 542 | 
            +
                custom_backend_2 = fixture_path 'custom-backends/haml/html5-tweaks'
         | 
| 482 543 | 
             
                invoker = invoke_cli_to_buffer %W(-T #{custom_backend_1} -T #{custom_backend_2} -o - -s)
         | 
| 483 544 | 
             
                output = invoker.read_output
         | 
| 484 545 | 
             
                assert_css '.paragraph', output, 0
         | 
| @@ -568,7 +629,7 @@ context 'Invoker' do | |
| 568 629 | 
             
              end
         | 
| 569 630 |  | 
| 570 631 | 
             
              test 'should force default external encoding to UTF-8' do
         | 
| 571 | 
            -
                executable = File. | 
| 632 | 
            +
                executable = File.join ASCIIDOCTOR_PROJECT_DIR, 'bin', 'asciidoctor'
         | 
| 572 633 | 
             
                input_path = fixture_path 'encoding.asciidoc'
         | 
| 573 634 | 
             
                old_lang = ENV['LANG']
         | 
| 574 635 | 
             
                ENV['LANG'] = 'US-ASCII'
         | 
| @@ -586,7 +647,7 @@ context 'Invoker' do | |
| 586 647 | 
             
                  refute_empty stdout_lines
         | 
| 587 648 | 
             
                  stdout_lines.each {|l| l.force_encoding Encoding::UTF_8 } if Asciidoctor::FORCE_ENCODING
         | 
| 588 649 | 
             
                  stdout_str = stdout_lines.join
         | 
| 589 | 
            -
                   | 
| 650 | 
            +
                  assert_includes stdout_str, 'Codierungen sind verrückt auf älteren Versionen von Ruby'
         | 
| 590 651 | 
             
                ensure
         | 
| 591 652 | 
             
                  ENV['LANG'] = old_lang
         | 
| 592 653 | 
             
                end
         | 
| @@ -611,7 +672,7 @@ context 'Invoker' do | |
| 611 672 | 
             
                old_source_date_epoch = ENV.delete 'SOURCE_DATE_EPOCH'
         | 
| 612 673 | 
             
                begin
         | 
| 613 674 | 
             
                  ENV['SOURCE_DATE_EPOCH'] = '1234123412'
         | 
| 614 | 
            -
                  sample_filepath =  | 
| 675 | 
            +
                  sample_filepath = fixture_path 'sample.asciidoc'
         | 
| 615 676 | 
             
                  invoker = invoke_cli_to_buffer %w(-o /dev/null), sample_filepath
         | 
| 616 677 | 
             
                  doc = invoker.document
         | 
| 617 678 | 
             
                  assert_equal '2009-02-08', (doc.attr 'docdate')
         | 
| @@ -633,7 +694,7 @@ context 'Invoker' do | |
| 633 694 | 
             
                old_source_date_epoch = ENV.delete 'SOURCE_DATE_EPOCH'
         | 
| 634 695 | 
             
                begin
         | 
| 635 696 | 
             
                  ENV['SOURCE_DATE_EPOCH'] = 'aaaaaaaa'
         | 
| 636 | 
            -
                  sample_filepath =  | 
| 697 | 
            +
                  sample_filepath = fixture_path 'sample.asciidoc'
         | 
| 637 698 | 
             
                  assert_equal 1, (invoke_cli_to_buffer %w(-o /dev/null), sample_filepath).code
         | 
| 638 699 | 
             
                ensure
         | 
| 639 700 | 
             
                  if old_source_date_epoch
         |