Sha256: ce3e404c05087ebedb5a7698e7af4d911c8d9b6cc6f5a74685a84e40607034ec

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

%w(rouge github-markdown).each do |lib|
  begin
    require lib.gsub('-', '/')
  rescue LoadError => ex
    raise ex, "In order to use the HtmlSerializer you need the gem `#{lib}` in your Gemfile"
  end
end

module Almodovar
  class ResourcePresenter
    class HtmlSerializer < Serializer

      TEMPLATE_PATH = File.join(File.dirname(__FILE__), 'template.html.erb')

      def to_html
        template = File.read(TEMPLATE_PATH)
        ERB.new(template).result(binding)
      end

      def metadata
        resource.resource_class.metadata
      end

      def beautify(representation)
        formatter = Rouge::Formatters::HTML.new
        lexer = Rouge::Lexers::XML.new
        body = formatter.format(lexer.lex(representation))
        body = body.gsub(/\"(http\S+)\"/) { url = $1; "\"<a href=\"#{url}\">#{url}</a>\"" }
        body.html_safe
      end

      def metadata_text(text)
        return if text.blank?

        if indentation = text[/\n\s+/]
          text = text.gsub(indentation, "\n")
        end

        text = text.strip
        text = GitHub::Markdown.render text
        text.html_safe
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
almodovar-server-0.2.0 lib/almodovar-server/resource_presenter/html_serializer.rb
almodovar-server-0.1.2 lib/almodovar-server/resource_presenter/html_serializer.rb
almodovar-server-0.1.1 lib/almodovar-server/resource_presenter/html_serializer.rb