On this page
class SyntaxSuggest::DisplayCodeWithLineNumbers
Outputs code with highlighted lines
Whatever is passed to this class will be rendered even if it is “marked invisible” any filtering of output should be done before calling this class.
DisplayCodeWithLineNumbers.new(
  lines: lines,
  highlight_lines: [lines[2], lines[3]]
).call
# =>
    1
    2  def cat
  > 3    Dir.chdir
  > 4    end
    5  end
    6Constants
- TERMINAL_END
- TERMINAL_HIGHLIGHT
Public Class Methods
# File lib/syntax_suggest/display_code_with_line_numbers.rb, line 25
def initialize(lines:, highlight_lines: [], terminal: false)
  @lines = Array(lines).sort
  @terminal = terminal
  @highlight_line_hash = Array(highlight_lines).each_with_object({}) { |line, h| h[line] = true }
  @digit_count = @lines.last&.line_number.to_s.length
endPublic Instance Methods
# File lib/syntax_suggest/display_code_with_line_numbers.rb, line 32
def call
  @lines.map do |line|
    format_line(line)
  end.join
endPrivate Instance Methods
# File lib/syntax_suggest/display_code_with_line_numbers.rb, line 50
        def format(contents:, number:, empty:, highlight: false)
  string = +""
  string << if highlight
    "> "
  else
    "  "
  end
  string << number.rjust(@digit_count).to_s
  if empty
    string << contents
  else
    string << "  "
    string << TERMINAL_HIGHLIGHT if @terminal && highlight
    string << contents
    string << TERMINAL_END if @terminal
  end
  string
end# File lib/syntax_suggest/display_code_with_line_numbers.rb, line 38
        def format_line(code_line)
  # Handle trailing slash lines
  code_line.original.lines.map.with_index do |contents, i|
    format(
      empty: code_line.empty?,
      number: (code_line.number + i).to_s,
      contents: contents,
      highlight: @highlight_line_hash[code_line]
    )
  end.join
endRuby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.