class Asciidoctor::PDF::FormattedText::Formatter
Constants
- FormattingSnifferPattern
- WHITESPACE
Attributes
scratch[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/asciidoctor/pdf/formatted_text/formatter.rb, line 14 def initialize options = {} @parser = MarkupParser.new @transform = Transform.new merge_adjacent_text_nodes: true, theme: options[:theme] @scratch = false end
Public Instance Methods
array_paragraphs(fragments)
click to toggle source
The original purpose of this method is to split paragraphs, but our formatter only works on paragraphs that have been presplit. Therefore, we just need to wrap the fragments in a single-element array (representing a single paragraph) and return them.
# File lib/asciidoctor/pdf/formatted_text/formatter.rb, line 37 def array_paragraphs fragments [fragments] end
format(string, *args)
click to toggle source
# File lib/asciidoctor/pdf/formatted_text/formatter.rb, line 20 def format string, *args options = args[0] || {} string = string.tr_s WHITESPACE, ' ' if options[:normalize] inherited = options[:inherited] if FormattingSnifferPattern.match? string if (parsed = @parser.parse string) return @transform.apply parsed.content, [], inherited end reason = @parser.failure_reason.sub %r/ at line \d+, column \d+ \(byte (\d+)\)(.*)/, '\2 at byte \1' logger.error %(failed to parse formatted text: #{string} (reason: #{reason})) unless @scratch end [inherited ? (inherited.merge text: string) : { text: string }] end