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