prawn-icon 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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