prawn-icon 0.5.1 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b72801a22245be5c21023bc4dd96f34a9888c3b
4
- data.tar.gz: 43384f7f447921f7ff5a4dae77fe1aaf4e5ee369
3
+ metadata.gz: 80513979342022341bfa4034755c950f119733f0
4
+ data.tar.gz: 22f383bfd1061435dc1174a04c2513dcce1020ef
5
5
  SHA512:
6
- metadata.gz: b83ad4e37b575f040ca394ccbb0378bdeef0671ee5106a775ae57bda71113eb85bd0cf000a465f52d56669bd118d77059b33971f921e6f774ea8d0a69bf3bc14
7
- data.tar.gz: 9cf1c9a029f4487ba0551e9a16c8138e91c39d1c9498b7d9a72a189518e14af2605976f836f1f17193063a9521dc93310e4a62f571c9384ee90e26b408c81333
6
+ metadata.gz: 97d67837e38a0fb9b2756700c0dd79e2f8418c2ef7f2537820f560f06e67c768526897d2443dc8f4232d2921918ca007d1225b84c6e9d01b1ec078eab6e84245
7
+ data.tar.gz: ab151bd81b30919fd63b7b28e0da33dfa93815bc23aae9103b7e2c66c340af8719d90326ccbce01f451bbcfaaca692a5706f8ccbee4a4df82267d1011275ae81
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ gemspec
data/Rakefile CHANGED
@@ -9,8 +9,9 @@ Bundler.setup
9
9
 
10
10
  require 'rake'
11
11
  require 'rspec/core/rake_task'
12
+ require 'rubocop/rake_task'
12
13
 
13
- task :default => [:spec]
14
+ task :default => [:spec, :rubocop]
14
15
 
15
16
  desc 'Run all rspec files'
16
17
  RSpec::Core::RakeTask.new('spec') do |c|
@@ -28,3 +29,6 @@ task :legend do
28
29
  end
29
30
  puts 'All Done!'
30
31
  end
32
+
33
+ RuboCop::RakeTask.new
34
+
@@ -1,6 +1,5 @@
1
1
  # All example code may be executed by calling `rake legend`
2
2
 
3
- require 'prawn'
4
3
  require_relative '../lib/prawn/icon'
5
4
  require_relative 'example_helper'
6
5
 
@@ -1,6 +1,5 @@
1
1
  # All example code may be executed by calling `rake legend`
2
2
 
3
- require 'prawn'
4
3
  require_relative '../lib/prawn/icon'
5
4
  require_relative 'example_helper'
6
5
 
data/examples/octicons.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # All example code may be executed by calling `rake legend`
2
2
 
3
- require 'prawn'
4
3
  require_relative '../lib/prawn/icon'
5
4
  require_relative 'example_helper'
6
5
 
data/lib/prawn/icon.rb CHANGED
@@ -6,6 +6,7 @@
6
6
  #
7
7
  # This is free software. Please see the LICENSE and COPYING files for details.
8
8
 
9
+ require 'prawn'
9
10
  require_relative 'icon/font_data'
10
11
  require_relative 'icon/parser'
11
12
 
@@ -39,6 +39,8 @@ module Prawn
39
39
 
40
40
  TAG_REGEX = /<icon[^>]*>[^<]*<\/icon>/mi
41
41
 
42
+ ATTR_REGEX = /(?<attr>[a-zA-Z]*)=["|'](?<val>(\w*[^["|']]))["|']/mi
43
+
42
44
  class << self
43
45
  def format(document, string)
44
46
  tokens = string.scan(PARSER_REGEX)
@@ -58,16 +60,15 @@ module Prawn
58
60
  tokens.each do |token|
59
61
  # Skip the closing tag
60
62
  next if token =~ /<\/icon>/i
61
-
62
63
  icon = {}
63
64
 
64
- # TODO: Only support double quotes?
65
- size = /size="([^"]*)"/i.match(token)
66
- color = /color="([^"]*)"/i.match(token)
67
-
68
- icon[:size] = size[1].to_f if size
69
- icon[:color] = color[1] if color
65
+ # Convert [[1,2], [3,4]] to { :1 => 2, :3 => 4 }
66
+ attrs = token.scan(ATTR_REGEX).inject({}) do |k, v|
67
+ val = attr_hash(v)
68
+ k.merge!(val)
69
+ end
70
70
 
71
+ icon.merge!(attrs)
71
72
  array << icon
72
73
  end
73
74
 
@@ -120,6 +121,18 @@ module Prawn
120
121
 
121
122
  icons
122
123
  end
124
+
125
+ private
126
+
127
+ def attr_hash(value) #:nodoc:
128
+ # If attr == size, we must cast value to float,
129
+ # else symbolize the key and map it to value
130
+ if value[0] =~ /size/i
131
+ { size: value[1].to_f }
132
+ else
133
+ { value[0].to_sym => value[1] }
134
+ end
135
+ end
123
136
  end
