class HighLine::Statement
This class handles proper formatting based on a HighLine
context, applying wrapping, pagination, indentation and color rendering when necessary. It’s used by {HighLine#render_statement} @see HighLine#render_statement
Attributes
The HighLine
context @return [HighLine]
The source object to be stringfied and formatted.
The stringfied source object @return [String]
Public Class Methods
Source
# File lib/highline/statement.rb, line 48 def self.const_missing(constant) HighLine.const_get(constant) end
Source
Public Instance Methods
Source
# File lib/highline/statement.rb, line 38 def statement @statement ||= format_statement end
Returns the formated statement. Applies wrapping, pagination, indentation and color rendering based on HighLine
instance settings. @return [String] formated statement
Private Instance Methods
Source
# File lib/highline/statement.rb, line 58 def format_statement return template_string if template_string.empty? statement = render_template statement = HighLine::Wrapper.wrap(statement, highline.wrap_at) statement = HighLine::Paginator.new(highline).page_print(statement) statement = statement.gsub(/\n(?!$)/, "\n#{highline.indentation}") if highline.multi_indent statement end
Source
# File lib/highline/statement.rb, line 72 def render_template # Assigning to a local var so it may be # used inside instance eval block template_renderer = TemplateRenderer.new(template, source, highline) template_renderer.render end
Source
# File lib/highline/statement.rb, line 54 def stringfy(template_string) String(template_string || "").dup end
Source
# File lib/highline/statement.rb, line 80 def template @template ||= if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+ ERB.new(template_string, trim_mode: "%") else ERB.new(template_string, nil, "%") end end