diff options
| author | Dan Allen <dan.j.allen@gmail.com> | 2022-01-16 23:58:31 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-16 23:58:31 -0700 |
| commit | e497b9fcb06959311dd35d2bd6e11d29efe26f1f (patch) | |
| tree | 1bba5d365d173154b8d7351230df468f3cfa93d5 /lib | |
| parent | 1a4b134a7b20a2826be4f65fa1569f0da4738631 (diff) | |
resolves #3313 set linenums option on source block when line numbering is enabled (PR #3314)
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/asciidoctor/converter/docbook5.rb | 3 | ||||
| -rw-r--r-- | lib/asciidoctor/parser.rb | 12 | ||||
| -rw-r--r-- | lib/asciidoctor/substitutors.rb | 2 | ||||
| -rw-r--r-- | lib/asciidoctor/syntax_highlighter/prettify.rb | 2 |
4 files changed, 10 insertions, 9 deletions
diff --git a/lib/asciidoctor/converter/docbook5.rb b/lib/asciidoctor/converter/docbook5.rb index 93b50653..30fad2d1 100644 --- a/lib/asciidoctor/converter/docbook5.rb +++ b/lib/asciidoctor/converter/docbook5.rb @@ -210,7 +210,8 @@ class Converter::DocBook5Converter < Converter::Base informal = !node.title? common_attrs = common_attributes node.id, node.role, node.reftext if node.style == 'source' - if (attrs = node.attributes).key? 'linenums' + attrs = node.attributes + if node.option? 'linenums' numbering_attrs = (attrs.key? 'start') ? %( linenumbering="numbered" startinglinenumber="#{attrs['start'].to_i}") : ' linenumbering="numbered"' else numbering_attrs = ' linenumbering="unnumbered"' diff --git a/lib/asciidoctor/parser.rb b/lib/asciidoctor/parser.rb index a204e937..fe78b229 100644 --- a/lib/asciidoctor/parser.rb +++ b/lib/asciidoctor/parser.rb @@ -821,9 +821,9 @@ class Parser attributes['language'] = doc_attrs['source-language'] end unless attributes.key? 'language' end - if attributes['linenums-option'] || doc_attrs['source-linenums-option'] - attributes['linenums'] = '' - end unless attributes.key? 'linenums' + if (attributes.key? 'linenums') || (doc_attrs.key? 'source-linenums-option') + attributes['linenums-option'] = '' + end unless attributes.key? 'linenums-option' if doc_attrs.key? 'source-indent' attributes['indent'] = doc_attrs['source-indent'] end unless attributes.key? 'indent' @@ -848,9 +848,9 @@ class Parser else attributes['language'] = language end - if attributes['linenums-option'] || doc_attrs['source-linenums-option'] - attributes['linenums'] = '' - end unless attributes.key? 'linenums' + if (attributes.key? 'linenums') || (doc_attrs.key? 'source-linenums-option') + attributes['linenums-option'] = '' + end unless attributes.key? 'linenums-option' if doc_attrs.key? 'source-indent' attributes['indent'] = doc_attrs['source-indent'] end unless attributes.key? 'indent' diff --git a/lib/asciidoctor/substitutors.rb b/lib/asciidoctor/substitutors.rb index 566f22d0..3097497b 100644 --- a/lib/asciidoctor/substitutors.rb +++ b/lib/asciidoctor/substitutors.rb @@ -950,7 +950,7 @@ module Substitutors doc_attrs = @document.attributes syntax_hl_name = syntax_hl.name - if (linenums_mode = (attr? 'linenums') ? (doc_attrs[%(#{syntax_hl_name}-linenums-mode)] || :table).to_sym : nil) && + if (linenums_mode = (option? 'linenums') ? (doc_attrs[%(#{syntax_hl_name}-linenums-mode)] || :table).to_sym : nil) && (start_line_number = (attr 'start', 1).to_i) < 1 start_line_number = 1 end diff --git a/lib/asciidoctor/syntax_highlighter/prettify.rb b/lib/asciidoctor/syntax_highlighter/prettify.rb index 9085495b..4c129e40 100644 --- a/lib/asciidoctor/syntax_highlighter/prettify.rb +++ b/lib/asciidoctor/syntax_highlighter/prettify.rb @@ -10,7 +10,7 @@ class SyntaxHighlighter::PrettifyAdapter < SyntaxHighlighter::Base end def format node, lang, opts - opts[:transform] = proc {|pre| pre['class'] += %( #{(start = node.attr 'start') ? %(linenums:#{start}) : 'linenums'}) } if node.attr? 'linenums' + opts[:transform] = proc {|pre| pre['class'] += %( #{(start = node.attr 'start') ? %(linenums:#{start}) : 'linenums'}) } if node.option? 'linenums' super end |
