jekyll_icon_list 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -10
- data/lib/jekyll_icon_list.rb +13 -34
- data/lib/jekyll_icon_list/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8fa828ed8522d543437eef888c64b66b65f58720b7b81519c0673748e275caa
|
4
|
+
data.tar.gz: 6a65cf25a931a0d9e49120dafc7212da582b5e1bf54da962263327d000d2187b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b0372e48dff779e32b871d396039e8f2c3db85ec1bbb0f3ce1ca0ef95905acb658a2d64d1be6c49cac6cced8136954fa076e22f666c1b260877cbde606bf1da
|
7
|
+
data.tar.gz: 21ff8a34efc37fe4082b20d357c4c935c8304d7775eabfc010dc6bac0cb12d52bba361138627fa2976aa4e74560cc930354e7d9083d5bb52f549de9fadb933b6
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Jekyll Icon List
|
2
2
|
|
3
|
-
**This plugin
|
4
|
-
|
3
|
+
**This plugin, though simple, is not thoroughly tested. Use with caution, and please report bugs if
|
4
|
+
you find them.**
|
5
5
|
|
6
6
|
## What is it?
|
7
7
|
|
@@ -19,11 +19,10 @@ Add some icons, configuration, and a little CSS, get something like this:
|
|
19
19
|
|
20
20
|
I use it on [my portfolio](https://robert-buchberger.com/projects.html)
|
21
21
|
([ github ](https://github.com/rbuchberger/robert-buchberger.com)) if you want to see an example.
|
22
|
-
(Actually, currently my master branch doesn't use the gem. Yet. Check the other branches.)
|
23
22
|
|
24
23
|
You could use it to build category lists, or tag lists, or a bunch of other stuff. You can pass
|
25
24
|
element attributes in the tag itself, or set default attributes in the config. It only generates
|
26
|
-
markup; the styling is up to you.
|
25
|
+
markup; the styling is up to you.
|
27
26
|
|
28
27
|
It integrates with (and requires) [jekyll-svg-inliner](https://github.com/sdumetz/jekyll-inline-svg)
|
29
28
|
to inline your SVGs for you. If you don't use inline SVGs (even though you should), it sets your file
|
@@ -178,16 +177,16 @@ ul.icon-list li {
|
|
178
177
|
}
|
179
178
|
```
|
180
179
|
|
181
|
-
### Using
|
182
|
-
[CSS tricks on SVG Icon Systems
|
180
|
+
### Using \<use> to build an icon system
|
181
|
+
[CSS tricks on SVG Icon Systems](https://css-tricks.com/svg-sprites-use-better-icon-fonts/). It's an
|
182
|
+
older article sir, but it checks out.
|
183
183
|
|
184
|
-
[Slightly newer article on
|
184
|
+
[Slightly newer CSS tricks article on \<use>](https://css-tricks.com/svg-use-with-external-reference-take-2/)
|
185
185
|
|
186
186
|
[MDN docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use)
|
187
187
|
|
188
|
-
You can do it while using this plugin, but it
|
189
|
-
|
190
|
-
this:
|
188
|
+
You can do it while using this plugin, but you have to do most of it yourself: build & inject the
|
189
|
+
reference file on your own, and then write your SVG files like this:
|
191
190
|
|
192
191
|
```html
|
193
192
|
<!-- example-name.svg -->
|
data/lib/jekyll_icon_list.rb
CHANGED
@@ -20,32 +20,10 @@ module JekyllIconList
|
|
20
20
|
super
|
21
21
|
end
|
22
22
|
|
23
|
-
def initialize_attributes
|
24
|
-
# We will be interpolating strings with these values several times, so
|
25
|
-
# initializing them with empty strings is convenient.
|
26
|
-
|
27
|
-
{
|
28
|
-
'ul' => '',
|
29
|
-
'li' => '',
|
30
|
-
'img' => '',
|
31
|
-
'svg' => '',
|
32
|
-
'a' => ''
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
def set_attribute_defaults
|
37
|
-
@attributes = initialize_attributes
|
38
|
-
|
39
|
-
@attributes.each_key do |k|
|
40
|
-
if @icon_list_settings['defaults'] && @icon_list_settings['defaults'][k]
|
41
|
-
@attributes[k] = @icon_list_settings['defaults'][k].dup
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
23
|
def parse_input
|
47
24
|
# raw_input will look something like this:
|
48
25
|
# 'item1 item2 item3 --ul attribute="value" --(...)'
|
26
|
+
@attributes = @icon_list_settings['defaults'].dup || {}
|
49
27
|
|
50
28
|
raw_input_array = @raw_input.split('--').map { |i| i.strip.split(' ') }
|
51
29
|
# [['item1', 'item2', 'item3'], ['ul', 'attribute="value"'], (...) ]
|
@@ -53,27 +31,30 @@ module JekyllIconList
|
|
53
31
|
@item_shortnames = raw_input_array.shift
|
54
32
|
|
55
33
|
raw_input_array.each { |a| @attributes[a.shift] = a.join ' ' }
|
34
|
+
@attributes.each_value { |v| v.prepend(' ') }
|
35
|
+
@attributes.default = '' # Convenient for concatenation
|
56
36
|
end
|
57
37
|
|
58
38
|
def build_image_tag(icon_filename)
|
59
|
-
if icon_filename.split('.').pop.casecmp('svg')
|
39
|
+
if icon_filename.split('.').pop.casecmp('svg') == 0
|
60
40
|
Jekyll::Tags::JekyllInlineSvg.send(
|
61
41
|
:new,
|
62
42
|
'svg',
|
63
|
-
|
43
|
+
icon_filename + @attributes['svg'],
|
64
44
|
@tokens
|
65
45
|
).render(@context)
|
66
46
|
else
|
67
|
-
"<img src=\"#{icon_filename}\"
|
47
|
+
"<img src=\"#{icon_filename}\"#{@attributes['img']}>"
|
68
48
|
end
|
69
49
|
end
|
70
50
|
|
71
51
|
def search_path(path, item)
|
72
|
-
|
52
|
+
# We have to strip the leading slash for Dir to know it's relative:
|
53
|
+
search_results = Dir.glob( path[1..-1] + item + '.*')
|
73
54
|
raise "No icon found at #{path + item} .*" unless search_results.any?
|
74
55
|
|
75
|
-
#
|
76
|
-
search_results.first
|
56
|
+
# And put it back so that pages outside of the root directory keep working
|
57
|
+
search_results.first.prepend '/'
|
77
58
|
end
|
78
59
|
|
79
60
|
def find_icon(item_shortname, this_item_data)
|
@@ -94,9 +75,9 @@ module JekyllIconList
|
|
94
75
|
end
|
95
76
|
|
96
77
|
def build_li(this_item_data, icon_location, label)
|
97
|
-
li = " <li
|
78
|
+
li = " <li#{@attributes['li']}>"
|
98
79
|
if this_item_data && this_item_data['url']
|
99
|
-
li << "<a href=\"#{this_item_data['url']}\"
|
80
|
+
li << "<a href=\"#{this_item_data['url']}\"#{@attributes['a']}>"
|
100
81
|
end
|
101
82
|
li << build_image_tag(icon_location)
|
102
83
|
li << label
|
@@ -105,7 +86,7 @@ module JekyllIconList
|
|
105
86
|
end
|
106
87
|
|
107
88
|
def build_html(all_items_data)
|
108
|
-
list = "<ul
|
89
|
+
list = "<ul#{@attributes['ul']}>\n"
|
109
90
|
|
110
91
|
@item_shortnames.each do |n|
|
111
92
|
this_icon_data = all_items_data[n] || {}
|
@@ -130,8 +111,6 @@ module JekyllIconList
|
|
130
111
|
|
131
112
|
all_items_data = site_settings.data['icon_list'] || {}
|
132
113
|
|
133
|
-
set_attribute_defaults
|
134
|
-
|
135
114
|
parse_input
|
136
115
|
|
137
116
|
build_html(all_items_data)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_icon_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Buchberger
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.7.
|
106
|
+
rubygems_version: 2.7.6
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: Builds lists of Icons and labels
|