summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2022-01-16 23:58:31 -0700
committerGitHub <noreply@github.com>2022-01-16 23:58:31 -0700
commite497b9fcb06959311dd35d2bd6e11d29efe26f1f (patch)
tree1bba5d365d173154b8d7351230df468f3cfa93d5 /lib
parent1a4b134a7b20a2826be4f65fa1569f0da4738631 (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.rb3
-rw-r--r--lib/asciidoctor/parser.rb12
-rw-r--r--lib/asciidoctor/substitutors.rb2
-rw-r--r--lib/asciidoctor/syntax_highlighter/prettify.rb2
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