37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/prawn/text/formatted/parser.rb', line 37
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("&", "&").gsub(">", ">").gsub("<", "<")
prefix + string + suffix
end.join
end
|