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
The HighLine context @return [HighLine]
The source object to be stringfied and formatted.
The stringfied source object @return [String]
# File lib/highline/statement.rb, line 47 def self.const_missing(constant) HighLine.const_get(constant) end
Returns the formated statement. Applies wrapping, pagination, indentation and color rendering based on HighLine instance settings. @return [String] formated statement
# File lib/highline/statement.rb, line 37 def statement @statement ||= format_statement end
(see statement) Delegates to {#statement}
# File lib/highline/statement.rb, line 43 def to_s statement end
# File lib/highline/statement.rb, line 57 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
# File lib/highline/statement.rb, line 71 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
# File lib/highline/statement.rb, line 53 def stringfy(template_string) String(template_string || "").dup end
# File lib/highline/statement.rb, line 79 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