jekyll_icon_list 0.2.1 → 0.2.2
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 +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
|