lib/lookbook/services/code/code_beautifier.rb



require "htmlbeautifier"

module Lookbook
  class CodeBeautifier < Service
    attr_reader :source, :opts

    def initialize(source, opts = {})
      @source = source.to_s
      @opts = opts
    end

    def call
      language = opts.fetch(:language, "html")
      stripped_source = source.strip
      result = (language.downcase == "html") ? HtmlBeautifier.beautify(stripped_source, opts) : stripped_source
      result.to_s.strip.html_safe
    rescue
      source.strip.html_safe
    end
  end
end