class SyntaxSuggest::DisplayCodeWithLineNumbers
Gibt Code mit hervorgehobenen Zeilen aus
Was auch immer dieser Klasse übergeben wird, wird gerendert, auch wenn es "als unsichtbar markiert" ist. Jede Filterung der Ausgabe sollte erfolgen, bevor diese Klasse aufgerufen wird.
DisplayCodeWithLineNumbers.new(
lines: lines,
highlight_lines: [lines[2], lines[3]]
).call
# =>
1
2 def cat
> 3 Dir.chdir
> 4 end
5 end
6
Constants
- TERMINAL_END
- TERMINAL_HIGHLIGHT
Öffentliche Klassenmethoden
Source
# 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 end
Öffentliche Instanzmethoden
Source
# File lib/syntax_suggest/display_code_with_line_numbers.rb, line 32 def call @lines.map do |line| format_line(line) end.join end
Private Instanzmethoden
Source
# 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
Source
# 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 end