Parent

Prawn::Text::Formatted::Parser

Public Class Methods

to_array(string) click to toggle source
# File lib/prawn/text/formatted/parser.rb, line 16
def self.to_array(string)
  regex_string = "\n|" +
                 "<b>|</b>|" +
                 "<i>|</i>|" +
                 "<u>|</u>|" +
                 "<strikethrough>|</strikethrough>|" +
                 "<sub>|</sub>|" +
                 "<sup>|</sup>|" +
                 "<link[^>]*>|</link>|" +
                 "<color[^>]*>|</color>|" +
                 "<font[^>]*>|</font>|" +
                 "<strong>|</strong>|" +
                 "<em>|</em>|" +
                 "<a[^>]*>|</a>|" +
                 "[^<\n]+"
  regex = Regexp.new(regex_string, Regexp::MULTILINE)
  tokens = string.scan(regex)
  self.array_from_tokens(tokens)
end
to_string(array) click to toggle source
# File lib/prawn/text/formatted/parser.rb, line 36
def self.to_string(array)
  prefixes = { :bold => "<b>",
               :italic => "<i>",
               :underline => "<u>",
               :strikethrough => "<strikethrough>",
               :subscript => "<sub>",
               :superscript => "<sup>" }
  suffixes = { :bold => "</b>",
               :italic => "</i>",
               :underline => "</u>",
               :strikethrough => "</strikethrough>",
               :subscript => "</sub>",
               :superscript => "</sup>" }
  array.collect do |hash|
    prefix = ""
    suffix = ""
    if hash[:styles]
      hash[:styles].each do |style|
        prefix = prefix + prefixes[style]
        suffix = suffixes[style] + suffix
      end
    end

    font = hash[:font] ? " name='#{hash[:font]}'" : nil
    size = hash[:size] ? " size='#{hash[:size]}'" : nil
    if hash[:character_spacing]
      character_spacing = " character_spacing='#{hash[:character_spacing]}'"
    else
      character_spacing = nil
    end
    if font || size || character_spacing
      prefix = prefix + "<font#{font}#{size}#{character_spacing}>"
      suffix = "</font>"
    end

    link = hash[:link] ? " href='#{hash[:link]}'" : nil
    anchor = hash[:anchor] ? " anchor='#{hash[:anchor]}'" : nil
    if link || anchor
      prefix = prefix + "<link#{link}#{anchor}>"
      suffix = "</link>"
    end

    if hash[:color]
      if hash[:color].kind_of?(Array)
        prefix = prefix + "<color c='#{hash[:color][0]}'" +
                                " m='#{hash[:color][1]}'" +
                                " y='#{hash[:color][2]}'" +
                                " k='#{hash[:color][3]}'>"
      else
        prefix = prefix + "<color rgb='#{hash[:color]}'>"
      end
      suffix = "</color>"
    end

    string = hash[:text].gsub("&", "&amp;").gsub(">", "&gt;").gsub("<", "&lt;")
    prefix + string + suffix
  end.join
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.