pax_global_header00006660000000000000000000000064141023102740014504gustar00rootroot0000000000000052 comment=098c323a9bd63eb615ef3ddd37a8ae98e2f61353 asciidoctor-2.0.16/000077500000000000000000000000001410231027400140755ustar00rootroot00000000000000asciidoctor-2.0.16/.gitattributes000066400000000000000000000000421410231027400167640ustar00rootroot00000000000000* text=auto eol=lf *.rb diff=ruby asciidoctor-2.0.16/.github/000077500000000000000000000000001410231027400154355ustar00rootroot00000000000000asciidoctor-2.0.16/.github/FUNDING.yml000066400000000000000000000000351410231027400172500ustar00rootroot00000000000000open_collective: asciidoctor asciidoctor-2.0.16/.github/workflows/000077500000000000000000000000001410231027400174725ustar00rootroot00000000000000asciidoctor-2.0.16/.github/workflows/ci.yml000066400000000000000000000077151410231027400206220ustar00rootroot00000000000000name: CI on: push: branches: ['**'] tags-ignore: ['**'] paths-ignore: ['docs/**'] pull_request: paths-ignore: ['docs/**'] schedule: - cron: '0 2 * * *' jobs: activate: if: | (github.event_name == 'schedule' && github.repository_owner == 'asciidoctor') || (github.event_name != 'schedule' && !endsWith(github.event.head_commit.message, '[skip ci]')) runs-on: ubuntu-latest steps: - name: Proceed run: echo ok go build: needs: activate strategy: matrix: os: [ubuntu-latest, windows-latest] ruby: ['jruby-9.2.19.0', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0'] asciimath-version: [~] pygments-version: ['~> 2.0'] rouge-version: [~] exclude: - os: ubuntu-latest ruby: '3.0' include: - os: ubuntu-latest ruby: truffleruby-21.1.0 - os: ubuntu-latest ruby: jruby-9.1.17.0 pygments-version: ~ - os: windows-latest ruby: jruby-9.1.17.0 pygments-version: ~ - os: macos-latest ruby: '3.0' - os: ubuntu-latest ruby: '2.3' asciimath-version: '~> 1.0.0' - os: ubuntu-latest ruby: '2.3' pygments-version: '~> 1.2.0' - os: ubuntu-latest ruby: '2.3' rouge-version: '~> 2.0.0' - os: ubuntu-latest ruby: '3.0' primary: primary runs-on: ${{ matrix.os }} env: BUNDLE_WITHOUT: docs SOURCE_DATE_EPOCH: '1521504000' steps: - name: Checkout uses: actions/checkout@v2 - name: Install prerequisites for Nokogiri (Linux) if: matrix.os == 'ubuntu-latest' run: sudo apt-get install libxslt1-dev - name: Configure Nokogiri installation (Linux, macOS) if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest' run: echo 'BUNDLE_BUILD__NOKOGIRI=--use-system-libraries' >> $GITHUB_ENV - name: Enable coverage if: matrix.primary run: echo 'COVERAGE=true' >> $GITHUB_ENV - name: Set AsciiMath version if: matrix.asciimath-version run: echo 'ASCIIMATH_VERSION=${{ matrix.asciimath-version }}' >> $GITHUB_ENV - name: Set Pygments version if: matrix.pygments-version run: echo 'PYGMENTS_VERSION=${{ matrix.pygments-version }}' >> $GITHUB_ENV - name: Set Rouge version if: matrix.rouge-version run: echo 'ROUGE_VERSION=${{ matrix.rouge-version }}' >> $GITHUB_ENV - name: Install Ruby (uses cached dependencies for non-scheduled build) uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler: '2.2' bundler-cache: ${{ github.event_name != 'schedule' }} - name: Install dependencies (scheduled build only) if: github.event_name == 'schedule' run: | bundle config --local path .bundle/gems bundle --jobs 3 --retry 3 - name: Run tests run: bundle exec ruby -w $(bundle exec ruby -e 'print File.join Gem.bindir, %q(rake)') test:all - name: Check default stylesheet if: matrix.primary run: | cd src/stylesheets npm i --silent --no-audit --no-audit --no-fund --no-package-lock --no-progress npm run build cd - if [ -n "$(git diff --name-only -- data/stylesheets)" ]; then echo 'Detected the following uncommitted changes to the default stylesheet:' git diff exit 1 fi build-dependents: name: build:dependents if: success() && github.event_name == 'push' && github.repository == 'asciidoctor/asciidoctor' needs: build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Install Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.0' bundler: '2.2' bundler-cache: true - name: Build dependents env: GITHUB_API_TOKEN: ${{ secrets._GITHUB_API_TOKEN }} run: bundle exec rake build:dependents asciidoctor-2.0.16/.github/workflows/release.yml000066400000000000000000000014741410231027400216430ustar00rootroot00000000000000name: Release on: push: tags: ['v*'] jobs: activate: if: github.repository_owner == 'asciidoctor' runs-on: ubuntu-latest steps: - name: Proceed run: echo ok go build: needs: activate runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Install Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.0' bundler: '2.2' - name: Configure Bundler run: | bundle config --local path .bundle/gems bundle config --local without coverage docs - name: Install dependencies run: bundle --jobs 3 --retry 3 - name: Run tests run: bundle exec rake test:all - name: Publish gem uses: dawidd6/action-publish-gem@v1 with: api_key: ${{ secrets.RUBYGEMS_API_KEY }} asciidoctor-2.0.16/.gitignore000066400000000000000000000001551410231027400160660ustar00rootroot00000000000000pkg/ /Gemfile.lock /.bundle /*.gem /*.html /.idea/ /.ruby-gemset /.ruby-version /.yardoc/ /rdoc/ /shippable/ asciidoctor-2.0.16/.simplecov000066400000000000000000000006201410231027400160750ustar00rootroot00000000000000SimpleCov.start do load_profile 'test_frameworks' coverage_dir ENV['COVERAGE_REPORTS'] || 'tmp/coverage' if ENV['SHIPPABLE'] require 'simplecov-csv' formatter SimpleCov::Formatter::CSVFormatter else #formatter SimpleCov::Formatter::MultiFormatter[SimpleCov::Formatter::HTMLFormatter, SimpleCov::Formatter::CSVFormatter] formatter SimpleCov::Formatter::HTMLFormatter end end asciidoctor-2.0.16/.yardopts000066400000000000000000000002711410231027400157430ustar00rootroot00000000000000--charset UTF-8 --readme README.adoc --hide-api private --plugin tomdoc --title "Asciidoctor API Documentation" --output-dir rdoc lib/**/*.rb - CHANGELOG.adoc CONTRIBUTING.adoc LICENSE asciidoctor-2.0.16/CHANGELOG.adoc000066400000000000000000003602021410231027400162170ustar00rootroot00000000000000= Asciidoctor Changelog :uri-asciidoctor: https://asciidoctor.org :uri-asciidoc: {uri-asciidoctor}/docs/what-is-asciidoc :uri-repo: https://github.com/asciidoctor/asciidoctor :icons: font :star: icon:star[role=red] ifndef::icons[] :star: ★ endif::[] {uri-asciidoctor}[Asciidoctor] is a _fast_, open source text processor and publishing toolchain for converting {uri-asciidoc}[AsciiDoc] content into HTML 5, DocBook 5, and other formats. This document provides a high-level view of the changes introduced in Asciidoctor by release. For an even more detailed look at what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub. This project utilizes semantic versioning. // tag::compact[] == 2.0.16 (2021-08-03) - @mojavelinux Bug Fixes:: * Include all lines outside of specified tagged region when tag filter on include directive is a single negated tag (#4048) * Only interpret negated wildcard in tag filter on include directive as implicit globstar if it precedes other tags (#4086) * Change ifeval directive to resolve to false if comparison operation cannot be performed (#4046) * Don't crash if `:to_file` option is passed to `load` or `load_file` and value is not a string (#4055) * Use automatic link text if ID in shorthand xref is followed by dangling comma (e.g., `+<>+`) * Update default stylesheet to indent blocks attached to list item in checklist (#2550) * Update default stylesheet to reenable styling of implicit lead role on first paragraph of preamble inside AsciiDoc table cell * Update default stylesheet to fix conflict between text decoration and bottom border on abbr[title] element * Change invalid font family "sans" in default stylesheet to "sans-serif" * Fix missing automatic reftext for internal xrefs in manpage output (#4110) * Replace numeric character reference for plus in manpage output (#4059) * Replace numeric character reference for degree sign in manpage output (#4059) * Convert apostrophe to the portable `+\*(Aq+` variable instead of the groff-specific escape `\(aq` (#4060) (*@felipec*) * Document the `-e, --embedded` option flag in the man page, which replaces the outdated `-e, --eruby` option flag Improvements:: * Use queue to iterate over lines in reader instead of stack (#4106) * Uppercase automatic reftext for level-2 section titles in manpage output if reftext matches section title (#4110) * Show safe modes in strictness order in CLI help (#4065) * Remove redundant styles from the default stylesheet * Update font styles for summary element in default stylesheet to match font styles of paragraph (#4114) * Update default stylesheet to indent content of details element (#4116) * Update default stylesheet to use custom marker for summary element to make appearance consistent (#4116) * Add Vietnamese translation of built-in attributes (PR #4066) (*@nguyenhoa93*) * Add Thai translation of built-in attributes (PR #4113) (*@ammaneena*) Build / Infrastructure:: * Import source of default stylesheet into this repository; use PostCSS with cssnano to minify (#4062) * Use autoprefixer to manage browser prefixes in default stylesheet (#4118) // end::compact[] == 2.0.15 (2021-04-27) - @mojavelinux Bug Fixes:: * Don't include trailing period, question mark, or exclamation point in target (URL) of autolink (#3860) * Don't assign nil value to named attribute mapped to absent positional attribute when parsing attrlist (#4033) * Remove leading and trailing spaces around role on inline phrase (#4035) * Ignore empty role on inline phrase defined using legacy syntax and followed by comma (#4035) * Use xreftext on document as fallback link text in HTML output for inter-document xref that resolves to current document when no link text is provided (#4032) * Use xreftext on document as fallback link text in HTML output for internal xref with empty fragment when no link text is provided (#4032) * Use document ID as linkend in DocBook output for internal xref with empty fragment; auto-generating one if necessary (#4032) Improvements:: * Format keyboard references in monospace in manpage output Build / Infrastructure:: * Get remaining invoker tests working on JRuby 9.1 for Windows == 2.0.14 (2021-04-19) - @mojavelinux Bug Fixes:: * Don't allow AsciiDoc table cell to set document attribute that was unset from the API (exceptions include: `compat-mode`, `toc`, `showtitle`, and `notitle`) (#4017) * Ensure default document attributes unset in parent document remain unset in AsciiDoc table cell (#2586) * Allow the `showtitle` / `notitle` attribute to be toggled in an AsciiDoc table cell if set or unset in parent document (#4018) * Ensure mtime of input file honors TZ environment variable on JRuby for Windows (affects value of `docdatetime` attribute) (#3550) * Honor caption attribute on blocks that support captioned title even if corresponding `*-caption` document attribute (e.g., `example-caption`) is not set (#4023) * Suppress missing attribute warning when applying substitutions to implicit document title for assignment to intrinsic `doctitle` attribute (#4024) * Increment counter (but not the corresponding attribute) if attribute is locked (#4013) Improvements:: * Use attribute, if set, as seed value for counter even if not already registered as a counter (#4014) * Allow subs attribute value on Inline node returned by process method for custom inline macro to be a String (#3938) * Allow value of `user-home` attribute to be overridden by API or CLI (#3732) Build / Infrastructure:: * Run tests on JRuby for Windows (#3550) == 2.0.13 (2021-04-10) - @mojavelinux Bug Fixes:: * Rollback change for #3470, which added logic to remove leading and trailing empty lines in an AsciiDoc include file; instead skip empty lines before processing document header (#3997) * Don't allow `counter` and `counter2` attribute directives to override locked attributes (#3939) (*@mogztter*) * Fix crash when resolving next value in sequence for counter with non-numeric value (#3940) * Honor list of tags following negated wildcard on include directive (#3932) * Update default stylesheet to remove dash in front of cite on nested quote block (#3847) * Don't mangle formatting macros when uppercasing section titles in man page output (#3892) * Don't escape hyphen in `manname` in man page output * Remove extra `.sp` line before content of verse block in man page output * Fix layout of footnotes in man page output (#3989) * Fix formatting of footnote text with URL in man page output (#3988) * Remove redundant trailing space on URL followed by non-adjacent text in man page output (#4004) * Use `.bp` macro at location of page break in man page output (#3992) Improvements:: * Extract method to create lexer and formatter in Rouge adapter (#3953) (*@Oblomov*) * Add support for pygments.rb 2.x (#3969) (*@slonopotamus*) * Allow `NullLogger` to be enabled by setting the `:logger` option to a falsy value (#3982) * Substitute attributes in manpurpose part of NAME section in manpage doctype (#4000) * Output all mannames in name section of HTML output for manpage doctype (#3757) Build / Infrastructure:: * Enable running tests as root (PR #3874) (*@mikemckiernan*) * Run tests against both pygments.rb 1.x and 2.x (#3969) (*@slonopotamus*) * Speed up CI by using Bundler cache (PR #3901) (*@slonopotamus*) Documentation:: * Import documentation for processor into this repository (#3861) (*@graphitefriction*) * Add Belarusian translation of built-in attributes (PR #3928) (*@morganov*) == 2.0.12 (2020-11-10) - @mojavelinux Bug Fixes:: * Set type and target property on unresolved footnote reference and unset id property (fixes regression) (#3825) * Fix crash when inlining an SVG if the explicit width or height value on the image node is not a string (#3829) * Reset word wrap behavior to normal on tables, then reenable again for admonition content, horizontal dlist description, and AsciiDoc table cells (#3833) Improvements:: * Pass through role to DocBook output for inline image (#3832) Compliance:: * Defer use of Ruby >= 2.3 constructs to restore compatibility with Ruby 2.0 until at least next minor release (#3827) * Don't append the default px unit identifier to the explicit width or height value when inlining an SVG (#3829) Build / Infrastructure:: * Migrate Linux CI jobs to GitHub Actions (#3837) * Migrate Windows CI jobs to GitHub Actions (#3839) * Run CI job on macOS (#3842) == 2.0.11 (2020-11-02) - @mojavelinux Bug Fixes:: * Fix infinite loop when callout list with obsolete syntax is found inside list item (#3472) * Fix infinite loop when xreftext contains a circular reference path in HTML and manpage converters (#3543) * Apply text formatting to table cells in implicit header row when column has the "a" or "l" style (#3760) * Fix errant reference warning for valid reference when running in compat mode (#3555) * Initialize backend traits for converter (if not previously initialized) using assigned basebackend; mimics Asciidoctor < 2 behavior (#3341) * Set source_location on preamble block when sourcemap option is enabled (#3799) * Link the notitle and showtitle attributes so they act as opposites for the same toggle (#3804) * Pass options to constructor of Rouge lexer instead of #lex method; restores compatibility with Rouge >= 3.4 (#3336) * Don't clobber cgi-style options on language when enabling start_inline option on the Rouge PHP lexer (#3336) * Fix parsing of wrapped link and xref text, including when an attrlist signature is detected (#3331) * Restore deprecated writable number property on AbstractBlock * Always use title as xreftext if target block has an empty caption, regardless of xrefstyle value (#3745) * Allow a bibliography reference to be used inside a footnote (#3325) * Fix bottom margin collapsing on AsciiDoc table cell (#3370) * Remove excess hard line break in multi-line AsciiMath blocks (#3407) * Only strip trailing spaces from lines of AsciiDoc include file (#3436) * Remove errant optional flag in regexp for menu macro that breaks Asciidoctor.js (#3433) * Preserve repeating backslashes when generating manpage output (#3456) * Honor percentage width specified on macro of inline SVG (#3464) * Removing leading and trailing blank lines in AsciiDoc include file to match assumption of parser (#3470) * Activate extensions when :extensions option is set even if Extensions API is not yet loaded (#3570) * Don't activate global extensions if :extensions option is false (#3570) * Escape ellipsis at start of line in manpage output (#3645) (*@jnavila*) * Don't register footnote with ID if a footnote is already registered with that ID (#3690) * Honor start attribute on ordered list in manpage output (#3714) * Warn instead of crashing if SVG to inline is empty (#3638) (*@mogztter*) * Compute highlight line ranges on source block relative to value of start attribute (#3519) (*@mogztter*) * Prevent collapsible block from incrementing example number by assigning an empty caption (#3639) * Use custom init function for highlight.js to select the correct `code` elements (#3761) * Fix resolved value of :to_dir when both :to_file and :to_dir options are set to absolute paths (#3778) * Fix crash if value of `stylesheets` attribute contains a folder and the destination directory for the stylesheet does not exist (even when the `:mkdirs` option is set) (#3808) * Fix crash if value passed by API for `copycss` attribute is not a string (#3592) * Restore label in front of each bibliography entry in DocBook output that was dropped by fix for #3085 (#3782) * Apply max width to each top-level container instead of body in HTML output (#3513) * Don't apply border-collapse: separate to HTML for table blocks; fixes double border at boundary of colspan/rowspan (#3793) (*@ahus1*) * Don't remove right border on last table cell in row (#2563) * Rework table borders to leverage border collapsing (apply frame border to table, grid border to cells, and selectively override border on cells to accommodate frame) (#3387) Compliance:: * Account for empty positional attribute when parsing attrlist (#3813) * Add support for muted option to self-hosted video (#3408) * Move style tag for convert-time syntax highlighters (coderay, rouge, pygments) into head (#3462) * Move style tag for client-side syntax highlighters (highlight.js, prettify) into head (#3503) * Define entry point API methods (load, convert, load_file, convert_file) as class methods instead of module_function to avoid conflict with Kernel.load (#3625) * Retain attribute order on HTML code tag for source block to remain consistent with output from 1.5.x (#3786) * Correct language code for Korean language file from kr to ko (#3807) (*@jnavila*) Improvements:: * Apply word wrap (i.e., `word-wrap: anywhere`) to body in default stylesheet (#3544) * Allow `nobreak` and `nowrap` roles to be used on any inline element (#3544) * Add CSS class to support pre-wrap role to preserve leading, trailing, and repeating spaces in phrase (#3815) * Preserve guard around XML-style callout when icons are not enabled (#3319) * Use `.fam C` command to switch font family for verbatim blocks to monospaced text in manpage output (#3561) * Remove redundant test for halign and valign attributes on table cell in DocBook converter * Allow encoding of include file to be specified using encoding attribute (#3248) * Allow template to be used to override outline by only specifying the outline template (#3491) * Upgrade MathJax from 2.7.5 to 2.7.9 * Upgrade highlight.js from 9.15.10 to 9.18.3 (note that this increases script size from 48.8 KB to 71.5 KB) * Skip unused default attribute assignments for embedded document * Allow a URL macro to have a preceding single or double quote (#3376) * Add support for erubi template engine; use it in place of erubis in test suite; note the use of erubis is deprecated (#3737) * Download and embed remote custom stylesheet if allow-uri-read is set (#3765) * Remove direction property from default stylesheet (#3753) (*@abdnh*) * remove max width setting on content column for print media in default stylesheet (#3802) * Normalize frame value "topbot" to "ends" in HTML output (consistently use frame-ends class) (#3797) * Add role setter method on AbstractNode (#3614) * Map chapter-signifier and part-signifier attributes in locale attribute files to replace chapter-label and part-label (#3817) Build / Infrastructure:: * Run test suite on TruffleRuby nightly (*@mogztter*, *@erebor*) * Upgrade TruffleRuby to 20.0.0 (*@mogztter*) * Trigger upstream builds for AsciidoctorJ on Github Actions (*@robertpanzer*) == 2.0.10 (2019-05-31) - @mojavelinux Bug Fixes:: * fix Asciidoctor.convert_file to honor `header_footer: false` option when writing to file (#3316) * fix placement of title on excerpt block (#3289) * always pass same options to SyntaxHighlighter#docinfo, regardless of value of location argument * fix signature of SyntaxHighlighter#docinfo method (#3300) * when `icons` is set to `image`, enable image icons, but don't use it as the value of the `icontype` attribute (#3308) == 2.0.9 (2019-04-30) - @mojavelinux Bug Fixes:: * process multiple single-item menu macros in same line (#3279) * register images in catalog correctly (#3283) * rename AbstractNode#options method to AbstractNode#enabled_options so it doesn't get shadowed by Document#options (#3282) * don't fail to convert document if alt attribute is not set on block or inline image (typically by an extension) * fix lineno of source location on blocks that follow a detached list continuation (#3281) * assume inline image type is "image" if not set (typically by an extension) == 2.0.8 (2019-04-22) - @mojavelinux Bug Fixes:: * restore background color applied to literal blocks by default stylesheet (#3258) * use portability constants (CC_ALL, CC_ANY) in regular expressions defined in built-in converters (DocBook5 and ManPage) * use portability constant (CC_ANY) in regular expression for custom inline macros * use smarter margin collapsing for AsciiDoc table cell content; prevent passthrough content from being cut off (#3256) * don't limit footnote ref to ASCII charset; allow any word character in Unicode to be used (#3269) Improvements:: * register_for methods accept arguments as symbols (#3274) * use Concurrent::Map instead of Concurrent::Hash in template converter * use module_function keyword to define methods in Helpers * move regular expression definitions to separate source file (internal change) == 2.0.7 (2019-04-13) - @mojavelinux Bug Fixes:: * fix crash when resolving ID from text and at least one candidate contains an unresolved xref (#3254) * fix compatibility with Rouge 2.0 Improvements:: * improve documentation for the `-a` CLI option; explain that `@` modifier can be placed at end of name as alternative to end of value * move source for main API entry points (load, load_file, convert, convert_file) to separate files (internal change) * define main API entry points (load, load_file, convert, convert_file) as module functions Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 2.0.6 (2019-04-04) - @mojavelinux Bug Fixes:: * assume implicit AsciiDoc extension on inter-document xref macro target with no extension (e.g., `document#`); restores 1.5.x behavior (#3231) * don't fail to load application if call to Dir.home fails; use a rescue with fallback values (#3238) * Helpers.rootname should only consider final path segment when dropping file extension Improvements:: * implement Helpers.extname as a more efficient and flexible File.extname method * check for AsciiDoc file extension using end_with? instead of resolving the extname and using a lookup Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 2.0.5 (2019-04-01) - @mojavelinux Bug Fixes:: * fix crash when source highlighter is Rouge and source language is not set on block (#3223) * update CLI and SyntaxHighlighter to allow Asciidoctor to load cleanly on Ruby 2.0 - 2.2 * CLI should use $stdin instead of STDIN to be consistent with the use of $stdout * mark encoding of stdio objects used in CLI as UTF-8 (#3225) * make Asciidoctor::SyntaxHighlighter::Config.register_for method public as documented Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 2.0.4 (2019-03-31) - @mojavelinux Bug Fixes:: * allow Asciidoctor to load cleanly on Ruby 2.0 - 2.2 for distributions that provide support for these older Ruby versions * make Asciidoctor::Converter::Config.register_for method public as documented * remove unused Asciidoctor::Converter::BackendTraits#derive_backend_traits private method * move Asciidoctor::Converter::BackendTraits.derive_backend_traits method to Asciidoctor::Converter * mark render and render_file methods as deprecated in API docs Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 2.0.3 (2019-03-28) - @mojavelinux Bug Fixes:: * fix crash when attrlist is used on literal monospace phrase (#3216) * update use of magic regexp variables to fix compatibility with Opal / Asciidoctor.js (#3214) Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 2.0.2 (2019-03-26) - @mojavelinux Bug Fixes:: * apply verbatim substitutions to literal paragraphs attached to list item (#3205) * implement #lines and #source methods on Table::Cell based on cell text (#3207) Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 2.0.1 (2019-03-25) - @mojavelinux Bug Fixes:: * convert titles of cataloged block and section nodes containing attribute references eagerly to resolve attributes while in scope (#3202) * customize MathJax (using a postfilter hook) to apply displaymath formatting to AsciiMath block (#2498) * fix misspelling of deprecated default_attrs DSL function (missing trailing "s") * remove unused location property (attr_accessor :location) on DocinfoProcessor class * look for deprecated extension option :pos_attrs if :positional_attrs option is missing (#3199) * add detail to load error message if path differs from gem name (#1884) Build / Infrastructure:: * bundle .yardopts in RubyGem (#3193) Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 2.0.0 (2019-03-22) - @mojavelinux Enhancements / Compliance:: * drop support for Ruby < 2.3 and JRuby < 9.1 and remove workarounds (#2764) * drop support for Slim < 3 (#2998) * drop the converter for the docbook45 backend from core; moved to https://github.com/asciidoctor/asciidoctor-docbook45 (#3005) * apply substitutions to section and block titles in normal substitution order (#1173) * make syntax highlighter pluggable; extract all logic into adapter classes (#2106) * add syntax highlighter adapter for Rouge (#1040) * redesign Converter API based on SyntaxHighlighter API; remap deprecated API to new API to ensure compatibility (#2891) * repurpose built-in converters as regular converters (#2891) * make registration and resolution of global converters thread-safe (#2891) * fold the default converter factory into the Converter module (#2891) * add a default implementation for Converter#convert in the Base converter (#2891) * rename Converter::BackendInfo to Converter::BackendTraits; map backend_info to new backend_traits method (#2891) * allow built-in converter classes to be resolved using Converter#for and instantiated using Converter#create (#2891) * allow converter factory to be passed using :converter_factory API option (#2891) * honor htmlsyntax if defined on converter (#2891) * add backend_traits_source keyword argument to CompositeConverter constructor (#2891) * add support for start attribute when using prettify to highlight source blocks with line numbering enabled * use String#encode to encode String as UTF-8 instead of using String#force_encoding (#2764) * add FILE_READ_MODE, URI_READ_MODE, and FILE_WRITE_MODE constants to control open mode when reading files and URIs and writing files (#2764) * set visibility of private and protected methods (#2764) * always run docinfo processor extensions regardless of safe mode (gives control to extension) (#2966) * use infinitive verb form for extension DSL method names; map deprecated method names where appropriate * add docinfo insertion slot for header location to built-in converters (#1720) * add support for the `muted` option on vimeo videos (allows autoplay to work in Chrome) (#3014) * use value of prettify-theme attribute as is if it starts with http:// or https:// (#3020) * allow icontype to be set using icons attribute (#2953) * when using a server-side syntax highlighter, highlight content of source block even if source language is not set (#3027) * automatically promote a listing block without an explicit style to a source block if language is set (#1117) * remove the 2-character (i.e., `""`) quote block syntax * don't allow block role to inherit from document attribute; only look for role in block attributes (#1944) * split out functionality of -w CLI flag (script warnings) from -v CLI flag (verbose logging) (#3030) * log possible invalid references at info level (#3030) * log dropped lines at info level when attribute-missing=drop-line (#2861) * honor attribute-missing setting when processing include directives and block macros (#2855) * log warning when include directive is not resolved due to missing attribute or blank target; always include warning in output document (#2868) * use the third argument of AbstractNode#attr / AbstractNode#attr? to set the name of a fallback attribute to look for on the document (#1934) * change default value of third argument to Abstractnode#attr / AbstractNode#attr? to nil so attribute doesn't inherit by default (#3059) * look for table-frame, table-grid, and table-stripes attributes on document as fallback for frame, grid, and stripes attributes on table (#3059) * add support for hover mode for table stripes (stripes=hover) (#3110) * always assume the target of a shorthand inter-document xref is a reference to an AsciiDoc document (source-to-source) (#3021) * if the target of a formal xref macro has a file extension, assume it's a path reference (#3021) * never assume target of a formal xref macro is a path reference unless a file extension or fragment is present (#3021) * encode characters in URI to comply with RFC-3986 * implement full support for styled xreftext in manpage converter (#3077) * allow the ID and role properties to be set on a list item of ordered and unordered lists via the API (#2840) * yield processor instance to registration block for document processor if block has non-zero arity (i.e., has parameters) * add Document#parsed? method to check whether document has been parsed * modify Cell class to extend from AbstractBlock instead of AbstractNode (#2963) * implement block? and inline? methods on Column, both which return false (#2963) * drop verse table cell style (treat as normal table cell) (#3111) * allow negated subs to be specified on inline pass macro (#2191) * log warning if footnoteref macro is found and compat mode is not enabled (#3114) * log info message if inline macro processor returns a String value (#3176) * apply subs to Inline node returned by inline macro processor if subs attribute is specified (#3178) * add create_inline_pass helper method to base extension processor class (#3178) * log debug message instead of warning if block style is unknown (#3092) * allow backend to delegate to a registered backend using the syntax synthetic:delegate when using custom templates (e.g., slides:html) (#891) * AbstractBlock#find_by looks inside AsciiDoc table cells if traverse_documents selector option is true (#3101) * AbstractBlock#find_by finds table cells, which can be selected using the :table_cell context in the selector (#2524) * allow ampersand to be used in e-mail address (#2553) * propagate ID assigned to inline passthrough (#2912) * rename control keywords in find_by to better align with the standard NodeFilter terminology * stop find_by iteration if filter block returns :stop directive * rename header_footer option to standalone (while still honoring header_footer for backwards compatibility) (#1444) * replace anchors and xrefs before footnotes (replace footnotes last in macros substitution group) * apply substitution for custom inline macro before all other macros * only promote index terms automatically (A, B, C becomes A > B > C + B > C + C) if indexterm-promotion option is set on document (#1487) * add support for see and see-also on index terms; parse attributes on indexterm macros if text contains `=` (#2047) * drop :indexterms table from document catalog (in preparation for solution to #450 in a 2.x release) * load additional languages for highlight.js as defined in the comma-separated highlightjs-languages attribute (#3036) * log warning if conditional expression in ifeval directive is invalid (#3161) * drop lines that contain an invalid preprocessor directive (#3161) * rename AbstractBlock#find_by directives; use :prune in place of :skip_children and :reject in place of :skip * convert example block into details/summary tag set if collapsible option is set; open by default if open option is set (#1699) * substitute replacements in author values used in document header (#2441) * require space after semi-colon that separates multiple authors (#2441) * catalog inline anchors at start of callout list items (#2818) (*@owenh000*) * add parse_attributes helper method to base extension Processor class (#2134) * require at least one character in the term position of a description list (#2766) Improvements:: * propagate document ID to DocBook output (#3011) * always store section numeral as string; compute roman numeral for part at assignment time (@vmj) * refactor code to use modern Hash syntax * define LIB_DIR constant; rename *_PATH constants to *_DIR constants to be consistent with RubyGems terminology (#2764) * only define ROOT_DIR if not already defined (for compatibility with Asciidoctor.js) * move custom docinfo content in footer below built-in docinfo content in footer in HTML converter (#3017) * read and write files using File methods instead of IO methods (#2995) * value comparison in AbstractNode#attr? is only performed if expected value is truthy * align default CodeRay style with style for other syntax highlighters (#2106) * ensure linenos class is added to linenos column when source highlighter is pygments and pygments-css=style * disable table stripes by default (#3110) * rename CSS class of Pygments line numbering table to linenotable (to align with Rouge) (#1040) * remove unused Converter#convert_with_options method (#2891) * add -e, --embedded CLI flag as alias for -s, --no-header-footer (require long option to specify eRuby impl) (#1444) * don't store the options attribute on the block once the options are parsed (#3051) * add an options method on AbstractNode to retrieve the set of option names (#3051) * pass :input_mtime option to Document constructor; let Document constructor assign docdate/time/year attributes (#3029) * never mutate strings; add a `frozen_string_literal: true` magic comment to top of all Ruby source files (#3054) * always use docdate and doctime to compute docyear and docdatetime (#3064) * rename PreprocessorReader#exceeded_max_depth? to PreprocessorReader#exceeds_max_depth? and return nil if includes are disabled * stop populating :ids table in document catalog (#3084) * always use :refs table in document catalog to look for registered IDs (#3084) * don't compute and store reference text in document catalog (#3084) * populate reference text table lazily for resolving ID by reference text (#3084) * don't store fallback reference text on :bibref node (#3085) * call AbstractNode#reftext instead of AbstractNode#text to retrieve reference text for bibref node (#3085) * only map unparsed attrlist of inline macro to target when format is short * add clearer exception message when source data is binary or has invalid encoding (#2884) * rename context for table cell and table column to :table_cell and :table_column, respectively * rename hardbreaks document attribute to hardbreaks-option; retain hardbreaks as a deprecated alias (#3123) * extend TLD for implicit e-mail addresses to 5 characters (#3154) * truncate with precision (instead of rounding) when computing absolute width for columns in DocBook output (#3131) * drop legacy LaTeX math delimiters (e.g, `$..$`) if present (#1339) * use proper terminology in warning message about mismatched preprocessor directive (#3165) * rename low-level extension attribute name :pos_attrs to :positional_attrs * mark default_attrs extension DSL method deprecated in favor of default_attributes * upgrade MathJax to 2.7.5 Bug Fixes:: * fix crash caused by inline passthrough macro with the macros sub clearing the remaining passthrough placeholders (#3089) * fix crash if ifeval directive is missing expression (#3164) * prevent relative leveloffset from making section level negative and causing hang (#3152) * don't fail to parse Markdown-style quote block that only contains attribution line (#2989) * enforce rule that Setext section title must have at least one alphanumeric character; fixes problem w/ block nested inside quote block (#3060) * apply header subs to doctitle value when assigning it back to the doctitle document attribute (#3106) * don't fail if value of pygments-style attribute is not recognized; gracefully fallback to default style (#2106) * do not alter the $LOAD_PATH (#2764) * fix crash if stem block is empty (#3118) * remove conditional comment for IE in output of built-in HTML converter; fixes sidebar table of contents (#2983) * fix styling of source blocks with linenums enabled when using prettify as syntax highlighter (#640) * update default stylesheet to support prettify themes (#3020) * remove hard-coded color values on source blocks in default stylesheet (#3020) * add fallback if relative path cannot be computed because the paths are located on different drives (#2944) * ignore explicit section level style (#1852) * don't eat space before callout number in source block if line-comment attribute is empty (#3121) * check if type is defined in a way that's compatible with autoload * fix invalid check for DSL in extension class (previously always returned true) * scope constant lookups (#2764) * use byteslice instead of slice to remove BOM from string (#2764) * don't fail if value of -a CLI option is empty string or equals sign (#2997) * allow failure level of CLI to be set to info * Reader#push_include should not fail if data is nil * fix deprecated ERB trim mode that was causing warning (#3006) * move time anchor after query string on vimeo video to avoid dropping options * allow color for generic text, line numbers, and line number border to inherit from Pygments style (#2106) * enforce and report relative include depth properly (depth=0 rather than depth=1 disables nested includes) * allow outfilesuffix to be soft set from API (#2640) * don't split paragraphs in table cell at line that resolves to blank if adjacent to other non-blank lines (#2963) * initialize the level to WARN when instantiating the NullLogger * next_adjacent_block should not fail when called on dlist item (#3133) * don't suppress browser styles for summary tag; add pointer cursor and panel margin bottom (#3155) * only consider TLDs in e-mail address that have ASCII alpha characters * allow underscore in domain of e-mail address Build / Infrastructure:: * clear SOURCE_DATE_EPOCH env var when testing timezones (PR #2969) (*@aerostitch*) * remove compat folder (removes the AsciiDoc.py config file that provides pseudo-compliance with Asciidoctor and a stylesheet for an old Font Awesome migration) * add Ruby 2.6.0 to build matrix * stop running CI job on unsupported versions of Ruby * exclude test suite, build script, and Gemfile from gem (#3044) * split build tasks out into individual files Also see https://github.com/asciidoctor/asciidoctor/milestone/33?closed=1[issues resolved in 2.0.x] (cumulative). == 1.5.8 (2018-10-28) - @mojavelinux Enhancements:: * if set, add value of part-signifier and chapter-signifier attributes to part and chapter titles (#2738) * allow position (float) and alignment (align) to be set on video block (#2425) * substitute attribute references in attrlist of include directive (#2761) * add Document#set_header_attribute method for adding method directly to document header during parsing (#2820) * add helper method to extension processor classes to create lists and list items * allow ordered and unordered lists to be nested to an arbitrary / unlimited depth (#2854) * add `prefer` DSL method to extension registry and document processor to flag extension as preferred (#2848) * allow manname and manpurpose to be set using document attributes; don't look for NAME section in this case (#2810) * substitute attribute references in target of custom block macro (honoring attribute-missing setting) (#2839) * interpret `<.>` as an auto-numbered callout in verbatim blocks and callout lists (#2871) * require marker for items in callout list to have circumfix brackets (e.g., `<1>` instead of `1>`) (#2871) * preserve comment guard in front of callout number in verbatim block if icons is not enabled (#1360) * add more conventional styles to quote block when it has the excerpt role (#2092) * colspecs can be separated by semi-colon instead of comma (#2798) * change AbstractBlock#find_by to respond to StopIteration exception; stop traversal after matching ID (#2900) * change AbstractBlock#find_by to honor return values :skip and :skip_children from filter block to skip node and its descendants or just its descendants, respectively (#2067) * add API to retrieve authors as array; use API in converters (#1042) (*@mogztter*) * add support for start attribute on source block to set starting line number when converting to DocBook (#2915) * track imagesdir for image on node and in catalog (#2779) * allow starting line number to be set using start attribute when highighting source block with Pygments or CodeRay (#1742) * add intrinsic attribute named `pp` that effectively resolves to `++` (#2807) * upgrade highlight.js to 9.13.1 Bug Fixes:: * don't hang on description list item that begins with /// (#2888) * don't crash when using AsciiDoc table cell style on column in CSV table (#2817) * show friendly error if CSV data for table contains unclosed quote (#2878) (*@zelivans*) * don't crash when attribute entry continuation is used on last line of file (#2880) (*@zelivans*) * treat empty/missing value of named block attribute followed by other attributes (e.g., caption=,cols=2*) as empty string * AbstractNode#set_option does nothing if option is already set (PR #2778) * allow revnumber to be an attribute reference in revision info line (#2785) * use ::File.open instead of ::IO.binread in Reader for Asciidoctor.js compatibility * add fallback for timezone when setting doctime * preserve UNC path that begins with a double backslash (Windows) (#2869) * fix formatting of quote block (indentation) in manpage output (#2792) * catalog inline anchors in ordered list items (#2812) * detect closing tag on last line with no trailing newline (#2830) * process `!name@` attribute syntax property; follow-up to #642 * change document extension processor DSL methods to return registered extension instance instead of array of instances * use fallback value for manname-title to prevent crash in manpage converter * consolidate inner whitespace in prose in manpage output (#2890) * only apply subs to node attribute value if enclosed in single quotes (#2905) * don't hide URI scheme if target of link macro is a bare URI scheme * fix crash when child section of part is out of sequence and section numbering is enabled (#2931) * fix crash when restoring passthroughs if passthrough role is enclosed in single quotes (#2882, #2883) * don't eagerly apply subs to inline attributes in general * make sure encoding of output file is UTF-8 * prevent warning about invalid `:asciidoc` option when using custom templates with Slim 4 (#2928) * use Pathname#relative_path_from to compute relative path to file outside of base directory (#2108) Improvements:: * change trailing delimiter on part number to colon (:) (#2738) * interpret open line range as infinite (#2914) * rename number property on AbstractBlock to numeral, but keep number as deprecated alias * use CSS class instead of hard-coded inline float style on tables and images (#2753) * use CSS class instead of hard-coded inline text-align style on block images (#2753) * allow hyphen to be used custom block macro name as long as it's not the first character (#2620) * use shorthands %F and %T instead of %Y-%m-%d and %H:%M:%S to format time * read file in binary mode whenever contents are being normalized * use .drop(0) to duplicate arrays (roughly 1.5x as fast as .dup) * only recognize a bullet glyph which is non-repeating as an unordered list marker * rename SyntaxDsl module to SyntaxProcessorDsl (internal) * fail if name given to block macro contains illegal characters * normalize all whitespace in value of manpurpose attribute * make space before callout number after custom line comment character optional * parse attrlist on inline passthrough as a shorthand attribute syntax or literal role (#2910) * add support for range syntax (.. delimiter) to highlight attribute on source block (#2918) * add support for unbounded range to highlight attribute on source block (#2918) * automatically assign title and caption on image block if title is set on custom block source (#2926) * use OS independent timezone (UTC or time offset) in doctime and localtime attributes (#2770) * report correct line number for inline anchor with id already in use (#2769) * generate manpage even if input is non-conforming or malformed (#1639) * allow authorinitials for single author to be overridden (#669) Documentation:: * translate README into German (#2829) (*@jwehmschulte*) * sync French translation of README (*@mogztter*) * add Swedish translation of built-in attributes (PR #2930) (*@jonasbjork*) Build / Infrastructure:: * replace thread_safe with concurrent-ruby (PR #2822) (*@junaruga*) == 1.5.7.1 (2018-05-10) - @mojavelinux Bug Fixes:: * fix regression where block attributes where being inherited by sibling blocks in a complex list item (#2771) * don't apply lead styling to first paragraph in nested document (AsciiDoc table cell) if role is present (#2624) Build / Infrastructure:: * drop obsolete logic in rake build (*@aerostitch*) * allow lib dir to be overridden for tests using an environment variable (PR #2758) (*@aerostitch*) * load asciidoctor/version from LOAD_PATH in gemspec if not found locally (PR #2760) (*@aerostitch*) == 1.5.7 (2018-05-02) - @mojavelinux Enhancements:: * BREAKING: drop XML tags, character refs, and non-word characters (except hyphen, dot, and space) when auto-generating section IDs (#794) ** hyphen, dot, and space are replaced with value of idseparator, if set; otherwise, spaces are dropped * BREAKING: disable inter-document xrefs in compat mode (#2740) * BREAKING: automatically parse attributes in link macro if equals is present, ignoring linkattrs (except in compat mode) (#2059) * pass non-AsciiDoc file extensions in target of xref through unprocessed (#2740) * process any known AsciiDoc file extension in target of shorthand inter-document xref if hash is also present (e.g., `<>`) (#2740) * only allow .adoc to be used in target of formal xref macro to create an inter-document xref (with or without a hash) (#2740) * allow attribute names to contain any word character defined by Unicode (#2376, PR #2393) * do not recognize attribute entry line if name contains a colon (PR #2377) * route all processor messages through a logger instead of using Kernel#warn (#44, PR #2660) * add MemoryLogger for capturing messages sent to logger into memory (#44, PR #2660) * add NullLogger to prevent messages from being logged (#44, PR #2660) * log message containing source location / cursor as an object; provides more context (#44, PR #2660) * pass cursor for include file to `:include_location` key in message context (PR #2729) * add `:logger` option to API to set logger instance (#44, PR #2660) * add `--failure-level=LEVEL` option to CLI to force non-zero exit code if specified logging level is reached (#2003, PR #2674) * parse text of xref macro as attributes if attribute signature found (equal sign) (#2381) * allow xrefstyle to be specified per xref by assigning the xrefstyle attribute on the xref macro (#2365) * recognize target with .adoc extension in xref macro as an inter-document xref * resolve nested includes in remote documents relative to URI (#2506, PR #2511) * allow `relfilesuffix` attribute to control file extension used for inter-document xrefs (#1273) * support `!name@` (preferred), `!name=@`, `name!@`, and `name!=@` syntax to soft unset attribute from API or CLI (#642, PR #2649) * allow modifier to be placed at end of name to soft set an attribute (e.g., `icons@=font`) (#642, PR #2649) * interpret `false` attribute value defined using API as a soft unset (#642, PR #2649) * number parts if `partnums` attribute is set (#2298) * allow footnote macro to define or reference footnote reference (footnoteref macro now deprecated) (#2347, PR #2362) * allow custom converter to be used with custom templates; converter must declare that it supports templates (#2619) * add syntax help topic to CLI (`-h syntax`) (#1573) * allow manpage path for manpage help topic to be specified using ASCIIDOCTOR_MANPAGE_PATH environment variable (PR #2653) (*@aerostitch*) * if manpage cannot be found in default path inside gem, use `man -w asciidoctor` to resolve installed path (PR #2653) * uncompress contents of manpage for manpage help topic if path ends with .gz (PR #2653) (*@aerostitch*) * define source and manual refmiscinfo entries in manpage output if manual and source attributes are defined (PR #2636) (*@tiwai*) * add syntax for adding hard line breaks in block AsciiMath equations (#2497, PR #2579) (*@dimztimz*) * add positioning option to sectanchors attribute (sectanchors=before or sectanchors=after) (#2485, PR #2486) * allow table striping to be configured using stripes attribute (even, odd, all, or none) or stripes roles on table (#1365, PR #2588) * recognize `ends` as an alias to `topbot` for configuring the table frame * add rel=nofollow property to links (text or image) when nofollow option is set (#2605, PR #2692) * populate Document#source_location when sourcemap option is enabled (#2478, PR #2488) * populate source_location property on list items when sourcemap option is set on document (PR #2069) (*@mogztter*) * populate Table::Cell#source_location when sourcemap option is enabled (#2705) * allow local include to be flagged as optional by setting optional option (#2389, PR #2413) * allow block title to begin with a period (#2358, PR #2359) * catalog inline anchor at start of list items in ordered and unordered lists, description list terms, and table cells (#2257) * register document in catalog if id is set; assign reftext to document attributes if specified in a block attribute line (#2301, PR #2428) * allow automatic width to be applied to individual columns in a table using the special value `~` (#1844) * use the quote element in DocBook converter to represent smart quotes (#2272, PR #2356) (@bk2204) * parse and pass all manpage names to output document master (i.e., shadow man pages) (#1811, #2543, PR #2414) * parse credit line of shorthand quote block as block attributes; apply normal subs to credit line in shorthand quote blocks (#1667, PR #2452) * populate copyright element in DocBook output from value of copyright attribute (#2728) * preserve directories if source dir and destination dir are set (#1394, PR #2421) * allow linkcss to be unset from API or CLI when safe mode is secure * convert quote to epigraph element in DocBook output if block has epigraph role (#1195, PR #2664) (*@bk2204*) * number special sections in addition to regular sections when sectnums=all (#661, PR #2463) * upgrade to Font Awesome 4.7.0 (#2569) * upgrade to MathJax 4.7.4 Bug Fixes:: * set `:to_dir` option value correctly when output file is specified (#2382) * preserve leading indentation in contents of AsciiDoc table cell if contents starts with a newline (#2712) * the shorthand syntax on the style to set block attributes (id, roles, options) no longer resets block style (#2174) * match include tags anywhere on line as long as offset by word boundary on left and space or newline on right (#2369, PR #2683) * warn if an include tag specified in the include directive is unclosed in the included file (#2361, PR #2696) * use correct parse mode when parsing blocks attached to list item (#1926) * fix typo in gemspec that removed README and CONTRIBUTING files from the generated gem (PR #2650) (*@aerostitch*) * preserve id, role, title, and reftext on open block when converting to DocBook; wrap in `` or `` (#2276) * don't turn bare URI scheme (no host) into a link (#2609, PR #2611) * don't convert inter-document xref to internal anchor unless entire target file is included into current file (#2200) * fix em dash replacement in manpage converter (#2604, PR #2607) * don't output e-mail address twice when replacing bare e-mail address in manpage output (#2654, PR #2665) * use alternate macro for monospaced text in manpage output to not conflict w/ AsciiDoc macros (#2751) * enforce that absolute start path passed to PathResolver#system_path is inside of jail path (#2642, PR #2644) * fix behavior of PathResolver#descends_from? when base path equals / (#2642, PR #2644) * automatically recover if start path passed to PathResolver#system_path is outside of jail path (#2642, PR #2644) * re-enable left justification after invoking tmac URL macro (#2400, PR #2409) * don't report warning about same level 0 section multiple times (#2572) * record timings when calling convert and write on Document (#2574, PR #2575) * duplicate header attributes when restoring; allows header attributes to be restored an arbitrary number of times (#2567, PR #2570) * propagate `:catalog_assets` option to nested document (#2564, PR #2565) * preserve newlines in quoted CSV data (#2041) * allow opening quote around quoted CSV field to be on a line by itself * output table footer after body rows (#2556, PR #2566) (*@PauloFrancaLacerda*) * move @page outside of @media print in default stylesheet (#2531, PR #2532) * don't throw exception if text of dd node is nil (#2529, PR #2530) * don't double escape ampersand in manpage output (#2525) (*@dimztimz*) * fix crash when author_1 attribute is assigned directly (#2481, PR #2487) * fix CSS for highlighted source block inside colist (#2474, PR #2490) * don't append file extension to data uri of admonition icon (#2465, PR #2466) * fix race condition in Helpers.mkdir_p (#2457, PR #2458) * correctly process nested passthrough inside unconstrained monospaced (#2442, PR #2443) * add test to ensure ampersand in author line is not double escaped (#2439, PR #2440) * prevent footnote ID from clashing with auto-generated footnote IDs (#2019) * fix alignment of icons in footnote (#2415, PR #2416) * add graceful fallback if pygments.rb fails to return a value (#2341, PR #2342) * escape specialchars in source if pygments fails to highlight (#2341) * do not recognize attribute entry line if name contains colon (PR #2377) * allow flow indexterm to be enclosed in round brackets (#2363, PR #2364) * set outfilesuffix to match file extension of output file (#2258, PR #2367) * add block title to dlist in manpage output (#1611, PR #2434) * scale text to 80% in print styles (#1484, PR #2576) * fix alignment of abstract title when using default stylesheet (PR #2732) * only set nowrap style on table caption for auto-width table (#2392) * output non-breaking space for man manual if absent in DocBook output (PR #2636) * don't crash if stem type is not recognized (instead, fallback to asciimath) Improvements / Refactoring:: * BREAKING: rename table spread role to stretch (#2589, PR #2591) * use cursor marks to track lines more accurately; record cursor at the start of each block, list item, or table cell (PR #2701, PR #2547) (*@seikichi*) * log a warning message if an unterminated delimited block is detected (#1133, PR #2612) * log a warning when nested section is found inside special section that doesn't support nested sections (#2433, PR #2672) * read files in binary mode to disable automatic endline coercion (then explicitly coerce to UTF-8) (PR #2583, PR #2694) * resolve / expand parent references in start path passed to PathResolver#system_path (#2642, PR #2644) * update PathResolver#expand_path to resolve parent references (#2642, PR #2644) * allow start path passed to PathResolver#system_path to be outside jail if target brings resolved path back inside jail (#2642, PR #2644) * don't run File.expand_path on Dir.pwd (assume Dir.pwd is absolute) (#2642, PR #2644) * posixify working_dir passed to PathResolver constructor if absolute (#2642, PR #2644) * optimize detection for footnote* and indexterm* macros (#2347, PR #2362) * log a warning if a footnote reference cannot be resolved (#2669) * set logger level to DEBUG when verbose is enabled * coerce value of `:template_dirs` option to an Array (PR #2621) * make block roles specified using shorthand syntax additive (#2174) * allow paragraph to masquerade as open block (PR #2412) * move callouts into document catalog (PR #2394) * document ID defined in block attribute line takes precedence over ID defined inside document title line * don't look for link and window attributes on document when resolving these attributes for an image * skip line comments in name section of manpage (#2584, PR #2585) * always activate extension registry passed to processor (PR #2379) * skip extension registry activation if no groups are registered (PR #2373) * don't apply lead styling to first paragraph if role is present (#2624, PR #2625) * raise clearer exception when extension class cannot be resolved (#2622, PR #2623) * add methods to read results from timings (#2578, PR #2580) * collapse bottom margin of last block in AsciiDoc table cell (#2568, PR #2593) * set authorcount to 0 if there are no authors (#2519, PR #2520) * validate fragment of inter-document xref that resolves to current doc (#2448, PR #2449) * put id attribute on tag around phrase instead of preceding anchor (#2445, PR #2446) * add .plist extension to XML circumfix comment family (#2430, PR #2431) (*@akosma*) * alias Document#title method to no args Document#doctitle method (#2429, PR #2432) * upgrade missing or unreadable include file to an error (#2424, PR #2426) * add compliance setting to disable natural cross references (#2405, PR #2460) * make hash in inter-document xref target optional if target has extension (#2404, PR #2406) * add CSS class to part that matches role (#2401, PR #2402) * add fit-content class to auto-width table (#2392) * automatically assign parent reference when adding node to parent (#2398, PR #2403) * leave inline anchor in section title as is if section has ID (#2243, PR #2427) * align and improve error message about invalid use of partintro between HTML5 and DocBook converters * rephrase warning when level 0 sections are found and the doctype is not book * report correct line number when duplicate bibliography anchor is found * only warn if thread_safe gem is missing when using built-in template cache * rename enumerate_section to assign_numeral; update API docs * drop deprecated compact option from CLI; remove from manpage * use more robust mechanism for lazy loading the asciimath gem * use consistent phrase to indicate the processor is automatically recovering from a problem * change Reader#skip_comment_lines to not return skipped lines * add styles to default stylesheet for display on Kindle (kf8) devices (PR #2475) * purge render method from test suite (except to verify alias) Documentation:: * translate 'section-refsig' for German language (PR #2633) (*@ahus1*) * synchronize French README with English version (PR #2637) (*@flashcode*) Build / Infrastructure:: * create an official logo for the project (#48) (*@mmajko*) * update Ruby versions in appveyor build matrix (PR #2388) (*@miltador*) * add mailinglist, changelog, source, and issues URI to gem spec * allow blocks and substitutions tests to be run directly * asciidoctor formula now available for Homebrew (*@zmwangx*) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] * https://software.opensuse.org/package/rubygem-asciidoctor[OpenSUSE (rubygem-asciidoctor)] == 1.5.6.2 (2018-03-20) - @mojavelinux Bug Fixes:: * fix match for multiple xref macros w/ implicit text in same line (#2450) * PathResolver#root? returns true for absolute URL in browser env (#2595) Improvements / Refactoring:: * resolve include target correctly in browser (xmlhttprequest IO module) (#2599, #2602) * extract method to resolve include path (allowing Asciidoctor.js to override) (#2610) * don't expand docdir value passed to API (#2518) * check mandatory attributes when creating an image block (#2349, PR #2355) (*@mogztter*) * drop is_ prefix from boolean methods in PathResolver (PR #2587) * change Reader#replace_next_line to return true * organize methods in AbstractNode Build / Infrastructure:: * clean up dependencies * add Ruby 2.5.0 to CI build matrix (PR #2528) * update nokogiri to 1.8.0 for ruby >= 2.1 (PR #2380) (*@miltador*) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.6.2[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.6.2[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.6.1...v1.5.6.2[full diff] == 1.5.6.1 (2017-07-23) - @mojavelinux Enhancements:: * Don't include title of special section in DocBook output if untitled option is set (e.g., dedication%untitled) Bug Fixes:: * continue to read blocks inside a delimited block after content is skipped (PR #2318) * don't create an empty paragraph for skipped content inside a delimited block (PR #2319) * allow the subs argument of Substitutors#apply_subs to be nil * coerce group name to symbol when registering extension (#2324) * eagerly substitute attributes in target of inline image macro (#2330) * don't warn if source stylesheet can't be read but destination already exists (#2323) * track include path correctly if path is absolute and outside of base directory (#2107) * preprocess second line of setext section title (PR #2321) * preprocess second line of setext discrete heading (PR #2332) * return filename as relative path if filename doesn't share common root with base directory (#2107) Improvements / Refactoring:: * change default text for inter-document xref (PR #2316) * add additional tests to test behavior of Reader#peek_lines * parse revision info line correctly that only has version and remark; add missing test for scenario * rename AtxSectionRx constant to AtxSectionTitleRx for consistency with SetextSectionTitleRx constant * use terms "atx" and "setext" to refer to section title syntax (PR #2334) * rename HybridLayoutBreakRx constant to ExtLayoutBreakRx * change terminology from "floating title" to "discrete heading" * consolidate skip blank lines and check for end of reader (PR #2325) * have Reader#skip_blank_lines report end of file (PR #2325) * don't mix return type of Parser.build_block method (PR #2328) * don't track eof state in reader (PR #2320) * use shift instead of advance to consume line when return value isn't needed (PR #2322) * replace terminology "floating title" with "discrete heading" * remove unnecessary nil_or_empty? checks in substitutor * leverage built-in assert / refute methods in test suite Build / Infrastructure:: * config Travis CI job to release gem (PR #2333) * add SHA1 hash to message used for triggered builds * trigger build of AsciidoctorJ on every change to core * trigger build of Asciidoctor Diagram on every change to core Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] * https://software.opensuse.org/package/rubygem-asciidoctor[OpenSUSE (rubygem-asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.6.1[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.6.1[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.6\...v1.5.6.1[full diff] == 1.5.6 (2017-07-12) - @mojavelinux Enhancements:: * use custom cross reference text if xrefstyle attribute is set (full, short, basic) (#858, #1132) * store referenceable nodes under refs key in document catalog (PR #2220) * apply reftext substitutions (specialchars, quotes, replacements) to value returned by reftext method (PR #2220) * add xreftext method to AbstractBlock, Section, and Inline to produce formatted text for xref (PR #2220) * introduce attributes chapter-refsig, section-refsig, and appendix-refsig to set reference signifier for chapter, section, and appendix, respectively (PR #2220) * add rel="noopener" to links that target _blank or when noopener option is set (#2071) * add option to exclude tags when including a file (#1516) * add meta for shortcut icon if favicon attribute is set (#1574) * allow use of linenums option to enable line numbers on a source block (#1981) * allow extension groups to be unregistered individually (#1701) * catalog bibliography anchors and capture reftext (#560, #1562) * automatically add bibliography style to unordered list in bibliography section (#1924) * disable startinline option when highlighting PHP if mixed option is set on source block (PR #2015) (*@ricpelo*) * configure Slim to resolve includes in specified template dirs (#2214) * dump manpage when -h manpage flag is passed to CLI (#2302) * add resolves_attributes method to DSL for macros (#2122) * invoke convert on result of custom inline macro if value is an inline node (#2132) * resolve attributes for custom short inline macros if requested (#1797) * add convenience method to create section from extension; use same initialization logic as parser (#1957) * add handles? method to DSL for IncludeProcessor (#2119) * pass through preload attribute to video tag (#2046) * add start and end times for audio element (#1930) * set localyear and docyear attributes (#1372) * pass cloaked context to block extension via cloaked-context attribute (#1606) * add support for covers in DocBook 5 converter (#1939) * accept named pipe (fifo) as the input file (#1948) * add AbstractBlock#next_adjacent_block helper method * rename Document#references to catalog; alias references to catalog (PR #2237) * rename extensions_registry option to extension_registry * rename Extensions.build_registry method to create * autoload extensions source file when Asciidoctor::Extensions is referenced (PR #2114, PR #2312) * apply default_attrs to custom inline macro (PR #2127) * allow tab separator for table to be specified using \t (#2073) * add Cell#text= method Improvements:: * significant improvements to performance, especially in parser and substitutors * process include directive inside text of short form preprocessor conditional (#2146) * add support for include tags in languages that only support only circumfix comments (#1729) * allow spaces in target of block image; target must start and end with non-space (#1943) * add warning in verbose mode if xref is not found (#2268) (*@fapdash*) * add warning if duplicate ID is detected (#2244) * validate that output file will not overwrite input file (#1956) * include docfile in warning when stylesheet cannot be read (#2089) * warn if doctype=inline is used and block has unexpected content model (#1890) * set built-in docfilesuffix attribute (#1673) * make sourcemap field on Document read/write (#1916) * allow target of xref to begin with attribute reference (#2007) * allow target of xref to be expressed with leading # (#1546) * allow kbd and btn macros to wrap across multiple lines (#2249) * allow menu macro to span multiple lines; unescape escaped closing bracket * make menu macro less greedy * allow ampersand to be used as the first character of the first segment of a menu (#2171) * enclose menu caret in HTML tag (#2165) * use black text for menu reference; tighten word spacing (#2148) * fix parsing of keys in kbd macro (PR #2222) * add support for the window option for the link on a block image (#2172) * set correct level for special sections in parser (#1261) * always set numbered property on appendix to true * store number for formal block on node (#2208) * set sectname of header section to header (#1996) * add the remove_attr method to AbstractNode (#2227) * use empty string as default value for set_attr method (#1967) * make start argument to system_path optional (#1965) * allow API to control subs applied to ListItem text (#2035) * allow text of ListItem to be assigned (in an extension) (#2033) * make generate_id method on section a static method (#1929) * validate name of custom inline macro; cache inline macro rx (#2136) * align number in conum list to top by default (#1999) * fix CSS positioning of interactive checkbox (#1840) * fix indentation of list items when markers are disabled (none, no-bullet, unnumbered, unstyled) (PR #2286) * instruct icon to inherit cursor if inside a link * close all files opened internally (#1897) * be more precise about splitting kbd characters (#1660) * rename limit method on String to limit_bytesize (#1889) * leverage Ruby's match? method to speed up non-capturing regexps (PR #1938) * preserve inline break in manpages (*@letheed*) * check for presence of SOURCE_DATE_EPOCH instead of value; fail if value is malformed * add Rows#by_section method to return table sections (#2219) * cache which template engines have been loaded to avoid unnecessary processing * rename assign_index method to enumerate_section (PR #2242) * don't process double quotes in xref macro (PR #2241) * optimize attr and attr? methods (PR #2232) * use IO.write instead of File.open w/ block; backport for Opal * backport IO.binread to Ruby 1.8.7 to avoid runtime check * cache backend and doctype values on document * allow normalize option to be set on PreprocessorReader; change default to false * move regular expression constants for Opal to Asciidoctor.js build (PR #2070) * add missing comma in warning message for callout list item out of sequence * combine start_with? / end_with? checks into a single method call * rename UriTerminator constant to UriTerminatorRx * promote subs to top-level constants; freeze arrays * rename PASS_SUBS constant to NONE_SUBS * rename EOL constant to LF (retain EOL as alias) * rename macro regexp constants so name follows type (e.g., InlineImageMacroRx) Compliance:: * retain block content in items of callout list when converting to HTML and man page (#1478) * only substitute specialchars for content in literal table cells (#1912) * fix operator logic for ifndef directive with multiple attributes (#1983) * only recognize uniform underline for setext section title (#2083) * don't match headings with mixed leading characters (#2074) * fix layout break from matching lines it shouldn't * fix behavior of attribute substitution in docinfo content (PR #2296) * encode spaces in URI (PR #2274) * treat empty string as a valid block title * preprocess lines of a simple block (#1923) * don't drop trailing blank lines when splitting source into lines (PR #2045) * only drop known AsciiDoc extensions from the inter-document xref path (#2217) * don't number special sections or special subsections by default (#2234) * assign sectname based on name of manuscript element (#2206) * honor leveloffset when resolving implicit doctitle (#2140) * permit leading, trailing, and repeat operators in target of preprocessor conditional (PR #2279) * don't match link macro in block form (i.e., has two colons after prefix) (#2202) * do not match bibliography anchor that begins with digit (#2247) * use [ \t] (or \s) instead of \p{Blank} to match spaces (#2204) * allow named entity to have trailing digits (e.g., there4) (#2144) * only assign style to image alt text if alt text is not specified * substitute replacements in non-generated alt text of block image (PR #2285) * keep track of whether alt text is auto-generated by assigning default-alt attribute (PR #2287) * suppress info element in docbook output if noheader attribute is set (#2155) * preserve leading indentation in literal and verse table cells (#2037) * preserve whitespace in literal and verse table cells (#2029) * set doctype-related attributes in AsciiDoc table cell (#2159) * fix comparison logic when preprocessing first line of AsciiDoc table cell * set filetype to man when backend is manpage (#2055) * respect image scaling in DocBook converter (#1059) * share counters between AsciiDoc table cells and main document (#1942) * generate ID for floating title from converted title (#2016) * split "treeprocessor" into two words; add aliases for compatibility (PR #2179) * allow trailing hyphen in attribute name used in attribute reference * allow escaped closing bracket in text of xref macro * process pass inline macro with empty text; invert extract logic * drop support for reftext document attribute (must be specified on node) * fix compliance with Haml >= 5 (load Haml eagerly; remove ugly option) * don't match inline image macro if target contains endline or leading or trailing spaces * assign id instead of target on ref/bibref node (PR #2307) * remove regexp hacks for Opal (#2110) * drop outdated quoting exceptions for Opal (PR #2081) Bug Fixes:: * don't allow table borders to cascade to nested tables (#2151) * escape special characters in reftext of anchor (#1694) * sanitize content of authors meta tag in HTML output (#2112) * use correct line number in warning for invalid callout item reference (#2275) * fix stray marks added when unescaping unconstrained passthroughs (PR #2079) * don't confuse escaped quotes in CSV data as enclosing quotes (#2008) * don't activate implicit header if cell in first line of table contains a blank line (#1284, #644) * allow compat-mode in AsciiDoc table cell to inherit from parent document (#2153) * manify all normal table cell content (head, body, foot) in manpage output * add missing newline after table caption in manpage output (#2253) * correctly format block title on video in manpage output * don't crash if substitution list resolves to nil (#2183) * fail with informative message if converter cannot be resolved (#2161) * fix regression of not matching short form of custom block macro * encode double quotes in image alt text when used in an attribute (#2061) * encode double quote and strip XML tags in value of xreflabel attribute in DocBook converter (PR #2220) * fix typo in base64 data (PR #2094) (*@mogztter*) * permit pass macro to surround a multi-line attribute value with hard line breaks (#2211) * fix sequential inline anchor macros with empty reftext (#1689) * don't mangle compound names when document has multiple authors (#663) * don't drop last line of verbatim block if it contains only a callout number (#2043) * prevent leading & trailing round brackets from getting caught in indexterm (#1581) * remove cached title when title is set on block (#2022) * remove max-width on the callout number icon (#1895) * eagerly add hljs class for highlight.js (#2221) * fix SOURCE_DATE_EPOCH lookup in Opal * fix paths with file URI scheme are inevitably absolute (PR #1925) (*@mogztter*) * only resolve file URLs when JavaScript IO module is xmlhttprequest (PR #1898) (*@mogztter*) * fix formatting of video title in manpage converter * don't increment line number if peek_lines overruns buffer (fixes some cases when line number is off) * freeze extension processor instance, not class * fix numbering bug in reindex_sections * handle cases when there are no lines for include directive to select Documentation:: * enable admonition icons in README when displayed on GitHub * add German translation of chapter-label (PR #1920) (*@fapdash*) * add Ukrainian translation of built-in attributes (PR #1955) (*@hedrok*) * add Norwegian Nynorsk translation; updated Norwegian Bokmål translation of built-in attributes (PR #2142) (*@huftis*) * add Polish translation of built-in attributes (PR #2131) (*@ldziedziul*) * add Romanian translation of built-in attributes (PR #2125) (*@vitaliel*) * fix Japanese translation of built-in attributes (PR #2116) (*@haradats*) * add Bahasa Indonesia translation of built-in labels (*@triyanwn*) Build / Infrastructure:: * upgrade highlight.js to 9.12.0 (#1652) * include entire test suite in gem (PR #1952) (*@voxik*) * upgrade Slim development dependency to 3.0.x (PR #1953) (*@voxik*) * upgrade Haml development dependency to 5.0.x * upgrade Nokogiri to 1.6.x (except on Ruby 1.8) (PR #1213) * add Ruby 2.4 to CI test matrix (PR #1980) * upgrade cucumber and JRuby in CI build (PR #2005) * fix reference to documentation in attributes.adoc (PR #1901) (*@stonio*) * trap and verify all warnings when tests are run with warnings enabled * set default task in build to test:all * configure run-tests.sh script to run all tests * configure feature tests to only show progress * configure Slim in feature tests to use html as format instead of deprecated html5 * lock version of yard to fix invalid byte sequence in Ruby 1.9.3 * modify rake build to trigger dependent builds (specifically, Asciidoctor.js) (PR #2305) (*@mogztter*) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.6[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.6[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.5\...v1.5.6[full diff] == 1.5.5 (2016-10-05) - @mojavelinux Enhancements:: * Add preference to limit the maximum size of an attribute value (#1861) * Honor SOURCE_DATE_EPOCH environment variable to accomodate reproducible builds (#1721) (*@JojoBoulix*) * Add reversed attribute to ordered list if reversed option is enabled (#1830) * Add support for additional docinfo locations (e.g., :header) * Configure default stylesheet to break monospace word if exceeds length of line using `word-wrap: break-word`; add `nobreak` and `nowrap` roles to prevent breaks (#1814) * Introduce translation file for built-in labels (*@ciampix*) * Provide translations for built-in labels (*@JmyL* - kr, *@ciampix* - it, *@ivannov* - bg, *@maxandersen* - da, *@radcortez* - pt, *@eddumelendez* - es, *@leathersole* - jp, *@aslakknutsen* - no, *@shahryareiv* - fa, *@AlexanderZobkov* - ru, *@dongwq* - zh, *@rmpestano* - pt_BR, *@ncomet* - fr, *@lgvz* - fi, *@patoi* - hu, *@BojanStipic* - sr, *@fwilhe* - de, *@rahmanusta* - tr, *@abelsromero* - ca, *@aboullaite* - ar, *@roelvs* - nl) * Translate README to Chinese (*@diguage*) * Translate README to Japanese (*@Mizuho32*) Improvements:: * Style nested emphasized phrases properly when using default stylesheet (#1691) * Honor explicit table width even when autowidth option is set (#1843) * Only explicit noheader option on table should disable implicit table header (#1849) * Support docbook orient="land" attribute on tables (#1815) * Add alias named list to retrieve parent List of ListItem * Update push_include method to support chaining (#1836) * Enable font smoothing on Firefox on OSX (#1837) * Support combined use of sectanchors and sectlinks in HTML5 output (#1806) * fix API docs for find_by * Upgrade to Font Awesome 4.6.3 (#1723) (*@allenan*, *@mogztter*) * README: add install instructions for Alpine Linux * README: Switch yum commands to dnf in README * README: Mention Mint as a Debian distro that packages Asciidoctor * README: Add caution advising against using gem update to update a system-managed gem (*@oddhack*) * README: sync French version with English version (*@flashcode*) * Add missing endline after title element when converting open block to HTML * Move list_marker_keyword method from AbstractNode to AbstractBlock * Rename definition list to description list internally Compliance:: * Support 6-digit decimal char refs, 5-digit hexidecimal char refs (#1824) * Compatibility fixes for Opal * Check for number using Integer instead of Fixnum class for compatibility with Ruby 2.4 Bug Fixes:: * Use method_defined? instead of respond_to? to check if method is already defined when patching (#1838) * Fix invalid conditional in HTML5 converter when handling of SVG * Processor#parse_content helper no longer shares attribute list between blocks (#1651) * Fix infinite loop if unordered list marker is immediately followed by a dot (#1679) * Don't break SVG source when cleaning if svg start tag name is immediately followed by endline (#1676) * Prevent template converter from crashing if .rb file found in template directory (#1827) * Fix crash when generating section ID when both idprefix & idseparator are blank (#1821) * Use stronger CSS rule for general text color in Pygments stylesheet (#1802) * Don't duplicate forward slash for path relative to root (#1822) Infrastructure:: * Build gem properly in the absense of a git workspace, make compatible with JRuby (#1779) * Run tests in CI using latest versions of Ruby, including Ruby 2.3 (*@ferdinandrosario*) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.5[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.5[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.4\...v1.5.5[full diff] == 1.5.4 (2016-01-03) - @mojavelinux Enhancements:: * translate README into French (#1630) (*@anthonny*, *@mogztter*, *@gscheibel*, *@mgreau*) * allow linkstyle in manpage output to be configured (#1610) Improvements:: * upgrade to MathJax 2.6.0 and disable loading messages * upgrade to Font Awesome 4.5.0 * disable toc if document has no sections (#1633) * convert inline asciimath to MathML (using asciimath gem) in DocBook converter (#1622) * add attribute to control build reproducibility (#1453) (*@bk2204*) * recognize \file:/// as a file root in Opal browser env (#1561) * honor icon attribute on admonition block when font-based icons are enabled (#1593) (*@robertpanzer*) * resolve custom icon relative to iconsdir; add file extension if absent (#1634) * allow asciidoctor cli to resolve library path when invoked without leading ./ Compliance:: * allow special section to be nested at any depth (#1591) * ensure colpcwidth values add up to 100%; increase precision of values to 4 decimal places (#1647) * ignore blank cols attribute on table (#1647) * support shorthand syntax for block attributes on document title (#1650) Bug Fixes:: * don't include default toc in AsciiDoc table cell; don't pass toc location attributes to nested document (#1582) * guard against nil dlist list item in find_by (#1618) * don't swallow trailing line when include file is not readable (#1602) * change xlink namespace to xl in DocBook 5 output to prevent parse error (#1597) * make callouts globally unique within document, including AsciiDoc table cells (#1626) * initialize Slim-related attributes regardless of when Slim was loaded (#1576) (*@terceiro*) * differentiate literal backslash from escape sequence in manpage output (#1604) (*@ds26gte*) * don't mistake line beginning with \. for troff macro in manpage output (#1589) (*@ds26gte*) * escape leading dots so user content doesn't trigger troff macros in manpage output (#1631) (*@ds26gte*) * use \c after .URL macro to remove extraneous space in manpage output (#1590) (*@ds26gte*) * fix missing endline after .URL macro in manpage output (#1613) * properly handle spacing around .URL/.MTO macro in manpage output (#1641) (*@ds26gte*) * don't swallow doctitle attribute followed by block title (#1587) * change strategy for splitting names of author; fixes bug in Opal/Asciidoctor.js * don't fail if library is loaded more than once Infrastructure:: * remove trailing newlines in project source code * update contributing guidelines * explicitly test ifeval scenario raised in issue #1585 * remove backreference substitution hack for Opal/Asciidoctor.js * fix assignment of default Hash value for Opal/Asciidoctor.js * add JRuby 9.0.4.0 and Ruby 2.3.0 to the Travis CI build matrix Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.4[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.4[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.3\...v1.5.4[full diff] == 1.5.3 (2015-10-31) - @mojavelinux Enhancements:: * add support for interactive & inline SVGs (#1301, #1224) * add built-in manpage backend (#651) (*@davidgamba*) * create Mallard backend; asciidoctor/asciidoctor-mallard (#425) (*@bk2204*) * add AsciiMath to MathML converter to support AsciiMath in DocBook converter (#954) (*@pepijnve*) * allow text of selected lines to be highlighted in source block by Pygments or CodeRay (#1429) * use value of `docinfo` attribute to control docinfo behavior (#1510) * add `docinfosubs` attribute to control which substitutions are performed on docinfo files (#405) (*@mogztter*) * drop ability to specify multiple attributes with a single `-a` flag when using the CLI (#405) (*@mogztter*) * make subtitle separator chars for document title configurable (#1350) (*@rmannibucau*) * make XrefInlineRx regexp more permissive (Mathieu Boespflug) (#844) Improvements:: * load JavaScript and CSS at bottom of HTML document (#1238) (*@mogztter*) * list available backends in help text (#1271) (*@plaindocs*) * properly expand tabs in literal text (#1170, #841) * add `source-indent` as document attribute (#1169) (*@mogztter*) * upgrade MathJax to 2.5.3 (#1329) * upgrade Font Awesome to 4.4.0 (#1465) (*@mogztter*) * upgrade highlight.js to 8.6 (now 8.9.1) (#1390) * don't abort if syntax highlighter isn't available (#1253) * insert docinfo footer below footer div (#1503) * insert toc at default location in embeddable HTML (#1443) * replace _ and - in generated alt text for inline images * restore attributes to header attributes after parse (#1255) * allow docdate and doctime to be overridden (#1495) * add CSS class `.center` for center block alignment (#1456) * recognize U+2022 (bullet) as alternative marker for unordered lists (#1177) (*@mogztter*) * allow videos to work for local files by prepending asset-uri-scheme (Chris) (#1320) * always assign playlist param when loop option is enabled for YouTube video * parse isolated version in revision line (#790) (*@bk2204*) * autoload Tilt when template converter is instantiated (#1313) * don't overwrite existing id entry in references table (#1256) * use outfilesuffix attribute defined in header when resolving outfile (#1412) * make AsciiDoc safe mode option on Slim engine match document (#1347) * honor htmlsyntax attribute when backend is html/html5 (#1530) * tighten spacing of wrapped lines in TOC (#1542) * tune padding around table cells in horizontal dlist (#1418) * load Droid Sans Mono 700 in default stylesheet * set line height of table cells used for syntax highlighting * set font-family of kbd; refine styling (#1423) * extract condition into `quote_lines?` method (*@mogztter*) * extract inline code into `read_paragraph` method (*@mogztter*) * parent of block in ListItem should be ListItem (#1359) * add helper methods to List and ListItem (#1551) * add method `AbstractNode#add_role` and `AbstractNode#remove_role` (#1366) (*@robertpanzer*) * introduce helper methods for sniffing URIs (#1422) * add helper to calculate basename without file extension * document `-I` and `-r` options in the manual page (*@bk2204*) * fix `+--help+` output text for `-I` (*@bk2204*) * don't require open-uri-cached if already loaded * do not attempt to scan pattern of non-existent directory in template converter * prevent CodeRay from bolding every 10th line number Compliance:: * use `` for footnote reference in text instead of `` (#1523) * fix alignment of wrapped text in footnote (#1524) * include full stop after footnote number in embeddable HTML * show manpage title & name section in embeddable HTML (#1179) * resolve missing attribute in ifeval to empty string (#1387) * support unbreakable & breakable options on table (rockyallen) (#1140) Bug Fixes:: * don't truncate exception stack in `Asciidoctor.load` (#1248) * don't fail to save cause of Java exception (#1458) (*@robertpanzer*) * fix precision error in timings report (#1342) * resolve regexp for inline macro lazily (#1336) * block argument to `find_by` should filter results (#1393) * strip comment lines in indented text of dlist item (#1537) * preserve escaped delimiter at end of line in a table (#1306) * correctly calculate colnames for implicit columns (#1556) * don't crash if colspan exceeds colspec (#1460) * account for empty records in colspec (#1375) * ignore empty cols attribute on table * use `.inspect` to print MathJax delimiters (again) (#1198) * use while loop instead of begin/while loop to address bug in Asciidoctor.js (#1408) * force encoding of attribute values passed from cli (#1191) * don't copy css if stylesheet or stylesdir is a URI (#1400) * fix invalid color value in default CodeRay theme * built-in writer no longer fails if output is nil (#1544) * custom template engine options should take precedence * fallback to require with a non-relative path to support Debian package (*@mogztter*) * pass opts to recursive invocations of `PathResolver#system_path` * fix and test external links in docbook backend * use format symbol `:html` instead of `:html5` for Slim to fix warnings * fix documentation for inline_macro and block_macro (Andrea Bedini) * fix grammar in warning messages regarding thread_safe gem Infrastructure:: * migrate opal_ext from core to Asciidoctor.js (#1517) * add Ruby 2.2 to CI build; only specify minor Ruby versions * enable containerized builds on Travis CI * add config to run CI build on AppVeyor * exclude benchmark folder from gem (#1522) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.3[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.3[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.2\...v1.5.3[full diff] == 1.5.2 (2014-11-27) - @mojavelinux Enhancements:: * add docinfo extension (#1162) (*@mogztter*) * allow docinfo to be in separate directory from content, specified by `docinfodir` attribute (#511) (*@mogztter*) * enable TeX equation auto-numbering if `eqnums` attribute is set (#1110) (*@jxxcarlson*) Improvements:: * recognize `--` as valid line comment for callout numbers; make line comment configurable (#1068) * upgrade highlight.js to version 8.4 (#1216) * upgrade Font Awesome to version 4.2.0 (#1201) (*@clojens*) * define JAVASCRIPT_PLATFORM constant to simplify conditional logic in the JavaScript environment (#897) * provide access to destination directory, outfile and outdir via Document object (#1203) * print encoding information in version report produced by `asciidoctor -v` (#1210) * add intrinsic attribute named `cpp` that effectively resolves to `C++` (#1208) * preserve URI targets passed to `stylesheet` and related attributes (#1192) * allow numeric characters in block attribute name (#1103) * support custom YouTube playlists (#1105) * make start number for unique id generation configurable (#1148) * normalize and force UTF-8 encoding of docinfo content (#831) * allow subs and default_subs to be specified in Block constructor (#749) * enhance error message when reading binary input files (#1158) (*@mogztter*) * add `append` method as alias to `<<` method on AbstractBlock (#1085) * assign value of `preface-title` as title of preface node (#1090) * fix spacing around checkbox in checklist (#1138) * automatically load Slim's include plugin when using slim templates (#1151) (*@jirutka*) * mixin Slim helpers into execution scope of slim templates (#1143) (*@jirutka*) * improve DocBook output for manpage doctype (#1134, #1142) (*@bk2204*) Compliance:: * substitute attribute entry value in attributes defined outside of header (#1130) * allow empty cell to appear at end of table row (#1106) * only produce one row for table in CSV or DSV format with a single cell (#1180) Bug Fixes:: * add explicit to_s call to generate delimiter settings for MathJax config (#1198) * fix includes that reference absolute Windows paths (#1144) * apply DSL to extension block in a way compatible with Opal Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.2[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.2[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.1\...v1.5.2[full diff] == 1.5.1 (2014-09-29) - @mojavelinux Bug Fixes:: * recognize tag directives inside comments within XML files for including tagged regions * restore passthroughs inside footnotes when more than one footnote appears on the same line * -S flag in cli recognizes safe mode name as lowercase string * do not match # in character reference when looking for marked text * add namespace to lang attribute in DocBook 5 backend * restore missing space before conum on last line of listing when highlighting with Pygments * place conums on correct lines when line numbers are enabled when highlighting with Pygments * don't expand mailto links in print styles Improvements:: * implement File.read in Node (JavaScript) environment * assign sectnumlevels and toclevels values to maxdepth attribute on AsciiDoc processing instructions in DocBook output * add test for usage of image block macro with data URI * use badges from shields.io in README Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?q=milestone%3Av1.5.1[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.1[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v1.5.0\...v1.5.1[full diff] == 1.5.0 (2014-08-12) - @mojavelinux Performance:: * 10% increase in speed compared to 0.1.4 * rewrite built-in converters in Ruby instead of ERB Enhancements:: * {star} introduce new curved quote syntax (pass:["`double quotes`"], pass:['`single quotes`']) if compat-mode attribute not set (#1046) * {star} add single curved quote replacement for pass:[`'] (#715) * {star} use backtick (`) for monospaced text if compat-mode attribute not set (#714, #718) * {star} use single and double plus (pass:[+], pass:[++]) for inline passthrough if compat-mode attribute not set (#714, #718) * {star} disable single quotes as formatting marks for emphasized text if compat-mode attribute not set (#717) * {star} enable compat-mode by default if document has atx-style doctitle * {star} output phrase surrounded by # as marked text (i.e., ) (#225) * {star} add MathJax integration and corresponding blocks and macros (#492, #760) * {star} switch to open source fonts (Open Sans, Noto Serif and Droid Sans Mono) in default stylesheet, major refinements to theme (#879) * {star} embed remote images when data-uri and allow-uri-read attributes are set (#612) * {star} support leveloffset on include directive and honor relative leveloffset values (#530) * {star} switch default docbook backend to docbook5 (#554) (*@bk2204*) * {star} added hide-uri-scheme attribute to hide uri scheme in automatic links (#800) * {star} allow substitutions to be incrementally added & removed (#522) * {star} add compatibility with Opal, add shim compat library, use compatibility regexp, require libraries properly (#679, #836, #846) (*@mogztter*) * {star} output XHTML when backend is xhtml or xhtml5 (#494) * {star} add shorthand subs and specialchars as an alias for specialcharacters (#579) * {star} deprecate toc2 attribute in favor of position and placement values on toc attribute (e.g., toc=left) (#706) * {star} add source map (file and line number) information to blocks (#861) * {star} write to file by default if input is file (#907) * {star} add -r and -I flags from ruby command to asciidoctor command for loading additional libraries (#574) * support backslash (\) as line continuation character in the value of an attribute entry (#1022) * disable subs on pass block by default (#737) * add basic support for resolving xref target from reftext (#589) * add time range anchor to video element (#886) * match implicit URLs that use the file scheme (#853) * added sectnumlevels to control depth of section numbering (#549) * add hardbreaks option to block (#630) * substitute attribute references in manname * warn on reference to missing attribute if attribute-missing is "warn" * only enable toc macro if toc is enabled and toc-placement attribute has the value macro (#706) * add sectnums attribute as alternative alias to numbered attribute (#684) Improvements:: * {star} don't select lines that contain a tag directive when including tagged lines, make tag regexp more strict (#1027) * {star} use https scheme for assets by default * {star} upgrade to Font Awesome 4.1 (#752) (*@mogztter*) * {star} improve print styles, add print styles for book doctype (#997, #952) (*@leif81*) * {star} add proper grid and frame styles for tables (#569) (*@leif81*) * {star} use glyphs for checkboxes when not using font icons (#878) * {star} prefer source-language attribute over language attribute for defining default source language (#888) * {star} pass document as first argument to process method on Preprocessor * don't parse link attributes when linkattrs is set unless text contains equal sign * detect bare links, mark with bare class; don't repeat URL of bare link in print styles * allow Treeprocessor#process method to replace tree (#1035) * add AbstractNode#find_by method to locate nodes in tree (#862) * add API for parsing title and subtitle (#1000) * add use_fallback option to doctitle, document method * constrain subscript & superscript markup (#564, #936) * match cell specs when cell separator is customized (#985) * use stylesheet to set default table width (#975) * display nested elements correctly in toc (#967) (*@kenfinnigan*) * add support for id attribute on links (#935) (*@mogztter*) * add support for title attribute on links (*@aslakknutsen*) * add -t flag to cli to control output of timing information (#909) (*@mogztter*) * rewrite converter API (#778) * rewrite extensions to support extension instances for AsciidoctorJ (#804) * integrate thread_safe gem (#638) * allow inline macro extensions that define a custom regexp to be matched (#792) * make Reader#push_include work with default file, path and dir (#743) (*@bk2204*) * honor custom outfilesuffix and introduce relfileprefix (#801) * add author and copyright to meta in HTML5 backend (#838) * output attribution in front of citetitle for quote and verse blocks * recognize float style with shorthand syntax outside block (#818) * honor background color in syntax highlighting themes (#813) * print runtime environment in version output, support -v as version flag (#785) * unwrap preamble if standalone (#533) * drop leading & trailing blank lines in verbatim & raw content (#724) * remove trailing newlines from source data (#727) * add flag to cli to suppress warnings (#557) * emit warning if tag(s) not found in include file (#639) * use element for vertical table headers instead of header class (#738) (*@davidgamba*) * share select references between AsciiDoc-style cell & main document (#729) * number chapters sequentially, always (#685) * add vbar attribute, make brvbar resolve properly (#643) * add implicit user-home attribute that resolves to user's home directory (#629) * enable sidebar toc for small screens (#628) * add square brackets around button in HTML output (#631) * make language hover text work for all languages in listing block * set background color on toc2 to cover scrolling content (*@neher*) * make document parsing a discrete step, make Reader accessible as property on Document * allow custom converter to set backend info such as outfilesuffix and htmlsyntax * report an informative error message when a converter cannot be resolved (*@mogztter*) * add conum class to b element when icons are disabled, make conum CSS selector more specific * expose Document object to extension point IncludeProcessor (*@aslakknutsen*) * style audioblock title, simplify rules for block titles * alias :name_attributes to :positional_attributes in extension DSL * upgrade to highlight.js 7.4 (and later 8.0) (#756) (*@mogztter*) Compliance:: * only include xmlns in docbook45 backend if xmlns attribute is specified (#929) * add xmlns attribute for xhtml output (*@bk2204*) * warn if table without a body is converted to DocBook (#961) * wrap around admonition inside example block in DocBook 4.5 (#931) * use if block image doesn't have a title (#927) * fix invalid docbook when adding role to formatted text (#956) * move all compliance flags to Compliance module (#624) * add compliance setting to control use of shorthand property syntax (#789) * wrap top-level content inside preamble in DocBook backend when doctype is book (#971) * escape special chars in image alt text (#972) * set starting number in ordered list for docbook (#925) (*@megathaum*) * match word characters in regular expressions as defined by Unicode (#892) * put source language class names on child code element of pre element (#921) * ignore case of attribute in conditional directives (#903) * allow attribute entry to reset / reseed counter (#870) * allow doctype to be set in AsciiDoc table cell (#863) * match URL macro following entity (#819) (*@jmbruel*) * handle BOM when normalizing source (#824) * don't output revhistory if revdate is not set (#802) * perform normal subs on verse content (#799) * automatically wrap part intro content in partintro block, emit warning if part is invalid (#768) * force encoding of docinfo content to UTF-8 (#773) * add scaling & alignment attributes to block image in DocBook backend (#763) * add support for \anchor:[] macro (#531) * substitute anchor and xref macros in footnotes (#676) * remove all string mutation operations for compatibility with Opal (#735) * honor reftext defined in embedded section title anchor (#697) * allow spaces in reftext defined in block anchor (#695) * use reftext of section or block in text of xref link (#693) * number sections in appendix using appendix number (#683) * unescape escaped square closing bracket in footnote text (#677) * support quoted index terms that may contain commas (#597) * don't assign role attribute if quoted text has no roles (#647) * disallow quoted values in block and inline anchors * add % to scaledwidth if no units given * ignore block attribute with unquoted value None * preserve entity references with 5 digits Bug Fixes:: * resolve relative paths relative to base_dir in unsafe mode (#690) * properly handle nested passthroughs (#1034) * don't clobber outfilesuffix attribute if locked (#1024) * correctly calculate columns if colspan used in first row of table (#924) * pass theme to Pygments when pygments-css=style (#919) * fallback to text lexer when using pygments for source highlighting (#987) * only make special section if style is specified (#917) * an unresolved footnote ref should not crash processor (#876) * rescue failure to resolve ::Dir.home (#896) * recognize Windows UNC path as absolute and preserve it (#806) * adjust file glob to account for backslash in Windows paths (#805) * don't match e-mail address inside URL (#866) * test include directive resolves file with space in name (#798) * return nil from Reader#push_include and Reader#pop_include methods (#745) * fixed broken passthroughs caused by source highlighting (#720) * copy custom stylesheet if linkcss is set (#300) * honor list continuations for indented, nested list items (#664) * fix syntax errors in converters (*@jljouannic*) * fix iconfont-remote setting * fix syntax error (target -> node.target) in Docbook 5 converter (*@jf647*) * output and style HTML for toc macro correctly Infrastructure:: * add Ruby 2.1 to list of supported platforms * reenable rbx in Travis build * switch tests to minitest (*@ktdreyer*) * update RPM for Fedora Rawhide (*@ktdreyer*) * refactor unit tests so they work in RubyMine (*@cmoulliard*) * add preliminary benchmark files to repository (#1021) * clean out old fixtures from test suite (#960) * add initial Cucumber test infrastructure (#731) * use gem tasks from Bundler in Rakefile (#654) * build gemspec files using git ls-tree (#653) * use in-process web server for URI tests * update manpage to reflect updates in 1.5.0 * rework README (#651) (*@mogztter*) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?milestone=8&state=closed[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v1.5.0[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v0.1.4\...v1.5.0[full diff] == 0.1.4 (2013-09-05) - @mojavelinux Performance:: * 15% increase in speed compared to 0.1.3 Enhancements:: * updated xref inline macro to support inter-document references (#417) * added extension API for document processing (#79) * added include directive processor extension (#100) * added id and role shorthand for formatted (quoted) text (#517) * added shorthand syntax for specifying block options (#481) * added support for checklists in unordered list (#200) * added support for inline style for unordered lists (#620) * added DocBook 5 backend (#411) * added docinfo option for footer (#486) * added Pygments as source highlighter option (pygments) (#538) * added icon inline macro (#529) * recognize implicit table header row (#387) * uri can be used in inline image (#470) * add float attribute to inline image (#616) * allow role to be specified on text enclosed in backticks (#419) * added XML comment-style callouts for use in XML listings (#582) * made callout bullets non-selectable in HTML output (#478) * pre-wrap literal blocks, added nowrap option to listing blocks (#303) * skip (retain) missing attribute references by default (#523) * added attribute-missing attribute to control how a missing attribute is handled (#495) * added attribute-undefined attribute to control how an undefined attribute is handled (#495) * permit !name syntax for undefining attribute (#498) * ignore front matter used by static site generators if skip-front-matter attribute is set (#502) * sanitize contents of HTML title element in html5 backend (#504) * support toc position for toc2 (#467) * cli accepts multiple files as input (#227) (*@lordofthejars*) * added Markdown-style horizontal rules and pass Markdown tests (#455) * added float clearing classes (.clearfix, .float-group) (#602) * don't disable syntax highlighting when explicit subs is used on listing block * asciidoctor package now available in Debian Sid and Ubuntu Saucy (#216) (*@avtobiff*) Compliance:: * embed CSS by default, copy stylesheet when linkcss is set unless copycss! is set (#428) * refactor reader to track include stack (#572) * made include directive resolve relative to current file (#572) * track include stack to enforce maximum depth (#581) * fixed greedy comment blocks and paragraphs (#546) * enable toc and numbered by default in DocBook backend (#540) * ignore comment lines when matching labeled list item (#524) * correctly parse footnotes that contain a URL (#506) * parse manpage metadata, output manpage-specific HTML, set docname and outfilesuffix (#488, #489) * recognize preprocessor directives on first line of AsciiDoc table cell (#453) * include directive can retrieve data from uri if allow-uri-read attribute is set (#445) * support escaping attribute list that precedes formatted (quoted) text (#421) * made improvements to list processing (#472, #469, #364) * support percentage for column widths (#465) * substitute attributes in docinfo files (#403) * numbering no longer increments on unnumbered sections (#393) * fixed false detection of list item with hyphen marker * skip include directives when processing comment blocks * added xmlns to root element in docbook45 backend, set noxmlns attribute to disable * added a Compliance module to control compliance-related behavior * added linkattrs feature to AsciiDoc.py compatibility file (#441) * added level-5 heading to AsciiDoc.py compatibility file (#388) * added new XML-based callouts to AsciiDoc.py compatibility file * added absolute and uri image target matching to AsciiDoc.py compatibility file * added float attribute on inline image macro to AsciiDoc.py compatibility file * removed linkcss in AsciiDoc.py compatibility file * fixed fenced code entry in AsciiDoc.py compatibility file Bug Fixes:: * lowercase attribute names passed to API (#508) * numbered can still be toggled even when enabled in API (#393) * allow JRuby Map as attributes (#396) * don't attempt to highlight callouts when using CodeRay and Pygments (#534) * correctly calculate line length in Ruby 1.8 (#167) * write to specified outfile even when input is stdin (#500) * only split quote attribution on first comma in Markdown blockquotes (#389) * don't attempt to print render times when doc is not rendered * don't recognize line with four backticks as a fenced code block (#611) Improvements:: * upgraded Font Awesome to 3.2.1 (#451) * improved the built-in CodeRay theme to match Asciidoctor styles * link to CodeRay stylesheet if linkcss is set (#381) * style the video block (title & margin) (#590) * added Groovy, Clojure, Python and YAML to floating language hint * only process callouts for blocks in which callouts are found * added content_model to AbstractBlock, rename buffer to lines * use Untitled as document title in rendered output if document has no title * rename include-depth attribute to max-include-depth, set 64 as default value (#591) * the tag attribute can be used on the include directive to identify a single tagged region * output multiple authors in HTML backend (#399) * allow multiple template directories to be specified, document in usage and manpage (#437) * added option to cli to specify template engine (#406) * added support for external video hosting services in video block macro (#587) (*@xcoulon*) * strip leading separator(s) on section id if idprefix is blank (#551) * customized styling of toc placed inside body content (#507) * consolidate toc attribute so toc with or without toc-position can make sidebar toc (#618) * properly style floating images (inline & block) (#460) * add float attribute to inline images (#616) * use ul list for TOC in HTML5 backend (#431) * support multiple terms per labeled list item in model (#532) * added role?, has_role?, option? and roles methods to AbstractNode (#423, 474) * added captioned_title method to AbstractBlock * honor showtitle attribute as alternate to notitle! (#457) * strip leading indent from literal paragraph blocks assigned the style normal * only process lines in AsciiDoc files * emit message that tilt gem is required to use custom backends if missing (#433) * use attributes for version and last updated messages in footer (#596) * added a basic template cache (#438) * include line info in several of the warnings (for lists and tables) * print warning/error messages using warn (#556) * lines are not preprocessed when peeking ahead for section underline * introduced Cursor object to track line info * fixed table valign classes, no underline on image link * removed dependency on pending library, lock Nokogiri version to 1.5.10 * removed require rubygems line in asciidoctor.rb, add to cli if RUBY_VERSION < 1.9 * added tests for custom backends * added test that shorthand doesn't clobber explicit options (#481) * removed unnecessary monospace class from literal and listing blocks Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?milestone=7&state=closed[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v0.1.4[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v0.1.3\...v0.1.4[full diff] == 0.1.3 (2013-05-30) - @mojavelinux Performance:: * 10% increase in speed compared to 0.1.2 Enhancements:: * added support for inline rendering by setting doctype to inline (#328) * added support for using font-based icons (#115) * honor haml/slim/jade-style shorthand for id and role attributes (#313) * support Markdown-style headings as section titles (#373) * support Markdown-style quote blocks * added section level 5 (maps to h6 element in the html5 backend) (#334) * added btn inline macro (#259) * added menu inline menu to identify a menu selection (#173) (*@bleathem*) * added kbd inline macro to identify a key or key combination (#172) (*@bleathem*) * support alternative quote forms (#196) * added indent attribute to verbatim blocks (#365) * added prettify source-highlighter (#202) * link section titles (#122) * introduce shorthand syntax for table format (#350) * parse attributes in link when use-link-attrs attribute is set (#214) * support preamble toc-placement (#295) * exclude attribute div if quote has no attribution (#309) * support attributes passed to API as string or string array (#289) * allow safe mode to be set using string, symbol or int in API (#290) * make level 0 section titles more prominent in TOC (#369) Compliance:: * ~ 99.5% compliance with AsciiDoc.py * drop line if target of include directive is blank (#376) * resolve attribute references in target of include directive (#367) * added irc scheme to link detection (#314) * toc should honor numbered attribute (#341) * added toc2 layout to default stylesheet (#285) * consecutive terms in labeled list share same entry (#315) * support set:name:value attribute syntax (#228) * block title not allowed above document title (#175) * assign caption even if no title (#321) * horizontal dlist layout in docbook backend (#298) * set doctitle attribute (#337) * allow any backend to be specified in cli (#320) (*@lightguard*) * support for abstract and partintro (#297) Bug Fixes:: * fixed file path resolution on Windows (#330) * fixed bad variable name that was causing crash, add test for it (#335) * set proper encoding on input data (#308) * don't leak doctitle into nested document (#382) * handle author(s) defined using attributes (#301) Improvements:: * added tests for all special sections (#80) * added test for attributes defined as string or string array (#291) (*@lightguard*) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (rubygem-asciidoctor)] https://asciidoctor.org/news/2013/05/31/asciidoctor-0-1-3-released[release notes] | https://github.com/asciidoctor/asciidoctor/issues?milestone=4&state=closed[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v0.1.3[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v0.1.2\...v0.1.3[full diff] == 0.1.2 (2013-04-25) - @mojavelinux Performance:: * 28% increase in speed compared to 0.1.1, 32% increase compared to 0.1.0 Enhancements:: * new website at https://asciidoctor.org * added a default stylesheet (#76) * added viewport meta tag for mobile browsers (#238) * set attributes based on safe mode (#244) * added admonition name as style class (#265) * removed hardcoded CSS, no one likes hardcoded CSS (#165) * support multiple authors in document header (#223) * include footnotes block in embedded document (#206) * allow comma delimiter in include attribute values (#226) * support including tagged lines (#226) * added line selection to include directive (#226) * Asciidoctor#render APIs return Document when document is written to file Compliance:: * added compatibility file to make AsciiDoc.py behave like Asciidoctor (#257) * restore alpha-based xml entities (#211) * implement video and audio block macros (#155) * implement toc block macro (#269) * correctly handle multi-part books (#222) * complete masquerade functionality for blocks & paragraphs (#187) * support explicit subs on blocks (#220) * use code element instead of tt (#260) * honor toc2 attribute (#221) * implement leveloffset feature (#212) * include docinfo files in header when safe mode < SERVER (#116) * support email links and mailto inline macros (#213) * question must be wrapped in simpara (#231) * allow round bracket in link (#218) Bug Fixes:: * trailing comma shouldn't be included in link (#280) * warn if file in include directive doesn't exist (#262) * negative case for inline ifndef should only affect current line (#241) * don't compact nested documents (#217) * nest revision info inside revision element (#236) Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] https://asciidoctor.org/news/2013/04/25/asciidoctor-0-1-2-released[release notes] | https://github.com/asciidoctor/asciidoctor/issues?milestone=3&state=closed[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v0.1.2[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v0.1.1\...v0.1.2[full diff] == 0.1.1 (2013-02-26) - @erebor Performance:: * 15% increase in speed compared to 0.1.0 Enhancements:: * migrated repository to asciidoctor organization on GitHub (#77) * include document title when header/footer disabled and notitle attribute is unset (#103) * honor GitHub-flavored Markdown fenced code blocks (#118) * added :doctype and :backend keys to options hash in API (#163) * added :to_dir option to the Asciidoctor#render API * added option :header_only to stop parsing after reading the header * preliminary line number tracking * auto-select backend sub-folder containing custom templates * rubygem-asciidoctor package now available in Fedora (#92) Compliance:: * refactor reader, process attribute entries and conditional blocks while parsing (#143) * support limited value comparison functionality of ifeval (#83) * added support for multiple attributes in ifdef and ifndef directives * don't attempt to embed image with uri reference when data-uri is set (#157) * accomodate trailing dot in author name (#156) * don't hardcode language attribute in html backend (#185) * removed language from DocBook root node (#188) * fixed revinfo line swallowing attribute entry * auto-generate caption for listing blocks if listing-caption attribute is set * support nested includes * support literal and listing paragraphs * support em dash shorthand at the end of a line * added ftp support to link inline macro * added support for the page break block macro Bug Fixes:: * pass through image with uri reference when data-uri is set (#157) * print message for failed arg (#152) * normalize whitespace at the end of lines (improved) * properly load custom templates and required libraries Improvements:: * parse document header in distinct parsing step * moved hardcoded english captions to attributes Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?milestone=1&state=closed[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v0.1.1[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v0.1.0\...v0.1.1[full diff] == 0.1.0 (2013-02-04) - @erebor Enhancements:: * introduced Asciidoctor API (Asciidoctor#load and Asciidoctor#render methods) (#34) * added SERVER safe mode level (minimum recommended security for serverside usage) (#93) * added the asciidoctor commandline interface (cli) * added asciidoctor-safe command, enables safe mode by default * added man page for the asciidoctor command * use blockquote tag for quote block content (#124) * added hardbreaks option to preserve line breaks in paragraph text (#119) * :header_footer option defaults to false when using the API, unless rendering to file * added idseparator attribute to customized separator used in generated section ids * do not number special sections (differs from AsciiDoc.py) Compliance:: * use callout icons if icons are enabled, unless safe mode is SECURE * added support for name=value@ attribute syntax passed via cli (#97) * attr refs no longer case sensitive (#109) * fixed several cases of incorrect list handling * don't allow links to consume newlines or surrounding angled brackets * recognize single quote in author name * support horizontal labeled list style * added support for the d cell style * added support for bibliography anchors * added support for special sections (e.g., appendix) * added support for index term inline macros * added support for footnote and footnoteref inline macros * added auto-generated numbered captions for figures, tables and examples * added counter inline macros * added support for floating (discrete) section titles Bug Fixes:: * fixed UTF-8 encoding issue by adding magic encoding line to ERB templates (#144) * resolved Windows compatibility issues * clean CRLF from end of lines (#125) * enabled warnings when running tests, fixed warnings (#69) Improvements:: * renamed iconstype attribute to icontype Distribution Packages:: * https://rubygems.org/gems/asciidoctor[RubyGem (asciidoctor)] https://github.com/asciidoctor/asciidoctor/issues?milestone=12&state=closed[issues resolved] | https://github.com/asciidoctor/asciidoctor/releases/tag/v0.1.0[git tag] | https://github.com/asciidoctor/asciidoctor/compare/v0.0.9\...v0.1.0[full diff] == Older releases (pre-0.0.1) For information about older releases, refer to the https://github.com/asciidoctor/asciidoctor/tags[commit history] on GitHub. asciidoctor-2.0.16/CODE-OF-CONDUCT.adoc000066400000000000000000000002201410231027400170300ustar00rootroot00000000000000== Code of Conduct Please read the https://github.com/asciidoctor/.github/blob/main/CODE-OF-CONDUCT.md[Asciidoctor Community Code of Conduct]. asciidoctor-2.0.16/CONTRIBUTING.adoc000066400000000000000000000225261410231027400166430ustar00rootroot00000000000000= Contributing // settings: :idprefix: :idseparator: - :source-language: ruby :language: {source-language} ifdef::env-github,env-browser[:outfilesuffix: .adoc] // URIs: :uri-repo: https://github.com/asciidoctor/asciidoctor :uri-help-base: https://help.github.com/articles :uri-issues: {uri-repo}/issues :uri-fork-help: {uri-help-base}/fork-a-repo :uri-branch-help: {uri-fork-help}#create-branches :uri-pr-help: {uri-help-base}/using-pull-requests :uri-gist: https://gist.github.com :uri-yard: https://yardoc.org :uri-tomdoc: http://tomdoc.org == License Agreement By contributing changes to this repository, you agree to license your contributions under the MIT license. This ensures your contributions have the same license as the project and that the community is free to use your contributions. You also assert that you are the original author of the work that you are contributing unless otherwise stated. == Submitting an Issue We use the {uri-issues}[issue tracker on GitHub] associated with this project to track bugs and features (i.e., issues). We very much appreciate the time and effort you take to report an issue. Before submitting an issue, make sure it hasn't already been submitted by using the {uri-issues}[search feature]. Please be sure to check closed issues as well as the issue may have been recently fixed. If you've determined that your issue has not already been reported, please follow these guidelines when submitting an issue: . Use an actionable title that identifies the behavior you want, such as "`Allow attributes to be defined per list item`". . Add a description that explains your use case and why this behavior will help you achieve your goal. . If your change involves AsciiDoc syntax, please provide a sample AsciiDoc document that can be used to better understand the scenario and for use in testing. Also include any details that may help reproduce the bug, including your gem version, Ruby version, and operating system. + Since Asciidoctor is a text processor, it's really important that you submit a sample document so we can reproduce the scenario. If the sample document or code sample is very long, you can put it in a {uri-gist}[Gist] and link to it. . An ideal bug report would also include a pull request with at least one failing spec. However, we recognize that not everyone who uses Asciidctor is a Ruby programmer, or even a programmer. So we do not expect you to include a pull request with your issue. Condescending or disparaging remarks have no place in this issue tracker and will result in your issue being rejected. You can be critical, but keep it positive and constructive. Stick with actionable language that describes what you would like the software to do. Be mindful of the fact that this project is maintained by volunteers and built on a foundation of trust. Please respect the work of those who have volunteered their time and effort to develop this project, and we will respect the time and effort you have taken to file an issue. == Submitting a Pull Request . {uri-fork-help}[Fork the repository]. . Run `bundle --path=.bundle/gems` to install development dependencies. ** If the `bundle` command is not available, run `gem install bundler` to install it. ** If the libxml2 and libxslt development libraries are available on your system (Ubuntu: `sudo apt install libxml2-dev libxslt-dev`, Fedora: `sudo dnf install libxml2-devel libxslt-devel`), you can speed up installation of the `nokogiri` gem by linking directly against these libraries by running `bundle config --local build__nokogiri --use-system-libraries` first. . {uri-branch-help}[Create a topic branch] (preferably using the pattern `issue-XYZ`, where `XYZ` is the issue number). . Add tests for your unimplemented feature or bug fix. (See <>) . Run `bundle exec rake` to run the tests. If your tests pass, return to step 4. . Implement your feature or bug fix. . Run `bundle exec rake` to run the tests. If your tests fail, return to step 6. . Add documentation for your feature or bug fix. . If your changes are not 100% documented, go back to step 8. . Add, commit, and push your changes. . {uri-pr-help}[Submit a pull request]. For ideas about how to use pull requests, see the post http://blog.quickpeople.co.uk/2013/07/10/useful-github-patterns[Useful GitHub Patterns]. === Background Knowledge As Asciidoctor is built using Ruby some basic knowledge of Ruby, RubyGems and Minitest is beneficial. The following resources provide a good starting point for contributors who may not be completely comfortable with these tools: * https://www.ruby-lang.org/en/documentation/quickstart/[Ruby in 20 minutes] * https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/[Ruby from other languages] * http://guides.rubygems.org/rubygems-basics/[RubyGems basics] * http://guides.rubygems.org/what-is-a-gem/[What is a Gem?] * http://blog.teamtreehouse.com/short-introduction-minitest[How to use Minitest] * http://www.rubyinside.com/a-minitestspec-tutorial-elegant-spec-style-testing-that-comes-with-ruby-5354.html[Minitest spec tutorial] * https://github.com/seattlerb/minitest/blob/master/README.rdoc[Minitest Project Documentation] While these resources don't cover everything needed they serve as a good starting off point for beginners. === Writing and Executing Tests Tests live inside the test directory and are named _test.rb. For instance, tests for the different types of blocks can be found in the file test/blocks_test.rb. Within a test file, individual test cases are organized inside of contexts. A context is type of logical container that groups related tests together. Each test case follows the same structure: [source] ---- test 'description of test' do # test logic end ---- At the moment, the tests are quite primitive. Here's how a typical test operates: . Defines sample AsciiDoc source . Renders the document to HTML or DocBook . Uses XPath and CSS expressions to verify expected output Here's how we might test the open block syntax: [source] ---- test 'should render content bounded by two consecutive hyphens as an open block' do input = <<-EOS -- This is an open block. -- EOS result = render_embedded_string input assert_css '.openblock', result, 1 assert_css '.openblock p', result, 1 assert_xpath '/div[@class="openblock"]//p[text()="This is an open block."]', result, 1 end ---- As you can see, several helpers are used to facilitate the test scenario. The `render_embedded_string` invokes Asciidoctor's render method with the header and footer option disabled. This method is ideal for unit-level tests. If you need to test the whole document, use `render_string` instead. The `assert_css` and `assert_xpath` assertion methods take a CSS or XPath selector, respectively, the rendered result and the number of expected matches. You can also use built-in assertions in Ruby's test library. To run all the tests, execute `rake`: $ rake NOTE: The tests should only take a few seconds to run using Ruby 2.1. If you want to run a single test file, you can use `ruby`: $ ruby test/blocks_test.rb To test a single test case, first add the string "wip" to the beginning of the description. For example: [source] ---- test 'wip should render ...' do ... end ---- Then, run `ruby` again, but this time pass a selector argument so it finds matching tests: $ ruby test/blocks_test.rb -n /wip/ You can also turn on verbose mode if you want to see more output: $ ruby test/blocks_test.rb -n /wip/ -v Once you are done with your test, make sure to remove `wip` from the description and run all the tests again using `rake`. We plan on switching to a more elegant testing framework in the future, such as RSpec or Cucumber, in order to make the tests more clear and robust. === Running Asciidoctor in Development Mode Asciidoctor is designed so that you can run the script directly out of the cloned repository. Execute the `asciidoctor` command directly (referencing it either by relative or absolute path). There's no need to install it using the `gem` command first. For example, to convert the README file, switch to the root of the project and run: $ ./bin/asciidoctor README.adoc IMPORTANT: You'll need to make sure you reference the correct relative path to the `asciidoctor` command. If you want to be able to execute the `asciidoctor` command from any directory without worrying about the relative (or absolute) path, you can setup the following Bash alias: alias asciidoctor-dev="/path/to/asciidoctor/bin/asciidoctor" Now you can execute the `asciidoctor` command from any folder as follows: $ asciidoctor-dev README.adoc == Building the API Documentation The API documentation is written in the {uri-tomdoc}[TomDoc] dialect and built using {uri-yard}[Yard]. The options for Yard are configured in the [.path]_.yardopts_ file at the root of the project. To build the API documentation locally, run the following command: $ bundle exec yard The documentation will be built into the [.path]_rdoc_ folder. == Supporting Additional Ruby Versions If you would like this library to support another Ruby version, you may volunteer to be a maintainer. Being a maintainer entails making sure all tests run and pass on that implementation. When something breaks on your implementation, you will be expected to provide patches in a timely fashion. If critical issues for a particular implementation exist at the time of a major release, support for that Ruby version may be dropped. asciidoctor-2.0.16/Gemfile000066400000000000000000000022431410231027400153710ustar00rootroot00000000000000# frozen_string_literal: true source 'https://rubygems.org' # Look in asciidoctor.gemspec for runtime and development dependencies gemspec group :development do # asciimath is needed for testing AsciiMath in DocBook backend; Asciidoctor supports asciimath >= 1.0.0 gem 'asciimath', (ENV.fetch 'ASCIIMATH_VERSION', '~> 2.0') # coderay is needed for testing source highlighting gem 'coderay', '~> 1.1.0' gem 'haml', '~> 4.0' if RUBY_ENGINE == 'truffleruby' # pygments.rb is needed for testing source highlighting; Asciidoctor supports pygments.rb >= 1.2.0 gem 'pygments.rb', ENV['PYGMENTS_VERSION'] if ENV.key? 'PYGMENTS_VERSION' # rouge is needed for testing source highlighting; Asciidoctor supports rouge >= 2 gem 'rouge', (ENV.fetch 'ROUGE_VERSION', '~> 3.0') end group :docs do gem 'yard' gem 'yard-tomdoc' end # enable this group to use Guard for continuous testing # after removing comments, run `bundle install` then `guard` #group :guardtest do # gem 'guard' # gem 'guard-test' # gem 'libnotify' # gem 'listen', :github => 'guard/listen' #end group :ci do gem 'json', '~> 2.2.0' if RUBY_ENGINE == 'truffleruby' gem 'simplecov', '~> 0.16.0' end asciidoctor-2.0.16/Guardfile000066400000000000000000000006461410231027400157300ustar00rootroot00000000000000# use `guard start -n f` to disable notifications # or set the environment variable GUARD_NOTIFY=false notification :libnotify, :display_message => true, :timeout => 5, # in seconds :append => false, :transient => true, :urgency => :critical guard :test do watch(%r{^lib/(.+)\.rb$}) do |m| "test/#{m[1]}_test.rb" end watch(%r{^test.+_test\.rb$}) watch('test/test_helper.rb') do "test" end end asciidoctor-2.0.16/LICENSE000066400000000000000000000021761410231027400151100ustar00rootroot00000000000000MIT License Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. asciidoctor-2.0.16/README-de.adoc000066400000000000000000000506271410231027400162620ustar00rootroot00000000000000= Asciidoctor Dan Allen ; Sarah White ; Ryan Waldron v2.0.16, 2021-08-03 // settings: :idprefix: :idseparator: - :source-language: ruby :language: {source-language} ifndef::env-github[:icons: font] ifdef::env-github[] :status: :outfilesuffix: .adoc :caution-caption: :fire: :important-caption: :exclamation: :note-caption: :paperclip: :tip-caption: :bulb: :warning-caption: :warning: endif::[] // Variables: :release-version: 2.0.16 // URIs: :uri-org: https://github.com/asciidoctor :uri-repo: {uri-org}/asciidoctor :uri-asciidoctorj: {uri-org}/asciidoctorj :uri-asciidoctorjs: {uri-org}/asciidoctor.js :uri-project: https://asciidoctor.org ifdef::env-site[:uri-project: link:] :uri-docs: {uri-project}/docs :uri-news: {uri-project}/news :uri-manpage: {uri-project}/man/asciidoctor :uri-issues: {uri-repo}/issues :uri-contributors: {uri-repo}/graphs/contributors :uri-rel-file-base: link: :uri-rel-tree-base: link: ifdef::env-site[] :uri-rel-file-base: {uri-repo}/blob/master/ :uri-rel-tree-base: {uri-repo}/tree/master/ endif::[] :uri-changelog: {uri-rel-file-base}CHANGELOG.adoc :uri-contribute: {uri-rel-file-base}CONTRIBUTING.adoc :uri-license: {uri-rel-file-base}LICENSE :uri-tests: {uri-rel-tree-base}test :uri-discuss: https://discuss.asciidoctor.org :uri-chat: https://asciidoctor.zulipchat.com :uri-rubygem: https://rubygems.org/gems/asciidoctor :uri-what-is-asciidoc: {uri-docs}/what-is-asciidoc :uri-user-manual: {uri-docs}/user-manual :uri-install-docker: https://github.com/asciidoctor/docker-asciidoctor //:uri-install-doc: {uri-docs}/install-toolchain :uri-install-macos-doc: {uri-docs}/install-asciidoctor-macos :uri-render-doc: {uri-docs}/render-documents :uri-themes-doc: {uri-docs}/produce-custom-themes-using-asciidoctor-stylesheet-factory :uri-gitscm-repo: https://github.com/git/git-scm.com :uri-prototype: {uri-gitscm-repo}/commits/master/lib/asciidoc.rb :uri-freesoftware: https://www.gnu.org/philosophy/free-sw.html :uri-foundation: https://foundation.zurb.com :uri-opal: https://opalrb.com :uri-tilt: https://github.com/rtomayko/tilt :uri-ruby: https://ruby-lang.org // images: :image-uri-screenshot: https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/screenshot.png {uri-project}[Asciidoctor] ist ein _schneller_, {uri-license}[Open Source] Textverarbeitungs- und Publishing-Toolchain für die Konvertierung von {uri-what-is-asciidoc}[AsciiDoc]-Inhalten in HTML 5, DocBook 5, PDF und andere Formate. Asciidoctor ist in Ruby geschrieben und läuft auf allen gängigen Betriebsystemen. Um die Installation zu vereinfachen wird Asciidoctor als Gem auf {uri-rubygem}[RubyGems.org] verpackt und ist als Paket für gängige Linux-Distributionen und MacOS erhältlich. Asciidoctor kann auch in einer JVM mit {uri-asciidoctorj}[AsciidoctorJ] oder einer beliebigen Javascript-Umgebung mit {uri-asciidoctorjs}[Asciidoctor.js] ausgeführt werden. Das Asciidoctor-Projekt wird {uri-repo}[auf GitHub] gehostet. ifndef::env-site[] Dieses Dokument ist auch in folgenden Sprachen erhältlich: + {uri-rel-file-base}README-zh_CN.adoc[汉语] | {uri-rel-file-base}README.adoc[English] | {uri-rel-file-base}README-fr.adoc[Français] | {uri-rel-file-base}README-jp.adoc[日本語] endif::[] .Wichtige Dokumentation [.compact] * {uri-docs}/what-is-asciidoc[Was ist AsciiDoc?] * {uri-docs}/asciidoc-writers-guide[Asciidoctor Benutzerhandbuch] * {uri-docs}/user-manual[Asciidoctor Gebrauchshandbuch] * {uri-docs}/asciidoc-syntax-quick-reference[AsciiDoc Syntax-Referenz] ifdef::status[] image:https://img.shields.io/gem/v/asciidoctor.svg[Latest Release, link={uri-gem}] image:https://img.shields.io/badge/rubydoc.info-{release-version}-blue.svg[library (API) docs,link=https://www.rubydoc.info/gems/asciidoctor/{release-version}] image:https://github.com/asciidoctor/asciidoctor/workflows/CI/badge.svg[Build Status (GitHub Actions),link={uri-repo}/actions] image:https://inch-ci.org/github/asciidoctor/asciidoctor.svg?branch=master[Inline docs,link=https://inch-ci.org/github/asciidoctor/asciidoctor] image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[project chat,link=https://asciidoctor.zulipchat.com/] endif::[] == Sponsoren Wir möchten unseren großzügigen Sponsoren danken, ohne deren Unterstützung Asciidoctor nicht möglich wäre. Vielen Dank an die Sponsoren für ihr Engagement zur Verbesserung der technischen Dokumentation! Zusätzliche Mittel werden von unseren https://asciidoctor.org/supporters[Community Backers] zur Verfügung gestellt. Sie können dieses Projekt unterstützen, indem Sie Sponsor bei https://opencollective.com/asciidoctor[OpenCollective] werden. == Das große Ganze Asciidoctor liest Inhalte, die im Klartext geschrieben wurden, wie im Feld links im Bild unten gezeigt, und wandelt Sie in HTML 5 um, wie im rechten Feld dargestellt. Asciidoctor wendet ein Standard-Stylesheet auf das HTML 5-Dokument an, um ein angenehmes Out-of-the-Box-Erlebnis zu bieten. image::{image-uri-screenshot}[Preview of AsciiDoc source and corresponding rendered HTML] == AsciiDoc Verarbeitung Asciidoctor liest und analysiert Text, der in der AsciiDoc-Syntax geschrieben wurde, und leitet dann den Parse-Tree durch eine Reihe von eingebauten Konvertern, um HTML 5, DocBook 5 und man-pages zu erzeugen. Sie haben die Möglichkeit, eigene Konverter zu verwenden oder {uri-tilt}[Tilt]-gestützte Vorlagen zu laden, um die generierte Ausgabe anzupassen oder zusätzliche Formate zu erzeugen. Asciidoctor ist ein Ersatz für den Original AsciiDoc Python Prozessor (`asciidoc.py`). Die Asciidoctor-Testsuite verfügt über {uri-tests}[mehr als 2,000 Tests], um die Kompatibilität mit der AsciiDoc-Syntax sicherzustellen. Neben der klassischen AsciiDoc-Syntax erkennt Asciidoctor zusätzliche Markup- und Formatierungsoptionen, wie z.B. fontbasierte Icons (z.B. `+icon:fire[]+`) und UI-Elemente (z.B. `+button:[Save]+`). Asciidoctor bietet auch ein modernes, __responsive Theme__, das auf {uri-foundation}[Foundation] basiert, um die HTML 5-Ausgabe zu gestalten. == Wo Ruby hingeht, folgt Asciidoctor Sie können Asciidoctor in einer JVM mit JRuby ausführen. Um die Asciidoctor API direkt aus Java und anderen JVM-Sprachen aufzurufen, verwenden Sie {uri-asciidoctorj}[AsciidoctorJ]. Es stehen Ihnen auf {uri-asciidoctorj}[AsciidoctorJ] basierende Plugins zur Verfügung, die den Asciidoctor Prozessor in Apache Maven, Gradle oder Javadoc Builds integrieren. Asciidoctor läuft auch in JavaScript. {uri-opal}[Opal] wird verwendet, um den Ruby-Source in JavaScript umzukompilieren, um {uri-asciidoctorjs}[Asciidoctor.js] zu erzeugen. Asciidoctor.js ist eine voll funktionsfähige Version von Asciidoctor, die in jeder JavaScript-Umgebung wie z.B. einem Webbrowser oder Node.js funktioniert. Es wird für die AsciiDoc Vorschau-Erweiterungen für Chrome, Atom, Brackets und andere webbasierte Werkzeuge verwendet. == Anforderungen Asciidoctor arbeitet unter Linux, MacOS und Windows und benötigt eine der folgenden Implementierungen von {uri-ruby}[Ruby]: * CRuby (aka MRI) 2.3 - 2.6 * JRuby 9.1 - 9.2 * TruffleRuby (GraalVM) * Opal (JavaScript) [CAUTION] ==== Wenn Sie eine nicht-englische Windows-Umgebung verwenden, können Sie auf einen `Encoding::UndefinedConversionError` stoßen, wenn Sie Asciidoctor aufrufen. Um dieses Problem zu beheben, empfehlen wir, die aktive Codepage in Ihrer Konsole auf UTF-8 umzustellen: chcp 65001 Sobald Sie diese Änderung vorgenommen haben, haben Sie alle Ihre Unicode-Kopfschmerzen hinter sich. Wenn Sie eine IDE wie Eclipse verwenden, stellen Sie sicher, dass Sie dort auch die Kodierung auf UTF-8 setzen. Asciidoctor funktioniert am besten, wenn Sie UTF-8 überall verwenden. ==== == Installation Asciidoctor kann mit (a) Paketmanagern für gängige Linux-Distributionen, (b) Homebrew für MacOS, (c) dem Befehl `gem install` (empfohlen für Windows-Benutzer), (d) dem Asciidoctor Docker-Image oder (e) Bundler installiert werden. Der Vorteil der Verwendung des Paketmanagers Ihres Betriebssystems zur Installation des Gem ist, dass er die Installation von Ruby und der RubyGems-Bibliothek übernimmt, wenn diese Pakete nicht bereits auf Ihrem Rechner installiert sind. === (a) Linux Paketmanager Die vom Paketmanager installierte Version von Asciidoctor entspricht möglicherweise nicht der neuesten Version von Asciidoctor. Konsultieren Sie das Paket-Repository für Ihre Distribution, um herauszufinden, welche Version in der Distribution gepackt ist. * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] * https://www.archlinux.org/packages/?name=asciidoctor[Arch Linux (asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (asciidoctor)] * https://software.opensuse.org/package/rubygem-asciidoctor[OpenSUSE (rubygem-asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] Wenn Sie eine Version von Asciidoctor verwenden möchten, die neuer ist als die, die vom Paketmanager installiert wurde, lesen Sie bitte die <>. ==== apk (Alpine Linux) Um ein Gem auf Alpine Linux zu installieren, öffnen Sie ein Terminal und geben Sie folgendes ein: $ sudo apk add asciidoctor ==== pacman (Arch Linux) Um ein Gem auf Arch-basierten Distributionen zu installieren, öffnen Sie ein Terminal und geben Sie folgendes ein: $ sudo pacman -S asciidoctor ==== APT Auf Debian und Debian-basierten Distributionen wie Ubuntu nutzen Sie APT um Asciidoctor zu installieren. Um das Paket zu installieren, öffnen Sie ein Terminal und geben Sie folgendes ein: $ sudo apt-get install -y asciidoctor ==== DNF Auf RPM-basierten Linux-Distributionen, wie Fedora, CentOS und RHEL, nutzen Sie den DNF Paketmanager um Asciidoctor zu installieren. Um das Paket zu installieren, öffnen Sie ein Terminal und geben Sie folgendes ein: $ sudo dnf install -y asciidoctor === (b) Homebrew (macOS) Sie können Homebrew, den macOS-Paketmanager, verwenden, um Asciidoctor zu installieren. Wenn Sie Homebrew nicht auf Ihrem Computer haben, führen Sie zuerst die Installationsanweisungen unter https://brew.sh/[brew.sh] aus. Sobald Homebrew installiert ist, können Sie das Asciidoctor gem installieren. Öffnen Sie ein Terminal und geben Sie folgendes ein: $ brew install asciidoctor Homebrew installiert das `asciidoctor` Gem in ein exklusives Präfix, das unabhängig von den System-Gems ist. === (c) Windows Um Asciidoctor unter Windows zu installieren, gibt es zwei einfache Möglichkeiten. ==== Chocolatey Wenn Sie bereits https://chocolatey.org[chocolatey] verwenden, können Sie folgenden Befehl verwenden: [source] ---- choco install ruby ---- Danach folgen Sie der <>. ==== Rubyinstaller Oder Sie benutzen den https://rubyinstaller.org/downloads/[Rubyinstaller], laden Sie das für Ihre Windows Version passende Paket herunter und nach der Installation folgen Sie ebenfalls der <>. [#gem-install] === (d) gem install Bevor Sie Asciidoctor mit `gem install` installieren, sollten Sie https://rvm.io[RVM] verwenden, um Ruby in Ihrem Home-Verzeichnis zu installieren (z.B. Userspace). Dann können Sie den Befehl `gem` sicher verwenden, um den Asciidoctor Gem zu installieren oder zu aktualisieren. Bei der Verwendung von RVM werden Gems an einem vom System isolierten Ort installiert. Öffnen Sie ein Terminal und geben Sie folgendes ein: $ gem install asciidoctor Wenn Sie eine Vorabversion (z.B. einen Release-Kandidaten) installieren möchten, verwenden Sie: $ gem install asciidoctor --pre === (e) Docker Siehe {uri-install-docker}[Installing Asciidoctor using Docker]. === (f) Bundler . Erstellen Sie ein Gemfile im Stammordner Ihres Projekts (oder im aktuellen Verzeichnis). . Fügen Sie den `asciidoctor` Gem wie folgt zu Ihrem Gemfile hinzu: + [source,subs=attributes+] ---- source 'https://rubygems.org' gem 'asciidoctor' # oder spezifizieren Sie die Version explizit # gem 'asciidoctor', '{release-version}' ---- . Speichern Sie das Gemfile . Öffnen Sie ein Terminal und installieren Sie das Gem mit: $ bundle Um das Gem zu aktualisieren, geben Sie die neue Version im Gemfile an und führen Sie `bundle` erneut aus. Die Verwendung von `bundle update` (ohne Angabe eines Gem) wird *nicht* empfohlen, da es auch andere Gems aktualisiert, was möglicherweise nicht das gewünschte Ergebnis ist. == Upgrade Wenn Sie Asciidoctor mit einem Paketmanager installiert haben, ist ihr Betriebssystem wahrscheinlich so konfiguriert, dass es Pakete automatisch aktualisiert. In diesem Fall müssen Sie das Gem nicht manuell aktualisieren. === apk (Alpine Linux) Um das Gem zu aktualisieren, nutzen Sie: $ sudo apk add -u asciidoctor === APT Um das Gem zu aktualisieren, nutzen Sie: $ sudo apt-get upgrade -y asciidoctor === DNF Um das Gem zu aktualisieren, nutzen Sie: $ sudo dnf update -y asciidoctor === Homebrew (macOS) Um das Gem zu aktualisieren, nutzen Sie: $ brew update $ brew upgrade asciidoctor === gem install Wenn Sie Asciidoctor zuvor mit dem Befehl `gem` installiert haben, müssen Sie Asciidoctor manuell aktualisieren, wenn eine neue Version veröffentlicht wird. Sie können mit folgendem Befehl aktualisieren: $ gem install asciidoctor Wenn Sie eine neue Version des Edelsteins mit `gem install` installieren, werden mehrere Versionen installiert. Verwenden Sie den folgenden Befehl, um die alten Versionen zu entfernen: $ gem cleanup asciidoctor == Verwendung Wenn der Asciidoctor Gem erfolgreich installiert wurde, ist das `asciidoctor` Kommandozeilen-Interface (CLI) in Ihrem PATH verfügbar. Um die Verfügbarkeit zu überprüfen, führen Sie den folgenden Befehl in Ihrem Terminal aus: $ asciidoctor --version Sie sollten Informationen über die Asciidoctor-Version und Ihre Ruby-Umgebung im Terminal sehen. [.output,subs=attributes+] .... Asciidoctor 1.5.7 [https://asciidoctor.org] Laufzeitumgebung (ruby 2.6.0p0 [x86_64-linux]) (lc:UTF-8 fs:UTF-8 in:- ex:UTF-8) .... Asciidoctor bietet auch eine API. Die API ist für die Integration mit anderer Ruby-Software wie Rails, Sinatra und GitHub und anderen Sprachen wie Java (über {uri-asciidoctorj}[AsciidoctorJ]) und JavaScript (über {uri-asciidoctorjs}[Asciidoctor.js]) vorgesehen. === Kommandozeile Mit dem Befehl `asciidoctor` können Sie Asciidoctor von der Kommandozeile (z.B. einem Terminal) aus aufrufen. Der folgende Befehl konvertiert die Datei README.adoc nach HTML und speichert das Ergebnis in der Datei README.html im gleichen Verzeichnis. Der Name der erzeugten HTML-Datei wird aus der Quelldatei abgeleitet, indem die Dateierweiterung auf `.html` geändert wird. $ asciidoctor README.adoc Sie können den Asciidoctor-Prozessor steuern, indem Sie verschiedene Flags und Schalter hinzufügen, über die Sie sich mittels folgendem Befehl informieren können: $ asciidoctor --help Zum Beispiel, um die Datei in ein anderes Verzeichnis zu schreiben, verwenden Sie: $ asciidoctor -D output README.adoc Die `asciidoctor` {uri-manpage}[man page] bietet eine vollständige Referenz der Kommandozeile. Lesen Sie die folgenden Ressourcen, um mehr über die Verwendung des `asciidoctor`-Befehls zu erfahren. * {uri-render-doc}[How do I convert a document?] * {uri-themes-doc}[How do I use the Asciidoctor stylesheet factory to produce custom themes?] === Ruby API Um Asciidoctor in Ihrer Anwendung verwenden zu können, benötigen Sie zunächst das Gem: [source] ---- require 'asciidoctor' ---- Sie können dann eine AsciiDoc-Quelldatei in eine HTML-Datei konvertieren: [source] ---- Asciidoctor.convert_file 'README.adoc', to_file: true, safe: :safe ---- WARNING: Bei Verwendung von Asciidoctor über die API ist der Standard-Sicherheitsmodus `:secure`. Im sicheren Modus sind mehrere Kernfunktionen deaktiviert, darunter die `include`-Direktive. Wenn Sie diese Funktionen aktivieren möchten, müssen Sie den Sicherheitsmodus explizit auf `:server` (empfohlen) oder `:safe` setzen. Sie können einen AsciiDoc-String auch in ein integrierbares HTML (zum Einfügen in eine HTML-Seite) konvertieren, mit: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' Asciidoctor.convert content, safe: :safe ---- Wenn Sie das komplette HTML-Dokument wünschen, aktivieren Sie die Option `head_footer` wie folgt: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' html = Asciidoctor.convert content, header_footer: true, safe: :safe ---- Wenn Sie Zugriff auf das analysierte Dokument benötigen, können Sie die Konvertierung in einzelne Schritte aufteilen: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' document = Asciidoctor.load content, header_footer: true, safe: :safe puts document.doctitle html = document.convert ---- Denken Sie daran, dass __Sie die Ausgabe__ von Asciidoctor __ändern können__, wenn Sie sie nicht mögen! Asciidoctor unterstützt benutzerdefinierte Konverter, die die Konvertierung vom geparsten Dokument in die generierte Ausgabe übernehmen können. Eine einfache Möglichkeit, die Ausgabe stückweise anzupassen, ist die Verwendung des Template-Konverters. Der Template-Konverter ermöglicht es Ihnen, eine von {uri-tilt}[Tilt]-gestützte Template-Datei zur Verfügung zu stellen, um die Konvertierung eines beliebigen Knotens im Dokument zu handhaben. Wie auch immer Sie vorgehen, Sie können die Ausgabe zu 100% kontrollieren. Weitere Informationen zur Verwendung der API oder zur Anpassung der Ausgabe finden Sie im {uri-user-manual}[Benutzerhandbuch]. == Mitwirken Neue Mitwirkende sind immer willkommen! Wenn Sie Fehler oder Auslassungen im Quellcode, in der Dokumentation oder im Inhalt der Website entdecken, zögern Sie bitte nicht, ein Problem zu melden oder eine Pull Request mit einem Fix zu öffnen. Hier sind einige Möglichkeiten, wie *Sie* dazu beitragen können: * durch Verwendung von Vorabversionen (Alpha-, Beta- oder Preview-Versionen) * durch das Melden von Fehlern * durch Vorschläge für neue Funktionen * durch das Verfassen oder Bearbeiten von Dokumentationen * durch Schreiben von Code mit Tests -- _Kein Patch ist zu klein._ ** Tippfehler beheben ** Kommentare hinzufügen ** inkonsistente Leerzeichen bereinigen ** Tests schreiben! * Refactoring von Code * durch die Behebung von {uri-issues}[Problemen] * durch Überprüfung von Patches Der {uri-contribute}[Contributing Guide] bietet Informationen darüber, wie man Probleme, Feature Requests, Code und Dokumentation für das Asciidoctor Projekt erstellt, gestaltet und einreicht. == Hilfe finden Asciidoctor wurde entwickelt, um Ihnen das Schreiben und Veröffentlichen Ihrer Inhalte zu erleichtern. Aber wir können es nicht ohne ihr Feedback machen! Wir ermutigen Sie, Fragen zu stellen und alle Aspekte des Projekts auf der Diskussionsliste, auf Twitter oder im Chatroom zu diskutieren. Chat (Zulip):: {uri-chat} Discussionsliste (Nabble):: {uri-discuss} Twitter:: Follow https://twitter.com/asciidoctor[@asciidoctor] or search for the https://twitter.com/search?f=tweets&q=%23asciidoctor[#asciidoctor] hashtag ifdef::env-github[] Weitere Informationen und Dokumentation zu Asciidoctor finden Sie auf der Website des Projekts. {uri-project}[Home] | {uri-news}[News] | {uri-docs}[Docs] endif::[] Die Asciidoctor-Organisation auf GitHub hostet den Quellcode des Projekts, den Issue Tracker und Unterprojekte. Source repository (git):: {uri-repo} Issue tracker:: {uri-issues} Asciidoctor Organization auf GitHub:: {uri-org} == Lizenz Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, und die einzelnen Mitarbeiter von Asciidoctor. Die Nutzung dieser Software wird unter den Bedingungen der MIT-Lizenz gewährt. Siehe die {uri-license}[LIZENZ] für den vollen Lizenztext. == Authoren *Asciidoctor* wird von https://github.com/mojavelinux[Dan Allen] und https://github.com/graphitefriction[Sarah White] geleitet und hat Beiträge von {uri-contributors}[vielen Personen] in Asciidoctors großartiger Gemeinschaft erhalten. Das Projekt wurde 2012 von https://github.com/erebor[Ryan Waldron] initiiert und basiert auf einem {uri-prototype}[Prototyp] von https://github.com/nickh[Nick Hengeveld]. *AsciiDoc* wurde von Stuart Rackham gegründet und hat Beiträge von vielen Personen aus der AsciiDoc-Community erhalten. ifndef::env-site[] == Changelog ifeval::[{safe-mode-level} < 20] include::CHANGELOG.adoc[tag=compact,leveloffset=+1] endif::[] Eine vollständige Liste der Änderungen in älteren Versionen finden Sie im {uri-changelog}[CHANGELOG]. endif::[] asciidoctor-2.0.16/README-fr.adoc000066400000000000000000000477621410231027400163070ustar00rootroot00000000000000= Asciidoctor Dan Allen ; Sarah White ; Ryan Waldron v2.0.16, 2021-08-03 // settings: :idprefix: :idseparator: - :source-language: ruby :language: {source-language} ifndef::env-github[:icons: font] ifdef::env-github[] :status: :outfilesuffix: .adoc :caution-caption: :fire: :important-caption: :exclamation: :note-caption: :paperclip: :tip-caption: :bulb: :warning-caption: :warning: endif::[] // Variables: :release-version: 2.0.16 // URIs: :uri-org: https://github.com/asciidoctor :uri-repo: {uri-org}/asciidoctor :uri-asciidoctorj: {uri-org}/asciidoctorj :uri-asciidoctorjs: {uri-org}/asciidoctor.js :uri-project: https://asciidoctor.org ifdef::env-site[:uri-project: link:] :uri-docs: {uri-project}/docs :uri-news: {uri-project}/news :uri-manpage: {uri-project}/man/asciidoctor :uri-issues: {uri-repo}/issues :uri-contributors: {uri-repo}/graphs/contributors :uri-rel-file-base: link: :uri-rel-tree-base: link: ifdef::env-site[] :uri-rel-file-base: {uri-repo}/blob/master/ :uri-rel-tree-base: {uri-repo}/tree/master/ endif::[] :uri-changelog: {uri-rel-file-base}CHANGELOG.adoc :uri-contribute: {uri-rel-file-base}CONTRIBUTING.adoc :uri-license: {uri-rel-file-base}LICENSE :uri-tests: {uri-rel-tree-base}test :uri-discuss: https://discuss.asciidoctor.org :uri-chat: https://asciidoctor.zulipchat.com :uri-rubygem: https://rubygems.org/gems/asciidoctor :uri-what-is-asciidoc: {uri-docs}/what-is-asciidoc :uri-user-manual: {uri-docs}/user-manual :uri-install-docker: https://github.com/asciidoctor/docker-asciidoctor //:uri-install-doc: {uri-docs}/install-toolchain :uri-install-macos-doc: {uri-docs}/install-asciidoctor-macos :uri-render-doc: {uri-docs}/render-documents :uri-themes-doc: {uri-docs}/produce-custom-themes-using-asciidoctor-stylesheet-factory :uri-gitscm-repo: https://github.com/git/git-scm.com :uri-prototype: {uri-gitscm-repo}/commits/master/lib/asciidoc.rb :uri-freesoftware: https://www.gnu.org/philosophy/free-sw.html :uri-foundation: https://foundation.zurb.com :uri-tilt: https://github.com/rtomayko/tilt :uri-ruby: https://ruby-lang.org // images: :image-uri-screenshot: https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/screenshot.png {uri-project}/[Asciidoctor] est un processeur de texte et une chaîne de publication _rapide_ et {uri-license}[open source] permettant de convertir du contenu {uri-what-is-asciidoc}[AsciiDoc] en HTML 5, DocBook 5, PDF et d'autres formats. Asciidoctor est écrit en Ruby et fonctionne sur les principaux systèmes d'exploitation. Pour simplifier l'installation, Asciidoctor est publié au format gem sur {uri-rubygem}[RubyGems.org], et il est également disponible en tant que paquet système sur les principales distributions Linux ainsi que sur macOS. Asciidoctor fonctionne aussi sur la JVM avec {uri-asciidoctorj}[AsciidoctorJ] et dans n'importe quel environnement JavaScript avec {uri-asciidoctorjs}[Asciidoctor.js]. Le projet Asciidoctor est {uri-repo}[hébergé sur GitHub]. ifndef::env-site[] Ce document est traduit dans les langues suivantes : + {uri-rel-file-base}README.adoc[Anglais] | {uri-rel-file-base}README-zh_CN.adoc[Chinois] | {uri-rel-file-base}README-jp.adoc[Japonais] endif::[] .Documentation clé [.compact] * {uri-docs}/what-is-asciidoc[Qu'est ce qu'AsciiDoc ?] * {uri-docs}/asciidoc-writers-guide[Guide pour Rédacteur AsciiDoc] * {uri-docs}/asciidoc-syntax-quick-reference[Syntaxe de Référence AsciiDoc] * {uri-docs}/user-manual[Manuel Utilisateur Asciidoctor] ifdef::status[] image:https://img.shields.io/gem/v/asciidoctor.svg[Latest Release, link={uri-gem}] image:https://img.shields.io/badge/rubydoc.info-{release-version}-blue.svg[library (API) docs,link=https://www.rubydoc.info/gems/asciidoctor/{release-version}] image:https://github.com/asciidoctor/asciidoctor/workflows/CI/badge.svg[Build Status (GitHub Actions),link={uri-repo}/actions] image:https://inch-ci.org/github/asciidoctor/asciidoctor.svg?branch=master[Inline docs,link=https://inch-ci.org/github/asciidoctor/asciidoctor] image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[project chat,link=https://asciidoctor.zulipchat.com/] endif::[] == Sponsors Nous souhaitons exprimer toute notre reconnaissance à nos généreux sponsors, sans qui Asciidoctor ne pourrait pas exister. Merci à vous pour votre engagement dans l'amélioration de la documentation technique ! Un apport financier supplémentaire est assuré par https://asciidoctor.org/supporters[la communauté]. Vous pouvez aider ce projet en devant un sponsor sur https://opencollective.com/asciidoctor[OpenCollective]. == En un mot Asciidoctor lit du contenu écrit en texte brut, comme présenté dans la partie gauche de l'image ci-dessous, et le convertit en HTML 5, comme présenté dans la partie droite. Asciidoctor applique une feuille de style par défaut au document HTML 5 afin de fournir une expérience de lecture agréable, clé en main. image::{image-uri-screenshot}[Prévisualisation d'une source AsciiDoc et le rendu HTML correspondant] == Le traitement d'AsciiDoc Asciidoctor lit et analyse la syntaxe du texte écrit en AsciiDoc afin de créer une représentation, sous forme d'arbre, à partir de laquelle des templates sont appliqués pour produire de l'HTML 5, du DocBook 5 et des pages de man(uel). Vous avez la possibilité d'écrire votre propre convertisseur ou de fournir des templates supportant {uri-tilt}[Tilt] pour personnaliser le résultat généré ou pour produire des formats alternatifs. Asciidoctor remplace le processeur AsciiDoc original écrit en Python (`asciidoc.py`). La suite de tests Asciidoctor possède {uri-tests}[plus de 2,000 tests] afin de garantir la compatibilité avec la syntaxe AsciiDoc. En plus de la syntaxe AsciiDoc standard, Asciidoctor reconnaît des balises additionnelles ainsi que des options de formatage, comme les polices d'icônes (par exemple `+icon:fire[]+`) et des éléments d'interface (par exemple `+button:[Enregistrer]+`). Asciidoctor offre aussi un thème moderne et « responsive » basé sur {uri-foundation}[Foundation] pour styliser le document HTML 5 généré. == Asciidoctor est disponible partout où Ruby est disponible Vous pouvez exécuter Asciidoctor dans la JVM en utilisant JRuby. Pour invoquer l'API Asciidoctor directement depuis Java ou d'autres langages de la JVM, utilisez {uri-asciidoctorj}[AsciidoctorJ]. Des plugins basés sur AsciidoctorJ permettent d'intégrer le processeur Asciidoctor avec Apache Maven, Gradle ou Javadoc. Asciidoctor s'exécute également au sein de JavaScript. Nous utilisons https://opalrb.com[Opal] pour transcrire le code source Ruby en JavaScript afin de produire {uri-asciidoctorjs}[Asciidoctor.js], une version pleinement fonctionnelle d’Asciidoctor qui s’intègre dans tout environnement JavaScript, comme un navigateur web ou Node.js. Asciidoctor.js est utilisé pour faire fonctionner les extensions AsciiDoc Preview pour Chrome, Atom, Brackets et autres outils web. == Prérequis Asciidoctor fonctionne sur Linux, macOS et Windows et requiert une des implémentations suivantes de {uri-ruby}[Ruby] : * CRuby (aka MRI) 2.3 - 2.6 * JRuby 9.1 - 9.2 * TruffleRuby (GraalVM) * Opal (JavaScript) [CAUTION] ==== Si vous utilisez un environnement Windows dans une autre langue que l'anglais, vous pourriez tomber sur l'erreur `Encoding::UndefinedConversionError` lors du lancement d'Asciidoctor. Pour corriger ce problème, nous recommandons de changer la page de code en UTF-8 dans votre console : chcp 65001 Après ce changement, tous les maux de tête liés à l'Unicode seront derrière vous. Si vous utilisez un environnement de développement comme Eclipse, assurez-vous de définir l'encodage en UTF-8. Asciidoctor fonctionne mieux lorsque vous utilisez UTF-8 partout. ==== == Installation Asciidoctor peut être installé en utilisant (a) un gestionnaire de paquets Linux, (b) Homebrew pour macOS, (c) la commande `gem install` (recommandé pour les utilisateurs Windows), (d) l'image officielle Docker, ou (e) Bundler. L'avantage d'utiliser le gestionnaire de paquets pour installer la gemme est que l'installation englobe celle des librairies Ruby et RubyGems si elles ne sont pas déjà installées. === (a) Gestionnaires de paquets Linux La version installée par votre gestionnaire de paquets peut ne pas correspondre à la dernière version d'Asciidoctor. Consulter le dépôt de votre distribution Linux pour connaitre la dernière version disponible d'Asciidoctor en fonction de la version de votre distribution. * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (asciidoctor)] * https://software.opensuse.org/package/rubygem-asciidoctor[OpenSUSE (rubygem-asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] Si vous souhaitez installer une version plus récente d'Asciidoctor que celle proposée par votre gestionnaire de paquets, suivre <>. ==== apk (Alpine Linux) Pour installer le paquet sur Alpine Linux, ouvrez un terminal et tapez : $ sudo apk add asciidoctor ==== APT Sur Debian et les distributions dérivées de Debian, comme Ubuntu, utilisez APT pour installer Asciidoctor. Pour installer le paquet, ouvrez un terminal et tapez : $ sudo apt-get install -y asciidoctor ==== DNF Sur les distributions Linux qui utilisent des RPM, comme Fedora, CentOS, et RHEL, utilisez le gestionnaire de paquets DNF pour installer Asciidoctor. Pour installer le paquet, ouvrez un terminal et tapez : $ sudo dnf install -y asciidoctor === (b) Homebrew (macOS) Vous pouvez utiliser Homebrew, le gestionnaire de paquets sur macOS, pour installer Asciidoctor. Si vous n'avez pas encore installé Homebrew, suivez les instructions sur https://brew.sh/[brew.sh]. Une fois Homebrew installé, vous pouvez installer Asciidoctor. Ouvrez un terminal et tapez : $ brew install asciidoctor Homebrew installe la gemme `asciidoctor` dans un répertoire spécifique qui est indépendant des gemmes système. [#gem-install] === (c) gem install Avant d'installer Asciidoctor en utilisant `gem install`, il est recommandé d'utiliser https://rvm.io[RVM] pour installer Ruby dans votre « home » (c'est-à-dire, votre espace utilisateur). Ensuite, vous pouvez utiliser la commande `gem` pour installer ou mettre à jour la gemme Asciidoctor. Quand vous utilisez RVM, les gemmes sont installées dans un répertoire isolé du système. Ouvrez un terminal et tapez : $ gem install asciidoctor Si vous souhaitez installer une version pre-release (c'est-à-dire, une « release candidate »), utilisez : $ gem install asciidoctor --pre === (d) Docker Lire {uri-install-docker}[Installer Asciidoctor en utilisant Docker]. === (e) Bundler . Créez un fichier Gemfile à la racine de votre projet (ou du répertoire courant) . Ajoutez la gemme `asciidoctor` dans votre fichier Gemfile comme ci-dessous : + [source,subs=attributes+] ---- source 'https://rubygems.org' gem 'asciidoctor' # ou spécifier la version explicitement # gem 'asciidoctor', '{release-version}' ---- . Sauvegardez le fichier Gemfile . Ouvrez un terminal et installez la gemme en utilisant : $ bundle Pour mettre à jour la gemme, spécifiez la nouvelle version dans le fichier Gemfile et exécutez `bundle` à nouveau. Utiliser `bundle update` *n*'est *pas* recommandé car les autres gemmes seront également mises à jour, ce qui n'est pas forcément le résultat voulu. == Mise à jour Si vous avez installé Asciidoctor en utilisant votre gestionnaire de paquets, votre système d'exploitation est surement configuré pour mettre à jour automatiquement les paquets, si tel est le cas vous n'avez pas besoin de mettre à jour manuellement Asciidoctor. === apk (Alpine Linux) Pour mettre à jour Asciidoctor, tapez : $ sudo apk add -u asciidoctor === APT Pour mettre à jour Asciidoctor, tapez : $ sudo apt-get upgrade -y asciidoctor === DNF Pour mettre à jour Asciidoctor, tapez : $ sudo dnf update -y asciidoctor === Homebrew (macOS) Pour mettre à jour Asciidoctor, tapez : $ brew update $ brew upgrade asciidoctor === gem install Si vous avez précédemment installé Asciidoctor en utilisant la commande `gem`, vous devez manuellement mettre à jour Asciidoctor quand une nouvelle version est publiée. Vous pouvez mettre à jour Asciidoctor en tappant : $ gem install asciidoctor Quand vous installez une nouvelle version en utilisant `gem install`, vous vous retrouvez avec plusieurs versions installées. Utilisez la commande ci-dessous pour supprimer les anciennes versions : $ gem cleanup asciidoctor == Utilisation Si la gemme Asciidoctor s'est installée correctement, la ligne de commande (CLI) `asciidoctor` sera disponible dans votre PATH. Pour vérifier sa disponibilité, exécutez la commande suivante dans votre terminal : $ asciidoctor --version Vous devriez voir les informations concernant la version d'Asciidoctor et celle de votre environnement Ruby s'afficher dans le terminal. [.output,subs=attributes+] .... Asciidoctor {release-version} [https://asciidoctor.org] Runtime Environment (ruby 2.4.1p111 [x86_64-linux]) (lc:UTF-8 fs:UTF-8 in:- ex:UTF-8) .... Asciidoctor fournit aussi une API. Cette API permet une intégration avec d'autres logiciels Ruby, comme Rails, Sinatra et GitHub, ainsi que d'autres langages comme Java (via {uri-asciidoctorj}[AsciidoctorJ]) ou JavaScript (via {uri-asciidoctorjs}[Asciidoctor.js]). === Interface de Ligne de Commande (CLI) La commande `asciidoctor` vous permet d'invoquer Asciidoctor à partir de la ligne de commande (c'est-à-dire, un terminal). La commande suivante convertit le fichier README.adoc en HTML et sauvegarde le résultat dans le fichier README.html dans le même répertoire. Le nom du fichier HTML généré est tiré de celui du fichier source, l'extension a été changée pour `.html`. $ asciidoctor README.adoc Vous pouvez contrôler le processeur Asciidoctor en ajoutant plusieurs paramètres, vous pouvez en apprendre plus sur ces derniers en utilisant la commande : $ asciidoctor --help Par exemple, pour écrire le fichier dans un répertoire différent, utilisez : $ asciidoctor -D output README.adoc La {uri-manpage}[page man] `asciidoctor` fournit une référence complète sur l'interface de ligne de commande. Référez-vous aux ressources suivantes pour en apprendre davantage sur la façon d'utiliser la commande `asciidoctor`. * {uri-render-doc}[Comment convertir un document ?] * {uri-themes-doc}[Comment utiliser la fabrique de feuilles de style Asciidoctor pour produire des thèmes personnalisés ?] === API Ruby Pour utiliser Asciidoctor dans votre application, vous avez tout d'abord besoin de faire un « require » sur la gemme : [source] require 'asciidoctor' Vous pouvez ensuite convertir un fichier AsciiDoc en fichier HTML en utilisant : [source] Asciidoctor.convert_file 'README.adoc', to_file: true, safe: :safe WARNING: Quand vous utilisez Asciidoctor via l'API, le mode de sûreté par défaut est `:secure`. Dans le mode « secure », plusieurs fonctionnalités centrales sont désactivées, comme la directive `include`. Si vous souhaitez activer ces fonctionnalités, vous aurez besoin de définir explicitement le mode de sûreté avec une la valeur `:server` (recommandée) ou `:safe`. Vous pouvez aussi convertir une chaîne de texte en fragment HTML (pour une insertion dans une page HTML) en utilisant : [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' Asciidoctor.convert content, safe: :safe ---- Si vous voulez le document HTML complet, activez l'option `header_footer` comme ci-dessous : [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' html = Asciidoctor.convert content, header_footer: true, safe: :safe ---- Si vous avez besoin d'accéder au document analysé, vous pouvez séparer la conversion en deux étapes distinctes : [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' document = Asciidoctor.load content, header_footer: true, safe: :safe puts document.doctitle html = document.convert ---- Gardez en tête que si vous n'aimez pas le contenu généré par Asciidoctor, _vous pouvez le changer !_ Asciidoctor supporte des convertisseurs personnalisés qui peuvent prendre en charge la conversion depuis le document analysé jusqu'au contenu généré. Une façon simple de personnaliser les morceaux de contenu générés est d'utiliser le convertisseur de template. Le convertisseur de template vous permet, en utilisant un template supporté par {uri-tilt}[Tilt], de prendre en charge la conversion de n'importe quel élément dans le document. Vous l'aurez compris, vous _pouvez_ complètement prendre le contrôle sur le contenu généré. Pour plus d'informations sur comment utiliser l'API ou personnaliser le contenu généré, référez-vous au {uri-user-manual}[manuel utilisateur]. == Contributions Les contributeurs et contributrices sont toujours les bienvenus ! Si vous découvrez des erreurs ou des oublis dans le code source, la documentation, ou le contenu du site web, s'il vous plaît n'hésitez pas à ouvrir un ticket ou une « pull request » avec un correctif. Voici quelques façons de contribuer : * en utilisant les versions prerelease (alpha, beta ou preview), * en rapportant des anomalies, * en suggérant de nouvelles fonctionnalités, * en écrivant ou éditant la documentation, * en écrivant du code avec des tests -- _Aucun patch n'est trop petit_ ** corriger une coquille, ** ajouter des commentaires, ** nettoyer des espaces inutiles, ** écrire des tests ! * en refactorant le code, * en corrigeant des {uri-issues}[anomalies], * en effectuant des relectures des patches. Le guide du {uri-contribute}[parfait Contributeur] fournit des informations sur comment créer, styliser et soumettre des tickets, des demandes de fonctionnalités, du code et de la documentation pour le projet Asciidoctor. == Être aidé Asciidoctor est développé dans le but de vous aider à écrire et publier du contenu. Mais nous ne pouvons pas le faire sans vos avis ! Nous vous encourageons à poser vos questions et à discuter de n'importe quels aspects du projet sur la liste de discussion, Twitter ou dans le salon de discussion. Chat (Zulip):: {uri-chat} Forum (Nabble):: {uri-discuss} Twitter:: hashtag https://twitter.com/search?f=tweets&q=%23asciidoctor[#asciidoctor] ou la mention https://twitter.com/asciidoctor[@asciidoctor] ifdef::env-github[] De plus amples informations et documentations sur Asciidoctor peuvent être trouvées sur le site web du projet. {uri-project}/[Home] | {uri-news}[News] | {uri-docs}[Docs] endif::[] L'organisation Asciidoctor sur GitHub héberge le code source du projet, le gestionnaire de tickets ainsi que des sous-projets. Dépôt des sources (git):: {uri-repo} Gestionnaire de tickets:: {uri-issues} L'organisation Asciidoctor sur GitHub:: {uri-org} == Licence Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, et les contributeurs individuels d'Asciidoctor. Une utilisation libre de ce logiciel est autorisée sous les termes de la licence MIT. Consultez le fichier {uri-license}[LICENSE] pour plus de détails. == Auteurs *Asciidoctor* est mené par https://github.com/mojavelinux[Dan Allen] et https://github.com/graphitefriction[Sarah White] et reçoit de nombreuses contributions de la part de la {uri-contributors}[géniale communauté] Asciidoctor. Le projet a été initié en 2012 par https://github.com/erebor[Ryan Waldron] et est basé sur {uri-prototype}[un prototype] écrit par https://github.com/nickh[Nick Hengeveld]. *AsciiDoc* a été démarré par Stuart Rackham et a reçu de nombreuses contributions de la part de la communauté AsciiDoc. ifndef::env-site[] == Changelog ifeval::[{safe-mode-level} < 20] include::CHANGELOG.adoc[tag=compact,leveloffset=+1] endif::[] Référez-vous au fichier {uri-changelog}[CHANGELOG] pour une liste complète des changements des versions précédentes. endif::[] asciidoctor-2.0.16/README-jp.adoc000066400000000000000000000575131410231027400163040ustar00rootroot00000000000000= Asciidoctor Dan Allen ; Sarah White ; Ryan Waldron v2.0.16, 2021-08-03 // settings: :idprefix: :idseparator: - :source-language: ruby :language: {source-language} ifndef::env-github[:icons: font] ifdef::env-github[] :status: :outfilesuffix: .adoc :caution-caption: :fire: :important-caption: :exclamation: :note-caption: :paperclip: :tip-caption: :bulb: :warning-caption: :warning: endif::[] // Variables: :release-version: 2.0.16 // URIs: :uri-org: https://github.com/asciidoctor :uri-repo: {uri-org}/asciidoctor :uri-asciidoctorj: {uri-org}/asciidoctorj :uri-asciidoctorjs: {uri-org}/asciidoctor.js :uri-gradle-plugin: {uri-org}/asciidoctor-gradle-plugin :uri-maven-plugin: {uri-org}/asciidoctor-maven-plugin :uri-asciidoclet: {uri-org}/asciidoclet :uri-project: https://asciidoctor.org :uri-gem: https://rubygems.org/gems/asciidoctor ifdef::env-site[:uri-project: link:] :uri-docs: {uri-project}/docs :uri-news: {uri-project}/news :uri-manpage: {uri-project}/man/asciidoctor :uri-issues: {uri-repo}/issues :uri-contributors: {uri-repo}/graphs/contributors :uri-rel-file-base: link: :uri-rel-tree-base: link: ifdef::env-site,env-yard[] :uri-rel-file-base: {uri-repo}/blob/master/ :uri-rel-tree-base: {uri-repo}/tree/master/ endif::[] :uri-changelog: {uri-rel-file-base}CHANGELOG.adoc :uri-contribute: {uri-rel-file-base}CONTRIBUTING.adoc :uri-license: {uri-rel-file-base}LICENSE :uri-tests: {uri-rel-tree-base}test :uri-discuss: https://discuss.asciidoctor.org :uri-chat: https://asciidoctor.zulipchat.com :uri-rubygem: https://rubygems.org/gems/asciidoctor :uri-what-is-asciidoc: {uri-docs}/what-is-asciidoc :uri-user-manual: {uri-docs}/user-manual :uri-install-docker: https://github.com/asciidoctor/docker-asciidoctor //:uri-install-doc: {uri-docs}/install-toolchain :uri-install-macos-doc: {uri-docs}/install-asciidoctor-macos :uri-convert-doc: {uri-docs}/convert-documents :uri-themes-doc: {uri-docs}/produce-custom-themes-using-asciidoctor-stylesheet-factory :uri-gitscm-repo: https://github.com/git/git-scm.com :uri-prototype: {uri-gitscm-repo}/commits/master/lib/asciidoc.rb :uri-freesoftware: https://www.gnu.org/philosophy/free-sw.html :uri-foundation: https://foundation.zurb.com :uri-opal: https://opalrb.com :uri-tilt: https://github.com/rtomayko/tilt :uri-ruby: https://www.ruby-lang.org // images: :image-uri-screenshot: https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/screenshot.png {uri-project}[Asciidoctor]は, {uri-what-is-asciidoc}[AsciiDoc] で書かれたコンテンツをHTML5, DocBook, PDFなどのフォーマットに変換する, _高速で_ {uri-license}[オープンソース] のテキストプロセッサおよびパブリッシングツールチェインです. AsciidoctorはRubyで書かれており, すべての主要オペレーティングシステムで動作します. Asciidoctorプロジェクトは {uri-repo}[GitHubにホスティング] されています. インストールをシンプルにするため, AsciidoctorはRubyGem(gem)パッケージとして, {uri-rubygem}[RubyGems.org] で配布されています. さらに, Asciidoctorは主要なLinuxディストリビューション用およびmacOS用パッケージとしても配布されています. AsciidctorはRubyで動作するだけでなく, {uri-asciidoctorj}[AsciidoctorJ]としてJVM上でも動作します. また, {uri-asciidoctorjs}[Asciidoctor.js]としてどのようなJavaScript環境(ブラウザを含む)でも実行できます. ifndef::env-site,env-yard[] このドキュメントには以下の言語版が存在します: + {uri-rel-file-base}README.adoc[English] | {uri-rel-file-base}README-zh_CN.adoc[汉语] | {uri-rel-file-base}README-de.adoc[Deutsch] | {uri-rel-file-base}README-fr.adoc[Français] endif::[] .主なドキュメント [.compact] * {uri-docs}/what-is-asciidoc[What is AsciiDoc?] * {uri-docs}/asciidoc-writers-guide[AsciiDoc Writer's Guide] * {uri-docs}/user-manual[Asciidoctor User Manual] * {uri-docs}/asciidoc-syntax-quick-reference[AsciiDoc Syntax Reference] ifdef::status[] image:https://img.shields.io/gem/v/asciidoctor.svg[Latest Release, link={uri-gem}] image:https://img.shields.io/badge/rubydoc.info-{release-version}-blue.svg[library (API) docs,link=https://www.rubydoc.info/gems/asciidoctor/{release-version}] image:https://github.com/asciidoctor/asciidoctor/workflows/CI/badge.svg[Build Status (GitHub Actions),link={uri-repo}/actions] image:https://inch-ci.org/github/asciidoctor/asciidoctor.svg?branch=master[Inline docs,link=https://inch-ci.org/github/asciidoctor/asciidoctor] image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[project chat,link=https://asciidoctor.zulipchat.com/] endif::[] == スポンサー {uri-project}/supporters[スポンサー] のみなさまが, このプロジェクトをサポートし, より良いテクニカルドキュメンテーションの実現にコミットメントをしてくださっていることに感謝します. スポンサーのみなさま, ありがとうございます! みなさまの多くのサポートなくしてAsciidoctorは実現不可能です. https://opencollective.com/asciidoctor[OpenCollective] を通じてスポンサーになることにより, このプロジェクトを支援することができます. == 全体像 Asciidoctorは, 下図左側のようなプレーンテキストを読み込んで, 右側のようなHTML5に変換します. 特別な設定をしなくてもきれいな表示が得られるよう, HTML5の出力にはデフォルトのスタイルシートが適用されます. image::{image-uri-screenshot}[AsciiDocソースとレンダリングされたHTMLのプレビュー] == AsciiDocの処理 Asciidoctorは, AsciiDoc文法で書かれたテキストを読み込んでパースします. 次に内蔵コンバータにパースツリーを渡します. これによりHTML5, DocBook 5やman(マニュアルmanページ)が出力されます. 出力をカスタマイズしたりフォーマットを追加したりしたいときは, ユーザ独自のコンバータや {uri-tilt}[Tilt] 対応テンプレートを使用することができます. AsciidoctorはオリジナルのAsciiDoc Pythonプロセッサ(`asciidoc.py`)に完全互換です. Asciidoctorのテストスイートには, AsciiDoc文法との互換性を保証するために {uri-tests}[2350個を超えるテスト] が入っています. Asciidoctorでは, AsciiDocの従来の文法のほかに, Asciidoctorで追加されたマークアップとフォーマッティングオプションが使用できます. フォントベースのアイコン (例えば, `+icon:fire[]+`) やUIエレメント(`+button:[Save]+`)がそれにあたります. またAsciidoctorは, HTML5出力時のスタイルとして {uri-foundation}[Foundation] に基づいたモダンでレスポンシブなテーマも提供します. == RubyのあるところAsciidoctorも動く AsciidoctorはJRubyを用いてJVM上でも実行できます. Javaや他のJVM言語からAsciidoctor APIを直接呼び出すには, {uri-asciidoctorj}[AsciidoctorJ] を使ってください. AsciidoctorJを使ったAsciiDocの処理をビルドに直接組み込むビルドツール用プラグインとして, {uri-maven-plugin}[Apache Maven用], {uri-gradle-plugin}[Gradle用], および {uri-asciidoclet}[Javadoc用] が存在します. AsciidoctorはJavaScriptでも実行可能です. Rubyで書かれたソースを {uri-opal}[Opal] を使ってJavaScriptにトランスパイルすることで {uri-asciidoctorjs}[Asciidoctor.js] が作成されています. Asciidoctor.jsはどんなJavaScript環境(WebブラウザやNode.jsを含む)でも動作する, JavaScript版の完全なAsciidoctorです. Chrome, Atom, Bracketsやその他のウェブベースのツールで, AsciiDocをプレビューするための拡張機能にAsciidoctor.jsが使われています. == 必要条件 AsciidoctorはLinux, macOS, およびWindowsで動作し, 下記の {uri-ruby}[Ruby]実装の一つを必要とします. * CRuby (aka MRI) 2.3 - 2.6 * JRuby 9.1 - 9.2 * TruffleRuby (GraalVM) * Opal (JavaScript) [CAUTION] ==== もし非英語環境のWindowsを使っているなら, Asciidoctorを起動した時に `Encoding::UndefinedConversionError` に遭遇するかもしれません. これを解決するには, 以下のコマンドにより, 使っているコンソールの有効なコードページをUTF-8に変更することを推奨します: chcp 65001 一度この変更をすると, Unicode関連の頭痛の種は消えるでしょう. もしEclipseのようなIDEを使っているなら, 同様にエンコーディングをUTF-8にするのを忘れないでください. AsciidoctorはUTF-8の環境において最も良好に動作します. ==== == インストール Asciidoctorは, (a) 主なLinuxディストリビューションのパッケージマネージャ, (b) macOSのHomebrew, (c) `gem install` コマンド(Windowsユーザに推奨), (d) Asciidoctor Dockerイメージ, あるいは(e) Bundlerを用いてインストールできます. Linuxパッケージマネージャを用いてインストールする利点は, もしRubyやRubyGemsライブラリがまだインストールされていなかったら, それらをインストールしてくれることです. === (a) Linuxのパッケージマネージャ パッケージマネージャによってインストールされるAsciidoctorは最新バージョンではないかもしれません. ディストリビューションの各リリースにおいてどのバージョンのAsciidoctorがパッケージされているかを確認するには, パッケージリポジトリを参照してください. * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] * https://www.archlinux.org/packages/?name=asciidoctor[Arch Linux (asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (asciidoctor)] * https://software.opensuse.org/package/rubygem-asciidoctor[OpenSUSE (rubygem-asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] パッケージマネージャによってインストールされるバージョンよりも新しいAsciidoctorを使用したい場合は, <> を参照してください. ==== apk (Alpine Linux) Alpine Linuxにgemをインストールするには, ターミナルを開き, 以下を入力してください: $ sudo apk add asciidoctor ==== pacman (Arch Linux) Archベースのディストリビューションにgemをインストールするには, ターミナルを開き, 以下を入力してください: $ sudo pacman -S asciidoctor ==== APT Debian, またはUbuntuなどDebianベースのディストリビューションでは, APTを使ってAsciidoctorをインストールしてください. Asciidoctorパッケージをインストールするには, ターミナルを開き, 以下を入力してください: $ sudo apt-get install -y asciidoctor ==== DNF Fedora, CentOS, RHELなどRPMベースのLinuxディストリビューションでは, DNFパッケージマネージャを使ってAsciidoctorをインストールしてください. Asciidoctorパッケージをインストールするには, ターミナルを開き, 以下を入力してください: $ sudo dnf install -y asciidoctor === (b) Homebrew (macOS) macOSでは, パッケージマネージャHomebrewを使用してAsciidoctorをインストールすることができます. Homebrewをお持ちでない場合は, まず https://brew.sh/[brew.sh] の説明に従ってHomebrewをインストールしてください. Homebrewをインストールできたら, `asciidoctor` gemをインストールすることができます. ターミナルを開き, 以下を入力してください: $ brew install asciidoctor Homebrewにより, システムレベルのgemとは別の独立したprefixのパスに `asciidoctor` gemがインストールされます. === (c) Windows WindowsでAsciidoctorを使う場合は, 簡単な方法が2つあります. ==== Chocolatey すでにお使いのマシンで https://chocolatey.org[chocolatey] を使用しているなら, 以下の方法を使用することができます: [source] ---- choco install ruby ---- そのあとは <> に従ってください. ==== Rubyinstaller https://rubyinstaller.org/downloads/[Rubyinstaller] を使用したい場合は, お使いのWindowsのバージョンに適したRubyinstallerをダウンロードしてRubyをインストールしたあと, <> に従ってください. [#gem-install] === (d) gem install Asciidoctorを `gem install` を使ってインストールするのであれば, その前に https://rvm.io[RVM] を使ってhomeディレクトリ(つまりユーザ領域)にRubyをインストールしておくべきです. そうすれば, `gem` コマンドを使用して安全にAsciidoctor gemのインストールやアップデートができます. RVMを使用すると, システムから隔離された場所にgemがインストールされます. ターミナルを開き, 以下のように入力してください: $ gem install asciidoctor もし, 先行リリースバージョン(例えばリリース候補版)をインストールしたければ以下のようにします. $ gem install asciidoctor --pre === (e) Docker {uri-install-docker}[Installing Asciidoctor using Docker]を参照してください. === (f) Bundler . プロジェクトのルートフォルダ(またはカレントディレクトリ)にGemfileを作成 . `asciidoctor` gemをGemfileに以下のように追加: + [source,subs=attributes+] ---- source 'https://rubygems.org' gem 'asciidoctor' # または明示的にバージョンを指定 # gem 'asciidoctor', '{release-version}' ---- . Gemfileを保存 . ターミナルを開き, gemをインストール: $ bundle gemをアップグレードするには, Gemfileで新バージョンを指定し, `bundle` を再び実行してください. `bundle update` を(gemを指定せずに)行うことは推奨 *されません* . 他のgemもアップデートされて思わぬ結果になるかもしれないためです. == アップグレード オペレーティングシステムのパッケージマネージャでAsciidoctorをインストールしたのであれば, おそらくパッケージは自動的にアップデートされるように設定されています. その場合は, gemを手動でアップデートする必要はありません. === apk (Alpine Linux) gemをアップグレードするには, 以下を使用してください: $ sudo apk add -u asciidoctor === APT gemをアップグレードするには, 以下を使用してください: $ sudo apt-get upgrade -y asciidoctor === DNF gemをアップグレードするには, 以下を使用してください: $ sudo dnf update -y asciidoctor === Homebrew (macOS) gemをアップグレードするには, 以下を使用してください: $ brew update $ brew upgrade asciidoctor === gem install `gem` コマンドを使ってAsciidoctorをインストールした場合は, 新しいバージョンのAsciidoctorがリリースされたら手動でアップグレードする必要があります. 以下を入力することでアップグレードできます: $ gem install asciidoctor `gem install` を使って新しいバージョンのgemをインストールすると, 複数のバージョンがインストールされた状態になります. 以下のコマンドを使って古いバージョンを削除してください. $ gem cleanup asciidoctor == 使い方 Asciidoctorのインストールが成功すると, `asciidoctor` コマンドがPATHに存在するようになり, Asciidoctorのコマンドラインインターフェース(CLI)が使用できるようになります. 確認のために, ターミナルで以下を実行しましょう: $ asciidoctor --version AsciidoctorのバージョンとRuby環境についての情報がターミナルに出力されるはずです. [.output,subs=attributes+] .... Asciidoctor {release-version} [https://asciidoctor.org] Runtime Environment (ruby 2.6.0p0 [x86_64-linux]) (lc:UTF-8 fs:UTF-8 in:- ex:UTF-8) .... AsciidoctorはAPIも提供します. APIは他のRubyソフトウェア, たとえばRails, Sinatra, GitHub, そして他の言語, たとえばJava ({uri-asciidoctorj}[AsciidoctorJ] 経由)やJavaScript ({uri-asciidoctorjs}[Asciidoctor.js] 経由)と組み合わせて使用するためのものです. === コマンドラインインターフェース (CLI) `asciidoctor` コマンドによりコマンドライン(つまりターミナル)からAsciidoctorを起動することができます. 次のコマンドにより, README.adocというファイルがHTMLに変換され, 結果が同じディレクトリのREADME.htmlとして保存されます. 生成されるHTMLファイルの名前は, ソースファイルのファイル名の拡張子を `.html` に替えたものとなります. $ asciidoctor README.adoc さまざまなフラグやスイッチを与えることでAsciidoctorプロセッサをコントロールすることができます. フラグやスイッチの説明は以下のコマンドで表示されます: $ asciidoctor --help 例えば, ファイルを異なるディレクトリに書き出すには以下を使用します: $ asciidoctor -D output README.adoc コマンドラインインタフェースの完全なリファレンスは `asciidoctor` の {uri-manpage}[manページ] にあります. `asciidoctor` コマンドの使い方の詳細については以下を参照してください. * {uri-convert-doc}[How do I convert a document?] * {uri-themes-doc}[How do I use the Asciidoctor stylesheet factory to produce custom themes?] === Ruby API Asciidoctorをアプリケーションの中で使うには, まずgemをrequireする必要があります: [source] require 'asciidoctor' そうすると, 以下のようにしてAsciiDocソースファイルをHTMLファイルに変換できます: [source] Asciidoctor.convert_file 'README.adoc', to_file: true, safe: :safe WARNING: AsciidoctorをAPI経由で使っているとき, デフォルトのセーフモードは `:secure` (セキュアモード)です. セキュアモードでは, `include` ディレクティブを含むいくつかのコア機能が無効化されています. これらの機能を有効化したい場合, 明示的にセーフモードを `:server` (推奨)か `:safe` にする必要があります. AsciiDoc文字列を, 埋め込み用HTML(HTMLページヘの挿入用)に変換することもできます: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' Asciidoctor.convert content, safe: :safe ---- もし完全なHTMLドキュメントが必要であれば, 以下のように `header_footer` オプションを有効にしてください: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' html = Asciidoctor.convert content, header_footer: true, safe: :safe ---- パースされたドキュメントにアクセスしたい場合は, 変換を複数のステップに分割します: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' document = Asciidoctor.load content, header_footer: true, safe: :safe puts document.doctitle html = document.convert ---- Asciidoctorの生成する出力が気に入らない場合は, _あなたはそれを変更できる_ ことを忘れないでください! パースされたドキュメントを出力形式に変換するコンバータは, カスタマイズが可能です. 出力を部分的にカスタマイズする簡単な方法としてはテンプレートコンバータがあります. テンプレートコンバータでは, ドキュメントの各ノードの変換に {uri-tilt}[Tilt]対応テンプレートファイルを使うことができます. さまざまな方法を使って出力は100%制御することが _できます_ . APIの使い方や出力のカスタマイズ方法についてのより詳しい情報は {uri-user-manual}[ユーザマニュアル] を参照してください. == コントリビューション 新しいコントリビューションを常に歓迎します! もしソースコード, ドキュメント, あるいはウェブサイトに間違いや不備を見つけたら遠慮なく, イシューを作成するか, 修正をおこなってpull requestを作成してください. *あなた* にもできることがあります: * 先行バージョン(alpha, beta, またはpreview版)の使用 * バグレポート * 新機能提案 * ドキュメントの執筆または編集 * テストをつけてコードを書くこと -- _どのようなパッチであれ小さすぎるなどということはありません_ ** typoの修正 ** コメントの追加 ** 一貫性のないホワイトスペースの除去 ** テストの記述! * リファクタリング * {uri-issues}[イシュー] の解決 * パッチのレビュー Asciidoctorプロジェクトにイシュー, 機能リクエスト, コード, ドキュメントを送る際の, 作成方法, スタイル, および送り方は, {uri-contribute}[Contributing] ガイドに記載されています. == 助けを得る Asciidoctorは, コンテンツの執筆と公開を簡単にするために開発されています. しかしあなたからのフィードバックがなくてはAsciidoctorの開発は進みません! ディスカッションリスト, Twitter, チャットルームを使って, 質問をしたりプロジェクトのさまざまな側面について話し合ったりすることをお勧めします. チャット(Zulip):: {uri-chat} ディスカッションリスト(Nabble):: {uri-discuss} Twitter:: ハッシュタグ https://twitter.com/search?f=tweets&q=%23asciidoctor[#asciidoctor] またはメンション https://twitter.com/asciidoctor[@asciidoctor] ifdef::env-github[] 以下のプロジェクトサイトに, Asciidoctorに関するさらに詳しい情報やドキュメントがあります. {uri-project}[Home] | {uri-news}[News] | {uri-docs}[Docs] endif::[] GitHub上のAsciidoctorのorganizationではプロジェクトのソースコード, イシュートラッカー, サブプロジェクトが管理されています. ソースリポジトリ(git):: {uri-repo} イシュートラッカー:: {uri-issues} GitHub上のAsciidoctorのorganization:: {uri-org} == ライセンス Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor. 本ソフトウェアはMITライセンスのもとで使用できます. ライセンスの詳細については {uri-license}[LICENSE] ファイルを参照してください. == 作者 *Asciidoctor* は https://github.com/mojavelinux[Dan Allen] と https://github.com/graphitefriction[Sarah White] がリードし, Asciidoctorの素晴らしきコミュニティの {uri-contributors}[数多くのメンバ] からコントリビューションを受けてきました. このプロジェクトは https://github.com/nickh[Nick Hengeveld] の {uri-prototype}[プロトタイプ] をベースに https://github.com/erebor[Ryan Waldron] により2012年から創始されました. *AsciiDoc* は Stuart Rackham により創始され, AsciiDocコミュニティの数多くのメンバからコントリビューションを受けてきました. ifndef::env-site[] == 変更履歴 ifeval::[{safe-mode-level} < 20] include::CHANGELOG.adoc[tag=compact,leveloffset=+1] endif::[] 過去のリリースの完全な変更点リストについては {uri-changelog}[CHANGELOG] を参照してください. endif::[] asciidoctor-2.0.16/README-zh_CN.adoc000066400000000000000000000416311410231027400166660ustar00rootroot00000000000000= Asciidoctor Dan Allen ; Sarah White ; Ryan Waldron v2.0.16, 2021-08-03 // settings: :page-layout: base :idprefix: :idseparator: - :source-language: ruby :language: {source-language} ifndef::env-github[:icons: font] ifdef::env-github[] :status: :outfilesuffix: .adoc :caution-caption: :fire: :important-caption: :exclamation: :note-caption: :paperclip: :tip-caption: :bulb: :warning-caption: :warning: endif::[] // Variables: :release-version: 2.0.16 // URIs: :uri-org: https://github.com/asciidoctor :uri-repo: {uri-org}/asciidoctor :uri-asciidoctorj: {uri-org}/asciidoctorj :uri-asciidoctorjs: {uri-org}/asciidoctor.js :uri-project: https://asciidoctor.org ifdef::env-site[:uri-project: link:] :uri-docs: {uri-project}/docs :uri-news: {uri-project}/news :uri-manpage: {uri-project}/man/asciidoctor :uri-issues: {uri-repo}/issues :uri-contributors: {uri-repo}/graphs/contributors :uri-rel-file-base: link: :uri-rel-tree-base: link: ifdef::env-site[] :uri-rel-file-base: {uri-repo}/blob/master/ :uri-rel-tree-base: {uri-repo}/tree/master/ endif::[] :uri-changelog: {uri-rel-file-base}CHANGELOG.adoc :uri-contribute: {uri-rel-file-base}CONTRIBUTING.adoc :uri-license: {uri-rel-file-base}LICENSE :uri-tests: {uri-rel-tree-base}test :uri-discuss: https://discuss.asciidoctor.org :uri-chat: https://asciidoctor.zulipchat.com :uri-rubygem: https://rubygems.org/gems/asciidoctor :uri-what-is-asciidoc: {uri-docs}/what-is-asciidoc :uri-user-manual: {uri-docs}/user-manual :uri-install-docker: https://github.com/asciidoctor/docker-asciidoctor //:uri-install-doc: {uri-docs}/install-toolchain :uri-install-osx-doc: {uri-docs}/install-asciidoctor-macosx :uri-render-doc: {uri-docs}/render-documents :uri-themes-doc: {uri-docs}/produce-custom-themes-using-asciidoctor-stylesheet-factory :uri-gitscm-repo: https://github.com/git/git-scm.com :uri-prototype: {uri-gitscm-repo}/commits/master/lib/asciidoc.rb :uri-freesoftware: https://www.gnu.org/philosophy/free-sw.html :uri-foundation: https://foundation.zurb.com :uri-tilt: https://github.com/rtomayko/tilt :uri-ruby: https://ruby-lang.org // images: :image-uri-screenshot: https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/screenshot.png {uri-project}/[Asciidoctor] 是一个 _快速_ 文本处理器和发布工具链,它可以将 {uri-what-is-asciidoc}[AsciiDoc] 文档转化成 HTML 5、 DocBook 5 以及其他格式。 Asciidoctor 由 Ruby 编写,打包成 RubyGem,然后发布到 {uri-rubygem}[RubyGems.org] 上。 这个 gem 还被包含到几个 Linux 发行版中,其中包括 Fedora、Debian 和 Ubuntu。 Asciidoctor 是开源的,link:{uri-repo}[代码托管在 GitHub],遵从 {uri-license}[MIT] 协议。 该文档有如下语言的翻译版: * {uri-rel-file-base}README.adoc[English] * {uri-rel-file-base}README-fr.adoc[Français] * {uri-rel-file-base}README-jp.adoc[日本語] .关键文档 [.compact] * {uri-docs}/what-is-asciidoc[Asciidoctor 是什么?] * {uri-docs}/asciidoc-writers-guide[AsciiDoc 写作指南] * {uri-docs}/asciidoc-syntax-quick-reference[AsciiDoc 语法快速参考] * {uri-docs}/user-manual[Asciidoctor 用户手册] ifdef::status[] image:https://img.shields.io/gem/v/asciidoctor.svg[Latest Release, link={uri-gem}] image:https://img.shields.io/badge/rubydoc.info-{release-version}-blue.svg[library (API) docs,link=https://www.rubydoc.info/gems/asciidoctor/{release-version}] image:https://github.com/asciidoctor/asciidoctor/workflows/CI/badge.svg[Build Status (GitHub Actions),link={uri-repo}/actions] image:https://inch-ci.org/github/asciidoctor/asciidoctor.svg?branch=master[Inline docs,link=https://inch-ci.org/github/asciidoctor/asciidoctor] image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[project chat,link=https://asciidoctor.zulipchat.com/] endif::[] .Ruby 所至, Asciidoctor 相随 **** 使用 JRuby 让 Asciidoctor 运行在 Java 虚拟机上。 使用 {uri-asciidoctorj}[AsciidoctorJ] 直接调用 Asciidoctor 的 API 运行在 Java 或者其他 Java 虚拟机中。 基于 AsciidoctorJ 有好多插件可用,这些插件可以将 Asciidoctor 整合到 Apache Maven,Gradle 或 Javadoc 构建中。 Asciidoctor 也可以运行在 JavaScript 上。 我们可以使用 https://opalrb.com[Opal] 将 Ruby 源码编译成 JavaScript 生成 {uri-asciidoctorjs}[Asciidoctor.js] 文件,这是一个全功能版的 Asciidoctor,可以运行在任意的 JavaScript 环境中,比如 Web 浏览器 或 Node.js。 Asciidoctor.js 被用于预览 AsciiDoc,支持 Chrome 扩展,Atom,Brackets 或其他基于 Web 的工具。 **** [#the-big-picture] == 整体概况 Asciidoctor 以纯文本格式读取内容,见下图左边的面板,并将它转换成 HTML 5 呈现在右侧面板中。 Asciidoctor 将默认的样式表应用到 HTML 5 文档上,提供一个愉快的开箱即用的体验。 image::{image-uri-screenshot}[AsciiDoc 源文预览和相应的 HTML 渲染] [#asciidoc-processing] == AsciiDoc Processing Asciidoctor 会读取并处理用 AsciiDoc 语法写的文件,然后将解析出来的解析树参数交给内置的转化器去生成 HTML 5,DocBook 5 或帮助手册页面输出。 你可以选择使用你自己的转化器或者加载 {uri-tilt}[Tilt] - 支持通过模板来自定义输出或产生附加的格式。 NOTE: Asciidoctor是为了直接替换原 AsciiDoc Python 处理器(`asciidoc.py`)。 Asciidoctor 测试套件含有 {uri-tests}[> 1,600 测试示例] 来确保和 AsciiDoc 语法的兼容性。 除了传统的 AsciiDoc 语法,Asciidoctor 还添加额外的标记和格式设置选项,例如 font-based 图标(例如: `+icon:fire[]+`)和 UI 元素(例如: `+button:[Save]+`)。 Asciidoctor 还提供了一个基于 {uri-foundation}[Foundation] 的现代化的、响应式主题来美化 HTML 5 输出。 [#requirements] == 要求 Asciidoctor 可以运行在 Linux,OSX (Mac) 和 Windows 系统,但需要安装下面任意一个 {uri-ruby}[Ruby] 环境去实现: * CRuby (aka MRI) 2.3 - 2.6 * JRuby 9.1 - 9.2 * TruffleRuby (GraalVM) * Opal (JavaScript) 我们欢迎你来帮助在这些以及其他平台测试 Asciidoctor。 请参考 <<{idprefix}contributing,Contributing>> 来了解如何参与。 [CAUTION] ==== 如果在非英语的 Windows 环境,当你去调用 Asciidoctor 时,可能会碰到 `Encoding::UndefinedConversionError` 的错误提示。 为了解决这个问题,我们建议将控制台的编码更改为 UTF-8: chcp 65001 一旦你做了这个改变,所有的编码问题,都将迎刃而解。 如果你使用的是像 Eclipse 这样的 IDE 集成开发工具,你也需要确保他被你设置为 UTF-8 编码。 使用 UTF-8 能使 Asciidoctor 在任何地方都能正常工作。 ==== [#installation] == 安装 Asciidoctor 可以通过三种方式安装(a)`gem install` 命令;(b)Bundler打包编译;(c)流行的 Linux 发行版的包管理器 TIP: 使用 Linux 包管理器安装的好处是如果你机器在之前没有安装 Ruby 和 RubyGems 库,当你选择这种方式安装时它们会一并安装上去。 不利的是在 gem 发布之后,这类安装包并不是立即可用。 如果你需要安装最新版,你应该总是优先使用 `gem` 命令安装。 [#a-gem-install] === (a) gem 安装 打开一个终端输入如下命令(不含开头的 `$`): $ gem install asciidoctor 如果想安装一个预览版(比如:候选发布版),请使用: $ gem install asciidoctor --pre .升级 [TIP] ==== 如果你安装有的是旧版本 Asciidoctor,你可以使用下面的命令来升级: $ gem update asciidoctor 如果使用 `gem install` 命令来安装一个新版本的 gem 来代替升级,会安装多个版本。 这种情况,你可以使用下面的 gem 命令来移除旧版本: $ gem cleanup asciidoctor ==== [#b-bundler] === (b) Bundler . 在项目的根目录(或者当前路径),创建一个 `Gemfile` 文件; . 在这个文件中添加 `asciidoctor` gem 如下: + [source,subs=attributes+] ---- source 'https://rubygems.org' gem 'asciidoctor' # 或者明确指明版本 # gem 'asciidoctor', '{release-version}' ---- . 保存 `Gemfile` 文件 . 打开终端,使用如下命令安装 gem: $ bundle 要升级 gem 的话,在 `Gemfile` 文件中,指明新版本,然后再次运行 `bundle` 即可。 *不推荐* 直接使用 `bundle update` 命令,因为它还会升级其他 gem,也许会造成不可预料的结果。 [#c-linux-package-managers] === (c) Linux 包管理 [#dnf-fedora-21-or-greater] ==== DNF (Fedora 21 或更高版本) 在 Fedora 21 或更高版本中安装这个 gem,可以使用 dnf。打开终端并输入如下命令: $ sudo dnf install -y asciidoctor 升级则使用: $ sudo dnf update -y asciidoctor TIP: 如果你的 Fedora 系统配置的是自动升级包,在这种情况下,不需要你亲自动手升级。 [#apt-get-debian-ubuntu-mint] ==== apt-get (Debian, Ubuntu, Mint) 在 Debian,Ubuntu 或 Mint 中安装这个 gem,请打开终端并输入如下命令: $ sudo apt-get install -y asciidoctor 升级则使用: $ sudo apt-get upgrade -y asciidoctor TIP: 如果你的 Debian 或 Ubuntu 系统配置的是自动升级包,在这种情况下,不需要你亲自动手升级。 使用包管理器( apt-get )安装的 Asciidoctor 的版本也许不是最新发布版。 请查看发行版的包库,来确定每个发行版是打包的哪个版本。 * https://packages.debian.org/search?keywords=asciidoctor&searchon=names&exact=1&suite=all§ion=all[Debian 发行版中的 asciidoctor] * https://packages.ubuntu.com/search?keywords=asciidoctor&searchon=names&exact=1&suite=all§ion=all[Ubuntu 发行版中的 asciidoctor] * https://community.linuxmint.com/software/view/asciidoctor[Mint 发行版中的 asciidoctor] [CAUTION] ==== 我们建议不要使用 `gem update` 来升级包管理的 gem。 这样做会使系统进入不一致的状态,包管理工具将不再跟踪相关文件(通常安装在 /usr/local 下。) 简单地说,系统的 gem 只能由包管理器进行管理。 如果你想使用一个比包管理器安装的更新版本的 Asciidoctor,你应该使用 https://rvm.io[RVM] 在你的用户家目录(比如:用户空间)下安装 Ruby。 然后,你就可以放心地使用 `gem` 命令来安装或者更新 Asciidoctor gem。 当使用 RVM 时,gem 将被安装到与系统隔离的位置。 ==== [#apk-alpine-linux] ==== apk (Alpine Linux) 在 Alpine Linux 中安装这个 gem,请打开终端并输入如下命令: $ sudo apk add asciidoctor 升级则使用: $ sudo apk add -u asciidoctor TIP: 如果你的 Alpine Linux 系统配置的是自动升级包,在这种情况下,不需要你亲自动手升级。 [#other-installation-options] === 其他安装选项 * {uri-install-docker}[使用 Docker 安装 Asciidoctor ] * {uri-install-osx-doc}[在 Mac OS X 安装 Asciidoctor ] [#usage] == 使用 如果成功安装 Asciidoctor,则在可执行程序路径中,`asciidoctor` 就可用了。 为了验证它的可用性,你可以在终端中执行如下命令: $ asciidoctor --version 你应该看到关于 Asciidoctor 和 Ruby 环境信息将打印到你的终端上。 [.output,subs=attributes+] .... Asciidoctor {release-version} [https://asciidoctor.org] Runtime Environment (ruby 2.4.1p111 [x86_64-linux]) (lc:UTF-8 fs:UTF-8 in:- ex:UTF-8) .... Asciidoctor 还提供了一套 API。 这套 API 是为了整合其他的 Ruby 软件,例如 Rails、Sinatra、GitHub,甚至其他语言,比如 Java (通过 {uri-asciidoctorj}[AsciidoctorJ]) 和 JavaScript (通过 {uri-asciidoctorjs}[Asciidoctor.js])。 [#command-line-interface-cli] === 命令行(CLI) `asciidoctor` 命令可以让你通过命令行(比如:终端)来调用 Asciidoctor。 下面的命令将 README.adoc 文件转化为 HTML,并且保存到同一目录下的 README.html 文件中。 生成的 HTML 文件名源自源文件名,只是将其扩展名改为了 `.html`。 $ asciidoctor README.adoc 您可以通过添加各种标志和开关控制 Asciidoctor 处理器,通过下面的命令你可以学习它的更多用法: $ asciidoctor --help 比如,将文件写入到不同路径里,使用如下命令: $ asciidoctor -D output README.adoc `asciidoctor` {uri-manpage}[帮助页面] 提供了这个命令的完整参考。 点击下面的资源,学习更多关于 `asciidoctor` 命令的用法。 * {uri-render-doc}[如何转化文档?] * {uri-themes-doc}[如何使用 Asciidoctor 样式工厂来创建自定义主题?] [#ruby-api] === Ruby API 为了在你应用中使用 Asciidoctor,首先需要引入这个 gem: [source] require 'asciidoctor' 然后,你可以通过下面的代码将 AsciiDoc 源文件转化成一个 HTML 文件: [source] Asciidoctor.convert_file 'README.adoc', to_file: true, safe: :safe WARNING: 当你通过 API 使用 Asciidoctor 时,默认的安全模式是 `:secure`。 在 secure 模式下,很多核心特性将不可用,包括 `include` 特性。 如果你想启用这些特性,你需要明确设置安全模式为 `:server` (推荐)或 `:safe`。 你也可以将 AsciiDoc 字符串转化为可内嵌的 HTML (为了插入到一个 HTML 页面),用法如下: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' Asciidoctor.convert content, safe: :safe ---- 如果你想得到完整的 HTML 文档,只需要启用 `header_footer` 选项即可。如下: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' html = Asciidoctor.convert content, header_footer: true, safe: :safe ---- 如果你想访问已经处理过的文档,可以将转化过程拆分成离散的几步: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' document = Asciidoctor.load content, header_footer: true, safe: :safe puts document.doctitle html = document.convert ---- 请注意:如果你不喜欢 Asciidoctor 输出结果,_你完全可以改变它。_ Asciidoctor 支持自定义转化器,它可以操作从待处理文件到生成文档整个环节。 一个简单的、细微地自定义输出的方式是使用模板转化器。 模板转化器运行你提供一个 {uri-tilt}[Tilt] 模板,这样通过模板文件来操作转化出的文档的每个节点。 这样,你就 _可以_ 百分之百地控制你的输出。 关于更多关于 API 或自定义输出信息,请参考 {uri-user-manual}[用户帮助手册]。 [#contributing] == 贡献 自由软件的精神鼓励 _每个人_ 来帮助改善这个项目。 如果你在源码、文档或网站内容中发现错误或漏洞,请不要犹豫,提交一个议题或者推送一个修复请求。 随时欢迎新的贡献者! 这里有几种 *你* 可以做出贡献的方式: * 使用预发布版本(alpha, beta 或 preview) * 报告 Bug * 提议新功能 * 编写文档 * 编写规范 * 编写 -- _任何补丁都不小。_ ** 修正错别字 ** 添加评论 ** 清理多余空白 ** 编写测试! * 重构代码 * 修复 {uri-issues}[issues] * 审查补丁 {uri-contribute}[贡献指南]提供了如何提供贡献,包括如何创建、修饰和提交问题、特性、需求、代码和文档给 Asciidoctor 项目。 [#getting-help] == 获得帮助 开发 Asciidoctor 项目是未来了帮助你更容易地书写和发布你的内容。 但是,如果没有反馈,我们将寸步难行。 我们鼓励你在讨论组、Twitter或聊天室里,提问为题,讨论项目的方方面面, 聊天 (Zulip):: {uri-chat} 讨论组 (Nabble):: {uri-discuss} Twitter:: https://twitter.com/search?f=tweets&q=%23asciidoctor[#asciidoctor] 来加入话题 或 https://twitter.com/asciidoctor[@asciidoctor] at并提醒我们 ifdef::env-github[] Further information and documentation about Asciidoctor can be found on the project's website. {uri-project}/[Home] | {uri-news}[News] | {uri-docs}[Docs] endif::[] Asciidoctor 组织在 GitHub 托管代码、议案跟踪和相关子项目。 代码库 (git):: {uri-repo} 议案跟踪:: {uri-issues} 在 GitHub 的 Asciidoctor 组织:: {uri-org} [#copyright-and-licensing] == 版权和协议 Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor. 这个软件的免费使用是在MIT许可条款授予的。 请看 {uri-license}[版权声明] 文件来获取更多详细信息。 [#authors] == 作者 *Asciidoctor* 由 https://github.com/mojavelinux[Dan Allen] 和 https://github.com/graphitefriction[Sarah White] 领导,并从 Asciidoctor 社区的 {uri-contributors}[很多其他独立开发者] 上收到了很多贡献。 项目最初由 https://github.com/erebor[Ryan Waldron] 于 2012年基于 https://github.com/nickh[Nick Hengeveld] 的 {uri-prototype}[原型] 创建。 *AsciiDoc* 由 Stuart Rackham 启动,并从 AsciiDoc 社区的其他独立开发者上收到很多贡献。 == Changelog 请看 {uri-changelog}[CHANGELOG]。 asciidoctor-2.0.16/README.adoc000066400000000000000000000477211410231027400156750ustar00rootroot00000000000000= Asciidoctor Dan Allen ; Sarah White ; Ryan Waldron v2.0.16, 2021-08-03 // settings: :idprefix: :idseparator: - :source-language: ruby :language: {source-language} ifndef::env-github[:icons: font] ifdef::env-github[] :status: :outfilesuffix: .adoc :caution-caption: :fire: :important-caption: :exclamation: :note-caption: :paperclip: :tip-caption: :bulb: :warning-caption: :warning: endif::[] // Variables: :release-version: 2.0.16 // URLs: :url-org: https://github.com/asciidoctor :url-repo: {url-org}/asciidoctor :url-asciidoctorj: {url-org}/asciidoctorj :url-asciidoctorjs: {url-org}/asciidoctor.js :url-gradle-plugin: {url-org}/asciidoctor-gradle-plugin :url-maven-plugin: {url-org}/asciidoctor-maven-plugin :url-asciidoclet: {url-org}/asciidoclet :url-project: https://asciidoctor.org ifdef::env-site[:url-project: link:] :url-docs: https://docs.asciidoctor.org :url-news: {url-project}/news :url-manpage: {url-project}/man/asciidoctor :url-issues: {url-repo}/issues :url-contributors: {url-repo}/graphs/contributors :url-rel-file-base: link: :url-rel-tree-base: link: ifdef::env-site,env-yard[] :url-rel-file-base: {url-repo}/blob/master/ :url-rel-tree-base: {url-repo}/tree/master/ endif::[] :url-changelog: {url-rel-file-base}CHANGELOG.adoc :url-contribute: {url-rel-file-base}CONTRIBUTING.adoc :url-license: {url-rel-file-base}LICENSE :url-tests: {url-rel-tree-base}test :url-discuss: https://discuss.asciidoctor.org :url-chat: https://asciidoctor.zulipchat.com :url-rubygem: https://rubygems.org/gems/asciidoctor :url-what-is-asciidoc: {url-docs}/asciidoctor/latest/#relationship-to-asciidoc :url-install-docker: https://github.com/asciidoctor/docker-asciidoctor :url-opal: https://opalrb.com :url-tilt: https://github.com/rtomayko/tilt :url-ruby: https://www.ruby-lang.org //:url-prototype: https://github.com/git/git-scm.com/commits/master/lib/asciidoc.rb This page doesn't exist anymore. // images: :image-url-screenshot: https://raw.githubusercontent.com/asciidoctor/asciidoctor/master/screenshot.png {url-project}[Asciidoctor] is a fast, open source, Ruby-based text processor for parsing AsciiDoc(R) into a document model and converting it to output formats such as HTML 5, DocBook 5, manual pages, PDF, EPUB 3, and other formats. Asciidoctor also has an ecosystem of extensions, converters, build plugins, and tools to help you author and publish content written in {url-what-is-asciidoc}[AsciiDoc]. You can find the documentation for these projects at {url-docs}. In addition to running on Ruby, Asciidoctor can be executed on a JVM using {url-asciidoctorj}[AsciidoctorJ] or in any JavaScript environment using {url-asciidoctorjs}[Asciidoctor.js]. ifndef::env-site,env-yard[] This document is also available in the following languages: + {url-rel-file-base}README-zh_CN.adoc[汉语] | {url-rel-file-base}README-de.adoc[Deutsch] | {url-rel-file-base}README-fr.adoc[Français] | {url-rel-file-base}README-jp.adoc[日本語] endif::[] .Key documentation [.compact] * {url-docs}/asciidoctor/latest/[Asciidoctor Documentation] * {url-docs}/asciidoc/latest/[AsciiDoc Language Documentation] * {url-docs}/asciidoc/latest/syntax-quick-reference/[AsciiDoc Syntax Quick Reference] ifdef::status[] image:https://img.shields.io/gem/v/asciidoctor.svg[Latest Release, link={url-rubygem}] image:https://img.shields.io/badge/rubydoc.info-{release-version}-blue.svg[library (API) docs,link=https://www.rubydoc.info/gems/asciidoctor/{release-version}] image:https://github.com/asciidoctor/asciidoctor/workflows/CI/badge.svg[Build Status (GitHub Actions),link={url-repo}/actions] //image:https://img.shields.io/coveralls/asciidoctor/asciidoctor/master.svg[Code Coverage,link=https://coveralls.io/r/asciidoctor/asciidoctor] //image:https://codeclimate.com/github/asciidoctor/asciidoctor/badges/gpa.svg[Code Climate,link=https://codeclimate.com/github/asciidoctor/asciidoctor] //image:https://inch-ci.org/github/asciidoctor/asciidoctor.svg?branch=master[Docs Coverage,link=https://inch-ci.org/github/asciidoctor/asciidoctor] image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[Project Chat (Zulip),link={url-chat}] endif::[] == Sponsors We want to recognize our {url-project}/supporters[sponsors] for their commitment to improving the state of technical documentation by supporting this project. Thank you sponsors! Without your generous support, Asciidoctor would not be possible. You can support this project by becoming a sponsor through https://opencollective.com/asciidoctor[OpenCollective]. == AsciiDoc Processing and Built-in Converters AsciiDoc is the language. + Asciidoctor is the processor. Asciidoctor reads the AsciiDoc source, as shown in the panel on the left in the image below, and converts it to publishable formats, such as HTML 5, as shown rendered in the panel on the right. image::{image-url-screenshot}[Preview of AsciiDoc source and corresponding rendered HTML] Asciidoctor provides built-in {url-docs}/asciidoctor/latest/converters/[converters] for three output formats by default: {url-docs}/asciidoctor/latest/html-backend/[HTML 5], {url-docs}/asciidoctor/latest/docbook-backend/[DocBook 5], and {url-docs}/asciidoctor/latest/manpage-backend/[man page] (short for manual page). Additional converters, such as PDF and EPUB 3, are provided by separate gems. Asciidoctor also provides an out-of-the-box HTML experience complete with a {url-docs}/asciidoctor/latest/html-backend/default-stylesheet/[default stylesheet] and built-in integrations like Font Awesome (for icons), highlight.js, Rouge, and Pygments (for source highlighting), and MathJax (for STEM processing). == Asciidoctor Ecosystem Although Asciidoctor is written in Ruby, it does not mean you need Ruby to use it. Asciidoctor can be executed on a JVM using {url-docs}/asciidoctorj/latest/[AsciidoctorJ] or in any JavaScript environment (including the browser) using {url-docs}/asciidoctor.js/latest/[Asciidoctor.js]. Installing an Asciidoctor processor is just the beginning of your publishing experience. Asciidoctor gives you access to a ecosystem of extensions and tools, ranging from add-on converters, to extended syntax, to build plugins, to integrated writing and preview environments: * {url-docs}/diagram-extension/latest/[Asciidoctor Diagram] * {url-docs}/maven-tools/latest/[Maven plugin and site module] * {url-gradle-plugin}[Gradle plugin] * {url-docs}/asciidoclet/latest/[Asciidoclet] * {url-docs}/reveal.js-converter/latest/[reveal.js converter] * {url-docs}/epub3-converter/latest/[EPUB 3 converter] * https://intellij-asciidoc-plugin.ahus1.de/docs[IntelliJ plugin] * {url-docs}/asciidoctor/latest/tooling/#web-browser-add-ons-preview-only[web browser extensions] * {url-org}[and more] Asciidoctor is the successor to AsciiDoc.py. If you're using AsciiDoc.py, see {url-docs}/asciidoctor/latest/migrate/asciidoc-py/[Migrate from AsciiDoc.py] to learn how to upgrade to Asciidoctor. == Requirements Asciidoctor works on Linux, macOS and Windows and requires one of the following implementations of {url-ruby}[Ruby]: * CRuby (aka MRI) 2.3 - 3.0 * JRuby 9.1 - 9.2 * TruffleRuby (GraalVM) [CAUTION] ==== If you're using a non-English Windows environment, you may bump into an `Encoding::UndefinedConversionError` when invoking Asciidoctor. To solve this issue, we recommend changing the active code page in your console to UTF-8: chcp 65001 Once you make this change, all your Unicode headaches will be behind you. If you're using an IDE like Eclipse, make sure you set the encoding to UTF-8 there as well. Asciidoctor works best when you use UTF-8 everywhere. ==== == Installation Asciidoctor is packaged and distributed to RubyGems.org as a RubyGem (aka gem) named {url-rubygem}[asciidoctor^]. The asciidoctor gem can be installed on all major operating systems using Ruby packaging tools (gem or bundle). Asciidoctor is also distributed as a Docker image, as a package for numerous Linux distributions, and as a package for macOS (via Homebrew). === Linux package managers The version of Asciidoctor installed by the package manager may not match the latest release of Asciidoctor. Consult the package repository for your distribution to find out which version is packaged per distribution release. * https://pkgs.alpinelinux.org/packages?name=asciidoctor[Alpine Linux (asciidoctor)] * https://www.archlinux.org/packages/?name=asciidoctor[Arch Linux (asciidoctor)] * https://packages.debian.org/sid/asciidoctor[Debian (asciidoctor)] * https://apps.fedoraproject.org/packages/rubygem-asciidoctor[Fedora (asciidoctor)] * https://software.opensuse.org/package/rubygem-asciidoctor[OpenSUSE (rubygem-asciidoctor)] * https://packages.ubuntu.com/search?keywords=asciidoctor[Ubuntu (asciidoctor)] If you want to use a version of Asciidoctor that's newer than what is installed by the package manager, see the <>. ==== apk (Alpine Linux) To install the gem on Alpine Linux, open a terminal and type: $ sudo apk add asciidoctor ==== pacman (Arch Linux) To install the gem on Arch-based distributions, open a terminal and type: $ sudo pacman -S asciidoctor ==== APT On Debian and Debian-based distributions such as Ubuntu, use APT to install Asciidoctor. To install the package, open a terminal and type: $ sudo apt-get install -y asciidoctor ==== DNF On RPM-based Linux distributions, such as Fedora, CentOS, and RHEL, use the DNF package manager to install Asciidoctor. To install the package, open a terminal and type: $ sudo dnf install -y asciidoctor === Homebrew (macOS) You can use Homebrew, the macOS package manager, to install Asciidoctor. If you don’t have Homebrew on your computer, complete the installation instructions at https://brew.sh/[brew.sh] first. Once Homebrew is installed, you’re ready to install the `asciidoctor` gem. Open a terminal and type: $ brew install asciidoctor Homebrew installs the `asciidoctor` gem into an exclusive prefix that's independent of system gems. === Windows To use Asciidoctor with Windows, you have two options. ==== Chocolatey When you already use https://chocolatey.org[chocolatey] on your machine, you can use: [source] ---- choco install ruby ---- Then follow <>. ==== Rubyinstaller Or you use the https://rubyinstaller.org/downloads/[Rubyinstaller], download the package for your Windows Version and after the installation go ahead with <>. [#gem-install] === gem install Before installing Asciidoctor using `gem install`, you should set up https://rvm.io[RVM] (or similar) to install Ruby in your home directory (i.e., user space). Then, you can safely use the `gem` command to install or update the Asciidoctor gem, or any other gem for that matter. When using RVM, gems are installed in a location isolated from the system. (You should never use the gem command to install system-wide gems). Once you've installed Ruby using RVM, and you have activated it using `rvm use 3.0`, open a terminal and type: $ gem install asciidoctor If you want to install a pre-release version (e.g., a release candidate), use: $ gem install asciidoctor --pre === Docker See {url-install-docker}[Installing Asciidoctor using Docker]. === Bundler . Create a Gemfile in the root folder of your project (or the current directory) . Add the `asciidoctor` gem to your Gemfile as follows: + [source,subs=attributes+] ---- source 'https://rubygems.org' gem 'asciidoctor' # or specify the version explicitly # gem 'asciidoctor', '{release-version}' ---- . Save the Gemfile . Open a terminal and install the gem using: $ bundle To upgrade the gem, specify the new version in the Gemfile and run `bundle` again. Using `bundle update` (without specifying a gem) is *not* recommended as it will also update other gems, which may not be the desired result. == Upgrade If you installed Asciidoctor using a package manager, your operating system is probably configured to automatically update packages, in which case you don't need to update the gem manually. === apk (Alpine Linux) To upgrade the gem, use: $ sudo apk add -u asciidoctor === APT To upgrade the gem, use: $ sudo apt-get upgrade -y asciidoctor === DNF To upgrade the gem, use: $ sudo dnf update -y asciidoctor === Homebrew (macOS) To upgrade the gem, use: $ brew update $ brew upgrade asciidoctor === gem install If you previously installed Asciidoctor using the `gem` command, you'll need to manually upgrade Asciidoctor when a new version is released. You can upgrade the gem by typing: $ gem install asciidoctor When you install a new version of the gem using `gem install`, you end up with multiple versions installed. Use the following command to remove the old versions: $ gem cleanup asciidoctor == Usage If the Asciidoctor gem installed successfully, the `asciidoctor` command line interface (CLI) will be available on your PATH. To verify it's available, run the following in your terminal: $ asciidoctor --version You should see information about the Asciidoctor version and your Ruby environment printed in the terminal. [.output,subs=attributes+] .... Asciidoctor {release-version} [https://asciidoctor.org] Runtime Environment (ruby 3.0.1p64 [x86_64-linux]) (lc:UTF-8 fs:UTF-8 in:UTF-8 ex:UTF-8) .... === Command line interface (CLI) The `asciidoctor` command allows you to invoke Asciidoctor from the command line (i.e., a terminal). The following command converts the file README.adoc to HTML and saves the result to the file README.html in the same directory. The name of the generated HTML file is derived from the source file by changing its file extension to `.html`. $ asciidoctor README.adoc You can control the Asciidoctor processor by adding various flags and switches, which you can learn about using: $ asciidoctor --help For instance, to write the file to a different directory, use: $ asciidoctor -D output README.adoc The `asciidoctor` {url-manpage}[man page] provides a complete reference of the command line interface. Refer to the following resources to learn more about how to use the `asciidoctor` command. * {url-docs}/asciidoctor/latest/cli/[Process AsciiDoc using the CLI] * {url-docs}/asciidoctor/latest/cli/options/[CLI options] === Ruby API Asciidoctor also provides an API. The API is intended for integration with other Ruby software, such as Rails, GitHub, and GitLab, as well as other languages, such as Java (via AsciidoctorJ) and JavaScript (via Asciidoctor.js). To use Asciidoctor in your application, you first need to require the gem: [source] require 'asciidoctor' You can then convert an AsciiDoc source file to an HTML file using: [source] Asciidoctor.convert_file 'README.adoc', to_file: true, safe: :safe WARNING: When using Asciidoctor via the API, the default safe mode is `:secure`. In secure mode, several core features are disabled, including the `include` directive. If you want to enable these features, you'll need to explicitly set the safe mode to `:server` (recommended) or `:safe`. You can also convert an AsciiDoc string to embeddable HTML (for inserting in an HTML page) using: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' Asciidoctor.convert content, safe: :safe ---- If you want the full HTML document, enable the `header_footer` option as follows: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' html = Asciidoctor.convert content, header_footer: true, safe: :safe ---- If you need access to the parsed document, you can split the conversion into discrete steps: [source] ---- content = '_Zen_ in the art of writing https://asciidoctor.org[AsciiDoc].' document = Asciidoctor.load content, header_footer: true, safe: :safe puts document.doctitle html = document.convert ---- Keep in mind that if you don't like the output Asciidoctor produces, _you can change it!_ Asciidoctor supports custom converters that can handle converting from the parsed document to the generated output. One easy way to customize the output piecemeal is by using the template converter. The template converter allows you to supply a {url-tilt}[Tilt]-supported template file to handle converting any node in the document. However you go about it, you _can_ have 100% control over the output. For more information about how to use the API or to customize the output, see: * {url-docs}/asciidoctor/latest/api/[Process AsciiDoc using the API] * {url-docs}/asciidoctor/latest/api/options/[API options] * {url-docs}/asciidoctor/latest/safe-modes/[Safe modes] == Contributing New contributors are always welcome! If you discover errors or omissions in the source code, documentation, or website content, please don't hesitate to submit an issue or open a pull request with a fix. Here are some ways *you* can contribute: * by using prerelease (alpha, beta or preview) versions * by reporting bugs * by suggesting new features * by writing or editing documentation * by writing code with tests -- _No patch is too small._ ** fix typos ** add comments ** clean up inconsistent whitespace ** write tests! * by refactoring code * by fixing {url-issues}[issues] * by reviewing patches The {url-contribute}[Contributing] guide provides information on how to create, style, and submit issues, feature requests, code, and documentation to Asciidoctor. == Getting Help Asciidoctor is developed to help you easily write and publish your content. But we can't do it without your feedback! We encourage you to ask questions and discuss any aspects of the project on the discussion list, on Twitter or in the chat room. Chat (Zulip):: {url-chat} Discussion list (Nabble):: {url-discuss} Twitter:: Follow https://twitter.com/asciidoctor[@asciidoctor] or search for the https://twitter.com/search?f=tweets&q=%23asciidoctor[#asciidoctor] hashtag ifdef::env-github[] Further information and documentation about Asciidoctor can be found on the project's website. {url-project}[Home] | {url-news}[News] | {url-docs}[Docs] endif::[] The Asciidoctor organization on GitHub hosts the project's source code, issue tracker, and sub-projects. Source repository (git):: {url-repo} Issue tracker:: {url-issues} Asciidoctor organization on GitHub:: {url-org} == Code of Conduct The core Asciidoctor project is governed by the https://github.com/asciidoctor/.github/blob/main/CODE-OF-CONDUCT.md[Code of Conduct] for the Asciidoctor community of projects. By participating, you're agreeing to honor this code. Let's work together to make this a welcoming, professional, inclusive, and safe environment for everyone. == Versioning and Release Policy This project adheres to semantic versioning (*major.minor.patch*). Typically, patch releases are only made for the current minor release. However, exceptions are made on a case-by-case basis to address security vulnerabilities and other high-priority issues. == Copyright and License Copyright (C) 2012-present Dan Allen, Sarah White, Ryan Waldron, and the individual contributors to Asciidoctor. Use of this software is granted under the terms of the MIT License. See the {url-license}[LICENSE] for the full license text. == Authors *Asciidoctor* is led by https://github.com/mojavelinux[Dan Allen] and https://github.com/graphitefriction[Sarah White] and has received contributions from {url-contributors}[many individuals] in Asciidoctor's awesome community. The project was initiated in 2012 by https://github.com/erebor[Ryan Waldron] based on a prototype written by https://github.com/nickh[Nick Hengeveld] for the Git website. *AsciiDoc.py* was started and maintained by Stuart Rackham from https://github.com/asciidoc-py/asciidoc-py2/blob/master/CHANGELOG.txt[2002 to 2013] and has received contributions from many individuals in the https://github.com/asciidoc-py/asciidoc-py2/graphs/contributors[AsciiDoc.py community]. == Trademarks AsciiDoc(R) and AsciiDoc Language(TM) are trademarks of the Eclipse Foundation, Inc. ifndef::env-site[] == Changelog ifeval::[{safe-mode-level} < 20] include::CHANGELOG.adoc[tag=compact,leveloffset=+1] endif::[] Refer to the {url-changelog}[CHANGELOG] for a complete list of changes in older releases. endif::[] asciidoctor-2.0.16/Rakefile000066400000000000000000000001531410231027400155410ustar00rootroot00000000000000# frozen_string_literal: true Dir.glob('tasks/*.rake').each {|file| load file } task default: %w(test:all) asciidoctor-2.0.16/asciidoctor.gemspec000066400000000000000000000044001410231027400177430ustar00rootroot00000000000000begin require_relative 'lib/asciidoctor/version' rescue LoadError require 'asciidoctor/version' end Gem::Specification.new do |s| s.name = 'asciidoctor' s.version = Asciidoctor::VERSION s.summary = 'An implementation of the AsciiDoc text processor and publishing toolchain' s.description = 'A fast, open source text processor and publishing toolchain for converting AsciiDoc content to HTML 5, DocBook 5, and other formats.' s.authors = ['Dan Allen', 'Sarah White', 'Ryan Waldron', 'Jason Porter', 'Nick Hengeveld', 'Jeremy McAnally'] s.email = ['dan.j.allen@gmail.com'] s.homepage = 'https://asciidoctor.org' s.license = 'MIT' # NOTE required ruby version is informational only; it's not enforced since it can't be overridden and can cause builds to break #s.required_ruby_version = '>= 2.3.0' s.metadata = { 'bug_tracker_uri' => 'https://github.com/asciidoctor/asciidoctor/issues', 'changelog_uri' => 'https://github.com/asciidoctor/asciidoctor/blob/master/CHANGELOG.adoc', 'mailing_list_uri' => 'http://discuss.asciidoctor.org', 'source_code_uri' => 'https://github.com/asciidoctor/asciidoctor' } # NOTE the logic to build the list of files is designed to produce a usable package even when the git command is not available begin files = (result = `git ls-files -z`.split ?\0).empty? ? Dir['**/*'] : result rescue files = Dir['**/*'] end s.files = files.grep %r/^(?:(?:data|lib|man)\/.+|LICENSE|(?:CHANGELOG|README(?:-\w+)?)\.adoc|\.yardopts|#{s.name}\.gemspec)$/ s.executables = (files.grep %r/^bin\//).map {|f| File.basename f } s.require_paths = ['lib'] #s.test_files = files.grep %r/^(?:features|test)\/.+$/ # concurrent-ruby, haml, slim, and tilt are needed for testing custom templates s.add_development_dependency 'concurrent-ruby', '~> 1.1.0' s.add_development_dependency 'cucumber', '~> 3.1.0' # erubi is needed for testing alternate eRuby impls s.add_development_dependency 'erubi', '~> 1.10.0' s.add_development_dependency 'haml', '~> 5.2.0' s.add_development_dependency 'minitest', '~> 5.14.0' s.add_development_dependency 'nokogiri', '~> 1.10.0' s.add_development_dependency 'rake', '~> 12.3.0' s.add_development_dependency 'slim', '~> 4.1.0' s.add_development_dependency 'tilt', '~> 2.0.0' end asciidoctor-2.0.16/benchmark/000077500000000000000000000000001410231027400160275ustar00rootroot00000000000000asciidoctor-2.0.16/benchmark/.gitignore000066400000000000000000000000671410231027400200220ustar00rootroot00000000000000/sample-data/userguide.adoc /sample-data/customers.csv asciidoctor-2.0.16/benchmark/.ruby-gemset000066400000000000000000000000221410231027400202650ustar00rootroot00000000000000asciidoctor-bench asciidoctor-2.0.16/benchmark/.ruby-version000066400000000000000000000000041410231027400204660ustar00rootroot000000000000002.7 asciidoctor-2.0.16/benchmark/benchmark.rb000077500000000000000000000125101410231027400203100ustar00rootroot00000000000000#!/usr/bin/env ruby =begin Use this script to monitor changes in performance when making code changes to Asciidoctor. $ ruby benchmark.rb The most common benchmark is the userguide-loop. It will download the AsciiDoc User Guide automatically the first time, then convert it in memory. Running it 10 times provides a good picture. $ ruby benchmark.rb userguide-loop 10 Only worry about the relative change to the numbers before and after the code change. Absolute times are highly dependent on the capabilities of the machine the the version of Ruby. To get the best results under MRI, tune Ruby using environment variables as follows: .Ruby < 2.1 $ RUBY_GC_MALLOC_LIMIT=90000000 RUBY_FREE_MIN=650000 ruby benchmark.rb userguide-loop 10 .Ruby >= 2.1 $ RUBY_GC_MALLOC_LIMIT=128000000 RUBY_GC_OLDMALLOC_LIMIT=128000000 RUBY_GC_HEAP_INIT_SLOTS=10000000 RUBY_GC_HEAP_FREE_SLOTS=10000000 RUBY_GC_HEAP_GROWTH_MAX_SLOTS=250000 RUBY_GC_HEAP_GROWTH_FACTOR=2 ruby benchmark.rb userguide-loop 10 $ RUBY_GC_MALLOC_LIMIT=128000000 RUBY_GC_OLDMALLOC_LIMIT=128000000 RUBY_GC_HEAP_INIT_SLOTS=20000000 RUBY_GC_HEAP_FREE_SLOTS=1000000 RUBY_GC_HEAP_GROWTH_MAX_SLOTS=250000 RUBY_GC_HEAP_GROWTH_FACTOR=2 ruby benchmark.rb userguide-loop 10 Asciidoctor starts with ~ 12,500 objects, adds ~ 300,000 each run, so tune RUBY_GC_HEAP_* accordingly See http://globaldev.co.uk/2014/05/ruby-2-1-in-detail/#gc-tuning-environment-variables Execute Ruby using the `--disable=gems` flag to speed up the initial load time, as shown below: $ ruby --disable=gems ... =end require 'benchmark' include Benchmark bench = ARGV[0] $repeat = ARGV[1].to_i || 10000 if bench.nil? raise 'You must specify a benchmark to run.' end def fetch_userguide require 'open-uri' userguide_uri = 'https://raw.githubusercontent.com/asciidoc/asciidoc/d43faae38c4a8bf366dcba545971da99f2b2d625/doc/asciidoc.txt' customers_uri = 'https://raw.githubusercontent.com/asciidoc/asciidoc/d43faae38c4a8bf366dcba545971da99f2b2d625/doc/customers.csv' userguide_content = open(userguide_uri) {|fd2| fd2.read } customers_content = open(customers_uri) {|fd2| fd2.read } File.open('sample-data/userguide.adoc', 'w') {|fd1| fd1.write userguide_content } File.open('sample-data/customers.csv', 'w') {|fd1| fd1.write customers_content } end case bench =begin # benchmark template when 'name' sample = 'value' Benchmark.bmbm(12) {|bm| bm.report('operation a') { $repeat.times { call_a_on sample } } bm.report('operation b') { $repeat.times { call_b_on sample } } } =end when 'userguide' require '../lib/asciidoctor.rb' Asciidoctor::Compliance.markdown_syntax = false Asciidoctor::Compliance.shorthand_property_syntax = false if Asciidoctor::VERSION > '0.1.4' sample_file = ENV['BENCH_TEST_FILE'] || 'sample-data/userguide.adoc' backend = ENV['BENCH_BACKEND'] || 'html5' fetch_userguide if sample_file == 'sample-data/userguide.adoc' && !(File.exist? sample_file) result = Benchmark.bmbm {|bm| bm.report(%(Convert #{sample_file} (x#{$repeat}))) { $repeat.times { Asciidoctor.render_file sample_file, :backend => backend, :safe => Asciidoctor::SafeMode::SAFE, :eruby => 'erubis', :header_footer => true, :to_file => false, :attributes => {'stylesheet' => nil, 'toc' => nil, 'numbered' => nil, 'icons' => nil, 'compat-mode' => ''} } } } # prints average for real run puts %(>avg: #{result.first.real / $repeat}) when 'userguide-loop' require '../lib/asciidoctor.rb' GC.start Asciidoctor::Compliance.markdown_syntax = false Asciidoctor::Compliance.shorthand_property_syntax = false if Asciidoctor::VERSION > '0.1.4' sample_file = ENV['BENCH_TEST_FILE'] || 'sample-data/userguide.adoc' backend = ENV['BENCH_BACKEND'] || 'html5' fetch_userguide if sample_file == 'sample-data/userguide.adoc' && !(File.exist? sample_file) timings = [] 2.times.each do loop_timings = [] (1..$repeat).each do start = Time.now Asciidoctor.render_file sample_file, :backend => backend, :safe => Asciidoctor::SafeMode::SAFE, :eruby => 'erubis', :header_footer => true, :to_file => false, :attributes => { 'stylesheet' => nil, 'toc' => nil, 'numbered' => nil, 'icons' => nil, 'compat-mode' => '' } loop_timings << (Time.now - start) end timings << loop_timings end best_time = nil timings.each do |loop_timings| puts %(#{loop_timings * "\n"}\nRun Total: #{loop_timings.reduce :+}) best_time = best_time ? [best_time, loop_timings.min].min : loop_timings.min end puts %(Best Time: #{best_time}) when 'mdbasics-loop' require '../lib/asciidoctor.rb' GC.start sample_file = ENV['BENCH_TEST_FILE'] || 'sample-data/mdbasics.adoc' backend = ENV['BENCH_BACKEND'] || 'html5' timings = [] 2.times do loop_timings = [] (1..$repeat).each do start = Time.now Asciidoctor.render_file sample_file, :backend => backend, :safe => Asciidoctor::SafeMode::SAFE, :header_footer => false, :to_file => false, :attributes => { 'stylesheet' => nil, 'idprefix' => '', 'idseparator' => '-', 'showtitle' => '' } loop_timings << (Time.now - start) end timings << loop_timings end best_time = nil timings.each do |loop_timings| puts %(#{loop_timings * "\n"}\nRun Total: #{loop_timings.reduce :+}) best_time = best_time ? [best_time, loop_timings.min].min : loop_timings.min end puts %(Best Time: #{best_time}) end asciidoctor-2.0.16/benchmark/sample-data/000077500000000000000000000000001410231027400202175ustar00rootroot00000000000000asciidoctor-2.0.16/benchmark/sample-data/mdbasics.adoc000066400000000000000000000172371410231027400226460ustar00rootroot00000000000000// converted to AsciiDoc from https://github.com/gettalong/kramdown/blob/master/benchmark/mdbasics.text # Markdown: Basics John Gruber :s: link:/projects/markdown/syntax :d: link:/projects/markdown/dingus :src: link:/projects/markdown/basics.text ++++ ++++ ## Getting the Gist of Markdown's Formatting Syntax This page offers a brief overview of what it's like to use Markdown. The {s}[syntax page] provides complete, detailed documentation for every feature, but Markdown should be very easy to pick up simply by looking at a few examples of it in action. The examples on this page are written in a before/after style, showing example syntax and the HTML output produced by Markdown. It's also helpful to simply try Markdown out; the {d}[Dingus] is a web application that allows you type your own Markdown-formatted text and translate it to XHTML. NOTE: This document is itself written using Markdown; you can {src}[see the source for it by adding \'.text' to the URL]. ### Paragraphs, Headers, Blockquotes A paragraph is simply one or more consecutive lines of text, separated by one or more blank lines. (A blank line is any line that looks like a blank line -- a line containing nothing spaces or tabs is considered blank.) Normal paragraphs should not be intended with spaces or tabs. Markdown offers two styles of headers: _Setext_ and _atx_. Setext-style headers for +

+ and +

+ are created by "underlining" with equal signs (+=+) and hyphens (+-+), respectively. To create an atx-style header, you put 1-6 hash marks (+#+) at the beginning of the line -- the number of hashes equals the resulting HTML header level. Blockquotes are indicated using email-style \'+>+' angle brackets. .Markdown: [listing] .... A First Level Header ==================== A Second Level Header --------------------- Now is the time for all good men to come to the aid of their country. This is just a regular paragraph. The quick brown fox jumped over the lazy dog's back. ### Header 3 > This is a blockquote. > > This is the second paragraph in the blockquote. > > ## This is an H2 in a blockquote .... .Output: ....

A First Level Header

A Second Level Header

Now is the time for all good men to come to the aid of their country. This is just a regular paragraph.

The quick brown fox jumped over the lazy dog's back.

Header 3

This is a blockquote.

This is the second paragraph in the blockquote.

This is an H2 in a blockquote

.... ### Phrase Emphasis Markdown uses asterisks and underscores to indicate spans of emphasis. .Markdown: ---- Some of these words *are emphasized*. Some of these words _are emphasized also_. Use two asterisks for **strong emphasis**. Or, if you prefer, __use two underscores instead__. ---- .Output: ....

Some of these words are emphasized. Some of these words are emphasized also.

Use two asterisks for strong emphasis. Or, if you prefer, use two underscores instead.

.... ### Lists Unordered (bulleted) lists use asterisks, pluses, and hyphens (+*+, +++, and +-+) as list markers. These three markers are interchangable; this: ---- * Candy. * Gum. * Booze. ---- this: ---- + Candy. + Gum. + Booze. ---- and this: ---- - Candy. - Gum. - Booze. ---- all produce the same output: ....
  • Candy.
  • Gum.
  • Booze.
.... Ordered (numbered) lists use regular numbers, followed by periods, as list markers: ---- 1. Red 2. Green 3. Blue ---- .Output: ....
  1. Red
  2. Green
  3. Blue
.... If you put blank lines between items, you'll get +

+ tags for the list item text. You can create multi-paragraph list items by indenting the paragraphs by 4 spaces or 1 tab: ---- * A list item. With multiple paragraphs. * Another item in the list. ---- .Output: ....

  • A list item.

    With multiple paragraphs.

  • Another item in the list.

.... ### Links Markdown supports two styles for creating links: _inline_ and _reference_. With both styles, you use square brackets to delimit the text you want to turn into a link. Inline-style links use parentheses immediately after the link text. For example: ---- This is an [example link](http://example.com/). ---- .Output: ....

This is an example link.

.... Optionally, you may include a title attribute in the parentheses: ---- This is an [example link](http://example.com/ "With a Title"). ---- .Output: ....

This is an example link.

.... Reference-style links allow you to refer to your links by names, which you define elsewhere in your document: ---- I get 10 times more traffic from [Google][1] than from [Yahoo][2] or [MSN][3]. [1]: http://google.com/ "Google" [2]: http://search.yahoo.com/ "Yahoo Search" [3]: http://search.msn.com/ "MSN Search" ---- .Output: ....

I get 10 times more traffic from Google than from Yahoo or MSN.

.... The title attribute is optional. Link names may contain letters, numbers and spaces, but are _not_ case sensitive: ---- I start my morning with a cup of coffee and [The New York Times][NY Times]. [ny times]: http://www.nytimes.com/ ---- .Output: ....

I start my morning with a cup of coffee and The New York Times.

.... ### Images Image syntax is very much like link syntax. .Inline (titles are optional): ---- ![alt text](/path/to/img.jpg "Title") ---- .Reference-style: ---- ![alt text][id] [id]: /path/to/img.jpg "Title" ---- Both of the above examples produce the same output: .... alt text .... ### Code In a regular paragraph, you can create code span by wrapping text in backtick quotes. Any ampersands (+&+) and angle brackets (+<+ or +>+) will automatically be translated into HTML entities. This makes it easy to use Markdown to write about HTML example code: ---- I strongly recommend against using any `` tags. I wish SmartyPants used named entities like `—` instead of decimal-encoded entites like `—`. ---- .Output: ....

I strongly recommend against using any <blink> tags.

I wish SmartyPants used named entities like &mdash; instead of decimal-encoded entites like &#8212;.

.... To specify an entire block of pre-formatted code, indent every line of the block by 4 spaces or 1 tab. Just like with code spans, +&+, +<+, and +>+ characters will be escaped automatically. .Markdown: ---- If you want your page to validate under XHTML 1.0 Strict, you've got to put paragraph tags in your blockquotes:

For example.

---- .Output: ....

If you want your page to validate under XHTML 1.0 Strict, you've got to put paragraph tags in your blockquotes:

<blockquote>
    <p>For example.</p>
</blockquote>
.... asciidoctor-2.0.16/bin/000077500000000000000000000000001410231027400146455ustar00rootroot00000000000000asciidoctor-2.0.16/bin/asciidoctor000077500000000000000000000005701410231027400171000ustar00rootroot00000000000000#!/usr/bin/env ruby # frozen_string_literal: true asciidoctor = File.absolute_path '../lib/asciidoctor.rb', __dir__ if File.exist? asciidoctor require asciidoctor require File.join Asciidoctor::LIB_DIR, 'asciidoctor/cli' else require 'asciidoctor' require 'asciidoctor/cli' end invoker = Asciidoctor::Cli::Invoker.new ARGV GC.start invoker.invoke! exit invoker.code asciidoctor-2.0.16/data/000077500000000000000000000000001410231027400150065ustar00rootroot00000000000000asciidoctor-2.0.16/data/locale/000077500000000000000000000000001410231027400162455ustar00rootroot00000000000000asciidoctor-2.0.16/data/locale/attributes-ar.adoc000066400000000000000000000014161410231027400216650ustar00rootroot00000000000000// Arabic translation, courtesy of Aboullaite Mohammed :appendix-caption: ملحق :appendix-refsig: {appendix-caption} :caution-caption: تنبيه //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: مثال :figure-caption: الشكل :important-caption: مهم :last-update-label: اخر تحديث ifdef::listing-caption[:listing-caption: قائمة] ifdef::manname-title[:manname-title: اسم] :note-caption: ملاحظة //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: تمهيد] //:section-refsig: ??? :table-caption: جدول :tip-caption: تلميح :toc-title: فهرس :untitled-label: بدون عنوان :version-label: نسخة :warning-caption: تحذير asciidoctor-2.0.16/data/locale/attributes-be.adoc000066400000000000000000000015571410231027400216570ustar00rootroot00000000000000// Belarusian translation, courtesy of Dexter Morganov :appendix-caption: Дадатак :appendix-refsig: {appendix-caption} :caution-caption: Увага :chapter-signifier: Глава :chapter-refsig: {chapter-signifier} :example-caption: Прыклад :figure-caption: Малюнак :important-caption: Важна :last-update-label: Апошняе абнаўленне ifdef::listing-caption[:listing-caption: Лістынг] ifdef::manname-title[:manname-title: Назва] :note-caption: Заўвага :part-signifier: Частка :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Прадмова] :section-refsig: Раздзел :table-caption: Табліца :tip-caption: Падказка :toc-title: Змест :untitled-label: Без назвы :version-label: Версія :warning-caption: Папярэджанне asciidoctor-2.0.16/data/locale/attributes-bg.adoc000066400000000000000000000015541410231027400216560ustar00rootroot00000000000000// Bulgarian translation, courtesy of Ivan St. Ivanov :appendix-caption: Приложение :appendix-refsig: {appendix-caption} :caution-caption: Внимание //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: Пример :figure-caption: Фигура :important-caption: Важно :last-update-label: Последно обновен ifdef::listing-caption[:listing-caption: Листинг] ifdef::manname-title[:manname-title: Име] :note-caption: Забележка //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Предговор] //:section-refsig: ??? :table-caption: Таблица :tip-caption: Подсказка :toc-title: Съдържание :untitled-label: Без заглавие :version-label: Версия :warning-caption: Внимание asciidoctor-2.0.16/data/locale/attributes-ca.adoc000066400000000000000000000013711410231027400216460ustar00rootroot00000000000000// Catalan translation, courtesy of Abel Salgado Romero and Alex Soto :appendix-caption: Apèndix :appendix-refsig: {appendix-caption} :caution-caption: Atenció :chapter-signifier: Capítol :chapter-refsig: {chapter-signifier} :example-caption: Exemple :figure-caption: Figura :important-caption: Important :last-update-label: Última actualització ifdef::listing-caption[:listing-caption: Llista] ifdef::manname-title[:manname-title: Nom] :note-caption: Nota :part-signifier: Part :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Prefaci] :section-refsig: Secció :table-caption: Taula :tip-caption: Suggeriment :toc-title: Índex :untitled-label: Sense títol :version-label: Versió :warning-caption: Advertència asciidoctor-2.0.16/data/locale/attributes-cs.adoc000066400000000000000000000013501410231027400216650ustar00rootroot00000000000000// czech translation, for reference only; matches the built-in behavior of core :appendix-caption: Příloha :appendix-refsig: {appendix-caption} :caution-caption: Upozornění :chapter-signifier: Kapitola :chapter-refsig: {chapter-signifier} :example-caption: Příklad :figure-caption: Obrázek :important-caption: Důležité :last-update-label: Změněno ifdef::listing-caption[:listing-caption: Seznam] ifdef::manname-title[:manname-title: Název] :note-caption: Poznámka :part-signifier: Část :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Úvod] :section-refsig: Oddíl :table-caption: Tabulka :tip-caption: Tip :toc-title: Obsah :untitled-label: Nepojmenovaný :version-label: Verze :warning-caption: Varování asciidoctor-2.0.16/data/locale/attributes-da.adoc000066400000000000000000000014211410231027400216430ustar00rootroot00000000000000// Danish translation, courtesy of Max Rydahl Andersen , with updates from Morten Høfft :appendix-caption: Appendix :appendix-refsig: {appendix-caption} :caution-caption: Forsigtig :chapter-signifier: Kapitel :chapter-refsig: {chapter-signifier} :example-caption: Eksempel :figure-caption: Figur :important-caption: Vigtig :last-update-label: Sidst opdateret ifdef::listing-caption[:listing-caption: List] ifdef::manname-title[:manname-title: Navn] :note-caption: Notat :part-signifier: Del :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Forord] :section-refsig: Sektion :table-caption: Tabel :tip-caption: Tips :toc-title: Indholdsfortegnelse :untitled-label: Unavngivet :version-label: Version :warning-caption: Advarsel asciidoctor-2.0.16/data/locale/attributes-de.adoc000066400000000000000000000013361410231027400216540ustar00rootroot00000000000000// German translation, courtesy of Florian Wilhelm :appendix-caption: Anhang :appendix-refsig: {appendix-caption} :caution-caption: Achtung :chapter-signifier: Kapitel :chapter-refsig: {chapter-signifier} :example-caption: Beispiel :figure-caption: Abbildung :important-caption: Wichtig :last-update-label: Zuletzt aktualisiert ifdef::listing-caption[:listing-caption: Listing] ifdef::manname-title[:manname-title: Bezeichnung] :note-caption: Anmerkung :part-signifier: Teil :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Vorwort] :section-refsig: Abschnitt :table-caption: Tabelle :tip-caption: Hinweis :toc-title: Inhaltsverzeichnis :untitled-label: Ohne Titel :version-label: Version :warning-caption: Warnung asciidoctor-2.0.16/data/locale/attributes-en.adoc000066400000000000000000000013361410231027400216660ustar00rootroot00000000000000// English translation, for reference only; matches the built-in behavior of core :appendix-caption: Appendix :appendix-refsig: {appendix-caption} :caution-caption: Caution :chapter-signifier: Chapter :chapter-refsig: {chapter-signifier} :example-caption: Example :figure-caption: Figure :important-caption: Important :last-update-label: Last updated ifdef::listing-caption[:listing-caption: Listing] ifdef::manname-title[:manname-title: Name] :note-caption: Note :part-signifier: Part :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Preface] :section-refsig: Section :table-caption: Table :tip-caption: Tip :toc-title: Table of Contents :untitled-label: Untitled :version-label: Version :warning-caption: Warning asciidoctor-2.0.16/data/locale/attributes-es.adoc000066400000000000000000000014551410231027400216750ustar00rootroot00000000000000// Spanish translation, courtesy of Eddú Meléndez with updates from Fede Mendez :appendix-caption: Apéndice :appendix-refsig: {appendix-caption} :caution-caption: Precaución :chapter-signifier: Capítulo :chapter-refsig: {chapter-signifier} :example-caption: Ejemplo :figure-caption: Figura :important-caption: Importante :last-update-label: Ultima actualización ifdef::listing-caption[:listing-caption: Lista] ifdef::manname-title[:manname-title: Nombre] :note-caption: Nota :part-signifier: Parte :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Prefacio] :section-refsig: Sección :table-caption: Tabla :tip-caption: Sugerencia :toc-title: Tabla de Contenido :untitled-label: Sin título :version-label: Versión :warning-caption: Aviso asciidoctor-2.0.16/data/locale/attributes-fa.adoc000066400000000000000000000014641410231027400216540ustar00rootroot00000000000000// Persian (Farsi) translation, courtesy of Shahryar Eivazzadeh :appendix-caption: پیوست :appendix-refsig: {appendix-caption} :caution-caption: گوشزد //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: نمونه :figure-caption: نمودار :important-caption: مهم :last-update-label: آخرین به روز رسانی ifdef::listing-caption[:listing-caption: فهرست] ifdef::manname-title[:manname-title: نام] :note-caption: یادداشت //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: پیشگفتار] //:section-refsig: ??? :table-caption: جدول :tip-caption: نکته :toc-title: فهرست مطالب :untitled-label: بی‌نام :version-label: نگارش :warning-caption: هشدار asciidoctor-2.0.16/data/locale/attributes-fi.adoc000066400000000000000000000013051410231027400216560ustar00rootroot00000000000000// Finnish translation by Tero Hänninen :appendix-caption: Liitteet :appendix-refsig: {appendix-caption} :caution-caption: Huom //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: Esimerkki :figure-caption: Kuvio :important-caption: Tärkeää :last-update-label: Viimeksi päivitetty ifdef::listing-caption[:listing-caption: Listaus] ifdef::manname-title[:manname-title: Nimi] :note-caption: Huomio //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Esipuhe] //:section-refsig: ??? :table-caption: Taulukko :tip-caption: Vinkki :toc-title: Sisällysluettelo :untitled-label: Nimetön :version-label: Versio :warning-caption: Varoitus asciidoctor-2.0.16/data/locale/attributes-fr.adoc000066400000000000000000000014561410231027400216760ustar00rootroot00000000000000// French translation, courtesy of Nicolas Comet with updates from Maheva Bagard Laursen :appendix-caption: Annexe :appendix-refsig: {appendix-caption} :caution-caption: Avertissement :chapter-signifier: Chapitre :chapter-refsig: {chapter-signifier} :example-caption: Exemple :figure-caption: Figure :important-caption: Important :last-update-label: Dernière mise à jour ifdef::listing-caption[:listing-caption: Liste] ifdef::manname-title[:manname-title: Nom] :note-caption: Note :part-signifier: Partie :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Préface] :section-refsig: Section :table-caption: Tableau :tip-caption: Astuce :toc-title: Table des matières :untitled-label: Sans titre :version-label: Version :warning-caption: Attention asciidoctor-2.0.16/data/locale/attributes-hu.adoc000066400000000000000000000013621410231027400216770ustar00rootroot00000000000000// Hungarian translation, courtesy of István Pató :appendix-caption: függelék :appendix-refsig: {appendix-caption} :caution-caption: Figyelmeztetés //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: Példa :figure-caption: Ábra :important-caption: Fontos :last-update-label: Utolsó frissítés ifdef::listing-caption[:listing-caption: Lista] ifdef::manname-title[:manname-title: Név] :note-caption: Megjegyzés //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Előszó] //:section-refsig: ??? :table-caption: Táblázat :tip-caption: Tipp :toc-title: Tartalomjegyzék :untitled-label: Névtelen :version-label: Verzió :warning-caption: Figyelem asciidoctor-2.0.16/data/locale/attributes-id.adoc000066400000000000000000000013261410231027400216570ustar00rootroot00000000000000// Bahasa Indonesia, courtesy of Triyan W. Nugroho :appendix-caption: Lampiran :appendix-refsig: {appendix-caption} :caution-caption: Perhatian :chapter-signifier: Bab :chapter-refsig: {chapter-signifier} :example-caption: Contoh :figure-caption: Gambar :important-caption: Penting :last-update-label: Pembaruan terakhir ifdef::listing-caption[:listing-caption: Daftar] ifdef::manname-title[:manname-title: Nama] :note-caption: Catatan //:part-signifier: ??? //:part-refsig: {part-signifier} //ifdef::preface-title[:preface-title: ???] //:section-refsig: ??? :table-caption: Tabel :tip-caption: Tips :toc-title: Daftar Isi :untitled-label: Tak Berjudul :version-label: Versi :warning-caption: Peringatan asciidoctor-2.0.16/data/locale/attributes-it.adoc000066400000000000000000000013531410231027400216770ustar00rootroot00000000000000// Italian translation, courtesy of Marco Ciampa :appendix-caption: Appendice :appendix-refsig: {appendix-caption} :caution-caption: Attenzione :chapter-signifier: Capitolo :chapter-refsig: {chapter-signifier} :example-caption: Esempio :figure-caption: Figura :important-caption: Importante :last-update-label: Ultimo aggiornamento ifdef::listing-caption[:listing-caption: Elenco] ifdef::manname-title[:manname-title: Nome] :note-caption: Nota :part-signifier: Parte :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Prefazione] :section-refsig: Sezione :table-caption: Tabella :tip-caption: Suggerimento :toc-title: Indice :untitled-label: Senza titolo :version-label: Versione :warning-caption: Attenzione asciidoctor-2.0.16/data/locale/attributes-ja.adoc000066400000000000000000000013341410231027400216540ustar00rootroot00000000000000// Japanese translation, courtesy of Takayuki Konishi :appendix-caption: 付録 :appendix-refsig: {appendix-caption} :caution-caption: 注意 //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: 例 :figure-caption: 図 :important-caption: 重要 :last-update-label: 最終更新 ifdef::listing-caption[:listing-caption: リスト] ifdef::manname-title[:manname-title: 名前] :note-caption: 注記 //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: まえがき] //:section-refsig: ??? :table-caption: 表 :tip-caption: ヒント :toc-title: 目次 :untitled-label: 無題 :version-label: バージョン :warning-caption: 警告 asciidoctor-2.0.16/data/locale/attributes-ko.adoc000066400000000000000000000013041410231027400216700ustar00rootroot00000000000000// Korean translation, courtesy of Sungsik Nam :appendix-caption: 부록 :appendix-refsig: {appendix-caption} :caution-caption: 주의 //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: 예시 :figure-caption: 그림 :important-caption: 중요 :last-update-label: 마지막 업데이트 ifdef::listing-caption[:listing-caption: 목록] ifdef::manname-title[:manname-title: 이름] :note-caption: 노트 //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: 머리말] //:section-refsig: ??? :table-caption: 표 :tip-caption: 힌트 :toc-title: 차례 :untitled-label: 익명 :version-label: 버전 :warning-caption: 경고 asciidoctor-2.0.16/data/locale/attributes-nb.adoc000066400000000000000000000013741410231027400216650ustar00rootroot00000000000000// Norwegian Bokmål, courtesy of Aslak Knutsen , with updates from Karl Ove Hufthammer :appendix-caption: Vedlegg :appendix-refsig: {appendix-caption} :caution-caption: OBS :chapter-signifier: Kapittel :chapter-refsig: {chapter-signifier} :example-caption: Eksempel :figure-caption: Figur :important-caption: Viktig :last-update-label: Sist oppdatert ifdef::listing-caption[:listing-caption: Programkode] ifdef::manname-title[:manname-title: Navn] :note-caption: Merk //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Forord] //:section-refsig: ??? :table-caption: Tabell :tip-caption: Tips :toc-title: Innhold :untitled-label: Navnløs :version-label: Versjon :warning-caption: Advarsel asciidoctor-2.0.16/data/locale/attributes-nl.adoc000066400000000000000000000013571410231027400217000ustar00rootroot00000000000000// Dutch translation, courtesy of Roel Van Steenberghe :appendix-caption: Bijlage :appendix-refsig: {appendix-caption} :caution-caption: Opgelet :chapter-signifier: Hoofdstuk :chapter-refsig: {chapter-signifier} :example-caption: Voorbeeld :figure-caption: Figuur :important-caption: Belangrijk :last-update-label: Laatste aanpassing ifdef::listing-caption[:listing-caption: Lijst] ifdef::manname-title[:manname-title: Naam] :note-caption: Noot :part-signifier: Deel :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Inleiding] :section-refsig: Paragraaf :table-caption: Tabel :tip-caption: Tip :toc-title: Inhoudsopgave :untitled-label: Naamloos :version-label: Versie :warning-caption: Waarschuwing asciidoctor-2.0.16/data/locale/attributes-nn.adoc000066400000000000000000000013151410231027400216740ustar00rootroot00000000000000// Norwegian Nynorsk, courtesy of Karl Ove Hufthammer :appendix-caption: Vedlegg :appendix-refsig: {appendix-caption} :caution-caption: OBS :chapter-signifier: Kapittel :chapter-refsig: {chapter-signifier} :example-caption: Eksempel :figure-caption: Figur :important-caption: Viktig :last-update-label: Sist oppdatert ifdef::listing-caption[:listing-caption: Programkode] ifdef::manname-title[:manname-title: Namn] :note-caption: Merk //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Forord] //:section-refsig: ??? :table-caption: Tabell :tip-caption: Tips :toc-title: Innhald :untitled-label: Namnlaus :version-label: Versjon :warning-caption: Åtvaring asciidoctor-2.0.16/data/locale/attributes-pl.adoc000066400000000000000000000014451410231027400217000ustar00rootroot00000000000000// Polish translation, courtesy of Łukasz Dziedziul with updates via Matthew Blissett :appendix-caption: Dodatek :appendix-refsig: {appendix-caption} :caution-caption: Uwaga :chapter-signifier: Rozdział :chapter-refsig: {chapter-signifier} :example-caption: Przykład :figure-caption: Rysunek :important-caption: Ważne :last-update-label: Ostatnio zmodyfikowany ifdef::listing-caption[:listing-caption: Listing] ifdef::manname-title[:manname-title: Nazwa] :note-caption: Notka :part-signifier: Część :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Wstęp] :section-refsig: Sekcja :table-caption: Tabela :tip-caption: Sugestia :toc-title: Spis treści :untitled-label: Bez tytułu :version-label: Wersja :warning-caption: Ostrzeżenie asciidoctor-2.0.16/data/locale/attributes-pt.adoc000066400000000000000000000014441410231027400217070ustar00rootroot00000000000000// Portuguese translation, courtesy of Roberto Cortez with updates from Andrew Rodrigues :appendix-caption: Apêndice :appendix-refsig: {appendix-caption} :caution-caption: Atenção :chapter-signifier: Capítulo :chapter-refsig: {chapter-signifier} :example-caption: Exemplo :figure-caption: Figura :important-caption: Importante :last-update-label: Última actualização ifdef::listing-caption[:listing-caption: Listagem] ifdef::manname-title[:manname-title: Nome] :note-caption: Nota :part-signifier: Parte :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Prefácio] :section-refsig: Secção :table-caption: Tabela :tip-caption: Sugestão :toc-title: Índice :untitled-label: Sem título :version-label: Versão :warning-caption: Aviso asciidoctor-2.0.16/data/locale/attributes-pt_BR.adoc000066400000000000000000000014451410231027400222730ustar00rootroot00000000000000// Brazilian Portuguese translation, courtesy of Rafael Pestano with updates from Andrew Rodrigues :appendix-caption: Apêndice :appendix-refsig: {appendix-caption} :caution-caption: Cuidado :chapter-signifier: Capítulo :chapter-refsig: {chapter-signifier} :example-caption: Exemplo :figure-caption: Figura :important-caption: Importante :last-update-label: Última atualização ifdef::listing-caption[:listing-caption: Listagem] ifdef::manname-title[:manname-title: Nome] :note-caption: Nota :part-signifier: Parte :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Prefácio] :section-refsig: Seção :table-caption: Tabela :tip-caption: Dica :toc-title: Índice :untitled-label: Sem título :version-label: Versão :warning-caption: Aviso asciidoctor-2.0.16/data/locale/attributes-ro.adoc000066400000000000000000000013461410231027400217050ustar00rootroot00000000000000// Romanian translation, courtesy of Vitalie Lazu :appendix-caption: Apendix :appendix-refsig: {appendix-caption} :caution-caption: Precauție //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: Exemplu :figure-caption: Figură :important-caption: Important :last-update-label: Ultima actualizare ifdef::listing-caption[:listing-caption: Listare] ifdef::manname-title[:manname-title: Nume] :note-caption: Notă //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Prefață] //:section-refsig: ??? :table-caption: Tabela :tip-caption: Sfat :toc-title: Cuprins :untitled-label: Fără denumire :version-label: Versiunea :warning-caption: Atenție asciidoctor-2.0.16/data/locale/attributes-ru.adoc000066400000000000000000000016401410231027400217100ustar00rootroot00000000000000// Russian translation, courtesy of Alexander Zobkov :appendix-caption: Приложение :appendix-refsig: {appendix-caption} :caution-caption: Внимание :chapter-signifier: Глава :chapter-refsig: {chapter-signifier} :example-caption: Пример :figure-caption: Рисунок :important-caption: Важно :last-update-label: Последнее обновление ifdef::listing-caption[:listing-caption: Листинг] ifdef::manname-title[:manname-title: Название] :note-caption: Примечание :part-signifier: Часть :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Предисловие] :section-refsig: Раздел :table-caption: Таблица :tip-caption: Подсказка :toc-title: Содержание :untitled-label: Без названия :version-label: Версия :warning-caption: Предупреждение asciidoctor-2.0.16/data/locale/attributes-sr.adoc000066400000000000000000000015371410231027400217130ustar00rootroot00000000000000// Serbian Cyrillic translation, courtesy of Bojan Stipic :appendix-caption: Додатак :appendix-refsig: {appendix-caption} :caution-caption: Опрез :chapter-signifier: Поглавље :chapter-refsig: {chapter-signifier} :example-caption: Пример :figure-caption: Слика :important-caption: Важно :last-update-label: Последње ажурирано ifdef::listing-caption[:listing-caption: Листинг] ifdef::manname-title[:manname-title: Назив] :note-caption: Белешка :part-signifier: Део :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Предговор] :section-refsig: Секција :table-caption: Табела :tip-caption: Савет :toc-title: Садржај :untitled-label: Без назива :version-label: Верзија :warning-caption: Упозорење asciidoctor-2.0.16/data/locale/attributes-sr_Latn.adoc000066400000000000000000000013351410231027400226650ustar00rootroot00000000000000// Serbian Latin translation, courtesy of Bojan Stipic :appendix-caption: Dodatak :appendix-refsig: {appendix-caption} :caution-caption: Oprez :chapter-signifier: Poglavlje :chapter-refsig: {chapter-signifier} :example-caption: Primer :figure-caption: Slika :important-caption: Važno :last-update-label: Poslednje ažurirano ifdef::listing-caption[:listing-caption: Listing] ifdef::manname-title[:manname-title: Naziv] :note-caption: Beleška :part-signifier: Deo :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Predgovor] :section-refsig: Sekcija :table-caption: Tabela :tip-caption: Savet :toc-title: Sadržaj :untitled-label: Bez naziva :version-label: Verzija :warning-caption: Upozorenje asciidoctor-2.0.16/data/locale/attributes-sv.adoc000066400000000000000000000013251410231027400217120ustar00rootroot00000000000000// Swedish translation, Jonas Björk :appendix-caption: Bilaga :appendix-refsig: {appendix-caption} :caution-caption: Var uppmärksam :chapter-signifier: Kapitel :chapter-refsig: {chapter-signifier} :example-caption: Exempel :figure-caption: Figur :important-caption: Viktigt :last-update-label: Senast uppdaterad ifdef::listing-caption[:listing-caption: Lista] ifdef::manname-title[:manname-title: Namn] :note-caption: Notera :part-signifier: Del :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Förord] :section-refsig: Avsnitt :table-caption: Tabell :tip-caption: Tips :toc-title: Innehållsförteckning :untitled-label: Odöpt :version-label: Version :warning-caption: Varning asciidoctor-2.0.16/data/locale/attributes-th.adoc000066400000000000000000000016771410231027400217070ustar00rootroot00000000000000// Thai translation :appendix-caption: อ้างอิง :appendix-refsig: {appendix-caption} :caution-caption: ระวัง :chapter-signifier: บท :chapter-refsig: {chapter-signifier} :example-caption: ตัวอย่าง :figure-caption: คำอธิบายลักษณะจำลอง :important-caption: สำคัญ :last-update-label: ตัวอัพเดตล่าสุด ifdef::listing-caption[:listing-caption: รายการ] ifdef::manname-title[:manname-title: ซื่อ] :note-caption: บันทึก :part-signifier: ส่วน :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: คำนำ] :section-refsig: รายการย่อย :table-caption: ตาราง :tip-caption: เคล็ดลับ :toc-title: สารบัญ :untitled-label: ยังไม่มีชื่อ :version-label: เวอร์ชัน :warning-caption: คำเตือน asciidoctor-2.0.16/data/locale/attributes-tr.adoc000066400000000000000000000013341410231027400217070ustar00rootroot00000000000000// Turkish translation, courtesy of Rahman Usta :appendix-caption: Ek bölüm :appendix-refsig: {appendix-caption} :caution-caption: Dikkat //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: Örnek :figure-caption: Görsel :important-caption: Önemli :last-update-label: Son güncelleme ifdef::listing-caption[:listing-caption: Listeleme] ifdef::manname-title[:manname-title: İsim] :note-caption: Not //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Ön söz] //:section-refsig: ??? :table-caption: Tablo :tip-caption: İpucu :toc-title: İçindekiler :untitled-label: İsimsiz :version-label: Versiyon :warning-caption: Uyarı asciidoctor-2.0.16/data/locale/attributes-uk.adoc000066400000000000000000000015751410231027400217100ustar00rootroot00000000000000// Ukrainian translation, courtesy of Kyrylo Yatsenko :appendix-caption: Додаток :appendix-refsig: {appendix-caption} :caution-caption: Обережно :chapter-signifier: Розділ :chapter-refsig: {chapter-signifier} :example-caption: Приклад :figure-caption: Рисунок :important-caption: Важливо :last-update-label: Востаннє оновлено ifdef::listing-caption[:listing-caption: Лістинг] ifdef::manname-title[:manname-title: Назва] :note-caption: Зауваження :part-signifier: Частина :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Передмова] :section-refsig: Підрозділ :table-caption: Таблиця :tip-caption: Підказка :toc-title: Зміст :untitled-label: Без назви :version-label: Версія :warning-caption: Попередження asciidoctor-2.0.16/data/locale/attributes-vi.adoc000066400000000000000000000014271410231027400217030ustar00rootroot00000000000000// Vietnamese translation, courtesy of Hoa Nguyen :appendix-caption: Phụ lục :appendix-refsig: {appendix-caption} :caution-caption: Cảnh báo :chapter-signifier: Chương :chapter-refsig: {chapter-signifier} :example-caption: Ví dụ :figure-caption: Hình :important-caption: Quan trọng :last-update-label: Cập nhật lần cuối ifdef::listing-caption[:listing-caption: Danh sách] ifdef::manname-title[:manname-title: Tên] :note-caption: Ghi chú :part-signifier: Phần :part-refsig: {part-signifier} ifdef::preface-title[:preface-title: Lời nói đầu] :section-refsig: Mục :table-caption: Bảng :tip-caption: Lời khuyên :toc-title: Mục lục :untitled-label: Không có tiêu đề :version-label: Phiên bản :warning-caption: Chú ýasciidoctor-2.0.16/data/locale/attributes-zh_CN.adoc000066400000000000000000000013201410231027400222560ustar00rootroot00000000000000// Simplified Chinese translation, courtesy of John Dong :appendix-caption: 附录 :appendix-refsig: {appendix-caption} :caution-caption: 注意 //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: 示例 :figure-caption: 图表 :important-caption: 重要 :last-update-label: 最后更新 ifdef::listing-caption[:listing-caption: 列表] ifdef::manname-title[:manname-title: 名称] :note-caption: 笔记 //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: 序言] //:section-refsig: ??? :table-caption: 表格 :tip-caption: 提示 :toc-title: 目录 :untitled-label: 暂无标题 :version-label: 版本 :warning-caption: 警告 asciidoctor-2.0.16/data/locale/attributes-zh_TW.adoc000066400000000000000000000013211410231027400223110ustar00rootroot00000000000000// Traditional Chinese translation, courtesy of John Dong :appendix-caption: 附錄 :appendix-refsig: {appendix-caption} :caution-caption: 注意 //:chapter-signifier: ??? //:chapter-refsig: {chapter-signifier} :example-caption: 示例 :figure-caption: 圖表 :important-caption: 重要 :last-update-label: 最後更新 ifdef::listing-caption[:listing-caption: 列表] ifdef::manname-title[:manname-title: 名稱] :note-caption: 筆記 //:part-signifier: ??? //:part-refsig: {part-signifier} ifdef::preface-title[:preface-title: 序言] //:section-refsig: ??? :table-caption: 表格 :tip-caption: 提示 :toc-title: 目錄 :untitled-label: 暫無標題 :version-label: 版本 :warning-caption: 警告 asciidoctor-2.0.16/data/locale/attributes.adoc000066400000000000000000000013751410231027400212710ustar00rootroot00000000000000// This directory provides translations for all built-in attributes in Asciidoctor that emit translatable strings. // See http://asciidoctor.org/docs/user-manual/#customizing-labels to learn how to apply this file. // // If you're introducing a new translation, create a file named attributes-.adoc, where is the IANA subtag for the language. // Next, assign a translation for each attribute, using attributes-en.adoc as a reference. // // IMPORTANT: Do not include any blank lines in the transation file. // // NOTE: Please wrap the listing-caption and preface-title entries in a preprocessor conditional directive. // These attributes should only be updated if set explicitly by the user. ifdef::lang[include::attributes-{lang}.adoc[]] asciidoctor-2.0.16/data/reference/000077500000000000000000000000001410231027400167445ustar00rootroot00000000000000asciidoctor-2.0.16/data/reference/syntax.adoc000066400000000000000000000145211410231027400211250ustar00rootroot00000000000000= AsciiDoc Syntax :icons: font :stem: :toc: left :url-docs: https://asciidoctor.org/docs :url-gem: https://rubygems.org/gems/asciidoctor A brief reference of the most commonly used AsciiDoc syntax. You can find the full documentation for the AsciiDoc syntax at {url-docs}. == Paragraphs A normal paragraph. Line breaks are not preserved. // line comments, which are lines that start with //, are skipped A blank line separates paragraphs. [%hardbreaks] This paragraph is marked with the `hardbreaks` option. Notice how line breaks are now preserved. An indented (literal) paragraph disables text formatting, preserves spaces and line breaks, and is displayed in a monospaced font. [sidebar#id.role] Adding a style, ID, and/or role gives a paragraph (or block) special meaning, like this sidebar. NOTE: An admonition paragraph, like this note, grabs the reader's attention. TIP: Convert this document using the `asciidoctor` command to see the output produced from it. == Text Formatting :hardbreaks-option: .Constrained (applied at word boundaries) *strong importance* (aka bold) _stress emphasis_ (aka italic) `monospaced` (aka typewriter text) "`double`" and '`single`' typographic quotes +passthrough text+ (substitutions disabled) `+literal text+` (monospaced with substitutions disabled) a #mark# to remember (highlighted for notation) .Unconstrained (applied anywhere) **C**reate, **R**ead, **U**pdate, and **D**elete (CRUD) fan__freakin__tastic ``mono``culture ##mark##up your text .Replacements A long time ago in a galaxy far, far away... (C) 1976 Arty Artisan I believe I shall--no, actually I won't. .ID and roles for phrases [.line-through]#delete me# the [.path]_images_ directory a [#wibble.term]*wibble* does wobble .Macros // where c=specialchars, q=quotes, a=attributes, r=replacements, m=macros, p=post_replacements, etc. The European icon:flag[role=blue] is blue & contains pass:[************] arranged in a icon:circle-o[role=yellow]. The pass:c[->] operator is often referred to as the stabby lambda. Since `pass:[++]` has strong priority in AsciiDoc, you can rewrite pass:c,a,r[C++ => C{pp}]. // activate stem support by adding `:stem:` to the document header stem:[sqrt(4) = 2] :!hardbreaks-option: == Attributes // define attributes in the document header; must be flush with left margin :name: value You can download and install Asciidoctor {asciidoctor-version} from {url-gem}. C{pp} is not required, only Ruby. Use a leading backslash to output a word enclosed in curly braces, like \{name}. == Links [%hardbreaks] https://example.org/page[A webpage] link:../path/to/file.txt[A local file] xref:document.adoc[A sibling document] mailto:hello@example.org[Email to say hello!] == Anchors [[idname,reference text]] // or written using normal block attributes as `[#idname,reftext=reference text]` A paragraph (or any block) with an anchor (aka ID) and reftext. See <> or <>. xref:document.adoc#idname[Jumps to anchor in another document]. This paragraph has a footnote.footnote:[This is the text of the footnote.] == Lists === Unordered * level 1 ** level 2 *** level 3 **** level 4 ***** etc. * back at level 1 + Attach a block or paragraph to a list item using a list continuation (which you can enclose in an open block). .Some Authors [circle] - Edgar Allen Poe - Sheri S. Tepper - Bill Bryson === Ordered . Step 1 . Step 2 .. Step 2a .. Step 2b . Step 3 .Remember your Roman numerals? [upperroman] . is one . is two . is three === Checklist * [x] checked * [ ] not checked === Callout // enable callout bubbles by adding `:icons: font` to the document header [,ruby] ---- puts 'Hello, World!' # <1> ---- <1> Prints `Hello, World!` to the console. === Description first term:: description of first term second term:: description of second term == Document Structure === Header // header must be flush with left margin = Document Title Author Name v1.0, 2019-01-01 === Sections // must be flush with left margin = Document Title (Level 0) == Level 1 === Level 2 ==== Level 3 ===== Level 4 ====== Level 5 == Back at Level 1 === Includes // must be flush with left margin include::basics.adoc[] // define -a allow-uri-read to allow content to be read from URI include::https://example.org/installation.adoc[] == Blocks -- open - a general-purpose content wrapper; useful for enclosing content to attach to a list item -- // recognized types include CAUTION, IMPORTANT, NOTE, TIP, and WARNING // enable admonition icons by setting `:icons: font` in the document header [NOTE] ==== admonition - a notice for the reader, ranging in severity from a tip to an alert ==== ==== example - a demonstration of the concept being documented ==== .Toggle Me [%collapsible] ==== collapsible - these details are revealed by clicking the title ==== **** sidebar - auxiliary content that can be read independently of the main content **** .... literal - an exhibit that features program output .... ---- listing - an exhibit that features program input, source code, or the contents of a file ---- [,language] ---- source - a listing that is embellished with (colorized) syntax highlighting ---- ```language fenced code - a shorthand syntax for the source block ``` [,attribution,citetitle] ____ quote - a quotation or excerpt; attribution with title of source are optional ____ [verse,attribution,citetitle] ____ verse - a literary excerpt, often a poem; attribution with title of source are optional ____ ++++ pass - content passed directly to the output document; often raw HTML ++++ // activate stem support by adding `:stem:` to the document header [stem] ++++ x = y^2 ++++ //// comment - content which is not included in the output document //// == Tables .Table Attributes [cols=>1h;2d,width=50%,frame=ends] |=== | Attribute Name | Values | options | header,footer,autowidth | cols | colspec[;colspec;...] | grid | all \| cols \| rows \| none | frame | all \| sides \| ends \| none | stripes | all \| even \| odd \| none | width | (0%..100%) | format | psv {vbar} csv {vbar} dsv |=== == Multimedia image::screenshot.png[block image,800,450] Press image:reload.svg[reload,16,opts=interactive] to reload the page. video::movie.mp4[width=640,start=60,end=140,options=autoplay] video::aHjpOzsQ9YI[youtube] video::300817511[vimeo] == Breaks // thematic break (aka horizontal rule) --- // page break <<< asciidoctor-2.0.16/data/stylesheets/000077500000000000000000000000001410231027400173625ustar00rootroot00000000000000asciidoctor-2.0.16/data/stylesheets/asciidoctor-default.css000066400000000000000000000704771410231027400240400ustar00rootroot00000000000000/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */ /* Uncomment the following line when using as a custom stylesheet */ /* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */ html{font-family:sans-serif;-webkit-text-size-adjust:100%} a{background:none} a:focus{outline:thin dotted} a:active,a:hover{outline:0} h1{font-size:2em;margin:.67em 0} b,strong{font-weight:bold} abbr{font-size:.9em} abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none} dfn{font-style:italic} hr{height:0} mark{background:#ff0;color:#000} code,kbd,pre,samp{font-family:monospace;font-size:1em} pre{white-space:pre-wrap} q{quotes:"\201C" "\201D" "\2018" "\2019"} small{font-size:80%} sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sup{top:-.5em} sub{bottom:-.25em} img{border:0} svg:not(:root){overflow:hidden} figure{margin:0} audio,video{display:inline-block} audio:not([controls]){display:none;height:0} fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} legend{border:0;padding:0} button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} button,input{line-height:normal} button,select{text-transform:none} button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer} button[disabled],html input[disabled]{cursor:default} input[type=checkbox],input[type=radio]{padding:0} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} textarea{overflow:auto;vertical-align:top} table{border-collapse:collapse;border-spacing:0} *,::before,::after{box-sizing:border-box} html,body{font-size:100%} body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} a:hover{cursor:pointer} img,object,embed{max-width:100%;height:auto} object,embed{height:100%} img{-ms-interpolation-mode:bicubic} .left{float:left!important} .right{float:right!important} .text-left{text-align:left!important} .text-right{text-align:right!important} .text-center{text-align:center!important} .text-justify{text-align:justify!important} .hide{display:none} img,object,svg{display:inline-block;vertical-align:middle} textarea{height:auto;min-height:50px} select{width:100%} .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0} a{color:#2156a5;text-decoration:underline;line-height:inherit} a:hover,a:focus{color:#1d4b8f} a img{border:0} p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} p aside{font-size:.875em;line-height:1.35;font-style:italic} h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} h1{font-size:2.125em} h2{font-size:1.6875em} h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} h4,h5{font-size:1.125em} h6{font-size:1em} hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em} em,i{font-style:italic;line-height:inherit} strong,b{font-weight:bold;line-height:inherit} small{font-size:60%;line-height:inherit} code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} ul,ol{margin-left:1.5em} ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0} ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} ul.square{list-style-type:square} ul.circle{list-style-type:circle} ul.disc{list-style-type:disc} ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} dl dt{margin-bottom:.3125em;font-weight:bold} dl dd{margin-bottom:1.25em} blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} h1{font-size:2.75em} h2{font-size:2.3125em} h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} h4{font-size:1.4375em}} table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal} table thead,table tfoot{background:#f7f8f7} table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} table tr.even,table tr.alt{background:#f8f8f7} table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6} h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} .center{margin-left:auto;margin-right:auto} .stretch{width:100%} .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table} .clearfix::after,.float-group::after{clear:both} :not(pre).nobreak{word-wrap:normal} :not(pre).nowrap{white-space:nowrap} :not(pre).pre-wrap{white-space:pre-wrap} :not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed} pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed} pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit} pre>code{display:block} pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal} em em{font-style:normal} strong strong{font-weight:400} .keyseq{color:rgba(51,51,51,.8)} kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} .keyseq kbd:first-child{margin-left:0} .keyseq kbd:last-child{margin-right:0} .menuseq,.menuref{color:#000} .menuseq b:not(.caret),.menuref{font-weight:inherit} .menuseq{word-spacing:-.02em} .menuseq b.caret{font-size:1.25em;line-height:.8} .menuseq i.caret{font-weight:bold;text-align:center;width:.45em} b.button::before,b.button::after{position:relative;top:-1px;font-weight:400} b.button::before{content:"[";padding:0 3px 0 2px} b.button::after{content:"]";padding:0 2px 0 3px} p a>code:hover{color:rgba(0,0,0,.9)} #header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table} #header::after,#content::after,#footnotes::after,#footer::after{clear:both} #content{margin-top:1.25em} #content::before{content:none} #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf} #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px} #header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap} #header .details span:first-child{margin-left:-.125em} #header .details span.email a{color:rgba(0,0,0,.85)} #header .details br{display:none} #header .details br+span::before{content:"\00a0\2013\00a0"} #header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} #header .details br+span#revremark::before{content:"\00a0|\00a0"} #header #revnumber{text-transform:capitalize} #header #revnumber::after{content:"\00a0"} #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} #toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em} #toc>ul{margin-left:.125em} #toc ul.sectlevel0>li>a{font-style:italic} #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} #toc li{line-height:1.3334;margin-top:.3334em} #toc a{text-decoration:none} #toc a:active{text-decoration:underline} #toctitle{color:#7a2518;font-size:1.2em} @media screen and (min-width:768px){#toctitle{font-size:1.375em} body.toc2{padding-left:15em;padding-right:0} #toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} #toc.toc2>ul{font-size:.9em;margin-bottom:0} #toc.toc2 ul ul{margin-left:0;padding-left:1em} #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} body.toc2.toc-right{padding-left:0;padding-right:15em} body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}} @media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} #toc.toc2{width:20em} #toc.toc2 #toctitle{font-size:1.375em} #toc.toc2>ul{font-size:.95em} #toc.toc2 ul ul{padding-left:1.25em} body.toc2.toc-right{padding-left:0;padding-right:20em}} #content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px} #content #toc>:first-child{margin-top:0} #content #toc>:last-child{margin-bottom:0} #footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em} #footer-text{color:hsla(0,0%,100%,.8);line-height:1.44} #content{margin-bottom:.625em} .sect1{padding-bottom:.625em} @media screen and (min-width:768px){#content{margin-bottom:1.25em} .sect1{padding-bottom:1.25em}} .sect1:last-child{padding-bottom:0} .sect1+.sect1{border-top:1px solid #e7e7e9} #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} #content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} details{margin-left:1.25rem} details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;-webkit-tap-highlight-color:transparent} details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)} details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)} details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem} .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} table.tableblock.fit-content>caption.title{white-space:nowrap;width:0} .paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)} .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} .admonitionblock>table td.icon{text-align:center;width:80px} .admonitionblock>table td.icon img{max-width:none} .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere} .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} .exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px} .exampleblock>.content>:first-child{margin-top:0} .exampleblock>.content>:last-child{margin-bottom:0} .sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px} .sidebarblock>:first-child{margin-top:0} .sidebarblock>:last-child{margin-bottom:0} .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} .literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em} @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}} @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}} .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8} .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)} .listingblock>.content{position:relative} .listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5} .listingblock:hover code[data-lang]::before{display:block} .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5} .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"} .listingblock pre.highlightjs{padding:0} .listingblock pre.highlightjs>code{padding:1em;border-radius:4px} .listingblock pre.prettyprint{border-width:0} .prettyprint{background:#f7f7f8} pre.prettyprint .linenums{line-height:1.45;margin-left:2em} pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0} pre.prettyprint li code[data-lang]::before{opacity:1} pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none} table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none} table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal} table.linenotable td.code{padding-left:.75em} table.linenotable td.linenos{border-right:1px solid;opacity:.35;padding-right:.5em} pre.pygments .lineno{border-right:1px solid;opacity:.35;display:inline-block;margin-right:.75em} pre.pygments .lineno::before{content:"";margin-right:-.125em} .quoteblock{margin:0 1em 1.25em 1.5em;display:table} .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em} .quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} .quoteblock blockquote{margin:0;padding:0;border:0} .quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right} .verseblock{margin:0 1em 1.25em} .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} .verseblock pre strong{font-weight:400} .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} .quoteblock .attribution br,.verseblock .attribution br{display:none} .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none} .quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0} .quoteblock.abstract{margin:0 1em 1.25em;display:block} .quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center} .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf} .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0} .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem} .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0} p.tableblock:last-child{margin-bottom:0} td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere} td.tableblock>.content>:last-child{margin-bottom:-1.25em} table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} table.grid-all>*>tr>*{border-width:1px} table.grid-cols>*>tr>*{border-width:0 1px} table.grid-rows>*>tr>*{border-width:1px 0} table.frame-all{border-width:1px} table.frame-ends{border-width:1px 0} table.frame-sides{border-width:0 1px} table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0} table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0} table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0} table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0} table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7} th.halign-left,td.halign-left{text-align:left} th.halign-right,td.halign-right{text-align:right} th.halign-center,td.halign-center{text-align:center} th.valign-top,td.valign-top{vertical-align:top} th.valign-bottom,td.valign-bottom{vertical-align:bottom} th.valign-middle,td.valign-middle{vertical-align:middle} table thead th,table tfoot th{font-weight:bold} tbody tr th{background:#f7f8f7} tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} p.tableblock>code:only-child{background:none;padding:0} p.tableblock{font-size:1em} ol{margin-left:1.75em} ul li ol{margin-left:1.5em} dl dd{margin-left:1.125em} dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} ul.unstyled,ol.unstyled{margin-left:0} ul.checklist>li>p:first-child{margin-left:-1em} ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em} ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em} ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em} ul.inline>li{margin-left:1.25em} .unstyled dl dt{font-weight:400;font-style:normal} ol.arabic{list-style-type:decimal} ol.decimal{list-style-type:decimal-leading-zero} ol.loweralpha{list-style-type:lower-alpha} ol.upperalpha{list-style-type:upper-alpha} ol.lowerroman{list-style-type:lower-roman} ol.upperroman{list-style-type:upper-roman} ol.lowergreek{list-style-type:lower-greek} .hdlist>table,.colist>table{border:0;background:none} .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} td.hdlist1{font-weight:bold;padding-bottom:1.25em} td.hdlist2{word-wrap:anywhere} .literalblock+.colist,.listingblock+.colist{margin-top:-.5em} .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top} .colist td:not([class]):first-child img{max-width:none} .colist td:not([class]):last-child{padding:.25em 0} .thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd} .imageblock.left{margin:.25em .625em 1.25em 0} .imageblock.right{margin:.25em 0 1.25em .625em} .imageblock>.title{margin-bottom:0} .imageblock.thumb,.imageblock.th{border-width:6px} .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} .image.left{margin-right:.625em} .image.right{margin-left:.625em} a.image{text-decoration:none;display:inline-block} a.image object{pointer-events:none} sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} sup.footnote a,sup.footnoteref a{text-decoration:none} sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0} #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em} #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em} #footnotes .footnote:last-of-type{margin-bottom:0} #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} .gist .file-data>table td.line-data{width:99%} div.unbreakable{page-break-inside:avoid} .big{font-size:larger} .small{font-size:smaller} .underline{text-decoration:underline} .overline{text-decoration:overline} .line-through{text-decoration:line-through} .aqua{color:#00bfbf} .aqua-background{background:#00fafa} .black{color:#000} .black-background{background:#000} .blue{color:#0000bf} .blue-background{background:#0000fa} .fuchsia{color:#bf00bf} .fuchsia-background{background:#fa00fa} .gray{color:#606060} .gray-background{background:#7d7d7d} .green{color:#006000} .green-background{background:#007d00} .lime{color:#00bf00} .lime-background{background:#00fa00} .maroon{color:#600000} .maroon-background{background:#7d0000} .navy{color:#000060} .navy-background{background:#00007d} .olive{color:#606000} .olive-background{background:#7d7d00} .purple{color:#600060} .purple-background{background:#7d007d} .red{color:#bf0000} .red-background{background:#fa0000} .silver{color:#909090} .silver-background{background:#bcbcbc} .teal{color:#006060} .teal-background{background:#007d7d} .white{color:#bfbfbf} .white-background{background:#fafafa} .yellow{color:#bfbf00} .yellow-background{background:#fafa00} span.icon>.fa{cursor:default} a span.icon>.fa{cursor:inherit} .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} .admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c} .admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900} .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400} .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000} .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} .conum[data-value] *{color:#fff!important} .conum[data-value]+b{display:none} .conum[data-value]::after{content:attr(data-value)} pre .conum[data-value]{position:relative;top:-.125em} b.conum *{color:inherit!important} .conum:not([data-value]):empty{display:none} dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em} p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} p,blockquote,dt,td.content,span.alt,summary{font-size:1.0625rem} p{margin-bottom:1.25rem} .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc} .print-only{display:none!important} @page{margin:1.25cm .75cm} @media print{*{box-shadow:none!important;text-shadow:none!important} html{font-size:80%} a{color:inherit!important;text-decoration:underline!important} a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} abbr[title]{border-bottom:1px dotted} abbr[title]::after{content:" (" attr(title) ")"} pre,blockquote,tr,img,object,svg{page-break-inside:avoid} thead{display:table-header-group} svg{max-width:100%} p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} #header,#content,#footnotes,#footer{max-width:none} #toc,.sidebarblock,.exampleblock>.content{background:none!important} #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important} body.book #header{text-align:center} body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em} body.book #header .details{border:0!important;display:block;padding:0!important} body.book #header .details span:first-child{margin-left:0!important} body.book #header .details br{display:block} body.book #header .details br+span::before{content:none!important} body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} .listingblock code[data-lang]::before{display:block} #footer{padding:0 .9375em} .hide-on-print{display:none!important} .print-only{display:block!important} .hide-for-print{display:none!important} .show-for-print{display:inherit!important}} @media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem} .sect1{padding:0!important} .sect1+.sect1{border:0} #footer{background:none} #footer-text{color:rgba(0,0,0,.6);font-size:.9em}} @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}} asciidoctor-2.0.16/data/stylesheets/coderay-asciidoctor.css000066400000000000000000000065741410231027400240370ustar00rootroot00000000000000/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */ pre.CodeRay{background:#f7f7f8} .CodeRay .line-numbers{border-right:1px solid currentColor;opacity:.35;padding:0 .5em 0 0} .CodeRay span.line-numbers{display:inline-block;margin-right:.75em} .CodeRay .line-numbers strong{color:#000} table.CodeRay{border-collapse:separate;border:0;margin-bottom:0;background:none} table.CodeRay td{vertical-align:top;line-height:inherit} table.CodeRay td.line-numbers{text-align:right} table.CodeRay td.code{padding:0 0 0 .75em} .CodeRay .debug{color:#fff !important;background:#000080 !important} .CodeRay .annotation{color:#007} .CodeRay .attribute-name{color:#000080} .CodeRay .attribute-value{color:#700} .CodeRay .binary{color:#509} .CodeRay .comment{color:#998;font-style:italic} .CodeRay .char{color:#04d} .CodeRay .char .content{color:#04d} .CodeRay .char .delimiter{color:#039} .CodeRay .class{color:#458;font-weight:bold} .CodeRay .complex{color:#a08} .CodeRay .constant,.CodeRay .predefined-constant{color:#008080} .CodeRay .color{color:#099} .CodeRay .class-variable{color:#369} .CodeRay .decorator{color:#b0b} .CodeRay .definition{color:#099} .CodeRay .delimiter{color:#000} .CodeRay .doc{color:#970} .CodeRay .doctype{color:#34b} .CodeRay .doc-string{color:#d42} .CodeRay .escape{color:#666} .CodeRay .entity{color:#800} .CodeRay .error{color:#808} .CodeRay .exception{color:inherit} .CodeRay .filename{color:#099} .CodeRay .function{color:#900;font-weight:bold} .CodeRay .global-variable{color:#008080} .CodeRay .hex{color:#058} .CodeRay .integer,.CodeRay .float{color:#099} .CodeRay .include{color:#555} .CodeRay .inline{color:#000} .CodeRay .inline .inline{background:#ccc} .CodeRay .inline .inline .inline{background:#bbb} .CodeRay .inline .inline-delimiter{color:#d14} .CodeRay .inline-delimiter{color:#d14} .CodeRay .important{color:#555;font-weight:bold} .CodeRay .interpreted{color:#b2b} .CodeRay .instance-variable{color:#008080} .CodeRay .label{color:#970} .CodeRay .local-variable{color:#963} .CodeRay .octal{color:#40e} .CodeRay .predefined{color:#369} .CodeRay .preprocessor{color:#579} .CodeRay .pseudo-class{color:#555} .CodeRay .directive{font-weight:bold} .CodeRay .type{font-weight:bold} .CodeRay .predefined-type{color:inherit} .CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold} .CodeRay .key{color:#808} .CodeRay .key .delimiter{color:#606} .CodeRay .key .char{color:#80f} .CodeRay .value{color:#088} .CodeRay .regexp .delimiter{color:#808} .CodeRay .regexp .content{color:#808} .CodeRay .regexp .modifier{color:#808} .CodeRay .regexp .char{color:#d14} .CodeRay .regexp .function{color:#404;font-weight:bold} .CodeRay .string{color:#d20} .CodeRay .string .string .string{background:#ffd0d0} .CodeRay .string .content{color:#d14} .CodeRay .string .char{color:#d14} .CodeRay .string .delimiter{color:#d14} .CodeRay .shell{color:#d14} .CodeRay .shell .delimiter{color:#d14} .CodeRay .symbol{color:#990073} .CodeRay .symbol .content{color:#a60} .CodeRay .symbol .delimiter{color:#630} .CodeRay .tag{color:#008080} .CodeRay .tag-special{color:#d70} .CodeRay .variable{color:#036} .CodeRay .insert{background:#afa} .CodeRay .delete{background:#faa} .CodeRay .change{color:#aaf;background:#007} .CodeRay .head{color:#f8f;background:#505} .CodeRay .insert .insert{color:#080} .CodeRay .delete .delete{color:#800} .CodeRay .change .change{color:#66f} .CodeRay .head .head{color:#f4f} asciidoctor-2.0.16/docs/000077500000000000000000000000001410231027400150255ustar00rootroot00000000000000asciidoctor-2.0.16/docs/antora.yml000066400000000000000000000015771410231027400170460ustar00rootroot00000000000000name: asciidoctor title: Asciidoctor version: '2.0' asciidoc: attributes: xrefstyle: short@ listing-caption: Example@ release-version: '2.0.16' ruby-description: 'ruby 3.0.2p107 [x86_64-linux]' ruby-version: '3.0' url-ruby: https://www.ruby-lang.org url-rubygem: https://rubygems.org/gems url-rvm: https://rvm.io nav: - modules/ROOT/nav-top.adoc - modules/install/nav.adoc - modules/get-started/nav.adoc - modules/ROOT/nav-converters.adoc - modules/html-backend/nav.adoc - modules/docbook-backend/nav.adoc - modules/manpage-backend/nav.adoc - modules/cli/nav.adoc - modules/api/nav.adoc - modules/ROOT/nav-safe-modes.adoc - modules/ROOT/nav-docinfo.adoc - modules/tooling/nav.adoc - modules/syntax-highlighting/nav.adoc - modules/stem/nav.adoc - modules/extensions/nav.adoc - modules/ROOT/nav-lang.adoc - modules/ROOT/nav-errors.adoc - modules/migrate/nav.adoc asciidoctor-2.0.16/docs/modules/000077500000000000000000000000001410231027400164755ustar00rootroot00000000000000asciidoctor-2.0.16/docs/modules/ROOT/000077500000000000000000000000001410231027400172605ustar00rootroot00000000000000asciidoctor-2.0.16/docs/modules/ROOT/images/000077500000000000000000000000001410231027400205255ustar00rootroot00000000000000asciidoctor-2.0.16/docs/modules/ROOT/images/source-vs-output.png000066400000000000000000004535301410231027400245310ustar00rootroot00000000000000PNG  IHDR@X:*BbKGD pHYs  tIME Mh IDATxwXT:Ei!6v#Xb,MrSb{WTDT콠˖CΆP@U~vwNs8;MRRB!B!B!D+Y B!B!B'^]rC!B$''w!B!_Cz!B!B!#!B!B!B 0w֌2ϳƍ/r_/ 3rKrB!cKQqtt>V̼st :мh40kL*Vs=wu`0Pj*c6h4YDYdee1s իW ʂ`u:K_fd4 ...ؔj_222rʕy9,Y3g0Wptt,rPc0=k0@N@E\rI !H@>d .uTy3{N ];wݷߒ'BlJRSSұ#Zm|'=p#׷o㓧NY/U^zTH!BcFY&籺ׯ3i$N:E`` OaL&S{7ؾ};&LˋMPZ9ɕ+Wҹ3RBEAbkkKRR_NN޽KTDŽB<@a21s6}od?bwiݤsqϚի9< {+KI,ԪQ-۶a2}cJP@#{luTj ǜ"[l6ӺeKR !Ⱶdbٴy3W\rO\ãpx9h4}<==$CBXQ NLLd͚5qE6n?q jc_ ,OSW\ILL^E5ؐȑ#4h`d2N8ݻٺmC/;2?߽R˓xTTFca0,U+Wr &NB^CQQK#&&g''*Vq:dޤI{q˖SF n3̫oI8tx/χ:jY;~3klf9O?+BF}~ʕ\xUhb^͛7\r֭[xyywYKIѪukU ;w"55MTf=4 ȑ#GL2iyRؖmpvvzj2}l~[WFJŌlشzt낍-W^ey _~:kG͚5HNN_c֭tj޴@/xyyzr8>``(B d7d'ٻ?ƌrlIIIl߹ۖ&i:|ʶ;BQ6$$$iRm|о1T bɲ>OVV{C,b~a06E?z*Λok0>[[[^7Hǝ<{c^8_o`dԈ\rK1r8vol5x1tҙoW_+Ƃ~^@0p5ڶnEhܸy+WKشv5nV9?r 7,[3o\˾}hҤ5ڐlkki ,̝߮;.2h x7ٰ~=1zoTÃ,(^\xCѶmb8r0W^婧EQغe%R 66[[[6jd<z獺MFéS9s,5jTڵk TB|7www?ϛ֟wҹX֫gtaztZEY^`w>sի0 6ndݞ]AJj*o6|}^eY4oy_M|8S><=,gkgr|Op*rB!DS*Ʋgn޽;Gٶm˗-I&l6 mSx_uCLݯGb6FS {m?`2X"_5FdŊL:uU HQySI2(v1%ɋY('5"..={h۶}M-[Zj4jOOOOVV ?#Gih ͧʰQz͠rQK;~6w:YTY~u$y#11={/z=c~&Ju _)VЭsg mې|.Xܡ=`W᧟9qdufdfNg ~3>hj7lh7F̒RMZTŶ|*w] 0lmm9x< HՒƁjժʑ#G8{չzc\rZjg-n_6 +nYyn۟ӧO[ n;O\1@DqdQ4u݅gYM޽{ ❉-Y|=)Wz^rBQ2 0o7 !Yn=hI?l`=wIJ'aP̜ah4Qƍɂ0VO_I `kWUyl@6 f6i?=1/¥ cص'&1Kjp6mي ;v?aܾO*=y=C|-fӟ7 @V5l?F(| \ >{ytulw( !Aի]///tr瞴iS4mʖ͛ٸaw^X( .]jB lllpvv___J(˷o$%%N oooU{WP [ 2ÇlRp2;oRSS9{,III䠷ݝ*AAxxzZUIQ+srrpׯ_'3#4׻~})YS/_Çs%llV3..gҬY3󾗵lՊMu諮{Νi59{QdggsInܸhN]R|#ܫ 7^'%%eZmswA\KȰC``n7:dz*(3~~~<uk̛7NǫSzb}UصV !88+N~ޫkɍ̴̕C`@@M!Dɕ*r-yt+^uFKCj. se^}xOo233uFˁqolRN:͛7h4b與}}iРO?4MqwwQvO?޽{IHH 5%\N#ʨ_&$$Īƍ 6 NQ֙3g5r$̝77駉dʕ,[CpBv˗III`0qqqrʄ3p 6mZ`u;Νf Begg߹'͍J>>TQ~ѡCR .sqFMPPs-t=݋w?@́HMM%22Y q.W[2tذ{j1\r52BiӰl6?0w\N:Err2& ;;;Xt)OEDXl63jHN:Ō3UA֭[,ZݻvORRwquu<``ԩԩ[תŋ1|8^^̟?{{BÇQ 4#Fjr ?#Wŋ$''&/(]<5kբ<۫WzC}ѢE|w?~[BX"UVLnNe̬,U3;YY\۵Z-{ܺy=z0x`b{;v_֭[-5HVˋZkӿzc vlj=a1 >jt?|=k׮ҥKkZnU6GϞa$"eT$P(kqqdggӯoYǟpqn߾]`~5\~KT\dkg^ЭsGʖmI}[Z ;IOϧS~] -98:tl??,WƂ_ѽWnܸQHXt{hӪ%&ljH_~||CUBgǮ]dee7%xi|B"5iܘ7SBXN!$e%(3={>9ܾC={KXX}7T7;w`oO5h~G\t .p1v͗_~/J= }BY]י?App0͚Q%('gg|2ϟԩSl߾]bih4>z=i322޳*V?Hwޝs1N8A5 -u N¬YqDDD9sxϟϒ%K2don6̞5iӦq*UD͚5Z*fn\ιsr .7:t(52i޽"{8f3vvv<mصs'KġCHHHeqN8AP*4hj-66rrr_gƌTXM  7oիCq06ͻ&FAc4~:7o݂|@` {DGGSRBRCjJ w&$$#Fbr&L3gR #88W77 Wg˖-lݺ-[2u7n˗-rt֍&M` lٺm[b6bŊ=Io2>}tك@LXkWstL2k׮QJڶmKpHʕ#11fY> O{n쉎nݺ wYV- OFw&UQ$5k6x0^y^؟voľ1,]=xL&F 5f3_F#'Obz'իVB!'hCiCҪukϛʕ+ <m IDATZ7n0|p>ׯӮ]+rgn/_7ߴl?y#899Q$k`\zlƁ9kQۓ7M~yCu[ʕٙ{5mkCZZW_RJ̞=:QbEK>ߘ2e /OO&?ZRSS1|8k׮yZFQ^3[0aΝ;ǨQ6|xh?9st{UjԨQZ-'O)S>Xb%7of͢Ed7P\"N3X!yС-55_~iS2o<ʗ/I$"#5HFFG\ ޴)vvv,Zid4Aԯ[ܸyv[ j,i۱ղϜ%,0{lBBB>cV+Q7nǎԩS9CՄZhAyool٪ ;vоCBK殝;Q-[Z@>Lu:/Y´ik|'*꼱N@`ٌ'n+WRqMٌ-NbرT^~2Xyq`+T`ȑ,\^{S^ Z7端Xv-=z`FVDwkպ5_NN޽/б#~~~L{N*_keff&<7oҽ{w R졯OOzvJT ch4̝9C_9<~Lz{rwwǯ QӹR5$:Z~~!vHZymX ͛gqA~w.@@`|{B ފRŊ>6/~ŋzB?Ny<ӽOmS:N`?xz=O7ʕ`H|N\/~~Ktl BtJ _%W럟_fz~];[;FJyO/llmZ|KCLO}-qcccC֭|BuWPDy$BQj#sNݺ:xӧO"V8^O߾8;;[(JmV'-)lFټi͛7gYa4tN❿qT=åK Q7w.{d"##1h4ҲeK&Oѣoh׮-[,Р޹s'3fˋi}FDDe;E5A_IRfMVZEll,ysmv߾}M&"5*wSח;wb2֑LMy ;EQ$%%1I&L<W؃}sD Qrw>o6gaț :4;uDǎYp!VI灇;F!Hƍݻ79K/fqer]vϻ%]Z-ϝc꧟bkg_j` (( &0rH~G>=:t4 9~~~*=z|2~VZUd8! ))IIJJR?4hr !B<wѨ(,X@qrtTz쩘fEQ>#N8`%Mt3JϞ=7WWe͚5(d*=RfMŧR%eÆ (`(:r\RZ5͛_MwaŻ|yi&JNNNtGiʏ?@'NT޽zض#GeeV݆_,տ 8+UyQ<=*)ǎ+t;vT)𹺭]v)vO?YOM(}}_eӦM%.GɤjRqwsS_`yu[999JNw77e* 'N(>*)a (E^vءTTV^5.tR^yg4 OOOj֬Yꊳ3YYddd&';ɄMyx:n]ӡ1<~XOOӧOgǎ0q$ubccx"4lذZҨNNN:u,[%G5 NNNdggYnB!^F@æ5`}Ҿ}{N8СCYf 2:qqݸqcǎFƍ-w>=nkkk񤥥Qv=棢(888P^=8|P4pah4( Ie!տRJ:uHKK#6jPk߾}QWNU-.OLL$66jתU7/~.L&)ؠ`0cu^ݱ'99S< dvvv-y?bbb={6:1cRVBZ@QNʗ/_X"ʕ#--ׯ&r..TTfg ?t!({*!nnntbˣ?vdB!;RIv*֮B 5\Qvm9Ž; j㮝3fΤK.3h@?0(ĵk׬S+Wh4HY׿=Zh^gΝ2S?v111Ш'՞N*T 4,-y\rP!w\QkFc]˩eQN<==KS{CF,AuMkhKf.=uT l&77^en F4P3666|겮jժQvm._LLL g;vMӦM0E'w&33]%ߏ3͋90$=q_RX? N{U*W̜9s,{k4K"V^ʕ+2z472鈋cW_j+%&;;N6o~Qq~Ԡ/ۗ(B<B!Ᵽ6z۷T ,|; Z;CfFݻYv-k.r1d2΀۷/GfŊ\KvZ7ooM ksss KB͇ӧNq lmmYUY^ :N $od0,-wdI(+WL&lllʆ gϞّMxxxX mW-ꇆٳg[.pwP\\UVjH2z_0vX&O֭[ڵ+ `l߱~7n0i$LZ-LիWҵ+Æ +Wwtdff2l0Nrrrz䟟յȺ-U,;99QbEjլOބO Ύ)2͙رk |mGPjU~[]@vv60hӪ#hܨ!_MR*#KO9l(_"#B<ŋq;9 "Ab7C"uڕhV\/|Չ!z= kؐ1cDzdbΝ˦M~H~ 쓓:Ǣ,+&o~`jԬiWwV@zZm+==ܜ*W&#=ò}3Ȭ3ػw/YYY888p9=J*U̸Wޞ&My&on put邛CiwA:vȺuزe%Ц鰵SNMرiPP3g`֭I󂡥CDEPB*U }c݉?5sUz?ӳ1#^ kN #9^7&NNb T)dX'M֭ػ-[B !8u .i&<<<Թ垦8F;2k,;Mܥ}!ZKCҽG&MEx7 "L&/`ɒ%|5{6V gV̙ӧ?r'Wmܸq#{vٙ^zժWɉ'Ob0)v(p9Ǐ༡h48r䈥NL:uzDw%--/O2'hh4Z& h{9guxgDt:]{i}7Օ8Ju=Bx+G\^Zeg֫MS4o4#_SzId?SP`fW.o/ ndffgWAvv6>ӋƑiь~_ ''u8y_mMgԇf2pKx;Si!,t ǎq 55nzޢew;!ElyFѠjT~_jƾjZ#ƟeBfЩ@Ŀ{]iNiˈcPqds"\vVmhьg{޲x#9ݘ% IDAT8{/ Ff4lN=9~ߨ(EjC~(=zŋhEf?hRw?$B<۷KPPOkgUfͨU Wb ʻˋl233#Zh6l !!P{$;w^ʗ/ϛoUhw5hذ! ,/ayc\t5jj~wxx8חcH͍-d|,h4xzzb2R,U\vv6\-M1r;z{K.ѻwoFm~܎j2puue۷}ǀ^:F±km i$H$)"##C("<2sC :؏[[ow7a"<2ZfԣhզtFsDxdxvD!<:lh۹0bDxd8p3/bÄd\y {=ǖ-"<2ZkCzaQlA<;~BkF=C p{l{/Q1 7;-?"<2Zl޺՞W-ys;GDxdtDTfáGDxdgmdV$srB8yRGFu7:\"<2Z<9ia6+<F?\=/hqatN'Zƴ>5{\GFO./]m:u/ZTDw$ΜFQ>rTD`Wq(''7Wi+&C`Q;gOEߕٿԴRi3|)#Ź9n^ FlF !8sϣǎh?a_,w,}McDxd=CzVvoݛzAi+vZjn )MS=> #./ϡ?:w&I$^"#Ũq !8'#Ŏ;/'&sѢS+D!H$ɭrO"!!A4 ~K[ UT6mr8W~$F0d2:qE<3nCۋuٲeR@ ?ΒO+K.ڡ~z"55T|rJ"ukQTTT*_ ,*XtEfY}Jb4uD׮]^7wnr-o~!&=(,,[llǎ#<=EDvv5wyѼY3#^xy{>[es;l=xm۴nk*v>쳢R@ܩ\Yl߶E(ڵm+›7qF"%%m+,,QR@ر ϯء/2x ˝ů;yZUD{^nټYx޽zf+?>>^4l@7o.\rYD"qǢj5[l!Ϥ'p {ZAA99<EEE(7țz-\ԾHlw4'N9vr}Is tރOLzy"mOKΝK_b2ެC/M(wM_8s)2)**Gի[/'~X?kPo>Xnmlv`2w`loBB~7ڡP4o֔S?_ h29K_jӦǮ{kԈO>QfIt\Gcqh,5k ;'N!F>ޖmիZx~zu̶X7#]7;!!ijcF%w&ڽw779v:+ *nk 鮺 Zƍe/?E4 kg3gwr׀D"HUlnK֭]˹sh޼9֠7k{Ojܸ1dgg5JbݺuL>K.wwc;]PPSY` >p)ns4x`FEvv6_3gb0+^ZFQ.@/>JQn+:C2o< ?Ξݻ oe1YL2?3z(.]XllIJJbܸq,[ʁ|4}:^^^eRRYcƄ0u4<<<3z4/_.[EEE޹\veVT*N:Ehh(n^@С/\ ))͚QR%9w/`_+k<[o^Z^֗}ȑ#Yr%~Ν:cӇc_h?n֍p1fΜFaĉ4n!zKEe=f3LcjԨ5k䓜 OݔW֫7~=9p?0ڵJժPTTDrRvbQn]f|YaSDՋ3gktRv͠Ah۶-Upuuh4KRR'_~g^[4E /v'$$ܑw+ʊϏ,5n|Ccl?`h"z=noDjmp 7>ݛHm0q"8;9a0h0] FsRPJCJ w77srvliquq!W+7F)rT<ŭ( =ucͺupI.>DaA!m}q7惻&[x7y9/Q*E{Eբmn ;wCL~m}=TwLt\m0VHLRn!7WWז}Fqsu|Scqq vkpvv.s瑭*խ:3|`!,Z o6;5%Da{wܸq#7oߟ:|C,=z#GXb^{mX˪UXbjOOO@Q(**"''D@@{㉉)ן-Jߧu̙3}uV<<Vk}7dddh\H?F˛NcڵOdVqvv"""hҴ):t ::ooo72&f͛bJsV\ԩSqrr'ۢsFEEE1b&LH:u*l6֫}δiprrgggL&dgg#ˋO=u6Yeɶmޑw;:uPjUNc}-YC&a"Hbi%͜rk]ZmϜ3oͽfu ]Z;v⥜<}LxnXWM%DFpV|}}Yw$''@p.YBܙ3ri.^@zz:T*<<=^ 4U4nV{x[fٲK:޽{9q8W\`0B@J ifjՊ*UZܮT+WDQr-oڵY~=2e:mh\ThחJ+.&[#ۢe`` SMQ]f;ߟHOOQ1"}GBpѮKW-Μ=[[ ӱh۹Kŋ"<2Z=F\xQL&|Ï?'N{"-MDmowFfhV{E1sΗƋN=zH8^GF=S OP,1{АGExd8t1zDxdػ0B׋om;[jx+:/[}GFm?w $t:xik"<2Zl2ұ[ٮ*"<2Z{Rrxo4\׽e:rd1"<2Z7uɱK`xB~F-^h;)"bDJN=z:O~kڃybX2QPP eI$"] ѽр7sMy7f%xmύfk<hZ;|GHG IDAT3[yVkZ>zЭsg>5.#9z1^w>t܉kѽO?{fioϳcG3gR͍ƍSZ5,Çß[`O?ω4mƬ>oZv-0n̝M6³؏?b&СԯWKжsW<<[66O}ϽpO{=^{[O<6/ެ۶-3 esܳWcV;FJà /޼ۮo~cGլuó_>=ey qj7UwhբſH"H$+VBf9 U}O/kwޮxP!0Lea+x?Z\O}='ƥRl^p[VG۽rTd^[iÍaݫe͑=w#fEeix"k֬!8$zSl6Cf8|Οwʹvs\>{ND"Hn7 Xˋڡݓeݓ 55F 񸻻Y=˗O&Ozb.n7WWԮ;^VKj6Q\xjL}k KiOBZZz) 0z`w9p0С]FVKYH`RRRqrrb>!6oaʕ((<=b8[lJ;mei4 +w>,jdO?qjժɛGٮ~Lppr_Zlɥ˗U&`Q:Xro6U_뾸$y8=Fɶ?5|8 ۅ8|(;]A`׬wtӗ61ԯWgggCM=jH8o.pl,NZ-]:vt s' g 9hXgO`μyDur>b&iƘQOϜy_93$8gg'CJmPh߶ s^_Āѿore2bؓT^EK;F摇f =v gg'ụ .nTP-ϝ\t ߰vz~m-:ZF̘1>LC|!T& D"Hyny_Zʃ_ųQRܭ[ivs깑߼o5ݮq+o*:ηCXzbINNN:ԬUzn۝7z?݉qH$m|ClD[o;oӻg~7ßͯ+ߴED"H$K5гH$-H xlPիǖ[quupj a0lڴo,`РA7]"H$Hӥs'3ßG/Uj/ŅH!I$D"H$}MF!;;$jժuC ɄFСCTT:$D" DB@6+<}\ZK G"H$D"HSlʉzQ^=~^<{x,10.JѐˇӦqeƏO͚51F$D"WQO4?Rs<==U& ףn߿1!+W&3+>={ʁH$!H$wEQ0LRذaǏݝj{?Jb=w^|֭[G׮]?˥D"HoD"H$D"d D"w6m͘AAA۷O>4lԈ*UFH'''+Wc֭lۺ!yʕ+ߐ -D"HoH$D"H$w#D~{H$Ǧغu+s;HOKwww4b`0O~~>kߞ{.]RC"H$ͷTH$D"H$"=$c( Fgr?NRRy:& WWW qoЀUR0B$D"׿=dtD"H$D"H$qlJ ٌZ~ԯ_BךfL&jZ R"H$҈=2DJXbK6DDŰq&)D"H$D"H$7JeY )53͘fT*T~H$wO̜%,ԡ=]:wKNw Q1|0#9D"H$D"(bWj\R D"HGX쒒lPre)D"H$D"H$D"HTHD"H$D"H$D"H$D7]]Byg $%ُke?[CyHMMh4L j.|qgҤIJJd6JXF̝CyYYtً3>eێm-F///OV-Zj+Of=( nnxxzve-[YԫS7^{&55(ߥGnSOINJ!YSfẤdz/gۺ۰шӧMeD=oDT58}v$"D"H$IV=$D"H$ֱSn7_ĕ+^;Ç̳hzuA eټuh4ȧ1LՓ:kϝ;pg_g*{B1yھ8f|1[Z&V%11M7/,r(*߲L+U &>~ 8(? O|ӛ5kuvڽ ʌ*ia6yvSa yaNmx!<޻4/**kP>9CGкeK{۷s񱧿4Ż68\BK\f?.%K1Sxb<8d(IFF~~~~/c?__f9NfM귍٠mD"H$D"!. &tj>,P) "᝟y[:URD"Hn%ȸѣ8gXveÃ:(?,/jտ@떭_%N8g?.^tWq݆ ptUqgΖfS#~pV D"H$^FaW؎fCݨn4<E)SqxU w.eUfqUs0fIXd1|D"H$ͽ ɄYXqr"N5 ;KǮMFOÃy_Áسw-jά{jeZllC.55BB]\\H$D"HuJW!/\Edkbb"&*bˤd梡sD5<ݴ}cMa0w"F5}tF (< EAmM2 qGp͉|VMP1aUN"H$mS^rdrߑkYjԖ _P@RRc{s$6flvAʙ.H$D"d2fDPTT;w&00L%Hqˉr;e6QTٳ;vؕ.M6{:,X@`` {@׳j*.^h~ 8T]c[9/&;;S .z%V),p?_G UoϣPII[YB8^WC~, J!>1cW]xG=F3Z :\4xR(ٟeˮPǥˎs\JͳjW (S R<˒4K ccem(y J!=$^%6|һܱt~lED"H${ANNNhZY-V":Cj[9( nn rOɬU琾|OT\ȡD"H$DrQ~QF >Ltt4o߾(\ds%7;|:doMXBT0]mݦH1ͼ&Ew^Ҍ7%T kɳ,\=V0)ՇbʏunobQyat Y*5{}7r%)9-Yɱ5 B}H$Dror[ _~5<-D]Hs&d"335kq4=# a6_w775v=-'++ Hzz>/AUy͌a q]{g%xxxа~[Օ?l!%%E5D"H$ZMHHNNNEpp0Çq|7dee9(:E4J)IOO`0\:"&& `8{,*te۬;tF!33L 1ͤӱcG Xؼy3Bt:v^ד^wPxdffEQQQn7Y`T)L¾m#RrO֑o@R(,67BJ/ګiyLyZ寤s%=".OzN!St^]Puz.$da)'KGQHjV(2YUd0q>){|&k>hM7-&_⮼Xl.^J`p?BX榮dY:|˘gb4Ҳ PWo4Y@^%D"H$X:];%@DTО]}Mٽg/=RR 4[.lc3tk53^+U'3>9׮zK;AfMؾ=vpV[>={U|`=m)tIED"H$lvzn2PTt҅{rvJ֭[ٿ?dffRV-hPCi&<<c>W!MخE}_]CBy&f9MqԨɘe~3>sY| 2uEĄU65OI̖CϷ/22,\iJ 2sxhdҥuذ)]5kFbb"IIHzxzꅿ?kHnܹ3ǎc1!CZfȐ!TRB#TիWgҤIEQ8}4 ,]v+k׎ ryj5{]v(K~?mw)tt;]8{ ZۇThƷEW``@ lW س#WpqRShTӏ7εhjV)1?-Uth[i[[,_˝#H L~"5$:,4o/wovi=H,`L5|v{quְ} &RX4')b[w9~ j+_!)#ZN}F4vgǰjJ3FsXn7~'91}\hzם :ƒ7njh=};ZMe L{inHa]X5u4kw6W'/d1qnFҷp957g}(z'"r{x 7{I3dƒ9?][Tbü4);g>bϦM"H$ɿmӳ'}zf_/r5mBMmL mcb6\:oO~4?A<vAر#;vdƍݻ5j`񉉉А@?[Z}ol;HߘJ߰"Cr IDAT ;IKͪv[l5%馥_K?֟SxafjV.uniWg Z &31aUfIZ5D놕x_C9tGH$Dr"H$D"H$+R$''ӨQ#䐝e6:: qHHۗǏS/ql޼ .P~}Ο?On7LSfMO$%%j9,zp%=Bjz`QV~g5Uhոh+H$=TH$D"H$ۂu~~>[] !0Lvk Ab2VJ)wRڄP*и- }P:e\łK4ZFPh0; >sǒ0۵>W1F:v z2B4jhISrZS&>7P(\?D"H${ H$D"H$HmʊT۷/`YwuuҰ-jqr,61LvDy[Ɔ 8vyyy4hj֬ə3g0h %+"VKPPƍ+d29d]6 ][~[)j<=I yF }uҨpwՠ7X%@ z<\vS,yݲu#,ԗovжU`&eY>UMc8xi0.-a2 {J /coIJQP[4el>x1Z\BQѪa%fOh`Q/s$.>w6ѸCAo0UςHdpbDm8]%ָV1 |*E!'߀lFQY!Ez owb8M 4]ӪerXD^Y6y*ܜȵA8puحFϔ}D_2ZD"HiTRD"H$Q,6l7nϏ-ZڵksEr#!!@U\p^~JJJl_~~~k4i9u 6,e/Yo6\lt:{TrssrQuBsh_J!,ԏ#qiMf],{LER ־4 iKogKII?^nV *q1U9U9z7j᪥}q2ˤ]3 A{;XW (aQ\R m;Q 6⮝PߍyBOBCYjV*8/WsJ%x1<^eJ\I/xB&]v!ĄU+x,V#VeFbHS돇η9ҦsWrhPnrB&EʴDrP@( hL%=4*q,>ÞD & ,ԯm4Ke_Ŵ}GQ]zB % H^RDbH(RҤ~[!9Љy@fvgfg7wΤhߐZ{֩*63hM({U.#n-L  Grֺ BLn&B!Bɓx"]t!SL@AÆ ?$44]vqA6mj_B -Z3fo>V^ ^^^(P{:Lu@"""v[ ">>/ILL[)EPPܸq`T] ɓM._۷p.vn(پ!߭+t`+|;I8 l:x WB1.ތf¢s}ZENQ[Y2_8KOHx\ ê=Wpu"N/Lrexv~_y%sX˫+=ǃsKb>V\]Gg`y{̜g9q6U}N98w3zU>OO$,l?|aq<FPxX@ʫrMLfg8x6sӒY ћe5~&V̘n58N_Wȟ ^"vopjV#7,VhevcǑ {<ʍXv&>,Łӡ}-DZh[-:z0qQf=kwTK`\$,ɹk˷O4ʧo%1\먭x_n8K^3c4Zy2m,~2~Q{wr=4oghf>W۪<fv "$"'$E',"='O$x3N`?i"Bg/ .!B!xjlP=g]Yz5AAA(P[nq9.^H\h߾= N-dMٲe9w'N <<͛SB~ ʕ#66ÇcXhڴ)^^^k^M40LԬYӾiIb([=`ƍܼyĪU SL\|{"B!BJ5)l);` lޝ.қ)6 SiU6i)K;C?֥,"ʾ!yt]_o5tzmSG)  ;uf֞ГӍmB%\]HfR4MCMXrjsJ:ȍX,`.oS8 >FR)=yTǾS])~/XU] n=wꐼ/]W?]sgl^cK=ΧN{oslHq2&'e[l7Mx9f\} ! !B!s% ǃ~_ooFƷGp+==!1aμ;3Sޘ;>w,oB#FLJ+g +5k,g.nD9_}?ϑ=;U~h޴ Q|;|F}/B!B!e &LtL E }K5@xi?ĊXv G _sѷ@g?ٳgc԰(\k|ٲ8~\kmܰ *~G~|;|oL=re>ys(Rw]#N>cGʙQÿR.XȘӬI2+W-ɞ-kV,ʰt B7˓Jsְ1/3gYo}{?tZܹr5@٫79|3cW!u2B!*@˶PJ1~L:rYP50Ȩ(k ~eKə3CߏF4>֍[ᷘ5g.}ڋ][62d`{#kyCB3oNNNt|Sق)}ܭ!]=?KUwoKY:U*Wt~Ⱥ1Bؾc'aapqvamk!ks2닧Ggu4j:kW,Owmb.ťf˞vw`D$o lپ֭Z=rй+7_|yf6m/b7w.^iGYrE?/Yz<7hPnۮRt}cbb/f˚> ~<~m}5EgxWOٹy#FDox|U|ַ_{ ///>At):we >kPf ʖ) ?n[gվ l6>sWÏ{s4{?+R0kiOKhجiڸKڍ,[vuZ<==廬]+W潖*XwZ`e %;oӞf%عkwM&uǾʖ.-l೏?ѣ۰>ͦ54MQ !B!UF>&M9նm;v(_@mĤ$XH6jt]1gT{S?Pl.maa?P5hܡgY>nXo)_@ըy _P?ik֭Sj^vOHPPHeX,KUl6+_@e6է}>W-۴U&!Hhh>f'NJm.?P١fߏwv]ɡ[榛K IDAT2̏~I97"""|_+_+{s8 jE*&&F)ǕڴejT~@kk㞽>P~PvQjCq㕯p=m?Za[|G*_@7ҏ'Ϝu}J?z?Pݸq;諡in۽wT:1R7nߔ_@UuTTߎxWUW7P;tTjɲ-E2W*_@u^nR._o;vRH:?P=^_~T;wuH?KU1a=B!HDd$?MB'g'?;vDN:5:smA[ŸɠS[oڂQV.::Nr'?y<O d#tl@Z7kFcFЕrȟ#{v""#9u49CP`9q Dl+9wci;ߍ7J쳞uFm8"_Ȩ/Yf}hiŷ?7o YK`歸Rti}aƗcyK|Ȧ[yY}|vkm*o>uy?Zn=J)bQ/\`DFFq)T͛=s}dɗXz ͜ŨX|Z@s sߛ4l똒[$B!B!xeX Bu&Ogѧ`]|~wssl6?~)wkɰ2L ˝2=w=?Ms);zX{viFL&u3g6+Tk[fzMy7AۼqȎgggoİc.^)U[ѱ];o؈}~ݳ~`뺮ӂprvN5eSR/gxy^`0i7n|ӮsW{PnxB Ӿ꩷յin"kSNm) zg-\'''og|]yl۱fMuɒ%CSiX)B!B!eYh1;xQ ڃ^^$$&prve^^^L&̞Tr_n6rϜJeڵ~a4evZ^}nnDĠrx":*zqi0[6k֭'6.s3rط|1p0& L]Q֫yVaI#`eN瘏| ]&}63?>2e-'8Ժ0y֬>OԯJ)VYK,\Y~&U æɭKd2萾d /_˗9딾kz7*2*m۱ƌNɛ'/ͱǟ{dJw[reQX~{TLl,JVTĞ}m!)ɔ '::M[Q@~TىUkb5m'QB!B! , Ĵ?3_inի0$%%q1Fݻ݃;l!88խkvիװX,$%%qQ?yɕ#{b`2Xq'Ďƪ5k sպeKOLl,k.L2Q/[xdj׬i4n؀cP&A͍?,pڼ B/صe5d ؉!NZˋ>>s!, IIZ9 >3̛OdTT:л_^{Ԑ%(>^-~e2''g˔tسay4o |;l87oiT ib0(Zcٙ?%13B!B!xe68t7[fVC޽ɒQxqgڴjL5p5nvY?gWYF,X'ZaOݷԯC+WΜ|3ƌ\.O>}|ǟiɧO c4hž6ahWTV50ʕٻ?5^gOwvv_&g6ٲfO4nuiyGhӱC;{]ԮQQ75/K >v8:wux͖mz >w7 ?LFM5Թc{>kj**f6bin(6!t:|=lþߟZf-֬WgUmjohO[7}ؼn k[8}EvMzwE RJ^)&6Z5֧>,_+^^^6mA_x1 /yPz[^ܹrɻ#!B!B2$y X-xNf͞jU:kAL(T`N/I˖5'{li`0<~ѷ˖e u+-m\*x,28.^wiܰ3fC j*ڵ͐ZWXx!&+WydI>ڙ9rY^[}CǷBy7n'ǂR'M`t/WOw=k m'''+W&8$m#rLsB 8, v >>Bo3f/SXh!{:p]$BB}!B!Ȉi !$!!5idɜtB!B!HS`};|2p^筼BnFmʜ3d=!B!B!ēHS`\p~2rB={pSx1j׬KaԸ׻ !/,K!B=d !B!D~B!B!k!B!B!#!B!B!Bp$"B!B!B#@bcc ʖmS l]o JN8o]j TeӖ-rݧmm?5jrϼ/\g>_fΞ۹w8})Bbc꺎bAX$>_@UV}@y}}L4VTT4C'=7odT_NϏzH/~rEA=w^Ȗ5s]fL3[пo26NnFB!36x iZm6F1E4FciV:O>y1^I4MCˀsaη,\JhZOo[tR @FA{t]W-5b1@w!8IԯȞXg( WysH?,f!Oν2c.[Ƃ 8p KvM8s C J*VD5={5Xda}x91S%{loTɀR`0hS6])44v.N (44G>$=󆄄[7Wq9nݢk_k糞7G&ooP-0 ?s8} /(!'_!ӧO3qpqqA4e777}mkaX{&[v)QS |b6ZjU4Mgܞۧ#G2mTf̘f0z={UWghDW #pif̜IxxxV5W3w\ԯ\@)UJo$!&c`$?^GMÔYtECqΜa9.6J̚_oȠxa1ڰATO߾|l޴nݻ?^a0hY͇n0kr?.XQ L[qL.mUL.DŚ *G,h8%,(eDj(]%3g !cy"Flߘf5;To Mx'ˁxy4۰_ HfMȣ]!cF`E<Y}|7j$eJN7of)ZCz:ao?[olشt]F=4߸ Obb"x{yr_޻F$-f3nnnϛߧMݞVDEG/J)4Rn}bbb쿗)]YMK3s A)(ZS~fޓNA`uPƤǮ]5ơn `_puu}~{I Pa4؉'OeZZwHhh& gg'F|-k݇J/΄iд9~GGfϙ@IHHd$&&*oO>ѣ}'K-HwmaC+RߦʻWVMݝzjL;ڱ};f͙˂Ec'N[jU7igæ͌8[)VX1~|+R!xv͜9s0p ŊŒ<|LXj?OL"E) [=mJ-MӬӥ$Oef`06+wnj֬iO7aۇ`@u{=ߔu4V^;#J)2gLƍ9}ꔽ,f~-,6(N&قSW._[;ﵝ[ڶ n޼qH>?'MXb~3R,Ь;B4>vwm g\=-lقd^zL&{^zꫯҰQ#{Kf>hK0:(eHQ{;ZMf]2741Jn'шR [@Y5CRXLI8OqvuiьF Lg=nhi/tt].b:`ȂA3:tuūVǜdxzޟwOf{z#J;ջ7իWw諶6on܊J`kLXt.J1TW;׺:BWލ۷l>՛][6߬~97GJ?$-җ|F\\<̝Ki*2eʔ*'9~$ TDŽ6n-9sݴe oނw;-,**QRE8~$+V^fl\!qٺ};ŋYF8;pu֧1=ϞpuuqJ)o1wBve_`D'@lm/@d2ѶSgRѢgMt[IIxEs /Mرk}`HصJF )U$aaa_{QF-ȟ/6ld8Q_vX,t 9v8{;߾zf)\7Oݳo9gP4jX?eيy廎oٻ?ʖku0\r[[<`m0r #F ̜9bŊmt)lvwOrעHK8oKǎVCK:(sHJJbʏkJ0-DT%o|[rv>>Yo, +7np;=4Ӧb0mTw[a&"""ɒ%`WlY1moa6٘L&&O@@SPl|~Oح[(V(1cT[0qx{yӿX7p0l]Ρ=5U}}Mh֭p{OS:3~JW^䍷XJ|f_Ã-:ԥLJ<3s !*m  c?~J+ۿQo <ܾ}ݻwGٲeyq7oۛ$UK/֭[r*̙3 \.^sګi{ٳxzyQD J.ɓ'9~8P>>J_Ŋɓ\zui$֮]K||%5:~`1(۠ Q!A\ؿKR9' H>eIÔ+둭`;M.Cl-.:@[xeA!*gd %łΜm\69Y IЙӔk 90'&r)"97&3V,c$FI)+V;1xzzҰaC_ݸ ˓/u@c:tYN_&667nlfSN1vXv-(P5j԰_J)a8}^;5 sf43Vĥ۔-!`;nlǃ 'WVwɍ[6R|DplNF|qЈxV35!G7£{eݜЀ_"WtuEIdFFw˱M.?IW QTN{`ЈIb`B#J@dv׵n}2zX,{c(JB"Y B#ڵqx3f֩t2mϡ r$_޼9z,=?AϏz<оXJԪyӄV:k;0#{v~& JQ!ay[4m̔_AU@@*T+ɏHDFEOZ*cF j*/ޯO/>q[Cz^gp"}ZoHRq~)9'K/S!K4_;d@tt^J~{~g{6=o>͚Xdj`;w&8$\9s:\s/~fTG劕V5" ;͛X,:whDI2Lo۾gggJ%T|C}97o]8W^bЭKTuB|3 `}6XfX4p {/e˖uk2zh*W}8{,SM~ű}6,Yl7mǩ]6ww4nGD0{l6oLÆ Zł Xj{bJL0WWWΟ?OL5z47N5l\>v_M#((777-ZDLL 9r@,7˗-c޼yr*Tiȟ?T\{o>Ǔ?~.]D\駟(VXO =J~8y5P 'M`DEE1ct8@\l,UUSD}tVZܹsQJʮ;ٵsu`fM7 f͚EJM_9铬;+Sr 2Т[, 6 ֭?1'$DFyw`Ńr?$Fٝ[o7'#!!|bkb䩬vϝ__':$wbɚHF-4͠1,Z[wf0pq*V[/<}߻Dthli<ɄG7nClŋRti>, NNN9r͛3bH~gY7~bt# _`0zjf3uֵ@)Ϝ>̈́ ҥKdɒ&PVҕ s#9u%D?/=0y2(ڂ ǿ#;!=ه4sg=|,SET(v\"":5c#KnCgX"Aq}#rUg] (y;۬w6jXtF|:^@ɠuLً+EdJp C~Ni^}j,Acs|= D){yzao_]BUxxzX111?Pm޺-6_@ҥi?P8聎48?PmI m*WTjULl}a\M'dR;tRiZ6k̛jkZÞKJu{vTm:vzm;uIs[jՕCR*2*J77oZk?P8xP=I!-vܕ5;tTd2*7$4Ժ]m۱'_b/spHRQQj?Pmش9k~>Cլ[ߡCN9|S|ҫٻoLz Y[5jԨ}/^|?ӎ;| n}Bd=gf뺲X,J)}pwW>PY,͛6\9s'*Z~ɒEu~l6WUSU R-RN;lY3Od{o+ZCzddTzT)տRjDj`txMZ* ڏ뺲J);<{.@BME )U@BQkAP@A(H.EAzDj~2?n%<<ٛݝݻٙzgOU6*J sJ)f͚!C2SJ+W꩖-Zy9uꔪSܹsyp^S^&Z:vڳg^ UZ2٣V5WWzUjTP`Z0#3gHU|y5feTFFǼwUAAjgRѕ*qK{aF/lեKUV-uTTd5sRJ\Ro 3//O)믿+UR}~Zǫ+??n:}]:wVM7VIII͛7+oo5ӹժ*"<\ ~M;~Zjܨ7nJKMUJ)fUtiճgBUɓ'[n]穧Tjj^77;31w4Q[ƫ}{ջ횫>߶ovKkUʨ w9΋c޽ԏK G3q]jMԓ^Cڶ+Ûݢމ[YhUԆSTҙ8u5q EP *'=M9O6_m6xEe&'*춭=K&ԌWgSq*n5K[LQ#t`JۈZ6qmxw;J0wǒ)Z1rz[U^nHJTY)JqN]i*0 @}J)μ6L*U_RgΜQS={t!]*/szƞ4q Qx@ݻW)?+UR;uҷQ\MZx@?q]HRZ[2m(es}r&Uu>l)elU;WOԌe׾٪ڿJv.&]mn~,ӱˎ8?3_.fO.V,QvMΫNC+O_LWQ NYW~]g_O]KQawR/Nٮ/{~6E"7M1-!?͆w ʒeiیA z Z4 8|M7bɬ\5+En^lZ"T)~ڷ_^bp[LMM΁| Bl`ZW`v>u$?g=Um&W~Ō(n n7C9\tV+Ghӱ{ ס>`ӷش~MXX~C\|52")9w][Vv \)뜒 atߛ,=B!M(V ,`„ iӆv` --AoAZxC)EhX.)1,N8-B=4 ?Ffv;Vg@h5> l64iݺqqN<7kbl6_ r]ƃ>H9g]R^=v喟oǏꫯI^^+W履ZGgϞ4mڔ5jEpH9rDOb!+3xCҥyꩧrcts@@~L>>> =N f4IMMe…jݚF^^u^Xz5GڜqAf^VWGlf\t?~FTBŊQ |YpW9Ͽ/.\jjTTfZ:uꤧ4 GM)t||}l , AAAMl:H3?95^| ̂V^&$Q5jup| Wy e" /8 4CC  찚ͬ6U/Q^C*T aS9>qo2lܕNȪ1c9v~5'M'<ChrP||  ?$]eǝ;{Xrr2OSN//Pzu*WmV^W]u8+~ҦM7nfnS:t .x|vnpX-mP6ܟ ˱x"?u̼aWJ/s39FMDĻm:AoUHx]Uʄa92ȳ*ڦ@Ն@o \Njud)<LF9y2|{],V;;til6;w/kU,LJ6%M! ado֮-JR>F}:sfo fO>lA[~=M{ͨPQkUTf\|u,??L&y?LfZhI8'.-"_@ ~zuoy/uCu5>e+w9~x L8_DD;j`n15B?x>iYKg}YڵlvJX9s8mƇrB!nBiv7$::I'7ںW\Cٳ'~~~ff͚[Ǐs%6mJ1f3?Oߩ5 2f+W&lYj^ٲe,ЃZ܎Jժ $-ERJQ99htt4>u QF|5o_͛|lQF BBBX~=SN-om\qynqNO?xZ59p{\|ʹM۶XV٣vZz!u6mܹs4 .p):voUGi|V ;Ip =μC 5k"((3i$=-㹱* n5 -ALz=E)TNL㦜ڳk٭Ζ*P] a*Wʫv۶m֎]җX Ԕl 4ʮǠ{\}! {}㶞v`ʮꊫ̔㴘UРAvMRR~- z `QpA{ M&z۶"UE~/8{ x{Uكm2tBrB/Oɦ}(1[9Br{yAC9kIҽD꽦_Fͮ/{ e)Q!~,v;wbE> Vktݵ_@PP5]}3!8(֭Zrt zdߎQcߣQl ~sGyyع{7-&8(UX9֭KLL vL|</^NiSزe *U"2*m p}y_Q] hXbM6=i\p 6ۼ9ʕmoP\;"Hbo/2y]η;7y*RQڑ` ]A5gG^LRuǼ]7jWd` QբmRSmmV|1f"; +:4UGF#͚5#11QPWU˖ԫWիav;:yZw4Ǯθvjg; izgPro?{9#y$nǗ_neo~Z(my火i }]qK;xc[n*UHn8-&77Cݰ9o"rf)>yS>O?S(}Td$Le”nkլu-{wHSض}W_n0XQ .q}{Ŷ޷1bBw^:uhצ oL*M䶍ƍҺUKmzyyه4wy~lڲM[\Qd4z7t~5mJܵp>q?׫Kog֭ȅɈco(XJj*'OVzvCvxy`ev^wޛ8cWq[6cz}u~Ǻos+N:9v=ۺwX9ʣO>vێӂ#guo?~ mNO r IDATbi<ާ/׮eub&"B!ĿR @FF_ycǎ1yڴm7ܹҀcdĉlj8~x=zQr l6S^?"]g: |||?aժUlv8*S{0kFjj*}ݻbɄGDܳiRwwI`4:A0ckpFѪU+,YBJJ {~9NJ%**㏳i&b71Sf9#`Q㞻q$$$Pzuƌe ŊvFUVz#PԿ~+FQ+r-*(߻M`4b˃Zm;PI3&o|t|~tF FJveUD>s kߞqtԉ~K.L:sΑJnn>uy `4R3:t$lv;v~>FՈϱnp7ܒWfWX1ͮ*`4hz Fǽ6Wk`(5/&7@LL4c O3M ZK-Jb" )bW^z[oeHts}0IOKSzg11ECLNuP|吗P^]ʗ/-Z5jjY=݇H?v gϞcܹ:|pz۷#?`X]C|@=]s_%Q6*i&;obRTV}z?mM ƳyV,[Nrr n1~i|ݷKOvlqq>yo+IIMޭb~yft499,I YRI"9Grr211ѼE@m߶ MptoU&;Z}=?trΞ=GժUkn[9:rLOJ5zԪQc?cŪoHKOQ{=Jc33vͲ+9w<իWc;#&:3EÄBs56kn^ :@To+ᯄ bbgrT7m"ߟh㨸}:vBXX]t]wqYL&Sv)mzVSyUkPs%) i%\qkll,c?ƍMxD~;۷o$^B|o?BZeZ: }bY6+WD3svTV-NIiF# /'S%9$'<2&_z^V<9f0p1yo Ƴs@{٩ơ`<{ $vq>FTJhDDWc*NF~Y'khϗm +_6\GZnv ĵtՏ:uoڵk sv3m4߸̬,7iP,8-_}.*Ouͮ05V',Л鯴wkwv l;p?gxIm!j45Ve]|74(@p.%gm'QWc,B4M)nwyˁ(ۡrt2if*pnS#3BJfuЩds)_:Ġ]$?zP!nFtZҡ};:xh=iVǗh}7}wo޺ ʀW_涶iheYŊx7J|N6Oo޴۵}%FoxM5I%Jýx^L׮MڵiSm>yC{^{ XkBYr[ݾy3B*Wįq)5-s__??:ЩcG:uX-bcݦbҪ]K7Bq>m| > C:~jML87b4f׮]K8q>|jj*GK.gϝϏ5 rcoddc;xb0<6bv6m7n$yssi߾=>>>/⫸:r^E_Ӵ"ӸFtF-j[5k֤f͚ݻٌ}?DPPM\Ӑ]jݚP,Y9/f~OvܙUVdb}|_[=t9fp4[3;:-%4UK%H~5Gg*xKG|L4]dp 1 =v@J%i`2 T%x /a]`W?כOѬNiQj;F\scgRr)%.!yzVro9rzUk4h;AǟxW/7n|BO'w4WYSvk^͑V-)8!Cٳw/f߼ӦLjU]b`XY) !57W3zh6mʨѣ"77|ݻwӷo_f~yvn[f3wٳYt)}RSS9}>S||<׵jժngڵ3#F*/W㬦iUN:#qԞ;w.˖-瞣B z'N`49}޸wixiР+V "<ʕ+ۋmޜJ*ӢE wN\pqO:i233@e c5BߨqOc4jw 4ŋjl>\1@^|EN:EIZlIVkWmvf#l [g~ܗaʥ.>ދ帣sm4`Xr$~;bJN"=;xĸV*Mo'8;,ݻprNBý9vӜq?!/'sf&'vmr3թo&6ʗzVl=Uc׬0sq cL,?3&[ִ6;~/z1G& " =Lb•lx:f;\zj,;snDfs:-[revA(͆7]veݺu$''9\zaZfZ$^;{ q)8b|1*]R=z&Phh0 z|Lm8ARz.K̥LRҡ8evs\::Sw6.%gci2qԋIYo2IV Ŏ])r-,t@0?؂@?/}?][FӾq|/O%c4j_䍏Vt(X]+[ o}Ykq\:+ĘM\JO}v]׽B[h ,,_tٙ'MUr6?BӖ âPB) !Bgp#KX"f1[48{, .mvH/ffƇ)sر#Æh4b09 о}{, ^^^l޴^{ esO׮넄5[VƍeHMME)Edfd0 **~Ѭ'M#22ݻ£] +^xgС\| =<}!''=zpbbb[t L<+V4`ԨQ/_MXhSLTPiӦh">s eƍ?~=>2ǵ~DD_ΙC*U MOOHKMŮ5j`W_QTBqvOFٌdby"%%wyMONv6hjբq& 07SNe!,^Ν;cΝ{9/_oqz#'x9y$6RJQfM^u;|g$$$`)Ut믿d>bƌQre ĢEXf ـ襗__~aΗ_bv6jWVcߟQB=j< ۷;eNTp6 cYToњ#Q~CV+~eB֎mSzi7iaoe?K ĮF|Cgt&qS2MSrFcRn-)|Mc Of(GnԧsYz,bUi<7_Į ~:tn448Mˁ+LJT[RF3ϞCϱ#kP=n烇rl&mM[yp_~Κ I9w7ekf˽{繽ukbccj&4D嘹(Lfmux _o9oA+h4cA)~Yv 1QAXv Myr1)Q_c+ʵRBCoDJXmo2l*#΃  Zgf0L߾ 4gyi?ir⯐ƞ{9~6*U*ӡm[o !BBnbhGn|d2a2 ӧQq5e䐞!!!~eggStB b +rQJ1+rrrnS4e`s6֖F BLJJ VH233IKM9ek_(HJJfk6LXX[MVVzͩ\eIVVaaax{{EZz[ uBRR5Mb!**47KP``&LlvEՎ%%%R>!={;@B!٣`#np[u,Xm pNOeG#ywϘߵsѤqcՋSB{a|lݶ5j$L<Ĕ/Wqw+ IJ?(BˋZ^*Ghs%c"@T]Xfp*h68-6l6epv8:) &&Gj\j˵}M@=rW޼L ݮ@s~cJ/Y X^s< G9{;;>l6fbSZ8"{Bҵ+B!(r |0xhX:7+^q PkQ]ŕIQ{H !B!?snuxhvC6+J$M B!g_'B!B!iLcQB$s !B!B!# B!B!B!HB!B!B!n:"B!B!Bt!B!B!# B!B!B!HB!B!B!n:"B!B!Bt!B!B!# B!B!B!HB!B!B!n:"B!B!Bt!B!B!# B!B!B!HB!B!B!n:"B!B!Bt!B!B!# B!B!B!HB!B!B!n:?b#b[oN?Dճ'\{i AAAԨVf5f^Vys!B!B!7N;Z6/KnvN_OzFFIKO/2m[oeiM9v?S.]V=ǤӪ]7oI9{_[^k֭Ql }*(M_7Go֮;3gQⴳS~Ĭ/evl6|~9b;YpBB95qㆄ'( MlG(]5j3U5i2hjMjA)B!"g}9+V(CSo3ƌOvv5&%'3vrrr٤KA܀wvsǎŦ5=f}9q'*'9_[YO;;~tl׎wvRŊsj%d6iۂ o÷=r̻rFbo_2mƇ0weۥVܜv;~&88oo[Ѷ- U jDDDS""\<̄2eiUS-|& `0h>|Yc]lNG)LBSJȴBw)nbk}ӕޮcڷ{矒V;}ILۉxLXV̝K/{3Im/[ %"$$D [H^^ .9/+Wѳ{}i|<}ݷ>/~EbR#-'^t\:s~Ezz>><-4mZb(S1xiDGWWFӂψ/CHOW^#>z Bق4&@B}vʹBOd"9]x?'0 ش/\` \#6G#--}@֬_]R% ?p{cFǷ7TJvmY2+Ё6~/oR HFF?i߾IXX- R̛#FH25_ݞNnFlkʥKAJbd$BONNW\ٳ\pA.+Ѩa0htN>˗Ixl6?W,1hPvEn@Xh(ǎ~z;#ƌ囵Z2nhnkDk֭gͺ#]:{Lun}>:w 1);ԉ=g~RaaL.r~n,V͚%:񓧠iJ0c3"ƾ[IKOnWÜa0?{ksOpP,_Z(;xlPbf} ~zmڑ{uj1<K;hԠ}4cc\IRPJO1#G\nח1exl{'[Lt4>oooug̝@)iL <+W<6mqzC>'~ZWZL&&CV-9xJsos/_e˱Y q1βE v&ONrR~kTO>v{yؾ1١=1푣G?pIII(kdz!1)I?o"^~=>VfM>":yt&OpW/8x[:oC<].n |Y._v\{#jת}WmݶW ,,_m_d!$%%vW; oն=99Y>>e}LJ>Jו߂b؈Q q}*" CXVB>eujvKcyɧ?sF>,Sޥf꿫xşLL8޸OrY}9w<+tވT\ڼ<4=wB[Asfz? b ;nC7ƽ1{˶m8???zj,XGNpp,Gnn.~ȃݻQ\y~M[[o3vdѱgēvY8Asrɡwg1<ԣ;ʖuٸi3CèÊ̓R-YY_'[7*U5kyb゚RŊtt' /a7kv}ni yдq#q@\|l-u~෇@Zժ\x%KqaLOgã:?YO6@8w(^\B -T uJ оB{^(N x]?v@@I2w93g3sν4y4d2#0 hg/!з\uw֮?|'=NLTW]cU=wwqZcb;/?/\`gŪU$&ݝKC#JyWP9zujڤȟy0 oLJ%+Vl*jF=xJW_Avy`zEqtALsfxwQ=M>Bƍ1j4׮piѶ=ލ*z2V'1ppvlڀJzv~~ٽ;/^$1i G`Ǧd2q 7oӎzx p10d;7o`6b^DVW t6j|D7jH-h8{y:oݻٹk7 h߶ bc =w7n8뜹Li׏в!pt:vxNI+W(~(^6 RFV녿E ˻XT`h4t+ . (F#eʔgϞ(,ӳ?8^h #""F] .<E\|Pe+Wڥ=ק deg߳m;vq u:Ь« !.>Ahӱ`2ˇ'MM32yvvoj7h(|xMn mg|q-'~! zvB]&4k!',S u6?ʡOz}erZ~~8/VOΞ;g޶S!.>A8y_ q ™gUO ٺ  MZ~ +>.إEݠPXXN털('>\x+%u XO.]d?(mX(hiY!.>AxQdlo5kJ|&y8&m1qBFB8fwB ˗LOoP4Z$'}r>7  iiW޸yKO&]z|fBFMNW*Z4 lشG!9e PPP`^^v\44m.CoQQP'кcgh4>3ko_-ًn4i6bK!nPHCz!Y =Pv>0o.;OҥBxx9AZ*?p6AL&c( ZArr O.]Z+ܺ O?}+rG.µk tYAպ\p;=Err0n8A5KϤe _\.ZsJhfo-{?Ί+ۭ. Oҹ4j]y7sb)*}Z~pQ4&N|;YO4v lHq[#9g7.u)iR/2p;ʾˬ?虳xsh-ʇf5a0X;+MƎo)?LƼ^g8sse^}E9<|=@:9mZA_"ŕܸyyme+!#-4Tld+HhD"qPPU\LCQ4XfpMNʭ7c<F12ɱ(ӛٳ4JH;`bڷvi4JHoo[eOoV6־L<=<Vdn_ۘ9yyGL|||BN+ࠠz̢Lp m]e] m[xםq/UiP*,.^kMO}o2| 0kٱk'lIұ>UדdBՊdmadddPL1&3i^;wqf8]ʰ*ԯԍ"rܼ<) ** t׷pb_kWSDh/8p7 X h(d΍ QB͓ӧ~V TTQLj1LvkT*E"إ;?>.&˾Rdti7[ſu#J A&/vɣ:AFQQ yv= nnnhRŃp}n[`gxq0^6Få4^6kׯS.4§̬,"#"ͨSՀa J2zUJ%|3RYɛ'u+yS~y˛>>wƏ|jn*B1mjʔdHF&O3ݱ[+3~\8~G7u:_}v7f'NbXnyW +;Ӏ[f}f4B[TX!f#M`\pѻwg_D"c?[:GD^2d2%2 ^'33 II˖!z#k%O#=z 4z<v Bז J /2_=z=ٸ73jQ*慅T*i3 NxD"g+utd~/dh4\.G.ޓ`q7|0$sOie~ .<] IDAT{և}1-+[ >% wwwXݕ)@-/(LJ ?Ozg(ښ4k:l[8g:ݩ^7ER,Oz(BpPo;_fa.TO3?VM 탁/^!o5SK )nooo$ g|p93| zusP" +X cojU`jUf|}}FrW[n߹ƾ&**1ȱ1J0L~VVu]|J*VHqȻr͐VY8eIw+TЁUND0'&%!Jq1lT*+jK\zh|k5T"E:1jz:=7lps~7 ?__6n inڼ+h:;Bg,<2`!]`в\q-( J+nPJ14mڄ};_^{nC"BG%n`ȑ]\3н{u$ rYDyuֱj*֮]ҥK9q۶mcŊ$&&D`t~12ey-Ż7Fefel29֗ ύ[OKn^L  }CSSS>}:6mbĉoN$2z*gf̘1ݻަG׭[7ocƌa-4Z5֮]+ސ}rmѣ۷?lˁgϲl2֬YCRR$&&yf+A૯bՏ]:7 d/_Nbb"Wf͚5^D/_NRRYYY޽O>ɓ'B g37_oXAR@c2Q}k+==3f6nD头ĉYjf}˗Yt)ǎ;=?t?s 0L\LMewH$ԮgW_cdegc0p$ 4 :#G7߲?hjv7;jw7w߸ ^O~A yb 4{j7hHC9-XzudpRԯϼSш^gæML)Aw -XDvN_};2wOuzyyҴi.]%#3HfV.ݠ=N 0}L&wbŨa.L&vEKmgQB/\? ++Km\x)=nnn^۷3>6jXwt |||MOv(ϟA" ;vbD|}| {z=+6%o3r9]:vQB[o ;b]O^t:>?F#leMy{vnc4ٶ}Rgw:lYjլɡ#G/D~fV6[6GP`uFe܄`0uvoD@@]vDaa!?Lm֭lٶ |(= ~]4&222?IKdBqQF}Yǯs޽L& x7ahHOODZ-w:D\V&&;'^,d2 '7ѤR)rYs8k֥04JHo^L&]nGob[ٖVwhU*W"22 >c؜ݔRx(**sxVN~:[5oLj$]ˁCDcիU%|y&3x!\pX5ǿEUjdf?p~, "{фD"O? JoJUw R j+ (=ʼyd 111c"##N|Fo֔XuҬ}``29]7 &I,>1Ҭӛ+Q `bxʼֽEzwY& aAQ@gzW&FfזO`18knkϝ;OOOdz>+°*J3۾-omkf WREWȪfĈr@-ZvIϭkڵkٳg}gǏ_e۶mNK&Fcf0҂dѢE=z|}}t_|;vp0u>(J[geq,8+^ʑ3meF4N=h=Y|85 vgD  ̙C^^QQQ( ͥK.ԬY~0}SRXw"H0F< 4.j]e2e4LfM6 d_{|Wt.RdEqнsgXN{iT:ufޢEtلth._֭xoGнkshZ;y3L`F3W -ˤgSnTJ%x^}m;vm1]&|Wڳݻv̷wuayk֠Y&l۾-[G&`WF|z4JH`ןҴUP0kƏO/¦-[d ^nmNۺM˖JJm20}wb hP>{T4<4i܈zugl<(խ+o6w՘ѣfdxBAfViiiՌuzE]6sXE8600'MI6Lhd kY|wBڹx~lش eCkvyodg԰mޤ qjyV6bfl޺[ͧvrBA8|([wl7]Ν;wѭuʌ_˚xU }_^Οs}29m5Mޝ6c&lnXXwSN'C^}ح`4F U`!,7D2n_:bBbg޻v.hM>}FsfO/~B0 X&LƺukI= TB* ;Tο1ND"RJԪUk׮ѲeK1/_ڵkFE~ޱx-ٶNƑ?sz`DYRn7X~[=V5JQsa4T ML&S塸;!g4LwӷQ)wߓ ca<ȔH$h4222h'iӦHR R>öOޱcǸr劝JJeT*Ϫx>Y)J;-e;J.ۙ L&Cղo>Zn]pׯӧ)((ã--=qqqL2{)!!uT*???ZjEJJ ʕf͚ 6mJrr2gח5jU\.)Dd$^#qV:>g|Ǣ\4&oi*hyO..%jDGGӣGd2jUVQjUjԨA5thmiv&;%;m-K3__ `)YY|2dHR4&ҨhJ^-y4sqU1`{޽!4lڟ1QD;"&*{z5|*22ͧKrU5֨Uw:K 4i?$7/ZѧWi,2ՌopV3Y󾾶TD%L9˗Ҩ\/JppӶIrsiک#϶htaO?raX˗wK3: 6lJ)Ç N8V&vMb˶m,_HNNի/V;י3w VJZQQQh;l1~ԭSkֈ?LaӖ-LL"j֨Ϋ/>(i?qfVNΝ\j՗^,OtTTPNn)Y*777^1L,S|pDGƫAѼI2fL.\Ȝy9.LDE=Κk֐&J/Z*ܵb}8翿6%P'/SWvͪ5\~ʕ+(e+Va9j?f2֥_@q8|XJhrdttwr3琘D RNF 2mg1,^¦-[sLú[_gs<==iߦ5;v|hG.].?@*ѯW/4nQ V.1+gd0~I`#:Eѽ{ $rW=L_҉R)7n`F˖-b/--7G@@ڵ#008`V.̕;ˠ6Mz]dM_qWՈ*$ J|+iˎs;rAڽ= vVzDzʓۛFG 05t;:z?8bՒI΢0rCWN fst"=U"xkU=M9˷՛xyTLZ@r uJ:ͩlj?#:UK @M<_=QB ?W _7 6?|0wF&qA ]vH$Μ9ݻ>nҤ Xn=zͰaضmˋjժ4߸q#fӧM픢;v`׮]x{{Ӻuk*T *% ٤p-j5Z"***A@Tr6l؀L&QFԯ_N\PP@JJ W^ERѼys*W,>/,,$%%,>___^}6;wd4k̡ lJOO';;v1}t.\@ll222M6qM֯_OAAi///6l#GO>vZNͶmh4+Wvډ'V(J|||h޼9{ի( :t@jj*|tԉדJPP۷lٲvm{9lBQQ!!!oooo HLLt֍P.\HQQ+V$&&;vOƍiРEEElذK.P(hҤvc֭ҫW//9T*~4jHTzK$t:(nnn4k֌hy~~>ׯ/QV`7IxjgA&MV*R6,쀀 d׏Fn]۷/ WqF233VZDػw/z *ЪU+J%ZLuL&#%%"""h۶-~~~c򻪷7Koޤ aHHM||8d"H0ZߕV,uAlnnȋ`bŊh®A@RL&aÆ;=6mۘL&iڴ)J\VZŵkרP=z@ղ|r._Lhh( Bղd݋SL!::.]uU'>>&M… 9wQfMZhJB"r.8!;.<ddfҦcg~==rS ,}+Tg޵R7c1 .ũHx[7U `V['Tgs`y6O̰ԷcZ|00nbN&>sɋwfwGS5/uiAt٭o]nM"y&{N6|׉Ki2qG:XSeVԭlouv>JbxtLٷVӣiG5ZF;=ix)**⮒wFL~= 0zܘ᳘ ?L!_MDMjx?Ǧ]xv9]&==I&ѴiSZj` (('N0sLwN͚59|0TX֭[Yr% 4Ã~UƘ1c~HNN/&55CFdd$999L0PjԨAXXH h4|ңG3f ʕs*GZ> X".\ ))ӤI'y9}4k֬7ߤ%ٳ|2G믿^ztڕN8ٳԩիW bOpݺuһwo}bbb1b@J̛7SN1vX&OLժUիw}իWUV|W[oXp!۷o/$((V˜9s8x _h42zhj֬СCE7>s~ƍ'3}6 BP0| #G?%%~m=… O*>>lڴJe,77J%QQQvT*QQQ(RL $77<4СCՋBCCӧNѣb[oݺˆjժ $;7p֮]3ŋ+WBNCVR|reJ$nsf. yzV]O5§d;%z \Yx 3b|-d2xL6VgDj6mÐI%h xɩW9ωnh8seJNoK;v!`?wUrL&o5B&b0̧mK$pl*x 7nr:NX"5"ML9{o+k׮`JpoNaa!jAtT^]Wfͻ#˩kA~ ]k[O* ;nnnvϟ?/iZ-* Jh$,, D"Çs?BBBt(J8wH_Ŋٺu+ɴlR).k׮+*W9{,u߭X")))^6mڠRēiiijѕU^Jv8s]WV:e2aK.!D@pp0;wXrrr1e˖eر*uq6m*ʐ7 pU&ԧO~>SڵkGllxċJhX3 @jjyLj4\|uYbHt:EReʔm[^xJEٲe( ٿ(O־4@zzX֭[j:66ZjA2ed5AbLa$' @t3UX.)o4!00PO???1B 33۷oӾ]WrMZqz"##Q*v[ƕDʑ"mIh', i [3|f{p:=111 ./`sJ2KF*<CMQ= . . f#xѸq?Iʎ5k2_(xxxr  e˺\[rLet 4~iӦQvm "k1\tшT*E&S$xo|f@7"I ugK l[=jp=I b{*SlD8BJW +`00@ƀR9Zbht<ͧj-ܕ̊;:ܕuTǀ`n%@B.E!+_J\Fv֦}-&WY )6F#:Ծ;NɧP(X V|t۲F_\jsSL999SvR tss`0`0b\0}t\E%bgѢEٳCE"pQ Xp!zT'3vܙ\-[޽{2dJ.0/**B&Э* PE$Nȑ#\|Y///VcFBBsε_hU(~'mk2̎G9Abi/7T*GX$5 R[_@[-ֶF PIH>j pd21,4=Y qk.\֭[EȰ1c{\IsOaa6V>wk;~JpUUAo؎{\x'ot5 .mZr5 . .Bd29EE9̞ }DPT*pb.[\fH$rOYt)~~~ 8PTEEE1x`JrQ^\Icu5 MFdj qyIpFtkSv1jn6LDJ d>@ 5rXvjcTb66httMlv4:JLT8)e65 V-}nr FFe$`0P?RӿK TB@ۥt: _m߽9E#FiU+5Ul5M߾}EHQ%''___fՋ/Hz3gnnnr O;Z˸|2[4Jd3Y@`mo$E\.d2QfM:v(S(vR\Njj*tؑٳg3n80 ƊhEUFSTvlo,k|6`AJRT֗FF4 *ȋ3Lv{wߓF4iBz((({JJFy TI1TX䶉?-M%?222]6}͍T5t: eW791|I1loxvΝ %''www1Zv1$8u9;::&D HR!z6Fo0a5s ˷[<[G BtmY7o¾qxxxf^QQY,J///;wիԭ[.]pEe**/\ TV TZ:uJlݻws%޽: $$D`pITR[߫$ ׯ_ɓԪUKtU|y X'@AAEEE/_OOO}APPٸBOk4֭[G߿?rXXXHFFׅܹsGt_NppXu>$9uPkXXxsRi4rR֭[b=VBRiZTTDff]3'[Gk\j5Rƶ K_* -|}9ߠ˔1 rV3J &3Xz*4iD]@͛s?m\L&9RV uV,: Ҹqc^W F . . . > $`]V؞.$y Eo #66VX!*/^ȡCVXcâ88~G/v{ Ql؍{%1Ɵ%QcEPD@PTlX;Jq-wyĝ}wfyw+W;vG!002 O<ݻR_\>QJʶ&8q14w''?̀m55=Z\e{"#[[ mUY ˔,ؑy +,ҹ6NE?ű(jF=)2!-K}}xG<ƭT\D}3au,)V\1ϱM&lU%[JG BJMЭe5Ա#7! Jf޲vNYyr&>ͅB`ߴ;vc|$&&pssc%)+++ %%<( p/&tcVၜbHHH`ɮkSx%"""RpDDDe˖e-`nn"##8|0bcc6O:۷o^xkkkfQP"!1Qc09ZZZܜ AAAy&˗#/˅7R),JRrR)d2+OV_}?۷ozmԨ~)XXX 쌰0ѢP(UVEW^!;;Ǐg͛798LdddÃMسg,XGC J7h]k{ڐgZ}*JF&&&h۶-3 qQ-Bke!Bf&6?p6=(؝R(R*Ѷ\9;:D)XZ[[!>>J];@ @RRáT*q];w-[d͛7 =4h]:ucܺu rfZXXٳgy>;wkCI$fctt4L__ߏbKJi͟?eLP( BP( ڗ&z}u+*UE˖ WDb OO+-- VVVFwŋqm9ֶRE`n"@p)vCĭW怆5l3ppaq >.kq)2n5+4e '`Cp8nu~Fy+ jY©nyx\p7^t3L!Fv B4+ژ5ǿq'1 0=u#6! YnU>B"rlL1*￁XCjj mRX?~Rx)amm {{{޽{vڵkN:n߾ ///j~o޼3n}]Bxx5233T$BLk׮1 HPV-\z!!!z*j֬ V|FVV#xzzƍhٲ%z̈́` WbccqY\r*T@vW666Bll,RSS1x`TPj"QQQwB!T+W ;;S|>9333s4m+VĥKpm$%%aРAR _Z5\|!!!x!ڴi+ 0vh"==q&) $$$˸|2ׯÇܜ}Fp]DGG#&&pwwgr]p8ԪU  Bdd$ѺukFE0 Ξ=D֭Qzuرcx!T*!PR%p8ܽ{ǎC^^RSSիC"~> +++twbb"͙]3qqqǫW;S={3gʕ+Q@ajpp0\+lݻ@֭aiiDDDիWHIIA:u p ܺu jImnnDiiiuvb1:7qp@yjE}7ZYYA ܹsF:uРA <qP#11~:Zh7ԯ_111˗SSS9쐑DGGbŊpttDTT^|ի˗Gll,bbbڵk39d\.pdgg#-- ^:D",--8Yj֬dܻw5BڵVB{pNR ujуzع{?LBnJt؁'G-66g߼m;`ؠA;7cdį&u+}rRϞӧ`eeId8C3_:ف]{~] zcע"Æbit!b=1ׯcI1f;UWJzz:|I IDATԿ= /}(\.99 TƖ-PB{XYՅ@`! >>իW/Q8wiWR,Z~ᬛ;"==|>@o.Pb)JgzEDڕX Zͼk!r9r9|>_P\ jb.bm.t6nbbJۿ=htJ [[t\.;?Zb`X0O J J NjBrq\Bj-]hԄ脓"yp x\pS!_pX֡"Jf:A{MBr& WB>WۄgU rСqZM$E uzD"n6!66Dqgh7z},H6cYFuǾ:E BfyEâs B{O[} P؎360z0Tk_Lێ^uQ[^4DŽ)k+x<̐~LMM.gc^M>~[,n1nէVs:ѵݹ(<5 & bL$wD9$sx{>7}wUi)Bd$Rf뚥%֮N͚1n܊Ř og?4]:B"#8ПV .ݰ~*9~oXYYa5hҸ .BdT#֯Y|'spR.`w$'CVp_bk^HIMe+.!?/Xь 6Xz%Ȑ={a©A8u&JfXj%Z6ohX)PTDR2ڡ mμ|J 66Xw «$ݗUh{ Z XfM`_}}\c&زOc^8xzc ;W_slX ͝XmݹwsYF掎kbe8|=o޸m\ j̘3߼􅭭 ֭Zgm s9m{yvtsî={1jƇ;w0ob$eKlXX={[N,kvwSm$[))m\]v֗S+WTC'\i# Rjvv:U՘8m:޻qrXj%iԈiڍ7i Nxc R ssl\MÖaٍ _\۷1obꬣ[{WV+W0yL 8+W!UF?7C&MJ_]68ZzM5Wbb42XcӆzZƘ0>ah԰aƑL.Ǹ#P\9n-ԯ'è(PaJ4l@!#Gӧd4[kTǁʵr: UT?nbHKKclWXOF.BZZ:S=0@]=]d$`֌i9tQ]p4,[kQ;i2n߹[`;ןhX>6{ԱiS :/Sna/_1g V~'|j]-rXC^>'r:\ Ðx9B Uz~^BEe3o>Jx!M|h 8;ə4-H@tqTDUP\EVM"G_p8_? ]<|h:wnݺ1Ne BPl6j šMkWuuEfVyza8*53͚|ݻ#i;Nnn0t8 v`r%˖3ME~~>81&!T+Nݐ0>ڴFkddf⸗7LS>PAه\I7o߆R`/[qAG"#oHq/0 |Q<{ĊUk1sTII0ul\ c%-fC$WhԨRSp0.DF[.LCqb":oV-["-#2Crܿ+U²%k6|!>N_ިQ!s w2Ǝ8ql"1g|l\Z~[;b1~b(ìiSKx=)3f!\(_LQ&b@>Vq>2sYW̌D ‹/ѥSG4wrBrj*}0zD 78Ky:qѮMku1jDx< U*WF coKrRz(gkR燡v+T('2eΏ<.wT w,uqP(ж+Qq 2 S'M@ '<“OQF @}ݻY&x5n‚N‚x%3#>>޾~<}&.0qWZ50T999=~"rI: X]3E3c:?&MsFKשU Ça 9? 42ܻ~<}&.e 9qTlr1f$XYYY3sxեg/dddаA}<{>'1rxD=Ê:ulx;*WA#aN`8\quD֮s:?(4Tڵ3<<P=7W kjU;7yuDKnS) ^tZJ[BP(_0iii$--+/\$.$V\.'.;&ʕJ%i۩ iچ,Y8:ulk73+8:vJŔ~8r%?/XȔGGgrb ڹ S?mlBpg_.dϝ %.Kr\NZkO&M%Ggҽ׏{$.kLJ"m;u!ڶ'JROGgr)*U.ɈsdYYqtv1z~ێمD_*;xqtvavGgrJuӍuSBz*{.Bba6oۮy5VGgaTu4*/qtv!1׮sssImɜy ^مL6Dq=ʕBPQ,|ǦمܼuF~ 2z[ ?Fϯc#qtv!uBӏ8:R߷U;7T*I7م?BH|Bqtv!g!?tȠ ĩ+YoLYم 6Uw]sd=?obM?*;ܶ=du.".E;Ҫm{"BR)ڳqtv!{,x8:ٿ?-\D!:K yj5iߥ[1yĩ+NU*i׹+iݡ#Q輿}| Wm`>Jمۇ8:ǰ{ˋ);mP0vC]HXxDt{ ܵ;/9VLEDN,BD" LXlF|SҮ] 6ܻ#Je>!DV8MP( B|{sW0]yRx<ū7oRŊZ*|P(ѱ7orJR !+Fm]cp>Ƚh{WS.]RP* qvU]q82L}١RŊeAJeLس9sX-4a6||?Y[Y튣Pt8 \nYgM>˖umS`k  m A6Q( BP(R:8f;5lݺ!0(k׮Wfjj: q L3A-uj~/ ddc8yUckk+*LP@Vùe0>0ݘ F'~m{]^J*qPޞu,)ЯJU_cQgR]~8&w!?оzz̙5Cop YMXo$WY X5ZkB`|jO>{2sv233jT^dKhTŶ: -֨QV?Z_ר^-@R(/4FzFFdhP$g&^|Y8}0,CA~ -+/EȨh8 Bnj3@]֭ B3& -=]ueۧPg} UW~?-- BթSPuCx_BzuYڹbcc2E |r  oWPdP ܼph BP( cRjd2.51ׯ#0(0mlxkhURA/42h1wTz072v7##D}!W(uDljSAoS" Pݬ,M]+cT^t2BTEQ'|!7/W%;K+IX$\'W#x^^jx>EL"YNv\&b5Hppi?;;V̱doD"J&iS0}dH2ʳ BS\KNwek77/e2{X~Cim *V2P|4N>_ B&&UAB%B x: BP( SO:wꈜ\|rEP`Os!H0rP| ?_`SʒSP]Kܐ KK!оrrsae{.o999dzhTxAH(D N3"/ÁBz/6)hHOlm`KfpuiX[[(_z5jBb׉4K(Fev6lJk`ii['d2|>'֫[R)EG' ۤ!'Vihִ Tj5~8vk 'PMi J2p8H$b4i-ZZ2f͚HOO{ c%YҊ+4 {䰡Xl)T-ArrGZHNѿ2[ݾ$뇕 _c@?cHع!u<}|XǙ8lHL42$&ꆅoQ"+ Z>L|:8,afVaeUffˁǓ] BP('Կ'C"1 J%r9nbպ81UÖM1k4rnщ18}&r9X~32=d0d<} e 7oʵ8i8p >O>cdq~_W]t_9?Mr2T*R;d!#eXW]3xuS+W3zn6kr vVD^G`nnu0uGԝ>'VCGu'H 7o,!C3p1󄅅jhB:7o?O>JbbU}~[;Z SB} =x'|aeiՌ* IDAT))UVX /nwpPTB@R!􇕕+rӧϠV>ux\d!4D">ziE'}@._ctv."+T/P%VŢ_")u?r/FBV#'73h-9P㐕9_Ȃ~t(J8DL$w{g"`]z|,[ 999P( ÅR2k}l,_Ub%TRf;K >#drdee1{_vEFFV[r9{W¾Zp\j҄\2Fp!m\.|ݷ! wރ˗VS16nAȯ%K pB$"/=% tn)_9 < SpAP( B|*JkK/W!sB#-\87nn]ش)`?ѱ{,Z -7gnXe1__ K~Yנ@vRH1#Kl]OV8reEi<6X`V]AJ\X|)RRy) {Z:/_k6'X,?!95kvp.":wevm #ڷmYuv`ѭ;<}|­]weh.Fo12t>~~Cal޸m\5Qj̞> l S̜6 gbQzmZ¹E D_C~ߋ)۱u T&9;G tY1_ܻoopR[^QtPǏ߻c ssivѮukva[(b>-n a;AN_ƸĞXpAd3s^NnnhܨsܰA1Bxy=,,,V[Uֳn]ameeP~Ȩ(uƔ{{Jez~}u p~(| 4?{{?|On/R6֘:i"m;̞AXtC8pC߅zġGp4N.|~}q˻kÇ xzۇ-Kj@uj{n]3cGbhܰnܺ6;3Ca Ι)3عz+OV-Ud9l(2Q$a};tb/viٻ ^%%a)W7?utP( BP(eJЫgOojL ں}p&E~~>NaXdq<E'z`ʄؼm;233ѵs' _oAЩ>1m\\0jׯwot <#up8quXlmQAm.).p8رu nފ1//$&>}5,?fEЯ/uq puuFRgU[m\.ihܨ!O _5~-ϟ ?F 1H]- υS`vd_1333lx!==M7Ia~HMMӓF ^ľp-4Eݹm ΄?YYplƏD".t=?v 탽憁ڭ]ʕ*kT/׮.~'q* %O-wځSAA?u999pj cLk'lmg犷Ǻ5E`&nZYYYԥCMΦM!b}.L$t}{Xz{(xޡnسoԄ_ܱ^S`Aw~ܹw&&t }~A .y 1 b@߾:lڈc8$v/fϘuj㸗7r`a C8燠KѲysnp| JpncF4Xא-/"Rƺdvj9~Oiښ~=vyzivCXc)x>owO@Pd28Ĩ#  z=M["54_'N@^^_{kٽo:|aԄ*rJ8x|>֮.z28~m݆1иaL8x)c=8τ sVLLL/n BP( B|8iiikaS .ѶukCJ;\.lmlGBP(n _ b|N`u~&OT՘6i"ƌr^\/AA||;9 L_Q( B`Bx.i[ ק7>LP( BP( >  BP( tB{{{BP( ۃP( BP(BJ%UBP( ?uP( BP(WA*UP BP(ʻ@R( BP(WÁUBP( ?E n+QAbŊA]i:kSS+Wԩ] G:kҸ1=K 9x:.c6OR)\:2ڷk|_q&MA oTT=ڼ+Wc0cj B!p8T BP( r=pDVC/O*C}pد/n]a[W\t9>to [W714c10g 2DP( A BP(r\do߱;w+ZZt 4sg\9 VwTotS( BP( BP[$ BP( BP( BP:>z?J%LMMv 8;B0o"D^T&˅͚֯6eefeCؼqB!tJ%LnJ8lQj9셔Tm9@/c٪HMMJH$BJo1y &9jb4m[X%'[ϖd` BT VD q2 GaX9,I;];taFW=.װlw жS2)*<}?֮A =c^uk֮-sV1󧹸v:c;66Xz%4n'ˈ1cq=;sCG#%5 |>/ ]:u, s{ i s(J|^ _!%%~?7+8S՘6k6nފ-Jߖ!bul׳aμ8WVXap=3GFu{WIIٻ/v N͚1su KzaFm}VdrD]aРA}غŠ 2 Fƃ[[l\5dՋ}s.Fjj*cnmbzWcai8w+T`=~Cо=hP1y6V^ݺEѶ)Zo_q@ BP( BP(Guv-B!fMԴ4޷3a! L!#Ga|<ڵi֮.1O/-H&\bEv MIMŞ0mD @ (~],bF])3gA$Whܨ!Rp0".\D cǃ?5r\Yuӟr\@YӦur2оm86k1ׯ#(,N,Lq0t@TT '1i2ݻ8tniS%"\o}>$_=a|>$N9DlСYҹLw լQF)P%Wvm Z:?( BP( BP('<{66X&\!6mZ~57j@8 {{;g<}tkִ i۰A<vvUY<޿9ک#Fm;v`ΌM[BVc߮Sbѻ||0gty*f-P(Z) BP( BP(:@G c-fsRRR\zT{5r8~Bjj\b蠁z;2tp4ŷ߲ &MAÇpe3j$_>k6~gժjp=O@֮ƿ6#553MEiͳ4_1#ǎdrv %߼eſ, Ki74͢.OŜy 3|cى!PTs fQ]mmm&9!ّYlP{w)`eҩ ^yB*hd(fccHMKedІ֫?}dqq.<ujf՝4~X7ɨY ȗ+ BP( BP( .|THvcmJŔ=ȟ\m`ڵ3ܮRϤT(A1C^i^QҰ yC իfه/@TBd$7jp̘:gC4!jl9c?p8wCjZܽ+c 7/?Jbfj R #>Fŵ+Bk;AN&SSSU*x>Tl9@\1l(V >W_}x5"RTٲsQ^^^eB|BڷkCj\<c&N(vtJ$$$Cv6d0VȐ)&Lf@bb”E"B)ׇ4ĪU͙75BP( BP( T|vN;-, I"]]b(999\xrssaiiɔkC7UPpIuD"A®jG ;;ߋ %ݩpPMkW shOiQQϗԴp!u\.Y73N9kkk%$Ͻsru,;׆vc=[Fr2 DtǏY;qO ƵkX2~;H kVd>k'\( ɡRMgŭې+O277gʄ! SAo_P|rۗ P( BP( BPJshҸp80d>}.SwHM>Ig"''jAaX&8rcJ gCÐds5rsn8;?bʕǂeߙgpPoׯqcӧPTq&\[ <0k\.\q/oXZZfٻ(5 lKN$tBoJozE"U"HSQ HEAH ޓm3dɆ$bf̞s$7{9۾ I0S G#e Qy|Mw"s}( [۶o~lڲ5_Yoo9FjjDQĿGbͺ`4vm۱?.7_z_L&zlݾKWjmӖ~L&ddf&@EԷz`{LDFFL&v섗'e|#f~4L&6mw Olk4,yRRR -OA|=K{L}0L}ڼ`yѮSc/]FXxß~4 ұV[=zY}1c:ڴjlg;b#9[1smuvvƛ#_/QcixD@dxШXpAa0m,<ۭݾ-_F9 Z}ӏ'aȫcc a 6e#›i&'Mx5fMYo//4m<6vdL8)_6#F)1Mh"x9ڦS>|s7Lvejۿvd07K~h@]g]boaHO@XP 2NN.f[:pU*WÇ+~YӦbMرku t_Xa#v)r?,u{U&$%%IQ ";$ (#!*{9 rtt=#""""""""R q ǀ~}WDDDDDDDDD DDDDDX0=\BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDTJC#nȃ */ ͭȃ9fͱn;I>ܸyNl,ZWTP JTzuۅ%""""zB$ AbgQw%?}hSϦMй2gly賰<߻4у$HX@0 @ JS2$D@H$H&|3@DDD!Ou$!| g?A!08q" v,qG~R}Ǐ˖l2>e27p"$l^yI jQ a| <}LS3_ f@ZLrtLKA  @YxYxhAj"""y6k`岟jh"_~]>kgDDDD$ H=u Ah޾pPnUk@C72._@@$Ha$dF_FɣȎ Sf& jWw86:\*TV?c_4{Kc* 8QiT@NNE*?m,A$888l2uR(<WN7֬\={##3XWJ$&%CqrD<fNZ𷻄ǡNBfM us98:(λ/bْXbػF Z->> Q '"d\[7V/CN#;>]ݡ5nY x/\Y4 ú n&$T O(pY XK~ 3 ~C QwL.̧M*vhݲv?-[A/dĸ[JJ*V[ƍФQciq9۸m;voIU|ySl>d0؁K.6O; dffe1hثcvW\F֭дI$$c՚u<5ؼ>>žff^Կ_[<߷?]vm q#$&'a;l`w舞ݺfO_V"!m:߽d899@5t:^: /<*T(ȃxk{rtXVѣp-W=KĉJ,K#L>o UGM{zpT˜[בv nNdF_B//'ML&kZ'_ܠƅ3qqL8x .rvd4A+zDϡ uqJ>zeT|XAIKDDD)BRRE>( ~B<Ǐck#TrrržJh߶ Z4o|m&` :}&/]Ͼ3Q&0[֯[1 wّCΝ8t ϴoi柴 @Νɤw'b_!Icq^AXzX0bYvv6z;qqh4SthkSvΝOp4n0u:n 6lyEh$a]P`2l=,< Y%?- AXnpjt4+@*/ WY~h1]˖,F5!JNNFq?{#?@v- 9Q/PGBͺubNAUyCAqZm,3?D@.3y6ܳn^gUN=/_D? p.W?"""|G-r"^G[ׯêkqV9wYcsgmx{#%57oDVV6DIJ廾FJ%O;7 ,h1o_P&0ODWۖ3`08u}] 6NJ_Wa>MAmel I ,A//ء|LOPڽZF7ǎk_C|߫Gw|h1RSS[2相l_8:g\>LFAY,ȹlk fQּn!M[&/ťᅥG0l}!Ba:x8Vю"]<%&@墽,AjdGчDDDDy<{>?>??jDFs^`4ؽe^ S 嫆; ׮W.^ g_/O]q/x5׭A2e._0:zH&= Fuy%GFf>X97I4QIdKG]pݞ7M0D1E+wܲٓpHdT2矰>/sw{ )߫ &ZNR*!wlۇ|L& +i|c>?;llǂ J`{H7&ABf%R ȁšm$ A)RmSZg$R07 =<qfڵu ]^C@_p528{5h!b PTEv$B\Z _ cѷ`+qUkU`"%99 f'''CE Hzz<ؙӃgκ }r"k׃ͣ-Vh&h{=I/̈́ xDe"XE@!(rFM}WyK0J{ B-Ah0NxO {~p^!E(ɅEiur^d|v}?}c/; Xz v *=WP*kI&xNEiƟfWAsU=D5#ĤMJ,rهEa;vfr|=7o݊g;9*+-T*UZju6 0q'aͱaf<к@TbwߡCEab4JB_@vv6ܥ֮x'g~d$PhL3ґ} ٱaHP@mH 8b/a>OND̎m*BpgڲOܪA@.o JG'Dd4;}RFAYv=pgH&:tP;6 n.d\:cF8ر;A?譲sD$FGMH>~xvdӴ%tUB(^RewǃCzIF΍H:v8@X>-Qp ^vXRw'ڃsO?;=[! Pyzml]ҺVSV;_< Cr"o׮]۬MnA"""z@OuFhݺ(_L -KW`EfE{܏z(u7ƾ3DFbpssCpP=[Ӻ{@]\ùyՐ}=FBSV&ʺ- m;p ,oֲJ%'&9.Sr8Z_$u^N0f#!+;FO>rbo!jX !5R*-L9H;w1;6֦U;e\*V_6W} IG"qrhd\uZ.u:dݸ_O՟AwPy${KS3>MG09("F4..?/B>B>k[|aʀ>)1k\&􉸹~45pyD|Jݳ=qOv4U5:kBER}7׭@> lb;NL ѠBV,h0)0ee#!|[R"P =86vZm ǀ2yAm f &xkFTjR|0nnX zPsTx5\ʒH;N=>d^mHuT Uڀ$ApQᅗQsgr~A={}5oDWoS?}_}ϦC.v '  B=7f4p"~z,o͜^/hs#F}˯g#_{^^c~~xq7Fn6c:MunR}߮:auܣ3Mz<9OD!,<"_5lV-Z`h.(""""*,pPE~"1׮`B S˄mC887WOhא%dĭͫqcr9 W/DV YȘAȺ˷#jMzZ .. j;X4Z |"ZCd-oFqqwhJyC:xxRƱqZ}65jC;!!N}:lA(~^ K7^Fу5_o_X2jK#8xDMAD@M!J] XWX)82$DoRp)rNO}>yR}oyEϋpzxh• o y;+ cfΝ<|f8w_⹨wi,yՐ(B([s_dT!arwTK5q&$)OjyȨ{;U@T|9tvF#j5ڃïh0<@$qZmzR;qhx N$&#*5no]c hț1bOz['>o .1 rpnrtp`/J#vy%T0L'vXVde~OG *8`G(\ 4]Y^a4yd Gϋ(D Yq" d:yœɔgT*\[QG#h(Ԝ0fŋ} &K ߷țQ͸&"""*g>FADDDDDOy2XPPQcdpt WY7s'-E !&yYP5)'댬Wu̻)@2w3X'wkՃBm;_˿eٵzmh'*_} ?oEWF '6N}z6NDQ  IDAT^Z{aFɲE%XJ ]ܝ( V Ӝks*+ Ip/%OBi:w $IT#ny߯E;ztd߾n*ɫ& Y$HF#T.ZU[ȼrZb D EoE/z\3 =DڹS@{]|, M`Xx;NpY9qȸ|>w̙Y;ֺ!CW''<6$),|^+.h"U)IޅDH&S *+ TOަ˩L<G@Jp*o P8:[ k+T¸T iOvHܯOWɻZܟj]b1&Iw v,^˷Razb2댣c!rLgN ue`LK.zB}r/SU'`ʺ}Y7 ܽqb.u8 3\\\b׵tvIh9"""z *v""""'A@9P_ / Dųپ6©O +QcGmپ$P(   9/#coP I"T.Z%+:(AqE*t'5 OK?Ⱦy\kW 4ކ1#P;Q. o@C²Fj$DkFo{;*2~j7$ޖv\"tpt,V;L9YB1&# z zbdA`ǞĹ\ݑ}1Шvu+k}"""z@ SϺŕ$pV njҀ^=.]#_A)_LA߂BN$?%ØѠtP5*$ u(RE^Q(TBXT:@RÐV䫌>)ZfI&0 y's@ v@С+#ą9qȼ~?jwIw}R"*5.}}1X:SSl:Ɣ cF:4Њhx4fCvw7W@uy iOP@PK@,@jc?[:89q,̘u"oO$(ѺX\KX2VE@ ^H9y*d#l? HduQZ֘;&|\(|K*ɢ$p NW'lx5j&0cW}!upQy .-5jөdDހ[ZoGæ60$BiFI,kx hž%(G!"""*y!""""R(w_EHF#클pa4޺U|%H 9}G Fڹo*0!!(m?6I&yuh ғkº ATJ$6QM'eۍZ}$*jiOֵ8B%Js;LFx5߽M+}s*AO6g`*)DhyA"""0 :jyT< *-ϟR*+@Θs'Qy=iܪʝEH& L&$O HF#YE XER<PE2/yqEd2Bex5n]_8cndm$K2u 3.0$'+ǍUZW7׫(\,Ȑ .G>, DDDD%WQguz=SNEx'찬zϏ3! @&]I pX 쬘0fåB\E&|hJs[5^ ,9;TW/>P;,vS@Y_< Ѡ7'Bh>p D3.BeݼCj KJ$!""""s",HF#GJ)s um(Ey+{-2^'KSR cF:2_5wCx?`{b|{ͺP!1}#KΒl 5fIVH=uo9AUu#ʷC|r"$8K`d^[׋5NROd4nQz9w0ff|%*5$Y4AZ&PSU!,$KNh-%)'wM;sy q ІH:._y3SVRϝ .̟.*ó~c$?G|{tP5D`1^Kp黯PKoyB$@h}Һ r0C79` IPH;w MS<5"xҟe>p{z\? `R@9NJ>x vLXAa>JG' %,܎gl!v\3MBag4A$AՑB[!)[1N Dvh>f?B^Q8;sD0Jp^ U^y|)N/QÿPa6\a>&FȌCJM[Sqt 8Q2Hp翚g\!M=~YSǑ{,}BɉH>v''ő1aB S<]ikđQ/#!r#38g!($lPmH:|zu0 iH8wvo3Uk!Mٹ:N-cG^jqbis> ձz 9\JJy pwD(:e|7ƠBi DDDDw_DDDDDԐ$ @4pmb\y4޾pJG'=td݈FNjc'"hP:9:TD/ ýV(F~,l}RDƌtKlj4@cfM>1Ԕ">% J2V6,^G@NpZNerqIKH;{ UkןïJ ]b$GyKqa X1m[p Sft qȼvBj_<VB ǀxxAuBt qȈ Aw{jnvh<8& w~&? GY%#e5CF2qqLyeT K*Ph!0A2h$uQE(4D7 õ?^Pm~FޖJ1;9w!>@w>c`9\\9uJCz*2.Cv-4m} Z ICZ*t qE˓#C'%BC;1))IOOO=2xX=DgO")d\8[נK13jwOUGFhǀO\s6#1SPT"|B=PF;{årUBr* ig;ܪׂ[:Am#vV8x»q"C!D6ok$ (8z?: Lَ!y3ӡ8@[%-#}h< p`/o۩'uӈDJoT WXcx7n {LBʩHpW."'.drPh:(^ar'yڑ~Y7!@PkK*/ÚPIG8;هK`HTA m`x5h ߖh;~z8nIG˜+Zud\cײ=|<ʺ߷!!ro\hC k>tt*O:|8yJGHIB Ti֦hg =!O곇PpIYCɣh4^azL}yu{x~~}Uv?gBDDDDDO%2'2ls cspDMt=~wMZ[]{r~d̗}PxIs$}xQ&({TPcLX[V$60=vg^3Iϒh,*qY2""""""""""@^Z,~N9#ǎBƒᄉnܸh6ר^h4!py  *𵋗.ƾ3eDDDDDDDDDDDqY=Ыgu:$&&aq)<|7`2RV/==JYYYb6Ν?F `WPbEJgtgjuBc_9J~Cʔ K7jHMK9o+/׮ߴekv,+4j~>>Du۪Ӧu+dddU/"""""""""""z[d#eHLLhD|B>l\rr > AEK廦4j5_S "?o/Wl2? F zf@zu׮h4BQFDDDDDDDDDD=-ʗ/ zuW\=wÆM晎'}I؜hХSG۸ :uʰ6eN}_q'X eKa!.o//L|>6y#^QFDDDDDDDDDD=Ȥ'`ؠAX/8y <=ѭs'knv[׵ka2Ro8_>j֨m;wÇ F PjU kpb\`  !!]-$IIIgnhۦ5VG h #""""""""""z$ < WEXxG#<ʆGGn]N_ժV/KH$"""R/99ك= """""""""""*mXjGi"""""""""""z 귿"""""""""""G!"""""* s DDDDDDDDDDDT0BDDDDDDDDDDD DDDDDDDDDDDT<ȗs> GFSXn=3[w($""""*aDQd'=TBWFg;tO?)޵,PjUtؑ#Q(?+&IA(3L$ *7DшI?EFfqNO~kׯ? <+Woܰƿ=֮#""""* .]`s$?DQ$IP* ~ Jٻ(lz^KQ@iATEz(kTDPtA@T/ =.Y Pn~,dΜs̙I|sqPR%ط?{IjJm>ǚǶc*gvЧzy,WMyfDDDDD ^WuV\2(=99gG}mhOiSDDDDDʣ!0y썌| C CuKը>w߾vurZ _-&=H7m6ws/+W"//4Ge߰J+w@V*sf}$""""RNGxr;Ʊci۶-eafSfYaŎ)q /eY矼1}: :UNDDDD3trn@xxoTuN<IGwx?_޽. غm]t ړ3?fԍbl&$[.aշ?cnɼ_yV֮[G6mtal.qsаaC;N'ep8Xj 4DG`4F~~>^PL L ZbcFfĉBC5s&QHNx ,۶a8^} ]0sgs! )2_huuQƑyzY$g֭<أ\5W^ɼr"]'a!q IDATx_`-{DDDDD ڵkiݪ]tSb"ڥ lw} sҳG:w/i|u 4 63 ):u*yR>֭Z1k,ޚ1 /.]h"ϸc锘H]={v Vhiݺ5~&7' j b`RR p0q<!u&λY7o*?qBp:}Q@*HIM#""""rc׮]def)t8N8@NNN7eqСq }%5%<>HӦM |b|r嗓EL<^={֌zm?aI;Ν;ӻO?{[n6IӦNEDDDDC~{.(Ӆq'yVbgeeRnaN~)Fc&BCq u ȋjryN'qqqXEʕ`ӦM,X_~0z^~%nv^:A-"(﹇ ;v䬳bw}̙=+W)FJKDDDDD+?`3UtTyyy|,]u`arǗdQek[8}KDd$w&44۲ؽk >>׋aU^\ll,-FDDDU1+H|\i=0[X]l"""utEDDDDʫ܅w88c Ō+\>+;4ypbyIbNaF3uU >sm]gPn&dɲeڽիy=zf͞+3OQfM,6_ҳG7.8|"""""@ Fys呑GYf-GNUud]mSܱ])IȠK^Aiwu5+)7H4$6Hx&>0SeÂʆ2vSr~{%%%%ǟmIuJ#* 1U$==Zju-4 hvل/ЬY3\.egWhYP_~|#RFfAca&ijJ,8 14nz8iтٟ~ʁh8~}ڹ4׮0C\=bxP#߸Q#6ФQCSR׸H4lؐӧSm۶ʖ͛iѢ5k$//o-"!! pW0qD"WoUU㮻`֭}۶ql ##[,Klmx^,bΝ}v6mm ;~rr """"""'$~ p8(xXp!yyDDD0d*^z%}9ua1jՊ,^6/0Сwy',ZW_}T rٳÇc&W_}5#}39tW ѣ0 222x_m6<UUqF7*)"""""RC9!g,8Xph Me6ej9?0"eq q9é˲0 Hpzeu()r\AM '""""R @DDDDDDPh )hkHQDDDDD .F)wrG)wl{;oغ}խ'?zڹd0 VBPvmݍ"""""""""""e }I ;ЫgO2={LH2pÏ>=wATdd =7/ǟzkQ&֬XVn:;c:]x!-[zjs.<}Nxn;FwH) ʕ+ӥg/,[}Խ'YYYTVT ,+9Sݑ"""""""""""eHNNO| @TT$oONuJը>w߾vIknLz l۶wOWiģкU"lќ6RbE>=]r)YTMH`3q:ev!]1;v;SDDDDʝJ!"""""r<^dɲlݶ͟co,US<0aQN}EA/q%[m[tR`,F/̦jՄ4M+%1Q|>K6ouhۦM\ ۶ٷիUSCDDDDDDDDDD pĶmnwi|`>;uaLy1 '$$nu9)x`$zY$w߳e6^3th>>"&Lk/T澻"//.]LxF J.`6oRf;oH2p0s LHs8LzA~\{w //e+Vm<6G2.WNopT @JjjkGŴhќ;)pNv"Zjief ӤApAoNdd$j"44?hj׮i:t]vG͚5=/f֭Ӈc6]w< >>}_DDDDD|r?"99S!>{q:9p\s m O3e>'vw'x{]wM-ظq#}7KXx8O?4u!55?,_~%?e_knnvڷoϿvÙ8iReoΘA^~>6PR@xb nB\.h0 ^/{a\uՁDz,n3 bq-'gxW/&LoM xgYb?|=/wO>$S&O޽y駩[.ӦMGϞt1h47p8Xr%|\vY$""""GHbxb?Q"Gp8 ' Z0Xjׯ{|AaÇtb+''Dիl?u KTd$7l_ò,^o 0OsWӢE M%""""R ⁀EvYعs'nիVg\!!lذBժUmIʕBBBp\EBC/xiz1 'O&6.I&` HzrMX).PL;?4ؾcnpnv AMot;իyʋH0@DDDDD\"#"h֬111J*DG3XeY< U(a *`7|3͛7*() (2L}/t:Y`o6璙 <"B7H! H>s,]yQ9Π<ÁZnMll,ͣy昦Ijj*7lCǎ$$$$P0 N'N3(p.`eƍ曼TZ5ϰaС)D)wJZhSEɮ]r|}FBB 4mڔH^xy:zuRNNJrr2e׏;9sػw/]RN^/`…tԉn7YYY,ZQFPF^=eĿEjZ:xFE9{&77SaF*3sLG]IKKò,5kF hӦ w`׮]ݴ)+Uu6iӆM6w>СC1 U?Ē%KHLL$$$,ZnMeۘgMenZl Xܲ,G| x<Bp&qqquK끈=|Frr ^&%%Pș)DDDDDD xޠL LAeYV`t4J%av`q=N+Sh#9bDDDDDH-^R`xy8s DDDDDDDDDDDQDDDDDDDDDDDD@DDDDDDDDDDDQDDDDDDDDDDDD@DDDDDDDDDDDQDDDDDDDDDDDD@DDDDDDDDDDDqE%w^bz w> 민DVʼBykkt9eYYRgPgiSfݺ2ԣ@DDDDDDDDDDt:kX-Xض]b^>˲Jz+}=s;y-ON WҾcG3) r]tҍiwa':uA>?8wB ;qa\u"/i1%ˊ9ҮcbnuL$++>ұK7]؉YAy._Es@; |mswұk@]=cͺu7Lddf{c|2g.]DV&]DZMzz(O~q~<Ͻ2:&ᅨȦwq@<K-QÆ x Pv_~r,!a|,]QcƫI{_}-<(ي|20)-qP23~%KѷŁC`֕'%5?ɨ1I{ ඛo"*2ZQ&w*V;n'#=7~w UÆ?W_ч'ZK[M4wqNYdsǍ'??~Ď8 ^upA*WTDFF271 ~}zY&ʒop86<Z^ËӲ%??lYau3y:rGy=7ȑΚ@jU700 y_}a8NM֥ S_D0ض}1>ڶ,46(:2{ŗ_agS!> 3) 37zx8p yZ5j@Դ4,bيx]hټy ohh(^{M,5koaaau{eͷg^^/Y G^ :wx5k4e*+W*<WVbn m7;j;n҄^H}hѢ_-ZDUyݵԪQMUMHi&y- r^}}:ލJuV DDDDDDDDDDDTFrr •n!h{͊e٣m]ѱC|lDxY>5wgAM^hټ9oMM\DDDDHII""""""TWz_-ZaL<K.㣏?NG ~lG """"yb2"'=#\T|Fs޽Og~H5tEDDD䄔4, ZPDDDDD'۶1Mz &:3ժV庫":*K/@tt.V#"""""iemŎmU[R~USWߟʫʫʫG{"5DDDDDD't<Fʫ U^U^*򖿟iG2$""""""""""" """""""""""R("""""""""""" """""""""""R(""""""""""K IDAT"" """""""""""R("""""""""""" """""""""""R(""""""""""""厳,*YtYvb4m,Y96FѯV\c8000JSPt(9⵰ml/1mYؖ]J^rEDDDL:r=֬XVl/9y7.=K-;""""""ʲ, 8/ J:X3qf);k4M Ѯ6@|| WsFS/%%>{Gۃ ^/VF1`ޮ[Y90c"dd㈏ Iy?XY8V$Ѿ6`ԗ?uv=nSSrs=a[e? =k2L}W2]"e-阑t`d`Gc8 """r=7٘ϙWDDDDD'۶zx^^ojB, ),5kx<"u˕tZmUzr}Md;t>!Lw?ߖ}/} x|a.og%0Œ$<\&mਗ਼:?]V\<)JcW$O΁qO/-~1/B$ucU?@_Hm,'#KLeG$5-y6][);Z]DDDDD 00M۶q88 *4MGr4Y˲8i;w +<??XPfhFhFX(fTDЈ;߃.䵰s_[oԈaA#̨t'>1 Q2zٷ#fxXv~aZeތe^/Nj?J޹g>ma<](_pxĎLH!!EU>ӷF`D{BGQqbDc|W8FK߸""""'ي<۶1 ]vgڶmOfVm۶J*x^7n$;;;/P.99kג⯿bŬ[˗Bzz:]tJ*XizjRI&T\uˆ,x)Œ p~T3L#= ۲0 OMe`Q"amyQ|Gx L?r?`MmNR)J<$KbH![߮',BU)9K~!Y. +#gB\-g*E ܀gA"z v{pDG<=WHfd8Fx/Up """"Rvy^ɂ # 2?HvN$&&SOef~X˲p8]>}kn*Wdzf矓ٳ%99gE*U0MpuױyfHOOaÆ|ᇄ+%̈${[q+ޥx۶$/}`F՛&ɓ|*ݟBXǖTy^_B#" YU&+Wɜ fX,,*w5W)]q8pTýe7Y/&/If\Wib%=& eՓ r_`aFGPpVXL w;Q*Bj'>3 #sZDDxVOSp'~߅U;/CXĎ@_܇J rԨQC0rH.RSSy'iݺ5_}'LYfx<֯_ύ7HBBBٌ/h=p(0!] _lϮT|xQ gƽk/o}B I%}\7eFD(1#:q\g.vwql;c(:WPv:'Gǃբ>a[r`S8*ٯ#fIq_wnM]#5z`gӿ6I{<[Kksu !uwo-/%{O<:\6!uٽewhҫ&jPׂ_EDDDDNlǫ7DDDDD8ɻÿ/,]ʼyHMIEѸq 0HNN/׶-m۶哏?A 0jBmNtTIPR%ضmeqnV$&&IY69agٷcॽg>]MЋ0\!?m o&'!v~o&wa.\|.l`<˓<[lN+hݾCg#Sͻdٲ"y'O}^~w9ϿIk|[Ϟ8kNXlYc yg>-}󉈈\RSS_0`YVPPx9 q;^ОK>GsaǜLxǷdI^xU,ꤵgnJ7UFDDDDu֥_8 t-l^8 t:p8y p8N9L8nLmgw:Qh_OP>/[ƍz>Rn3EDDD>t֍ݺ MQtX6V@)R?Kq݁þKyv߶HZq^/n 7hhkY ?<S|fg'=#:uj{s{z鳒F?- O""""rZ,_SG3m"#yⱩ;@L:?/ L`*;&>0;Xf AXh(aaa|`eqwڵc&111b>3}^=3zH{ԮU+Pfƍq}jofx=U׏b |KjRRRx<8&>0/>von. ϩS6Wa\5|5k`_r cʤO*'H):sg{cO<ɳO>qpC\ԣ{GaK%>..>v =Z`?Y"+?ү2:wć/ [oxxi7Jg\>*V)Tp^WX VWy7kΝ;X/ԩ ^/6O{M<3^9-[p\zУs\4g""""""""""rlVp!A/y+UHڵٰSrHW$s#&^s;2ŽE">YY,^೔+"/?¯չ}mlٺ?..0Xn+.BZz:yy7JE~9-Zsǭ7}dE| @~MG-IDD~ʈҠYE"##ٵ{)9+#**x|#ZhΌצ cSOm۶M : w?:Nz;޳wI&ddfAuض}|=..ك)>7~GJJ 5W#$$={̬Uv2i{mCӂ6$**9 J)zq..8 wIINGoi꠩Nh|' gdz rЦukmm0Mݻ1{nZ:H{- @noɷȈKlCI*l~ʈ˅ ߿u 0 vߠ|}Q6 {mq CΨڥ3]8c S^pӇ3g:=%?Z[.W223iP~9f} ^S4IVf?YNnnP3gcKDDDDDDDDDt(udky呑ɔ'9%}BBp\ƛ0:/MKӦmvvSm+0< :|գ[Wbٴb,Q`=êY#-[ꇹsᬚGzn+ӐY{U>Eݻv]*h~L6M#[[խKھcl64cM_ML3wg4ҷ1׷3RRRռYS 2D~~t0.jKTZF55QŊ NDCzt'c5oByd3=cyd3sk єѥN?aZz_ G_ZFij,|4kC?-%%Ő2xYԣ>0^]r5\.:wn]oBP.*ϳ\K1Fep8TZ2*??0\:?~#___*(&*;WUWreq9}`@uCx ^:@!uvK0 Yu\Z~ExK0r# IDATVcٶחs/Ok^ܶ/,9߶E m -%%Őr'r&3?~gg2VY mwctuCx ^:@!uCx ^:@!uCx ^:@!b/\WF%  \-rrrKj\1arr8x\qGa\.\saWJ*RJT "arŰS^:@!uCx ^A$eH6n]x{Ða$&>.:ԏa0rd/K{e\av;AR + vſPvlSy^q͟MIy=^=f+U Qe6K_U2dٔҮtۛGjڷwZnvڥ 7?r:3g#:TϣxC|Aww6JJ7!!AqqqW5('_G"鿽BJ}N;?wKкkuk…K0t:/i6)??̆a(77Wr:۸\.痺<93|9 =vIvOڿH Pff$ĉ:tǶ<{Knӂ㦥)//ONSjғO>7lбG%Iyyy%֗{>օfR˖-xb9s6uj[ҙ3g]l50#Fh:R$RRֆH;`.YtE8aJkYr7@qkh[&//Ϻ6iSt%Iyމ&3mDy.U_E)x 8"B/BBB'h֭@ 1B7p^z%լYz#a ad.߿ym9bC,YX_L19w-ylI>>>>C>ϲf~7jرڽ{v/E{jժYͷd^g6M2 JJJ*73ZjyU}6ƍdՋ_3I=@|}}KlϹuv fϽ̼vXb>Sp?ݯ;N/6˗kĉy*gHHBk;N>FzS*WLmb!ijt  kJ>^_WTWK#TUVMנAdەE[nl6Ҵ`_NT',L+W:tfft*,խWO*U… br8qBՓ6mڤoFyyдit+?;;[&M3dٔ&MhŊQ^^իggӦMZho.*|?j#?egg+::Z%%aÆłA6MG[chmL5lP4ivd͟7OUf͚[j޼yU^]ժU+>OuJM4)qΉ?L:uR˖-eٔ%KhժUڻwURʇYޟ7lcT~}J45p jZz<͜1Cׯj֬իWkV ::ZGQÆ kOjjf͚C)!!A>I!!!V̙3Z`֭]xթSG+WVjjM[*88X5k/_ *vڰaym(--MUUӱc4c %''+,,L?֮] U^])))۶fpݬYZz4k֬$+?{UVu|^}]J*kGYܿ?~ ݻvQڶ}zAeddB :w$? @*X/Wm6Ǎqc*fM^пo >s?e˖)##C=Ӛ:u233駟#yyyc5kV3ga$I5Ҷ[5|pEGG̙3~_z*ҹsJ*I*9_/k̛o ȗ_ԯ.8NÆ?}͙3GgΜѨQ޻Ar s: PTPA۵k.{=z3L+=3aѣx})=u8Ct߀ڰav6nܨc2 C#zJ3f̐$yMMu]w~['OVժUba}?sAJIIу<;vnk޽4p;ic9gUʕ|r}1yԮʕ++V-kZz$aÆZb1BfRff3Fc|Ӫgө }y&M?^ *UlN: ҶmԨqc޵K>KڶmvBCC5w4o\<ʒ!sA?~\=>;zTܩ{G{UW; nz5|ʒ0]M*UX 8_bp%]g|0 cÆoIS1 0.W8N0 cCa|Z{n#//ϸ ɓa7_~[7|0 x饗a"/_޽qYg4iزeYmii 8ӻ2QصkazjAƁ 0iu;999aƱcnj^k,\:^xXo^0 #&&hܨq10 #..ha-\o3l0:d\ۤnZ+_3Zli$%%acyheFm Wa] 0O?ޭ[6j=zak妛~0 ߌ6[111>>f7>>ިl|3s?l<aF;4^5kݤ?7ڷkgapF*3ի摑y*l׶1 03f[2Ξ=k{*ã>jNӸS'?ѨaCc߾}ÇO(M7h|1yg'Z36 Lis ؊j.W,n 'v:|ka?I>wNuRNNd鉡CUf͂B}_ryTIދۜeT;_]C[={:f ΂!nVիWOvN PNN:w}̙3XT*á{WM5g'ȣZsm42acnl6Ξ=k֨^zvG̶/z^9tvs[SE6fMU&꙯Nv|6/F/by%@µ^F1cO4jX <7_ũQF$)_ K '+9%U$%9"áZ!!%c͉Gm6|||SrqD~g]۴li.7_./513[rsstℂ%IGfSh>>>V=(p\q8}Zu=㒤z)66V۷mөSJgXXV^x]v5ax>|Xӿ>HwqjIe}ffu(.jr֐YNS))):PBzРA#n:͜9SƎ^۷OGx)+SjUh…JJJ_wղeKuM&LP||<?P}Uƍt:,`('N(!I}nKXX~=|XVofڻgUYlկ__w}^{U-?_Wk{;wTNN-Z.շ~{$ 6L3fЗ_|?qiy7|SS*##CwPӦMUR%)++K/ofxA;vLw$ 8P>%%%i͚5;gun=1tV\%ɓϔz޻Wڵk4|ӧnѣ:vbwa%&&өd+!2Ϟn~Af+V?:3fΝ:t$rjժ&}֯[Ӧ)55UqqqV~õvZ)--j/___}wZjL~I ]??EEE~O^,ݰp]F┒"Izz=mϨQ4oHJ1ҾQ0o)Y]-ZE\jqoVT:Uթ;zݸq̟@%$$Cr8j,woVZԩV\͛7ɓzԲeKIRdd2Ϟ՚5k﯈k!_Vtam޴Ia]z꥓Zbvܩݺ瞳1g'Z=>ΝST|!GSjJ:t ݮ'O*>>^͛7Wڵu-h=ZnΜ9VZZ`lެhbڷo_rժU+ժUK u1EFFjZt233U-(Hj׮ӧOkھ}:p^xEvM6MǏSHHM^YɓuI*TQ8$5jHv]Vá5kO?UXX222XׯS'OcլY3KUTIKQqCҥKճgO=6dhΝzbPw}2 Cԏ?X;TŊնm[mڸQ?o 5jfH~Z rXGjҤI]vکW^ںuoؠ艡C[rԨQ#EEEiҥڲeϝӛcƨ~ڽ{+""BIII  SnT^=-[LyyZr\߿_{UxX8N:)//O'OTBBІ T^=:}Z+WԌ3t뭷* *a ֍;kUڴqN$%W^Qm uu)!!Ak׮ ;o͛e(=zT7nThhÕUVgѲe˴{. ݻumuIZvnFfm޴Iv+DmڸQCCCqq^:wl-aKII1$Y`N}5<{\VҋҖgkӲ{s=`~S.]4ԵkW!.w>ƍZbj׮m5.ك9@x`sP$/um5}o1Ѵ9V8itїv2̴J8ƽW2s7~ 3dpA*21ef}n{hZ%z.\.沢۔V}y!Z4/{y*%ý[;КHmYZ{aM`[pejjZs޸6JJ;G̴̹=u\Pv)Mg wq5W8=ZիWW@HJ҃>nݺyMsm6;V{Q.]{g ~ׇ=ӧeW.D"##C999 יLURE*UQ@= x0{Z[_ɞEUR ʅ>=+ {ʃ(x .*ކ: J>u?G9@Ռ!!uCx ^:xjxzC.B IDATx ^:@!uC~gѣ2aj߾ǿDS=4~?4/۶mSzzu5i֧gϞAw8TZ55nX7xnvU\.ݗl6)44T[Vp 駟4ydM6o|mZzu-];ѣGKvZf&LPϟ?_+W.1 /| P>}tI2 =@x<-YDO?̙3MyXXڷo \jժiƍze$I~l٢-[hҥ?@{:7nܨٳg{ULL~͚5O]???u]^>)OImZJEGGk1cUf-;v6lؠPIuI&i̙9sIR߾}e%I%C,Y"y2l޼#quiѢEzW2nذA&L ̙3eF@xիW+??_uQ^^~?4?3g>3itb$R:tqW^QJJFm۶qQiv]߿y*T)OyiΝ)^ZuEozvU [om۶jҤ4i"` kY.]/ZG֭eٔu֝7111jӦ߾}*88#ݻN: $M4 ^o޼yj߾:w,IZ`U_+w]wݥ={*??_u3 /7?N֮].mz RJsssՠAy~EK*p&''G+VP߾}/4vJ:uJ?F͚5KKEaJLLԴiӴe%''RJj֬qlٲL͛7 T&Mԯ_?r-{oɒ%QE/kٲe:y/^~h[NIIIl[z쩁z~1eoY:m4}Gaaa3g믿EY[?Jl{G#GԔ)S*==]6lnrIRRKmذANtcǎ\^9==m.}j6m4i$͞=[9"___iFÇWDDDۺuk*??_׀Եk y{#_Jy;Uٳg+44z6ol XlUV)//O={رc =@x bŊ޽ڵk`kyi}7رƎ1c(,,L~yeddKbz>e߲мyԴi?fEGGP ݫoF6lSO=u*11Q~a,ܹsգG;V=nݪzJgC/,z?X?QFYfZv 'N;OjÆ _NfΜyQSRs%UVM!!!fSKѽ{wUTIZlY/zjWϞ=_5m4hС%v>}Ν;{ҨN:ڴi/^TU^]dFsi̘1V㨨(%%%iʔ)Zn.IZ P0\Z_V:ubcceaW_UZZ~i ؽiy ݟ>+!|ӣG+}wׯWZZ|||}ԨQ#}ݥRz{)ivءǏ{[x9gk͟?_uQ6mejԨ: x35iDk׮p8tM7I$qr8R9C~ϼ'K)լo߾Kj:qsE{w U`9ѣmw.___\.-ZcѣG{,\}QIS!..N'N(XG_}$)$$D7|C{bJHHPffl6XeUoq9Z':uT-q3gp\ zYf͚I*!^=޽{KJ<_Jyf_㣌 ;jѢïȱ?^lLU͛7W@@@UV &,Y۷NLLTԦMEDDHƍWl(X=j%RBϷ4}tOr83fQQQR^^bFGGK*f͚T֒~˛WIj޼1nnŊJ孓HkNR0l1bd~/IC/^}j!d;wU*++KX㱬W:IRs!օ3_pvEϕo7nT0y|NSa\0_z;w|x7tjڴiZlԵkWURf4}teff*%%EjRDDl6ۧ;wjݪQrJ}Gט1c<+[ֲetA͛7OҦM4}tM8Q;vM7$IԩS/l6ڴi#__ߋZt:vZ͞=[ԴiSuEa(##C;wԇ~oVAAAzwձcbo׮VX~I:|&Mկ__Ǐ-OYKS-o^8]V+VTrr-Zɓ'kڱcRSSձcGըQC6M/S*V( *ko^WV||,Xcǎi۶m1c>#lR?{lذAf͒aJII_ի[JHHP||t9h8sz^Z999jܸ֭+.áPXBׯWvv233}v?^w}o߮\k.D^ݕ5K-OimnAAAAϔauYeffiӦS5 <-_\ .T0l)YJKKSnBBB{IM2EׯWRRׯ>}hѴiGѣG+--o&ٳ;UZU 6ԍ7ި;믿֚5k$ݮ0C ]LYϧ<[޼jĉZtN:o^Æ SVVz!k.]hȐ!zKL|Y̙3ʕ+uql6խ[W}}W!xiiiޗW^]K.8qVX$U^]111e/\|FU1ϟoM7|3ZѓzӦM2eݫ<5h@Uyyyիڴi?֮]ۿ?oKӴiSM>U:uCx ^:@Uk a IENDB`asciidoctor-2.0.16/docs/modules/ROOT/nav-converters.adoc000066400000000000000000000000311410231027400230560ustar00rootroot00000000000000* xref:converters.adoc[] asciidoctor-2.0.16/docs/modules/ROOT/nav-docinfo.adoc000066400000000000000000000001141410231027400223070ustar00rootroot00000000000000* xref:docinfo.adoc[] //** Adding Header Content //** Adding Footer Content asciidoctor-2.0.16/docs/modules/ROOT/nav-errors.adoc000066400000000000000000000000421410231027400222020ustar00rootroot00000000000000* xref:errors-and-warnings.adoc[] asciidoctor-2.0.16/docs/modules/ROOT/nav-lang.adoc000066400000000000000000000000431410231027400216100ustar00rootroot00000000000000* xref:localization-support.adoc[] asciidoctor-2.0.16/docs/modules/ROOT/nav-safe-modes.adoc000066400000000000000000000000741410231027400227160ustar00rootroot00000000000000* xref:safe-modes.adoc[] ** xref:reference-safe-mode.adoc[] asciidoctor-2.0.16/docs/modules/ROOT/nav-top.adoc000066400000000000000000000000661410231027400214760ustar00rootroot00000000000000[] * xref:features.adoc[] [] * xref:whats-new.adoc[] asciidoctor-2.0.16/docs/modules/ROOT/pages/000077500000000000000000000000001410231027400203575ustar00rootroot00000000000000asciidoctor-2.0.16/docs/modules/ROOT/pages/converters.adoc000066400000000000000000000111371410231027400234040ustar00rootroot00000000000000= Available Converters Asciidoctor parses AsciiDoc documents and then uses a converter to generate the output format of your choice, such as HTML, DocBook, or PDF. == What's a converter? A converter takes AsciiDoc and transforms it into another format. Each converter produces a specific output format, such as HTML or DocBook XML. Asciidoctor provides several built-in converters and the ability to add on other converters. In addition to generating traditional articles and books from AsciiDoc documents, you can also use Asciidoctor to create HTML-based slide decks, static websites, and documentation sites. When using these add-on converters, you may need to add some additional structure rules to a document. However, nothing in this structure restricts you from still being able to publish the content as a normal document, too. Each converter is mapped to a name that you specify using the `-b` (`--backend`) command line option or `backend` API option. == Built-in converters These built-in converters are bundled with Asciidoctor. xref:html-backend:index.adoc[HTML]:: The HTML 5 converter (`html` or `html5`) generates HTML 5 styled with CSS3. This is the converter Asciidoctor uses by default. xref:html-backend:index.adoc#xhtml[XHTML]:: The XHTML variant of the HTML 5 converter. To use the XHTML converter, assign `xhtml` or `xhtml5` to the `backend` option. xref:docbook-backend:index.adoc[DocBook]:: The DocBook 5.0 converter generates DocBook 5.0 XML. To use the DocBook converter, assign `docbook` or `docbook5` to the `backend` option. xref:manpage-backend:index.adoc[Man page]:: The man page converter generates manual pages for software used on Unix and Unix-like operating systems. To use the man page converter, assign `manpage` to the `backend` option. == Add-on converters You can use add-on converters, which plug into Asciidoctor by adding the appropriate library to the runtime path (e.g., `-r asciidoctor-pdf`). PDF:: The PDF converter (`pdf`) generates a portable document format. Requires the https://rubygems.org/gems/asciidoctor-pdf[asciidoctor-pdf^] gem. EPUB3:: The EPUB3 converter (`epub3`) generates a distribution and interchange format standard for digital publications and documents. Requires the https://rubygems.org/gems/asciidoctor-epub3[asciidoctor-epub3^] gem. Reveal.js:: The Reveal.js converter generates a Reveal.js presentation from an AsciiDoc document. Requires https://github.com/asciidoctor/asciidoctor-reveal.js[Asciidoctor Reveal.js^]. Bespoke:: The Bespoke converter generates a Bespoke presentation from an AsciiDoc document. Requires https://github.com/asciidoctor/asciidoctor-bespoke[Asciidoctor Bespoke^]. //// LaTeX:: The LaTeX, a document preparation system for high-quality typesetting. Requires the https://rubygems.org/gems/asciidoctor-latex[asciidoctor-latex^] gem. mallard:: Mallard 1.0 XML. Requires the https://github.com/asciidoctor/asciidoctor-mallard[asciidoctor-mallard^] gem (not yet released). === Static site generators * Jekyll * Middleman * Antora //// // TODO describe the role of template converters (e.g., asciidoctor-backends) //// Pulled directly from the user manual - need to decide where this information goes and how it should be presented. == PDFs Conversion from AsciiDoc to PDF is made possible by a number of tools. {uri-asciidoctor-pdf}[Asciidoctor PDF]:: A native PDF converter for Asciidoctor (converts directly from AsciiDoc to PDF using Prawn). + Instructions for installing and using Asciidoctor PDF are documented in the project's {uri-asciidoctor-pdf-readme}[README]. The tool provides built-in theming via a YAML configuration file, which is documented in the {uri-asciidoctor-pdf-theming-guide}[theming guide]. + TIP: Asciidoctor PDF is the preferred tool for converting to PDF and is fully supported by the Asciidoctor community. a2x:: A DocBook toolchain frontend provided by that AsciiDoc.py project. + To use this tool, you should first convert to DocBook using Asciidoctor, then convert the DocBook to PDF using a2x. a2x accepts a DocBook file as input and can convert it to a PDF using either Apache FOP or dblatex. Instructions for using a2x are documented in the project's {uri-a2x-manpage}[man page]. {fopub-ref}[asciidoctor-fopub]:: A DocBook toolchain frontend similar to a2x, but which only requires Java to be installed on your machine. + Instructions for using asciidoctor-fopub are documented in the project's {fopub-doc-ref}[README]. To alter the look and feel of the PDF, it's necessary to pass XSL parameters or modify the XSLT. More information about customization can be found in http://www.sagehill.net/docbookxsl/[DocBook XSL: The Complete Guide]. //// asciidoctor-2.0.16/docs/modules/ROOT/pages/docinfo.adoc000066400000000000000000000231751410231027400226400ustar00rootroot00000000000000= Docinfo Files :url-docbook-info-ref: https://tdg.docbook.org/tdg/5.0/info.html :url-richfaces-docinfo: https://github.com/richfaces/richfaces-docs/blob/master/Developer_Guide/src/main/docbook/en-US/Developer_Guide-docinfo.xml // um anchor: docinfo-file You can add custom content to the head, header or footer of an output document using docinfo files. Docinfo files are useful for injecting auxiliary metadata, stylesheet, and script information into the output not added by the converter. The docinfo feature does not apply to all backends. While it works when converting to output formats such as HTML and DocBook, it does not work when converting to PDF using Asciidoctor PDF. The docinfo feature must be explicitly enabled using the `docinfo` attribute (see <>). Which docinfo files get used depends on the value of the `docinfo` attribute as well as the backend. [#head] == Head docinfo files The content of head docinfo files gets injected into the top of the document. For HTML, the content is append to the `` element. For DocBook, the content is appended to the root `` element. The docinfo file for HTML output may contain valid elements to populate the HTML `` element, including: * `` * `` * `` * `