class Lookbook::Formatter
def initialize(opts = {})
def initialize(opts = {}) @opts = opts @highlight_lines = opts[:highlight_lines].to_a || [] @start_line = opts[:start_line] || 0 end
def stream(tokens, &block)
def stream(tokens, &block) token_lines(tokens).each_with_index do |line_tokens, i| yield "<div class='line #{"highlighted-line" if @highlight_lines.include?(i + 1)}'>" yield "<span class='line-number'>#{@start_line + i}</span>" if @opts[:line_numbers] yield "<span class='line-content'>" line_tokens.each do |token, value| yield span(token, value) end yield "</span>" yield "</div>" end end