Sha256: e20fd54e9594c30dbd6f5d6054687a7ca72f129ed3d72c7846bbb7b6603be988

Contents?: true

Size: 828 Bytes

Versions: 9

Compression:

Stored size: 828 Bytes

Contents

# -*- coding: utf-8 -*- #

module Rouge
  module Formatters
    # Transforms a token stream into HTML output.
    class HTML < Formatter
      tag 'html'

      # @yield the html output.
      def stream(tokens, &b)
        tokens.each { |tok, val| yield span(tok, val) }
      end

      def span(tok, val)
        safe_span(tok, val.gsub(/[&<>]/, TABLE_FOR_ESCAPE_HTML))
      end

      def safe_span(tok, safe_val)
        if tok == Token::Tokens::Text
          safe_val
        else
          shortname = tok.shortname \
            or raise "unknown token: #{tok.inspect} for #{safe_val.inspect}"

          "<span class=\"#{shortname}\">#{safe_val}</span>"
        end
      end

    private
      TABLE_FOR_ESCAPE_HTML = {
        '&' => '&amp;',
        '<' => '&lt;',
        '>' => '&gt;',
      }
    end
  end
end

Version data entries

9 entries across 8 versions & 2 rubygems

Version Path
tdiary-5.0.5 vendor/bundle/gems/tdiary-5.0.4/vendor/bundle/gems/rouge-2.0.7/lib/rouge/formatters/html.rb
tdiary-5.0.5 vendor/bundle/gems/rouge-2.0.7/lib/rouge/formatters/html.rb
rouge-2.1.0 lib/rouge/formatters/html.rb
tdiary-5.0.4 vendor/bundle/gems/rouge-2.0.7/lib/rouge/formatters/html.rb
rouge-2.0.7 lib/rouge/formatters/html.rb
rouge-2.0.6 lib/rouge/formatters/html.rb
rouge-2.0.5 lib/rouge/formatters/html.rb
rouge-2.0.3 lib/rouge/formatters/html.rb
rouge-2.0.2 lib/rouge/formatters/html.rb