Asciidoctor is a fast, open source text processor and publishing toolchain for converting 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 a detailed view of what has changed, refer to the commit history on GitHub.

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 issues resolved in 2.0.x (cumulative).

2.0.6 (2019-04-04) - @mojavelinux

Bug Fixes
  • assume implicit AsciiDoc extension on interdoc 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 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 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 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 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 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 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 (#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)

  • always assume the target of a shorthand interdocument 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)

  • propogate 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)

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

  • 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 Python 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 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)

  • 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

  • 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 interdocument xref

  • resolve nested includes in remote documents relative to URI (#2506, PR #2511)

  • allow relfilesuffix attribute to control file extension used for interdoc 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 <para> or <formalpara> (#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

  • when linkattrs is set, only parse attributes in link macro if equals is present

  • 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 interdoc 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

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

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

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 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

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; add 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

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

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 <sup> for footnote reference in text instead of <span> (#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

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 with value 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

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

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
  • ★ introduce new curved quote syntax ("`double quotes`", '`single quotes`') if compat-mode attribute not set (#1046)

  • ★ add single curved quote replacement for `' (#715)

  • ★ use backtick (`) for monospaced text if compat-mode attribute not set (#714, #718)

  • ★ use single and double plus (+, ++) for inline passthrough if compat-mode attribute not set (#714, #718)

  • ★ disable single quotes as formatting marks for emphasized text if compat-mode attribute not set (#717)

  • ★ enable compat-mode by default if document has atx-style doctitle

  • ★ output phrase surrounded by # as marked text (i.e., <mark>) (#225)

  • ★ add MathJax integration and corresponding blocks and macros (#492, #760)

  • ★ switch to open source fonts (Open Sans, Noto Serif and Droid Sans Mono) in default stylesheet, major refinements to theme (#879)

  • ★ embed remote images when data-uri and allow-uri-read attributes are set (#612)

  • ★ support leveloffset on include directive and honor relative leveloffset values (#530)

  • ★ switch default docbook backend to docbook5 (#554) (@bk2204)

  • ★ added hide-uri-scheme attribute to hide uri scheme in automatic links (#800)

  • ★ allow substitutions to be incrementally added & removed (#522)

  • ★ add compatibility with Opal, add shim compat library, use compatibility regexp, require libraries properly (#679, #836, #846) (@mogztter)

  • ★ output XHTML when backend is xhtml or xhtml5 (#494)

  • ★ add shorthand subs and specialchars as an alias for specialcharacters (#579)

  • ★ deprecate toc2 attribute in favor of position and placement values on toc attribute (e.g., toc=left) (#706)

  • ★ add source map (file and line number) information to blocks (#861)

  • ★ write to file by default if input is file (#907)

  • ★ 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
  • ★ don’t select lines that contain a tag directive when including tagged lines, make tag regexp more strict (#1027)

  • ★ use https scheme for assets by default

  • ★ upgrade to Font Awesome 4.1 (#752) (@mogztter)

  • ★ improve print styles, add print styles for book doctype (#997, #952) (@leif81)

  • ★ add proper grid and frame styles for tables (#569) (@leif81)

  • ★ use glyphs for checkboxes when not using font icons (#878)

  • ★ prefer source-language attribute over language attribute for defining default source language (#888)

  • ★ 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 <th> 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 <para> around admonition inside example block in DocBook 4.5 (#931)

  • use <informalfigure> 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:<id>[<reftext>] 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

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 compatibility file (#441)

  • added level-5 heading to AsciiDoc compatibility file (#388)

  • added new XML-based callouts to AsciiDoc compatibility file

  • added absolute and uri image target matching to AsciiDoc compatibility file

  • added float attribute on inline image macro to AsciiDoc compatibility file

  • removed linkcss in AsciiDoc compatibility file

  • fixed fenced code entry in 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

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

  • 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

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 AsciiDoc compatibility file to make AsciiDoc 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

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

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)

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

Older releases (pre-0.0.1)

For information about older releases, refer to the commit history on GitHub.