jekyll_patternbot 1.4.2 → 1.5.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 +4 -4
- data/CHANGELOG.md +18 -1
- data/Gemfile +1 -0
- data/_layouts/patternbot_pattern_lib.html +12 -0
- data/_patterns/includes/config.yml +11 -0
- data/_patterns/includes/includes.html +20 -0
- data/_patterns/layouts/layouts.html +1 -1
- data/_plugins/jekyll_patternbot.rb +2 -0
- data/_plugins/jekyll_patternbot/config.rb +19 -0
- data/_plugins/jekyll_patternbot/finders/includes.rb +32 -0
- data/_plugins/jekyll_patternbot/finders/patterns.rb +3 -1
- data/_plugins/jekyll_patternbot/helpers/jekyll.rb +27 -17
- data/_plugins/jekyll_patternbot/hooks/pattern_lib.rb +3 -0
- data/_plugins/jekyll_patternbot/parsers/css_font.rb +6 -0
- data/jekyll_patternbot.gemspec +1 -0
- data/version.rb +1 -1
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 884f2906dc4a4f8b9bb847ce46049501e583a5bca7e9c5b79b897c407a430b88
|
4
|
+
data.tar.gz: '0587e5339f5b5da4a73e3c6b509c3c60563ee21673ad656c74acc32da714537e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e1f3fbbfd9ed231b0453cfe81682c98e0c409671f03bf72b82dc56def73082a9339ee0e4157c97f5ea3016feaac56e91f9e38faefefa18bb8fc6d92b43aad92
|
7
|
+
data.tar.gz: 580a3bac4bd5d6634eddbf30815e7035c6e256f2efc82691fbd4b969c9e99b422e7eedb23d1cd9d8ad7640f121d98c964fc6899b728f194bb244c5739da87217
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,24 @@ Jekyll Patternbot adheres to [Semantic Versioning](http://semver.org/).
|
|
5
5
|
|
6
6
|
---
|
7
7
|
|
8
|
-
##[1.
|
8
|
+
## [1.5.0] — 2020-01-04
|
9
|
+
|
10
|
+
### Added
|
11
|
+
|
12
|
+
- The Patternbot configuration options automatically reloaded when saved.
|
13
|
+
- Show errors in the console when YAML cannot properly load.
|
14
|
+
- Raise an exception when the `name` entry of a field is missing or blank.
|
15
|
+
- Raise an exception when there’s a common syntax error in the font variables.
|
16
|
+
- Allow code blocks within layout documentation.
|
17
|
+
- Added the ability to describe includes within the `_config.yml` file.
|
18
|
+
|
19
|
+
### Fixed
|
20
|
+
|
21
|
+
- Absorb the error when the `fields` attribute in pattern configs isn’t an array.
|
22
|
+
|
23
|
+
---
|
24
|
+
|
25
|
+
## [1.4.2] — 2019-02-11
|
9
26
|
|
10
27
|
### Fixed
|
11
28
|
|
data/Gemfile
CHANGED
@@ -167,6 +167,18 @@
|
|
167
167
|
</a>
|
168
168
|
</li>
|
169
169
|
{% endunless %}
|
170
|
+
{% unless page._PatternbotData.includes == empty %}
|
171
|
+
<li role="presentation">
|
172
|
+
<a class="gutter pad-t-1-4 pad-b-1-4 block" role="tab" aria-controls="includes" href="#includes">
|
173
|
+
<div class="relative">
|
174
|
+
<span>Includes</span>
|
175
|
+
<i class="icon i-18 absolute pin-cr">
|
176
|
+
<svg><use xlink:href="#icon-active"></use></svg>
|
177
|
+
</i>
|
178
|
+
</div>
|
179
|
+
</a>
|
180
|
+
</li>
|
181
|
+
{% endunless %}
|
170
182
|
{% unless page._PatternbotData.icons.spritesheets == empty %}
|
171
183
|
<li role="presentation">
|
172
184
|
<a class="gutter pad-t-1-4 pad-b-1-4 block" role="tab" aria-controls="icons" href="#icons">
|
@@ -0,0 +1,11 @@
|
|
1
|
+
_layout: "patternbot_pattern_internal"
|
2
|
+
_extra_css:
|
3
|
+
- 'utilities/utilities.min.css'
|
4
|
+
|
5
|
+
patterns:
|
6
|
+
includes:
|
7
|
+
title: "Includes"
|
8
|
+
description: "Below is a reference of all the includes available for pages within the website."
|
9
|
+
_popout_button: false
|
10
|
+
_resizable: false
|
11
|
+
_code: false
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div class="patternbot-font-primary text-left milli">
|
2
|
+
<div class="pattern-utilities-scrollable scrollable">
|
3
|
+
<table class="patternbot-utilities-table">
|
4
|
+
<thead>
|
5
|
+
<tr>
|
6
|
+
<th scope="col" colspan="6">Include</th>
|
7
|
+
<th scope="col" colspan="18">Description</th>
|
8
|
+
</tr>
|
9
|
+
</thead>
|
10
|
+
<tbody>
|
11
|
+
{% for include in page._PatternbotData.includes %}
|
12
|
+
<tr>
|
13
|
+
<th class="valign-middle" scope="row" colspan="6"><code class="ib valign-middle">{{include.name | escape}}</code></th>
|
14
|
+
<td class="valign-middle" scope="col" colspan="18"><span class="ib valign-middle">{{include.description | default: '—' | markdownify}}</span></td>
|
15
|
+
</tr>
|
16
|
+
{% endfor %}
|
17
|
+
</tbody>
|
18
|
+
</table>
|
19
|
+
</div>
|
20
|
+
</div>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
{% for layout in page._PatternbotData.layouts %}
|
12
12
|
<tr>
|
13
13
|
<th class="valign-middle" scope="row" colspan="6"><code class="ib valign-middle">{{layout.name | escape}}</code></th>
|
14
|
-
<td class="valign-middle" scope="col" colspan="18"><span class="ib valign-middle">{{layout.description | default: '—' |
|
14
|
+
<td class="valign-middle" scope="col" colspan="18"><span class="ib valign-middle">{{layout.description | default: '—' | markdownify}}</span></td>
|
15
15
|
</tr>
|
16
16
|
{% endfor %}
|
17
17
|
</tbody>
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'listen'
|
3
4
|
require 'open-uri'
|
4
5
|
require 'babosa'
|
5
6
|
require 'deep_merge'
|
@@ -35,6 +36,7 @@ module JekyllPatternbot
|
|
35
36
|
require 'jekyll_patternbot/finders/logos'
|
36
37
|
require 'jekyll_patternbot/finders/icons'
|
37
38
|
require 'jekyll_patternbot/finders/layouts'
|
39
|
+
require 'jekyll_patternbot/finders/includes'
|
38
40
|
require 'jekyll_patternbot/finders/patterns'
|
39
41
|
require 'jekyll_patternbot/finders/sample_pages'
|
40
42
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module JekyllPatternbot
|
2
2
|
Config = YAML.load_file File.expand_path('../../_config.yml', __dir__)
|
3
|
+
ConfigListener = nil
|
3
4
|
class << self; attr_accessor :PatternbotLogger; end
|
4
5
|
class << self; attr_accessor :PatternbotCache; end
|
5
6
|
class << self; attr_accessor :PatternbotLocale; end
|
@@ -23,5 +24,23 @@ module JekyllPatternbot
|
|
23
24
|
else
|
24
25
|
PatternbotLocale = YAML.load_file File.expand_path("../../_data/locales/en-ca.yml", __dir__)
|
25
26
|
end
|
27
|
+
|
28
|
+
# Does this leave a running process when Jekyll shuts down?
|
29
|
+
ConfigListener = Listen.to(site.source, only: /\_config\.yml/) do |modified, added, removed|
|
30
|
+
begin
|
31
|
+
new_config = YAML.load_file File.expand_path(site.source + '/_config.yml')
|
32
|
+
rescue Exception => err
|
33
|
+
log = PatternbotConsoleLogger.new
|
34
|
+
log.fatal(err.message)
|
35
|
+
else
|
36
|
+
if new_config.key? 'patternbot'
|
37
|
+
Config['patternbot'].deep_merge! new_config['patternbot']
|
38
|
+
if site
|
39
|
+
site.process
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
ConfigListener.start
|
26
45
|
end
|
27
46
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module JekyllPatternbot
|
2
|
+
class IncludesFinder
|
3
|
+
|
4
|
+
def base
|
5
|
+
{
|
6
|
+
:name => false,
|
7
|
+
:description => false,
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
def info
|
12
|
+
includes_dir = File.expand_path Config['includes_dir']
|
13
|
+
includes = []
|
14
|
+
return includes unless File.directory? includes_dir
|
15
|
+
include_files = FileHelper.list_files_with_ext includes_dir, '*'
|
16
|
+
for include in include_files
|
17
|
+
include_data = base.clone
|
18
|
+
include_data[:name] = File.basename include, '.*'
|
19
|
+
unless Config['patternbot']['includes'].nil?
|
20
|
+
Config['patternbot']['includes'].each do |key, desc|
|
21
|
+
if key == include_data[:name]
|
22
|
+
include_data[:description] = desc.strip if desc
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
includes.push include_data
|
27
|
+
end
|
28
|
+
includes
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -13,7 +13,9 @@ module JekyllPatternbot
|
|
13
13
|
return {} unless File.file? config_path
|
14
14
|
begin
|
15
15
|
config_data = YAML.load_file config_path
|
16
|
-
rescue
|
16
|
+
rescue Exception => err
|
17
|
+
log = PatternbotConsoleLogger.new
|
18
|
+
log.fatal(err.message)
|
17
19
|
return {}
|
18
20
|
end
|
19
21
|
if config_data.nil? or config_data == false
|
@@ -7,10 +7,12 @@ module JekyllPatternbot
|
|
7
7
|
|
8
8
|
def self._pattern_assign_tags(fields)
|
9
9
|
assign_tags = []
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
if fields.is_a? Array
|
11
|
+
for field in fields
|
12
|
+
unless field['required'] == false
|
13
|
+
if field.key? 'data'
|
14
|
+
assign_tags.push "{% assign #{self._pattern_data_source_var_name(field)}=#{field['data']['source']} %}"
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -19,21 +21,29 @@ module JekyllPatternbot
|
|
19
21
|
|
20
22
|
def self._pattern_include_fields(fields, datasource=false)
|
21
23
|
liquid_fields = []
|
22
|
-
|
23
|
-
|
24
|
-
if field.key? '
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
24
|
+
if fields.is_a? Array
|
25
|
+
for field in fields
|
26
|
+
if not field.key? 'name' or field['name'] == ''
|
27
|
+
err_msg = 'A pattern field, inside a pattern’s config.yml file, is missing a name.'
|
28
|
+
err_logger = PatternbotConsoleLogger.new
|
29
|
+
err_logger.fatal err_msg
|
30
|
+
raise err_msg
|
30
31
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
unless field['required'] == false
|
33
|
+
if field.key? 'data'
|
34
|
+
if datasource
|
35
|
+
liquid_fields.push "#{field['name']}=#{self._pattern_data_source_var_name(field)}"
|
36
|
+
else
|
37
|
+
liquid_fields.push "#{field['name']}=#{field['data']['type']}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
if field.key? 'example'
|
41
|
+
quotes = ''
|
42
|
+
if field['example'].is_a? String
|
43
|
+
quotes = '"'
|
44
|
+
end
|
45
|
+
liquid_fields.push "#{field['name']}=#{quotes}#{field['example']}#{quotes}"
|
35
46
|
end
|
36
|
-
liquid_fields.push "#{field['name']}=#{quotes}#{field['example']}#{quotes}"
|
37
47
|
end
|
38
48
|
end
|
39
49
|
end
|
@@ -60,6 +60,9 @@ module JekyllPatternbot
|
|
60
60
|
layouts = LayoutsFinder.new
|
61
61
|
PatternbotData[:layouts] = layouts.info
|
62
62
|
|
63
|
+
includes = IncludesFinder.new
|
64
|
+
PatternbotData[:includes] = includes.info
|
65
|
+
|
63
66
|
pattern_files = PatternsFinder.new
|
64
67
|
PatternbotData[:patterns] = {
|
65
68
|
:internal => pattern_files.internal_patterns_info,
|
@@ -84,6 +84,12 @@ module JekyllPatternbot
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def self.parse_font(dec, val, available_weights)
|
87
|
+
if not val.is_a? String
|
88
|
+
err_msg = "There’s a syntax error in the #{dec.strip} declaration of the css/theme.css file."
|
89
|
+
err_logger = PatternbotConsoleLogger.new
|
90
|
+
err_logger.fatal err_msg
|
91
|
+
raise err_msg
|
92
|
+
end
|
87
93
|
font_family = val.match(/[^\,\;]*/)[0].gsub(/['"]/, '')
|
88
94
|
font_family_slug = font_family.force_encoding("utf-8").to_slug.normalize.to_s
|
89
95
|
font = self.font.clone
|
data/jekyll_patternbot.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.required_ruby_version = '~> 2'
|
23
23
|
|
24
24
|
spec.add_runtime_dependency 'jekyll', '~> 3.8'
|
25
|
+
spec.add_runtime_dependency 'listen', '~> 3.0'
|
25
26
|
spec.add_runtime_dependency 'unicode', '~> 0.4'
|
26
27
|
spec.add_runtime_dependency 'colorator', '~> 1'
|
27
28
|
spec.add_runtime_dependency 'babosa', '~> 1'
|
data/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_patternbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas J Bradley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: listen
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: unicode
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -194,6 +208,8 @@ files:
|
|
194
208
|
- _patterns/icons/icon-sizes.html
|
195
209
|
- _patterns/icons/icons-with-labels.html
|
196
210
|
- _patterns/icons/icons.html
|
211
|
+
- _patterns/includes/config.yml
|
212
|
+
- _patterns/includes/includes.html
|
197
213
|
- _patterns/layouts/config.yml
|
198
214
|
- _patterns/layouts/layouts.html
|
199
215
|
- _patterns/modules/config.yml
|
@@ -226,6 +242,7 @@ files:
|
|
226
242
|
- _plugins/jekyll_patternbot/filters/text.rb
|
227
243
|
- _plugins/jekyll_patternbot/finders/finder.rb
|
228
244
|
- _plugins/jekyll_patternbot/finders/icons.rb
|
245
|
+
- _plugins/jekyll_patternbot/finders/includes.rb
|
229
246
|
- _plugins/jekyll_patternbot/finders/layouts.rb
|
230
247
|
- _plugins/jekyll_patternbot/finders/logos.rb
|
231
248
|
- _plugins/jekyll_patternbot/finders/patterns.rb
|
@@ -317,7 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
334
|
- !ruby/object:Gem::Version
|
318
335
|
version: '0'
|
319
336
|
requirements: []
|
320
|
-
rubygems_version: 3.0.
|
337
|
+
rubygems_version: 3.0.6
|
321
338
|
signing_key:
|
322
339
|
specification_version: 4
|
323
340
|
summary: Your pompous and persnickety patterning robot.
|