124
137
  end
125
138
  end
@@ -8,6 +8,6 @@
8
8
 
9
9
  module Prawn
10
10
  class Icon
11
- VERSION = '0.5.1'.freeze
11
+ VERSION = '0.6.0'.freeze
12
12
  end
13
13
  end
data/prawn-icon.gemspec CHANGED
@@ -7,8 +7,8 @@ Gem::Specification.new do |spec|
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = 'Provides icon fonts for PrawnPDF'
9
9
  spec.files = Dir.glob('{lib,spec,fonts,examples}/**/**/*') +
10
- ['prawn-icon.gemspec', 'Gemfile', 'Rakefile',
11
- 'COPYING', 'LICENSE', 'GPLv2', 'GPLv3']
10
+ ['prawn-icon.gemspec', 'Gemfile', 'Rakefile',
11
+ 'COPYING', 'LICENSE', 'GPLv2', 'GPLv3']
12
12
  spec.require_path = 'lib'
13
13
  spec.required_ruby_version = '>= 1.9.3'
14
14
  spec.required_rubygems_version = '>= 1.3.6'
@@ -20,9 +20,11 @@ Gem::Specification.new do |spec|
20
20
  spec.email = ['jdoyle@ualberta.ca']
21
21
  spec.licenses = ['RUBY', 'GPL-2', 'GPL-3']
22
22
 
23
- spec.add_development_dependency('prawn', '~> 1.3')
23
+ spec.add_dependency('prawn', '>= 1.3.0', '< 3.0.0')
24
+
24
25
  spec.add_development_dependency('pdf-inspector', '~> 1.1.0')
25
- spec.add_development_dependency('rspec', '2.14.1')
26
+ spec.add_development_dependency('rspec', '~>2.14.1')
27
+ spec.add_development_dependency('rubocop', '~>0.27.0')
26
28
  spec.add_development_dependency('mocha')
27
29
  spec.add_development_dependency('rake')
28
30
  spec.add_development_dependency('simplecov')
data/spec/spec_helper.rb CHANGED
@@ -7,7 +7,6 @@
7
7
  require "bundler"
8
8
  Bundler.setup
9
9
 
10
- require "prawn"
11
10
  require "prawn/icon"
12
11
  require 'pdf/inspector'
13
12
  require "rspec"
@@ -55,6 +55,34 @@ describe Prawn::Icon::Parser do
55
55
  end
56
56
 
57
57
  describe '::config_from_tokens' do
58
+ it 'should handle attrs with double quotes' do
59
+ string = '<icon size="20">fa-arrows</icon>'
60
+ tokens = tokenize_string(string)
61
+ config = Prawn::Icon::Parser.config_from_tokens(tokens)
62
+ inner = config.first
63
+
64
+ expect(inner[:size]).to eq(20.0)
65
+ end
66
+
67
+ it 'should handle attrs with single quotes' do
68
+ string = "<icon size='20'>fa-arrows</icon>"
69
+ tokens = tokenize_string(string)
70
+ config = Prawn::Icon::Parser.config_from_tokens(tokens)
71
+ inner = config.first
72
+
73
+ expect(inner[:size]).to eq(20.0)
74
+ end
75
+
76
+ it 'should handle both single/double quotes in same string' do
77
+ string = '<icon color="0099FF" size=\'20\'>fa-arrows</icon>'
78
+ tokens = tokenize_string(string)
79
+ config = Prawn::Icon::Parser.config_from_tokens(tokens)
80
+ inner = config.first
81
+
82
+ expect(inner[:size]).to eq(20.0)
83
+ expect(inner[:color]).to eq('0099FF')
84
+ end
85
+
58
86
  it 'should return an array containing only an empty hash' do
59
87
  string = '<icon>fa-arrows</icon>'
60
88
  tokens = tokenize_string(string)
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn-icon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Doyle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-03 00:00:00.000000000 Z
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: prawn
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
19
+ version: 1.3.0
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
+ type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ~>
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.0
30
+ - - <
25
31
  - !ruby/object:Gem::Version
26
- version: '1.3'
32
+ version: 3.0.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: pdf-inspector
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +48,30 @@ dependencies:
42
48
  name: rspec
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - '='
51
+ - - ~>
46
52
  - !ruby/object:Gem::Version
47
53
  version: 2.14.1
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - '='
58
+ - - ~>
53
59
  - !ruby/object:Gem::Version
54
60
  version: 2.14.1
61
+ - !ruby/object:Gem::Dependency
62
+ name: rubocop
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.27.0
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: 0.27.0
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: mocha
57
77
  requirement: !ruby/object:Gem::Requirement