material_icons-rails 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/material-icons.css +1 -1
- data/app/helpers/material_icons/rails/icon_helper.rb +3 -94
- data/lib/material_icons-rails.rb +3 -1
- data/lib/{material_icons-rails → material_icons/rails}/engine.rb +0 -0
- data/lib/material_icons/rails/material_icon.rb +51 -0
- data/lib/material_icons/rails/material_icon_stack.rb +46 -0
- data/lib/version.rb +1 -1
- data/spec/dummy/log/test.log +80 -0
- data/spec/lib/material_icons-rails/icon_helper_spec.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e2532c41d26aca45e0978cc5d9c2c2cb43e5dec
|
4
|
+
data.tar.gz: 33c17ad102c472adc506c06e7ed7d9455e604929
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d9553732dab37be9a9c2289d4bba4c12ff07dfc2f0864946e8cdb332c796caf4ba448a51fbb1d7f0578d5c5f98533270631f37ba2feef61f73c3084c5259d00
|
7
|
+
data.tar.gz: bcc19bb764fbcc0153d0caa06bf5b9ecc942aabeaaeb0b21eb248ef0d9de08faa0591e360afdc56447040f056221f33d47bcb45f8a7a4c8db8feebd7ac9577af
|
@@ -2,7 +2,7 @@ module MaterialIcons
|
|
2
2
|
module Rails
|
3
3
|
module IconHelper
|
4
4
|
def material_icon(icon, options = {})
|
5
|
-
|
5
|
+
MaterialIcon.new(icon, options).to_html
|
6
6
|
end
|
7
7
|
|
8
8
|
# TO-DO:
|
@@ -16,100 +16,9 @@ module MaterialIcons
|
|
16
16
|
# http://codepen.io/joereza/pen/ufswb
|
17
17
|
|
18
18
|
def material_icon_stack(icons, stack_options = {})
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
# def material_icon_with_badge(icon, options = {})
|
23
|
-
# options = options.with_indifferent_access
|
24
|
-
# count = options.delete(:count)
|
25
|
-
# content_tag(:span, fa_icon(icon, options), :'data-count' => count)
|
26
|
-
# end
|
27
|
-
|
28
|
-
# def material_icon_stack_with_badge(icon, options = {})
|
29
|
-
# options = options.with_indifferent_access
|
30
|
-
# count = options.delete(:count)
|
31
|
-
# content_tag(:span, fa_stacked_icon(icon, options), :'data-count' => count)
|
32
|
-
# end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def normalize_stack_icons(icons)
|
37
|
-
case icons
|
38
|
-
when String, Symbol
|
39
|
-
[icons]
|
40
|
-
when Array
|
41
|
-
icons.zip(icons.length.times.collect{ {} })
|
42
|
-
when Hash
|
43
|
-
icons
|
44
|
-
else
|
45
|
-
# add error message here
|
46
|
-
raise ArgumentError
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def merge_default_icon_options(options)
|
51
|
-
{
|
52
|
-
tag: 'i',
|
53
|
-
size: '18px',
|
54
|
-
text: '',
|
55
|
-
}.merge(options.symbolize_keys)
|
56
|
-
end
|
57
|
-
|
58
|
-
def normalize_icon_options(options)
|
59
|
-
options[:size] = {'1x' => '18px', '2x' => '24px', '3x' => '36px', '4x' => '48px'}[options[:size]] if options[:size].match(/^[1-4]x$/)
|
60
|
-
options[:size] = "#{options[:size]}px" if options[:size].to_i.to_s == options[:size]
|
61
|
-
options[:class] = Array(options[:class]).concat(['material-icons']).join(' ')
|
62
|
-
options
|
63
|
-
end
|
64
|
-
|
65
|
-
def prep_icon_options(options)
|
66
|
-
normalize_icon_options(merge_default_icon_options(options))
|
67
|
-
end
|
68
|
-
|
69
|
-
def build_icon_content_tag(icon, options)
|
70
|
-
options = prep_icon_options(options)
|
71
|
-
|
72
|
-
content_tag(options[:tag], icon, {
|
73
|
-
class: options[:class],
|
74
|
-
style: "font-size: #{options[:size]};",
|
75
|
-
}) + options[:text]
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
|
-
def merge_default_icon_container_options(options)
|
80
|
-
{
|
81
|
-
tag: 'span',
|
82
|
-
text: '',
|
83
|
-
}.merge(options.symbolize_keys)
|
84
|
-
end
|
85
|
-
|
86
|
-
def normalize_icon_container_options(options)
|
87
|
-
options[:class] = Array(options[:class]).concat(['material-icons-stack']).join(' ')
|
88
|
-
options
|
89
|
-
end
|
90
|
-
|
91
|
-
def prep_icon_container_options(options)
|
92
|
-
normalize_icon_container_options(merge_default_icon_container_options(options))
|
93
|
-
end
|
94
|
-
|
95
|
-
def build_icon_container_content_tag(icons, options)
|
96
|
-
options = prep_icon_container_options(options)
|
97
|
-
|
98
|
-
content_tag(
|
99
|
-
options[:tag],
|
100
|
-
icons.collect do |icon, options|
|
101
|
-
# add error message here
|
102
|
-
raise ArgumentError unless options.is_a?(Hash)
|
103
|
-
# ignore text per icon on a stack
|
104
|
-
build_icon_content_tag(icon, options.except(:text))
|
105
|
-
end.join.html_safe + options[:text],
|
106
|
-
{
|
107
|
-
class: options[:class],
|
108
|
-
style: "font-size: #{options[:size]};",
|
109
|
-
}
|
110
|
-
)
|
19
|
+
MaterialIconStack.new(icons, stack_options).to_html
|
111
20
|
end
|
112
21
|
|
113
22
|
end
|
114
23
|
end
|
115
|
-
end
|
24
|
+
end
|
data/lib/material_icons-rails.rb
CHANGED
File without changes
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module MaterialIcons
|
2
|
+
module Rails
|
3
|
+
class MaterialIcon < OpenStruct
|
4
|
+
|
5
|
+
include ActionView::Helpers::TagHelper
|
6
|
+
|
7
|
+
cattr_accessor(:style_options_attributes) { [:class, :style] }
|
8
|
+
|
9
|
+
def initialize(icon, options = {})
|
10
|
+
super(options.merge({icon: icon.to_sym}))
|
11
|
+
fill_defaults
|
12
|
+
normalize
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_html
|
16
|
+
content_tag(self[:tag], self[:icon], style_options_attributes.collect{ |a| [a, self[a] || self.send(a)] }.to_h) + self[:text]
|
17
|
+
end
|
18
|
+
|
19
|
+
def style
|
20
|
+
{
|
21
|
+
'font-size': size,
|
22
|
+
}.collect{ |k, v| "#{k}: #{v}"}.join('; ')
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def fill_defaults
|
28
|
+
{
|
29
|
+
tag: 'i',
|
30
|
+
text: '',
|
31
|
+
size: '1em',
|
32
|
+
}.each{ |k, v| self[k] = v unless self[k].present? }
|
33
|
+
end
|
34
|
+
|
35
|
+
def normalize
|
36
|
+
self[:size] = case self[:size]
|
37
|
+
when /^\d+x$/ then "#{size.to_i}em"
|
38
|
+
when self[:size].to_i.to_s then "#{size}px"
|
39
|
+
else self[:size]
|
40
|
+
end
|
41
|
+
|
42
|
+
self[:class] = case self[:class]
|
43
|
+
when Array then self[:class]
|
44
|
+
when String then self[:class].split(' ')
|
45
|
+
else []
|
46
|
+
end.concat(['material-icons'])
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module MaterialIcons
|
2
|
+
module Rails
|
3
|
+
class MaterialIconStack < OpenStruct
|
4
|
+
|
5
|
+
include ActionView::Helpers::TagHelper
|
6
|
+
|
7
|
+
cattr_accessor(:style_options_attributes) { [:class, :style] }
|
8
|
+
|
9
|
+
def initialize(icons, options = {})
|
10
|
+
material_icons = icons.collect{ |icon, options| MaterialIcon.new(icon, options.except(:text)) }
|
11
|
+
super(options.merge({icons: material_icons}))
|
12
|
+
fill_defaults
|
13
|
+
normalize
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_html
|
17
|
+
content_tag(self[:tag], self[:icons].collect(&:to_html).join.html_safe + self[:text], style_options_attributes.collect{ |a| [a, self[a] || self.send(a)] }.to_h)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def fill_defaults
|
23
|
+
{
|
24
|
+
tag: 'span',
|
25
|
+
text: '',
|
26
|
+
size: '1em',
|
27
|
+
}.each{ |k, v| self[k] = v unless self[k].present? }
|
28
|
+
end
|
29
|
+
|
30
|
+
def normalize
|
31
|
+
self[:size] = case self[:size]
|
32
|
+
when /^\d+x$/ then "#{size.to_i}em"
|
33
|
+
when self[:size].to_i.to_s then "#{size}px"
|
34
|
+
else self[:size]
|
35
|
+
end
|
36
|
+
|
37
|
+
self[:class] = case self[:class]
|
38
|
+
when Array then self[:class]
|
39
|
+
when String then self[:class].split(' ')
|
40
|
+
else []
|
41
|
+
end.concat(['material-icons-stack'])
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/version.rb
CHANGED
data/spec/dummy/log/test.log
CHANGED
@@ -44,3 +44,83 @@
|
|
44
44
|
[1m[35m (0.1ms)[0m rollback transaction
|
45
45
|
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
46
46
|
[1m[35m (0.1ms)[0m rollback transaction
|
47
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
48
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
49
|
+
[1m[36m (0.3ms)[0m [1mbegin transaction[0m
|
50
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
51
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
52
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
53
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
54
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
55
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
56
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
57
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
58
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
59
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
60
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
61
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
62
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
63
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
64
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
65
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
66
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
67
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
68
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
69
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
70
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
71
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
72
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
73
|
+
[1m[36m (0.3ms)[0m [1mbegin transaction[0m
|
74
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
75
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
76
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
77
|
+
[1m[36m (0.3ms)[0m [1mbegin transaction[0m
|
78
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
79
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
80
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
81
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
82
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
83
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
84
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
85
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
86
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
87
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
88
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
89
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
90
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
91
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
92
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
93
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
94
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
95
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
96
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
97
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
98
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
99
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
100
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
101
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
102
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
103
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
104
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
105
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
106
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
107
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
108
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
109
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
110
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
111
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
112
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
113
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
114
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
115
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
116
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
117
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
118
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
119
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
120
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
121
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
122
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
123
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
124
|
+
[1m[35m (0.3ms)[0m rollback transaction
|
125
|
+
[1m[36m (0.2ms)[0m [1mbegin transaction[0m
|
126
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
RSpec.describe MaterialIcons::Rails::IconHelper, type: :helper do
|
4
4
|
describe 'material_icon' do
|
5
5
|
it 'builds icon tag' do
|
6
|
-
expect(material_icon(:face)).to eq('<i class="material-icons" style="font-size:
|
6
|
+
expect(material_icon(:face)).to eq('<i class="material-icons" style="font-size: 1em">face</i>')
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: material_icons-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- chaunce
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -83,7 +83,9 @@ files:
|
|
83
83
|
- app/assets/stylesheets/material-icons.css
|
84
84
|
- app/helpers/material_icons/rails/icon_helper.rb
|
85
85
|
- lib/material_icons-rails.rb
|
86
|
-
- lib/material_icons
|
86
|
+
- lib/material_icons/rails/engine.rb
|
87
|
+
- lib/material_icons/rails/material_icon.rb
|
88
|
+
- lib/material_icons/rails/material_icon_stack.rb
|
87
89
|
- lib/version.rb
|
88
90
|
- spec/Rakefile
|
89
91
|
- spec/dummy/Rakefile
|