prawn-icon 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/COPYING +2 -0
- data/GPLv2 +340 -0
- data/GPLv3 +674 -0
- data/Gemfile +3 -0
- data/LICENSE +56 -0
- data/Rakefile +30 -0
- data/examples/example_helper.rb +105 -0
- data/examples/fa-beer-inline.png +0 -0
- data/examples/fa-beer.png +0 -0
- data/examples/fontawesome.rb +36 -0
- data/examples/foundation_icons.rb +36 -0
- data/examples/octicons.rb +36 -0
- data/fonts/DejaVuSans.ttf +0 -0
- data/fonts/fa/LICENSE +4 -0
- data/fonts/fa/fa.yml +551 -0
- data/fonts/fa/fontawesome.ttf +0 -0
- data/fonts/fi/LICENSE +5 -0
- data/fonts/fi/fi.yml +285 -0
- data/fonts/fi/foundation-icons.ttf +0 -0
- data/fonts/octicon/LICENSE +9 -0
- data/fonts/octicon/octicon.yml +206 -0
- data/fonts/octicon/octicons.ttf +0 -0
- data/lib/prawn/icon.rb +156 -0
- data/lib/prawn/icon/font_data.rb +106 -0
- data/lib/prawn/icon/parser.rb +126 -0
- data/lib/prawn/icon/version.rb +13 -0
- data/prawn-icon.gemspec +36 -0
- data/spec/integration/icon_spec.rb +93 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/support/parser_helper.rb +17 -0
- data/spec/support/pdf_helper.rb +15 -0
- data/spec/unit/font_data_spec.rb +190 -0
- data/spec/unit/icon_spec.rb +94 -0
- data/spec/unit/parser_spec.rb +190 -0
- metadata +182 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright October 2014, Jesse Doyle. All rights reserved.
|
4
|
+
#
|
5
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
6
|
+
|
7
|
+
require "bundler"
|
8
|
+
Bundler.setup
|
9
|
+
|
10
|
+
require "prawn"
|
11
|
+
require "prawn/icon"
|
12
|
+
require 'pdf/inspector'
|
13
|
+
require "rspec"
|
14
|
+
|
15
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
16
|
+
# in spec/extensions/ and its subdirectories.
|
17
|
+
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.include PDFHelper
|
21
|
+
config.include ParserHelper
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright October 2014, Jesse Doyle. All rights reserved.
|
4
|
+
#
|
5
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
6
|
+
|
7
|
+
module ParserHelper
|
8
|
+
def tokenize_string(string)
|
9
|
+
regex = Prawn::Icon::Parser::PARSER_REGEX
|
10
|
+
string.scan(regex)
|
11
|
+
end
|
12
|
+
|
13
|
+
def contentize_string(string)
|
14
|
+
regex = Prawn::Icon::Parser::CONTENT_REGEX
|
15
|
+
string.scan(regex).flatten
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright October 2014, Jesse Doyle. All rights reserved.
|
4
|
+
#
|
5
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
6
|
+
|
7
|
+
module PDFHelper
|
8
|
+
def create_pdf
|
9
|
+
Prawn::Document.new(margin: 0)
|
10
|
+
end
|
11
|
+
|
12
|
+
def valid_unicode?(string)
|
13
|
+
string.force_encoding('UTF-8').valid_encoding?
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright October 2014, Jesse Doyle. All rights reserved.
|
4
|
+
#
|
5
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
6
|
+
|
7
|
+
require 'spec_helper'
|
8
|
+
|
9
|
+
describe Prawn::Icon::FontData do
|
10
|
+
describe '#initialize' do
|
11
|
+
it 'should update font_families on initialization' do
|
12
|
+
pdf = create_pdf
|
13
|
+
data = Prawn::Icon::FontData.new(pdf, set: :fa)
|
14
|
+
|
15
|
+
expect(pdf.font_families['fa']).not_to be_nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '::load' do
|
20
|
+
it 'should cache font data on a document basis' do
|
21
|
+
pdf = create_pdf
|
22
|
+
data = Prawn::Icon::FontData.load(pdf, 'fa')
|
23
|
+
obj_id_1 = data.__id__
|
24
|
+
data = Prawn::Icon::FontData.load(pdf, 'fa')
|
25
|
+
obj_id_2 = data.__id__
|
26
|
+
|
27
|
+
expect(obj_id_1).to eq(obj_id_2)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should accept a string as a specifier' do
|
31
|
+
pdf = create_pdf
|
32
|
+
data = Prawn::Icon::FontData.load(pdf, 'fa')
|
33
|
+
|
34
|
+
expect(data).not_to be_nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should accept a symbol as a specifer' do
|
38
|
+
pdf = create_pdf
|
39
|
+
data = Prawn::Icon::FontData.load(pdf, :fa)
|
40
|
+
|
41
|
+
expect(data).not_to be_nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '::release_data' do
|
46
|
+
it 'should remove all data references if requested' do
|
47
|
+
pdf = create_pdf
|
48
|
+
Prawn::Icon::FontData.load(pdf, :fa)
|
49
|
+
Prawn::Icon::FontData.load(pdf, :fi)
|
50
|
+
Prawn::Icon::FontData.load(pdf, :octicon)
|
51
|
+
data = Prawn::Icon::FontData.release_data
|
52
|
+
|
53
|
+
expect(data).to be_empty
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '::unicode_from_key' do
|
58
|
+
it 'should provide a UTF-8 string for a valid key' do
|
59
|
+
pdf = create_pdf
|
60
|
+
unicode = Prawn::Icon::FontData.unicode_from_key(pdf, 'fa-arrows')
|
61
|
+
valid = unicode.force_encoding('UTF-8').valid_encoding?
|
62
|
+
|
63
|
+
expect(valid).to be_true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '::specifier_from_key' do
|
68
|
+
it 'should provide the font specifier from a valid key' do
|
69
|
+
specifier = Prawn::Icon::FontData.specifier_from_key('fa-arrows')
|
70
|
+
expect(specifier).to eq(:fa)
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should error when key is nil' do
|
74
|
+
proc = Proc.new { Prawn::Icon::FontData.specifier_from_key nil }
|
75
|
+
|
76
|
+
expect(proc).to raise_error(Prawn::Errors::IconKeyEmpty)
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should error when key is an empty string' do
|
80
|
+
proc = Proc.new { Prawn::Icon::FontData.specifier_from_key '' }
|
81
|
+
|
82
|
+
expect(proc).to raise_error(Prawn::Errors::IconKeyEmpty)
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'should handle strings without any dashes properly' do
|
86
|
+
specifier = Prawn::Icon::FontData.specifier_from_key 'foo'
|
87
|
+
|
88
|
+
expect(specifier).to eq(:foo)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe '#font_version' do
|
93
|
+
it 'should have a font version as a string' do
|
94
|
+
pdf = create_pdf
|
95
|
+
data = Prawn::Icon::FontData.new(pdf)
|
96
|
+
version = data.font_version
|
97
|
+
|
98
|
+
expect(version.is_a? String).to be_true
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe '#legend_path' do
|
103
|
+
it 'should have a valid path to a yml file for legend' do
|
104
|
+
pdf = create_pdf
|
105
|
+
data = Prawn::Icon::FontData.new(pdf)
|
106
|
+
path = data.legend_path
|
107
|
+
extname = File.extname(path)
|
108
|
+
|
109
|
+
expect(extname).to eq('.yml')
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '#path' do
|
114
|
+
it 'should have a valid path to a TTF file' do
|
115
|
+
pdf = create_pdf
|
116
|
+
data = Prawn::Icon::FontData.new(pdf)
|
117
|
+
path = data.path
|
118
|
+
extname = File.extname(path)
|
119
|
+
|
120
|
+
expect(extname).to eq('.ttf')
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe '#specifier' do
|
125
|
+
it 'should retrieve the string specifier from the yaml legend file' do
|
126
|
+
pdf = create_pdf
|
127
|
+
data = Prawn::Icon::FontData.new(pdf, set: :fa)
|
128
|
+
specifier = data.specifier
|
129
|
+
|
130
|
+
expect(specifier).to eq('fa')
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '#unicode' do
|
135
|
+
it 'should provide a valid UTF-8 encoded string for a valid key' do
|
136
|
+
pdf = create_pdf
|
137
|
+
data = Prawn::Icon::FontData.new(pdf, set: :fa)
|
138
|
+
unicode = data.unicode('arrows')
|
139
|
+
valid = unicode.force_encoding('UTF-8').valid_encoding?
|
140
|
+
|
141
|
+
expect(valid).to be_true
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'should raise an error if unable to match a key' do
|
145
|
+
pdf = create_pdf
|
146
|
+
data = Prawn::Icon::FontData.new(pdf, set: :fa)
|
147
|
+
proc = Proc.new { data.unicode('an invalid sequence') }
|
148
|
+
|
149
|
+
expect(proc).to raise_error(Prawn::Errors::IconNotFound)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe '#keys' do
|
154
|
+
it 'should return a non-empty array of strings' do
|
155
|
+
pdf = create_pdf
|
156
|
+
data = Prawn::Icon::FontData.new(pdf, set: :fa)
|
157
|
+
keys = data.keys
|
158
|
+
|
159
|
+
expect(keys).not_to be_empty
|
160
|
+
expect(keys.first.is_a? String).to be_true
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'should not contain the version as a key' do
|
164
|
+
pdf = create_pdf
|
165
|
+
data = Prawn::Icon::FontData.new(pdf, set: :fa)
|
166
|
+
keys = data.keys
|
167
|
+
|
168
|
+
expect(keys.include?('__font_version__')).to be_false
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
describe '#yaml' do
|
173
|
+
it 'should return a hash with the specifier as the first key' do
|
174
|
+
pdf = create_pdf
|
175
|
+
data = Prawn::Icon::FontData.new(pdf, set: :fa)
|
176
|
+
yaml = data.yaml
|
177
|
+
key = yaml.keys.first
|
178
|
+
mapping = yaml['fa']
|
179
|
+
inner_key = mapping.keys.last
|
180
|
+
inner_value = mapping.values.last
|
181
|
+
proc = Proc.new { inner_value.force_encoding('UTF-8').valid_encoding? }
|
182
|
+
|
183
|
+
expect(yaml.is_a? Hash).to be_true
|
184
|
+
expect(key).to eq('fa')
|
185
|
+
expect(inner_key.is_a? String).to be_true
|
186
|
+
expect(inner_value.is_a? String).to be_true
|
187
|
+
expect(proc).to be_true
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright October 2014, Jesse Doyle. All rights reserved.
|
4
|
+
#
|
5
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
6
|
+
|
7
|
+
require 'spec_helper'
|
8
|
+
|
9
|
+
describe Prawn::Icon do
|
10
|
+
describe '#initialize' do
|
11
|
+
context 'valid icon family specifier' do
|
12
|
+
it 'should be capable of creating icon instances' do
|
13
|
+
pdf = create_pdf
|
14
|
+
icon = Prawn::Icon.new 'fa-arrows', pdf
|
15
|
+
|
16
|
+
expect(icon.unicode).to eq("\uf047")
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should raise an error if icon key is not found' do
|
20
|
+
pdf = create_pdf
|
21
|
+
proc = Proc.new { Prawn::Icon.new 'fa-__INVALID__', pdf }
|
22
|
+
|
23
|
+
expect(proc).to raise_error(Prawn::Errors::IconNotFound)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'invalid icon specifier' do
|
28
|
+
it 'should raise an error' do
|
29
|
+
pdf = create_pdf
|
30
|
+
proc = Proc.new { pdf.icon '__INVALID__ some text' }
|
31
|
+
|
32
|
+
expect(proc).to raise_error(Prawn::Errors::UnknownFont)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'without a pdf object' do
|
37
|
+
it 'should raise an ArgumentError' do
|
38
|
+
proc = Proc.new { Prawn::Icon.new('fa-arrows') }
|
39
|
+
|
40
|
+
expect(proc).to raise_error(ArgumentError)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#render' do
|
46
|
+
it 'should render an icon to the page' do
|
47
|
+
pdf = create_pdf
|
48
|
+
pdf.icon('fa-arrows').render
|
49
|
+
text = PDF::Inspector::Text.analyze(pdf.render)
|
50
|
+
|
51
|
+
expect(text.font_settings.first[:name]).to match(/FontAwesome/)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#set' do
|
56
|
+
context 'with dashes in key' do
|
57
|
+
it 'should return the set as a symbol from key' do
|
58
|
+
pdf = create_pdf
|
59
|
+
set = Prawn::Icon.new('fa-arrows', pdf).set
|
60
|
+
|
61
|
+
expect(set).to eq(:fa)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'without dashes in key' do
|
66
|
+
it 'raise an error about invalid keys' do
|
67
|
+
pdf = create_pdf
|
68
|
+
proc = Proc.new { Prawn::Icon.new 'some invalid key', pdf }
|
69
|
+
|
70
|
+
expect(proc).to raise_error(Prawn::Errors::UnknownFont)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#unicode' do
|
76
|
+
context 'valid icon key' do
|
77
|
+
it 'should return a unicode character' do
|
78
|
+
pdf = create_pdf
|
79
|
+
icon = Prawn::Icon.new 'fa-arrows', pdf
|
80
|
+
|
81
|
+
expect(valid_unicode?(icon.unicode)).to be_true
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'invalid icon key' do
|
86
|
+
it 'should raise IconNotFound' do
|
87
|
+
pdf = create_pdf
|
88
|
+
proc = Proc.new { Prawn::Icon.new 'fa-__INVALID__', pdf }
|
89
|
+
|
90
|
+
expect(proc).to raise_error(Prawn::Errors::IconNotFound)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright October 2014, Jesse Doyle. All rights reserved.
|
4
|
+
#
|
5
|
+
# This is free software. Please see the LICENSE and COPYING files for details.
|
6
|
+
|
7
|
+
require 'spec_helper'
|
8
|
+
|
9
|
+
describe Prawn::Icon::Parser do
|
10
|
+
describe '::format' do
|
11
|
+
it 'should return a raw prawn-formatted string on valid input' do
|
12
|
+
string = '<icon>fa-arrows</icon>'
|
13
|
+
pdf = create_pdf
|
14
|
+
formatted = Prawn::Icon::Parser.format(pdf, string)
|
15
|
+
match = "<font name=\"fa\"></font>"
|
16
|
+
|
17
|
+
expect(formatted).to eq(match)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should return unchanged if no icon tags are found' do
|
21
|
+
string = <<-EOS
|
22
|
+
<link href="#">test</link>
|
23
|
+
Here's some sample text.
|
24
|
+
<i>more text</i>
|
25
|
+
EOS
|
26
|
+
pdf = create_pdf
|
27
|
+
formatted = Prawn::Icon::Parser.format(pdf, string)
|
28
|
+
|
29
|
+
expect(formatted).to eq(string)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should return the empty string if given the empty string' do
|
33
|
+
string = ''
|
34
|
+
pdf = create_pdf
|
35
|
+
formatted = Prawn::Icon::Parser.format(pdf, string)
|
36
|
+
|
37
|
+
expect(formatted).to be_empty
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should raise an error when an icon key is invalid' do
|
41
|
+
string = '<icon>an invalid key</icon>'
|
42
|
+
pdf = create_pdf
|
43
|
+
proc = Proc.new { Prawn::Icon::Parser.format(pdf, string) }
|
44
|
+
|
45
|
+
expect(proc).to raise_error(Prawn::Errors::UnknownFont)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should raise an error when an icon is not found for valid set' do
|
49
|
+
string = '<icon>fa-__INVALID__</icon>'
|
50
|
+
pdf = create_pdf
|
51
|
+
proc = Proc.new { Prawn::Icon::Parser.format(pdf, string) }
|
52
|
+
|
53
|
+
expect(proc).to raise_error(Prawn::Errors::IconNotFound)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '::config_from_tokens' do
|
58
|
+
it 'should return an array containing only an empty hash' do
|
59
|
+
string = '<icon>fa-arrows</icon>'
|
60
|
+
tokens = tokenize_string(string)
|
61
|
+
config = Prawn::Icon::Parser.config_from_tokens(tokens)
|
62
|
+
inner = config.first
|
63
|
+
|
64
|
+
expect(config.size).to eq(1)
|
65
|
+
expect(inner).to be_empty
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should return an array containing a signle hash of attrs' do
|
69
|
+
string = '<icon size="12" color="CCCCCC">fa-arrows</icon>'
|
70
|
+
tokens = tokenize_string(string)
|
71
|
+
config = Prawn::Icon::Parser.config_from_tokens(tokens)
|
72
|
+
inner = config.first
|
73
|
+
|
74
|
+
expect(config.size).to eq(1)
|
75
|
+
expect(inner[:size]).to eq(12.0)
|
76
|
+
expect(inner[:color]).to eq('CCCCCC')
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should return an array containing as many hashes as icons' do
|
80
|
+
string = <<-EOS
|
81
|
+
<icon>fa-arrows</icon>
|
82
|
+
<icon>fa-arrows</icon>
|
83
|
+
<icon>fa-arrows</icon>
|
84
|
+
EOS
|
85
|
+
tokens = tokenize_string(string)
|
86
|
+
config = Prawn::Icon::Parser.config_from_tokens(tokens)
|
87
|
+
|
88
|
+
expect(config.size).to eq(3)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe '::keys_to_unicode' do
|
93
|
+
it 'should return an empty array for empty input' do
|
94
|
+
string = ''
|
95
|
+
config = []
|
96
|
+
content = contentize_string(string)
|
97
|
+
pdf = create_pdf
|
98
|
+
icons = Prawn::Icon::Parser.keys_to_unicode(pdf, content, config)
|
99
|
+
|
100
|
+
expect(icons).to be_empty
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'should return an array with unicode content' do
|
104
|
+
string = '<icon>fa-arrows</icon>'
|
105
|
+
tokens = tokenize_string(string)
|
106
|
+
content = contentize_string(string)
|
107
|
+
config = Prawn::Icon::Parser.config_from_tokens(tokens)
|
108
|
+
pdf = create_pdf
|
109
|
+
icons = Prawn::Icon::Parser.keys_to_unicode(pdf, content, config)
|
110
|
+
icon = icons.first[:content]
|
111
|
+
|
112
|
+
expect(valid_unicode?(icon)).to be_true
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should return a single array containing attr hash of defaults' do
|
116
|
+
# Hash must contain :set and :content by default
|
117
|
+
string = '<icon>fa-arrows</icon>'
|
118
|
+
tokens = tokenize_string(string)
|
119
|
+
content = contentize_string(string)
|
120
|
+
config = Prawn::Icon::Parser.config_from_tokens(tokens)
|
121
|
+
pdf = create_pdf
|
122
|
+
icons = Prawn::Icon::Parser.keys_to_unicode(pdf, content, config)
|
123
|
+
icon = icons.first
|
124
|
+
|
125
|
+
expect(icon[:set]).to eq(:fa)
|
126
|
+
expect(icon[:content]).not_to be_empty
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'should handle strings with multiple icons/attrs combinations' do
|
130
|
+
string = <<-EOS
|
131
|
+
<icon size="20">fa-arrows</icon>
|
132
|
+
some filler text
|
133
|
+
<icon>fa-arrows</icon>
|
134
|
+
<icon size="8" color="0099FF">fa-arrows</icon>
|
135
|
+
EOS
|
136
|
+
tokens = tokenize_string(string)
|
137
|
+
content = contentize_string(string)
|
138
|
+
config = Prawn::Icon::Parser.config_from_tokens(tokens)
|
139
|
+
pdf = create_pdf
|
140
|
+
icons = Prawn::Icon::Parser.keys_to_unicode(pdf, content, config)
|
141
|
+
first = icons.first
|
142
|
+
second = icons[1]
|
143
|
+
third = icons[2]
|
144
|
+
|
145
|
+
expect(icons.size).to eq(3)
|
146
|
+
expect(first[:size]).to eq(20.0)
|
147
|
+
expect(second[:size]).to be_nil
|
148
|
+
expect(third[:size]).to eq(8.0)
|
149
|
+
expect(third[:color]).to eq('0099FF')
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe '::icon_tags' do
|
154
|
+
it 'should return valid input as prawn formatted text tags wrapping color tags' do
|
155
|
+
icons = [
|
156
|
+
{ set: :fa, color: 'CCCCCC', content: "\uf001" }
|
157
|
+
]
|
158
|
+
tags = Prawn::Icon::Parser.icon_tags(icons)
|
159
|
+
match = "<font name=\"fa\"><color rgb=\"CCCCCC\">\uf001</color></font>"
|
160
|
+
|
161
|
+
expect(tags.size).to eq(1)
|
162
|
+
expect(tags.first).to eq(match)
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'should return valid input as prawn formatted text tags without color' do
|
166
|
+
icons = [
|
167
|
+
{ set: :fa, content: "\uf001" }
|
168
|
+
]
|
169
|
+
tags = Prawn::Icon::Parser.icon_tags(icons)
|
170
|
+
match = "<font name=\"fa\">\uf001</font>"
|
171
|
+
|
172
|
+
expect(tags.size).to eq(1)
|
173
|
+
expect(tags.first).to eq(match)
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'should be capable of handling multiple icon fonts' do
|
177
|
+
icons = [
|
178
|
+
{ set: :fa, content: "\uf001" },
|
179
|
+
{ set: :fi, content: "\uf001" }
|
180
|
+
]
|
181
|
+
tags = Prawn::Icon::Parser.icon_tags(icons)
|
182
|
+
match1 = "<font name=\"fa\">\uf001</font>"
|
183
|
+
match2 = "<font name=\"fi\">\uf001</font>"
|
184
|
+
|
185
|
+
expect(tags.size).to eq(2)
|
186
|
+
expect(tags[0]).to eq(match1)
|
187
|
+
expect(tags[1]).to eq(match2)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|