premonition 4.0.0.pre3 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +70 -66
- data/lib/premonition/attributes/parser.rb +0 -1
- data/lib/premonition/commands/install_scss.rb +32 -32
- data/lib/premonition/hook.rb +20 -8
- data/lib/premonition/processor.rb +24 -2
- data/lib/premonition/resources.rb +43 -10
- data/lib/premonition/version.rb +2 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5958da36843569e59519ea1ccf58975c8604a2f087d9b0a21c2b0b85c945773
|
4
|
+
data.tar.gz: c1fb3d763996a86bc7ca3dadf0a72b2afcbeb8cfad7196c6099e9dd82dd77751
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92953692e95d66d1913d8a924b8db826379168e7fb2746501f1f693f8183fe00a320b29a47c3163915f88329d94ac7dde0bf14ffb760ae9c5931be54f7a157e7
|
7
|
+
data.tar.gz: ef822540e419bdc92f6a154ae388120f07289f499bb6f8e95888d3d9c44339ecfed3b5e550d4e5b1d38e89c74ed6f13e68e29084ee15cb628479c0ad950af420
|
data/README.md
CHANGED
@@ -1,51 +1,49 @@
|
|
1
1
|
# Premonition
|
2
2
|
|
3
|
-
NOTE: This is the documentation for the version 4 release, coming soon. For 2.x documentation, please switch to the `2.x` branch.
|
4
|
-
|
5
3
|
[Demo site](https://lazee.github.io/premonition-demo/) ([Source code](https://github.com/lazee/premonition-demo))
|
6
4
|
|
7
|
-
Premonition is a higly customizable [Jekyll](https://jekyllrb.com/) plugin that can convert Markdown block-quotes into beautiful block styled content.
|
5
|
+
Premonition is a higly customizable [Jekyll](https://jekyllrb.com/) plugin that can convert Markdown block-quotes into beautiful block styled content.
|
8
6
|
|
9
7
|
By simply adding a custom header to the first line of a [block quote](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#blockquotes), Premonition will transform it into a markup block of your choice.
|
10
8
|
|
11
9
|
<p align="center">
|
12
|
-
<img src="https://github.com/lazee/premonition/raw/master/screen.png" height="
|
10
|
+
<img src="https://github.com/lazee/premonition/raw/master/screen.png" height="550"/>
|
13
11
|
</p>
|
14
12
|
|
15
13
|
## Features
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
15
|
+
- Highly customizable (Create your own styles and templates easily)
|
16
|
+
- Non-intrusive - Its just Markdown!
|
17
|
+
- Easy to install
|
18
|
+
- Comes with a default stylesheet (Sass/Css) and templates for beautiful messages boxes and citation.
|
19
|
+
- Font Awesome 5 support
|
20
|
+
|
21
|
+
## Version 4 Highlights
|
22
|
+
|
23
|
+
- Jekyll [Post Excerpts](https://jekyllrb.com/docs/posts/#post-excerpts) support
|
24
|
+
- New install command for the default stylesheet.
|
25
|
+
- [Kramdown reference links](https://kramdown.gettalong.org/quickref.html#links-and-images) support
|
26
|
+
- Jekyll 4 support (3.7 still supported)
|
27
|
+
- Added support for block attributes (See documentation further down)
|
28
|
+
- Added new citation block type.
|
29
|
+
- Minor fixes to the Premonition stylesheet.
|
30
|
+
- Removed the need Font Awesome css in default stylesheet, but
|
31
|
+
Font Awesome is still supported.
|
32
|
+
- Other bug fixes. See HISTORY.md.
|
33
|
+
|
34
|
+
See UPGRADE.md for help on how to upgrade from 2.x to 4.0.
|
35
|
+
|
38
36
|
## Requirements
|
39
37
|
|
40
|
-
|
41
|
-
|
38
|
+
- Jekyll 3.7.x or higher (We recommend the new Jekyll 4)
|
39
|
+
|
42
40
|
## Installation
|
43
41
|
|
44
42
|
Add the following line to your `Gemfile` inside your Jekyll project folder:
|
45
43
|
|
46
44
|
```
|
47
45
|
group :jekyll_plugins do
|
48
|
-
gem "premonition", "4.0.0
|
46
|
+
gem "premonition", "4.0.0"
|
49
47
|
end
|
50
48
|
```
|
51
49
|
|
@@ -53,7 +51,7 @@ Then add the the plugin to your `_config.yml`:
|
|
53
51
|
|
54
52
|
```yaml
|
55
53
|
plugins:
|
56
|
-
|
54
|
+
- premonition
|
57
55
|
```
|
58
56
|
|
59
57
|
Now make sure to download the Premonition bundle:
|
@@ -89,54 +87,60 @@ defined by you in `_config.yml`.
|
|
89
87
|
|
90
88
|
The default types are:
|
91
89
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
90
|
+
- note
|
91
|
+
- info
|
92
|
+
- warning
|
93
|
+
- error
|
94
|
+
- citation
|
97
95
|
|
98
|
-
The
|
96
|
+
The _Title_ will normally be the block header. Leave it empty to disable
|
99
97
|
the header.
|
100
98
|
|
101
|
-
|
99
|
+
_attributes_ are in use by the Citation type, but can be skipped for the other default types. See section about custom types for more info.
|
102
100
|
|
103
101
|
### Examples
|
104
102
|
|
105
103
|
Simple note with no header
|
106
|
-
|
104
|
+
|
105
|
+
```markdown
|
107
106
|
> note ""
|
108
107
|
> No headers in here
|
109
|
-
|
108
|
+
```
|
110
109
|
|
111
110
|
Note
|
112
|
-
|
111
|
+
|
112
|
+
```markdown
|
113
113
|
> note "I am a not"
|
114
114
|
> The body of the note goes here. Premonition allows you to write any `Markdown` inside the block.
|
115
|
-
|
115
|
+
```
|
116
116
|
|
117
117
|
Info
|
118
|
-
|
118
|
+
|
119
|
+
```markdown
|
119
120
|
> info "I am some info"
|
120
121
|
> The body of the info box goes here. Premonition allows you to write any `Markdown` inside the block.
|
121
|
-
|
122
|
+
```
|
122
123
|
|
123
124
|
Warning
|
124
|
-
|
125
|
+
|
126
|
+
```markdown
|
125
127
|
> warning "I am a warning"
|
126
128
|
> The body of the warning box goes here. Premonition allows you to write any `Markdown` inside the block.
|
127
|
-
|
129
|
+
```
|
128
130
|
|
129
131
|
Error
|
130
|
-
|
132
|
+
|
133
|
+
```markdown
|
131
134
|
> error "I am an error"
|
132
135
|
> The body of the error box goes here. Premonition allows you to write any `Markdown` inside the block.
|
133
|
-
|
136
|
+
```
|
134
137
|
|
135
138
|
Citation (Note the use of attributes here)
|
136
|
-
|
139
|
+
|
140
|
+
```markdown
|
137
141
|
> citations "Mark Twain" [ cite = "mt" ]
|
138
142
|
> I will be a beautiful citation quote
|
139
|
-
|
143
|
+
```
|
140
144
|
|
141
145
|
## Configuration
|
142
146
|
|
@@ -150,12 +154,12 @@ Like Jekyll itself, Premonition uses the [Liquid Markup Language](https://github
|
|
150
154
|
|
151
155
|
Six variables are available to the template engine:
|
152
156
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
157
|
+
- _header_ Boolean that tells you if a title exists and that a header should be added.
|
158
|
+
- _content_ The rendered content for your block.
|
159
|
+
- _title_ The block title.
|
160
|
+
- _type_ The type name (eg: note).
|
161
|
+
- _meta_ This is a hash that can contain any properties you would like to make available to your template. It is configured in `_config.yml`
|
162
|
+
- _attrs_ These are the attributes set in the block header. Like we did in the Citation example above.
|
159
163
|
|
160
164
|
Take a look at our default template inside `lib/premonition/resources.rb` to
|
161
165
|
get an idea of how this is done.
|
@@ -167,7 +171,7 @@ You can override the default template like this in your `_config.yml`:
|
|
167
171
|
```yaml
|
168
172
|
premonition:
|
169
173
|
default:
|
170
|
-
template:
|
174
|
+
template: "Liquid template goes here"
|
171
175
|
```
|
172
176
|
|
173
177
|
#### Overriding the template for a default type
|
@@ -178,7 +182,7 @@ If you want to override the template for one of the default types (like note), d
|
|
178
182
|
premonition:
|
179
183
|
types:
|
180
184
|
note:
|
181
|
-
template:
|
185
|
+
template: "Liquid template goes here"
|
182
186
|
```
|
183
187
|
|
184
188
|
### Adding custom types
|
@@ -188,24 +192,24 @@ of the defaults, or add a new one.
|
|
188
192
|
|
189
193
|
For each type you can
|
190
194
|
|
191
|
-
|
192
|
-
|
193
|
-
|
195
|
+
- Add a custom template (template)
|
196
|
+
- Set a default title (default_title)
|
197
|
+
- Set meta data that can be used inside the template
|
194
198
|
|
195
199
|
Each type must have unique id (lowercase letters).
|
196
200
|
|
197
|
-
|
201
|
+
```yaml
|
198
202
|
premonition:
|
199
203
|
types:
|
200
204
|
custombox:
|
201
205
|
meta:
|
202
|
-
my-meta:
|
206
|
+
my-meta: "By myself"
|
203
207
|
advanced:
|
204
|
-
template:
|
205
|
-
default_title:
|
208
|
+
template: "Liquid template goes here"
|
209
|
+
default_title: "MY BLOCK"
|
206
210
|
meta:
|
207
|
-
my-meta:
|
208
|
-
|
211
|
+
my-meta: "By myself"
|
212
|
+
```
|
209
213
|
|
210
214
|
## More on styling
|
211
215
|
|
@@ -241,7 +245,7 @@ Then just add this to your `_config.yml`:
|
|
241
245
|
premonition:
|
242
246
|
types:
|
243
247
|
error:
|
244
|
-
fa-icon:
|
248
|
+
fa-icon: "fa-bug"
|
245
249
|
```
|
246
250
|
|
247
251
|
Simple as that :)
|
@@ -4,6 +4,9 @@ require 'net/http'
|
|
4
4
|
|
5
5
|
module Jekyll
|
6
6
|
module Premonition
|
7
|
+
# Public: Premonition stylesheet installer command
|
8
|
+
#
|
9
|
+
# Jekyll command that will install the Premonition stylesheet and add it to the needed resource files.
|
7
10
|
class InstallScssCommand < Jekyll::Command
|
8
11
|
class << self
|
9
12
|
def init_with_program(prog)
|
@@ -19,45 +22,42 @@ module Jekyll
|
|
19
22
|
end
|
20
23
|
|
21
24
|
def process(_args, opts)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
raise StandardError, "#{main} does not exist" unless File.exist?(main)
|
25
|
+
puts '== Installing Premonition Stylesheet and resources =="'
|
26
|
+
puts '-- premonition.scss --'
|
27
|
+
dest = opts['dest'].nil? || opts['dest'].empty? ? './_sass/' : File.join(opts['dest'], '')
|
28
|
+
main = opts['main'].nil? || opts['main'].empty? ? './assets/css/styles.scss' : opts['main']
|
29
|
+
raise StandardError, "#{dest} folder does not exist. Create it manually, and run script again." unless Dir.exist?(dest)
|
30
|
+
raise StandardError, "#{main} does not exist" unless File.exist?(main)
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
+
uri = URI('https://raw.githubusercontent.com/lazee/premonition/master/stylesheet/premonition.scss')
|
33
|
+
pf = "#{dest}premonition.scss"
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
if File.exist?(pf)
|
36
|
+
print "You already have #{pf} installed. Continue? [Y/n]"
|
37
|
+
override = gets.chomp
|
38
|
+
raise StandardError, 'Aborted. No harm done.' if override == 'n'
|
39
|
+
end
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
+
File.write(pf, Net::HTTP.get(uri))
|
42
|
+
puts "Saved stylesheet in #{pf}"
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
+
if File.readlines(main).grep(/\@import \"premonition\"/).any?
|
45
|
+
puts "#{main} already imports the Premonition stylesheet."
|
46
|
+
else
|
47
|
+
puts 'You must add Premonition to your main SASS file.'
|
48
|
+
print "Add '@import \"premonition\";' to end of #{main} now? [Y/n] "
|
49
|
+
add = gets.chomp
|
50
|
+
if add == 'n'
|
51
|
+
puts 'Ok. But then you will need to add it manually for the styling of Premonition to work.'
|
44
52
|
else
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
puts 'Ok. But then you will need to add it manually for the styling of Premonition to work.'
|
50
|
-
else
|
51
|
-
f = File.open(main, 'a')
|
52
|
-
f.write("\n@import \"premonition\";\n")
|
53
|
-
f.close
|
54
|
-
puts "Added Premonition stylesheet to #{main}."
|
55
|
-
end
|
53
|
+
f = File.open(main, 'a')
|
54
|
+
f.write("\n@import \"premonition\";\n")
|
55
|
+
f.close
|
56
|
+
puts "Added Premonition stylesheet to #{main}."
|
56
57
|
end
|
57
|
-
|
58
|
-
rescue StandardError => msg
|
59
|
-
puts "ERROR: #{msg}"
|
60
58
|
end
|
59
|
+
rescue StandardError => e
|
60
|
+
puts "ERROR: #{e}"
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
data/lib/premonition/hook.rb
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
module Jekyll
|
4
4
|
module Premonition
|
5
|
+
# Registers Premonition hooks in Jekyll.
|
6
|
+
#
|
7
|
+
# Two hooks are added. One general hook for pages and another special
|
8
|
+
# hook for dealing with excerpts within posts.
|
9
|
+
#
|
10
|
+
# This ladder is really a hack as we scan all Markdown files and insert the
|
11
|
+
# excerpt ourselves in the document data. Unfortunately Jekyll prepares
|
12
|
+
# the excerpt way to early in the process, preventing us from hooking
|
13
|
+
# into it in a prober way. We only support excerpts if the excerpt_separator
|
14
|
+
# is explicitly set: https://jekyllrb.com/docs/posts/#post-excerpts
|
5
15
|
class Hook < Generator
|
6
16
|
safe true
|
7
17
|
priority :high
|
@@ -10,14 +20,6 @@ module Jekyll
|
|
10
20
|
super(p)
|
11
21
|
end
|
12
22
|
|
13
|
-
def generate_excerpt?(doc)
|
14
|
-
!doc.data['excerpt_separator'].nil? && !doc.data['excerpt_separator'].empty?
|
15
|
-
end
|
16
|
-
|
17
|
-
def process?(resources, doc)
|
18
|
-
resources.config['extensions'].include?(File.extname(doc.relative_path)[1..-1])
|
19
|
-
end
|
20
|
-
|
21
23
|
def generate(site)
|
22
24
|
resources = Resources.new site.config
|
23
25
|
processor = Processor.new resources
|
@@ -33,6 +35,16 @@ module Jekyll
|
|
33
35
|
doc.content = processor.adder(doc.content) if process?(resources, doc)
|
34
36
|
end
|
35
37
|
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def generate_excerpt?(doc)
|
42
|
+
!doc.data['excerpt_separator'].nil? && !doc.data['excerpt_separator'].empty?
|
43
|
+
end
|
44
|
+
|
45
|
+
def process?(resources, doc)
|
46
|
+
resources.config['extensions'].include?(File.extname(doc.relative_path)[1..-1])
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
end
|
@@ -2,11 +2,18 @@
|
|
2
2
|
|
3
3
|
module Jekyll
|
4
4
|
module Premonition
|
5
|
+
# Class that does all of the rendering magic within Premonition.
|
5
6
|
class Processor
|
6
7
|
def initialize(resources)
|
7
8
|
@resources = resources
|
8
9
|
end
|
9
10
|
|
11
|
+
# Called by the registered pre_render hooks.
|
12
|
+
#
|
13
|
+
# This function takes markdown content as input and converts
|
14
|
+
# all the block quotes, with a Premonition header, into html.
|
15
|
+
#
|
16
|
+
# content - Markdown content
|
10
17
|
def adder(content)
|
11
18
|
o = []
|
12
19
|
references = load_references(content)
|
@@ -39,6 +46,9 @@ module Jekyll
|
|
39
46
|
|
40
47
|
private
|
41
48
|
|
49
|
+
# Find all the Kramdown reference name links.
|
50
|
+
# https://kramdown.gettalong.org/quickref.html#links-and-images
|
51
|
+
# https://github.com/lazee/premonition/issues/10
|
42
52
|
def load_references(content)
|
43
53
|
refs = ["\n"]
|
44
54
|
content.each_line do |l|
|
@@ -84,6 +94,19 @@ module Jekyll
|
|
84
94
|
)
|
85
95
|
end
|
86
96
|
|
97
|
+
def error_template
|
98
|
+
<<~TEMPLATE
|
99
|
+
<div class="premonition error">
|
100
|
+
<div class="fa {{meta.pn-icon}}"></div>
|
101
|
+
<div class="content">
|
102
|
+
<p class="header">PREMONITION ERROR: Invalid box type</p>
|
103
|
+
You have specified an invalid box type "{{type}}". You can customize your own box types in `_config.yml`.
|
104
|
+
See documentation for more help.
|
105
|
+
</div>
|
106
|
+
</div>
|
107
|
+
TEMPLATE
|
108
|
+
end
|
109
|
+
|
87
110
|
def create_resource(block)
|
88
111
|
c = {
|
89
112
|
'template' => @resources.config['default']['template'],
|
@@ -94,8 +117,7 @@ module Jekyll
|
|
94
117
|
unless @resources.config['types'].include? block['type']
|
95
118
|
c['title'] = ''
|
96
119
|
c['meta'] = { 'pn-icon' => 'pn-error' }
|
97
|
-
c['template'] =
|
98
|
-
'<div class="content"><p class="header">PREMONITION ERROR: Invalid box type</p>You have specified an invalid box type "{{type}}". You can customize your own box types in `_config.yml`. See documentation for help.</div></div>'
|
120
|
+
c['template'] = error_template
|
99
121
|
return c
|
100
122
|
end
|
101
123
|
|
@@ -2,15 +2,18 @@
|
|
2
2
|
|
3
3
|
module Jekyll
|
4
4
|
module Premonition
|
5
|
+
# Class for loading the Premonition configuration and preparing it for use.
|
5
6
|
class Resources
|
6
7
|
attr_reader :config
|
7
8
|
attr_reader :markdown
|
8
9
|
|
9
10
|
def initialize(site_config)
|
10
11
|
@config = load site_config
|
12
|
+
# Setup a new Markdown renderer.
|
11
13
|
@markdown = Converters::Markdown.new site_config
|
12
14
|
end
|
13
15
|
|
16
|
+
# Load the configuration of Premonition from Jekyll site configuration object.
|
14
17
|
def load(site_config)
|
15
18
|
cfg = default_config
|
16
19
|
p = site_config['premonition'] || {}
|
@@ -24,11 +27,38 @@ module Jekyll
|
|
24
27
|
cfg
|
25
28
|
end
|
26
29
|
|
30
|
+
def default_template
|
31
|
+
<<~TEMPLATE
|
32
|
+
<div class="premonition {% if meta.style %}{{meta.style}} {% endif %}{{type}}">
|
33
|
+
<i class="{% if meta.fa-icon %}fas {{meta.fa-icon}}{% else %}premonition {{meta.pn-icon}}{% endif %}"></i>
|
34
|
+
<div class="content">
|
35
|
+
{% if header %}<p class="header">{{title}}</p>{% endif %}{{content}}
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
TEMPLATE
|
39
|
+
end
|
40
|
+
|
41
|
+
def citation_template
|
42
|
+
<<~TEMPLATE
|
43
|
+
<div class="premonition {% if meta.style %}{{meta.style}} {% endif %}{{type}}">
|
44
|
+
<i class="{% if meta.fa-icon %}fas {{meta.fa-icon}}{% else %}premonition {{meta.pn-icon}}{% endif %}"></i>
|
45
|
+
<blockquote class="content blockquote"{% if attrs.cite %} cite="{{attrs.cite}}"{% endif %}>
|
46
|
+
{{content}}
|
47
|
+
{% if header %}
|
48
|
+
<footer class="blockquote-footer">
|
49
|
+
<cite title="{{title}}">{{title}}</cite>
|
50
|
+
</footer>
|
51
|
+
{% endif %}
|
52
|
+
</blockquote>
|
53
|
+
</div>
|
54
|
+
TEMPLATE
|
55
|
+
end
|
56
|
+
|
57
|
+
# Setup the default configuration and types
|
27
58
|
def default_config
|
28
59
|
{
|
29
60
|
'default' => {
|
30
|
-
'template' =>
|
31
|
-
'<div class="content">{% if header %}<p class="header">{{title}}</p>{% endif %}{{content}}</div></div>',
|
61
|
+
'template' => default_template,
|
32
62
|
'meta' => { 'pn-icon' => 'pn-square', 'fa-icon' => nil },
|
33
63
|
'title' => nil
|
34
64
|
},
|
@@ -37,24 +67,22 @@ module Jekyll
|
|
37
67
|
'info' => { 'meta' => { 'pn-icon' => 'pn-info' } },
|
38
68
|
'warning' => { 'meta' => { 'pn-icon' => 'pn-warn' } },
|
39
69
|
'error' => { 'meta' => { 'pn-icon' => 'pn-error' } },
|
40
|
-
'citation' => { 'meta' => { 'pn-icon' => 'pn-quote' }, 'template' =>
|
41
|
-
'<div class="premonition {{type}}"><i class="{% if meta.fa-icon %}fas {{meta.fa-icon}}{% else %}premonition {{meta.pn-icon}}{% endif %}"></i>'\
|
42
|
-
'<blockquote class="content blockquote"{% if attrs.cite %} cite="{{attrs.cite}}"{% endif %}>{{content}}{% if header %}'\
|
43
|
-
'<footer class="blockquote-footer">'\
|
44
|
-
'<cite title="{{title}}">{{title}}</cite></footer>{% endif %}</blockquote></div>' }
|
70
|
+
'citation' => { 'meta' => { 'pn-icon' => 'pn-quote' }, 'template' => citation_template }
|
45
71
|
},
|
46
|
-
'extensions' => [
|
47
|
-
|
48
|
-
|
72
|
+
'extensions' => %w[
|
73
|
+
md
|
74
|
+
markdown
|
49
75
|
]
|
50
76
|
}
|
51
77
|
end
|
52
78
|
|
79
|
+
# Basic configuration validation
|
53
80
|
def validate_defaults(df, prem)
|
54
81
|
fail 'meta must be a hash' if !df['meta'].nil? && !df['meta'].is_a?(Hash)
|
55
82
|
fail 'types must be a hash' if !prem['types'].nil? && !prem['types'].is_a?(Hash)
|
56
83
|
end
|
57
84
|
|
85
|
+
# Load extra Premonition types configured/overriden in _config.yml
|
58
86
|
def load_types(p, cfg)
|
59
87
|
return if p['types'].nil?
|
60
88
|
|
@@ -65,6 +93,9 @@ module Jekyll
|
|
65
93
|
end
|
66
94
|
end
|
67
95
|
|
96
|
+
# Load extra extensions from config.
|
97
|
+
#
|
98
|
+
# We need this when looking for excerpts
|
68
99
|
def load_extensions(p, cfg)
|
69
100
|
return if p['extensions'].nil?
|
70
101
|
return unless p['extensions'].is_a?(Array)
|
@@ -76,6 +107,7 @@ module Jekyll
|
|
76
107
|
end
|
77
108
|
end
|
78
109
|
|
110
|
+
# Validate a configured type and return as type hash
|
79
111
|
def type_config(id, t)
|
80
112
|
validate_type(id, t)
|
81
113
|
{
|
@@ -85,6 +117,7 @@ module Jekyll
|
|
85
117
|
}
|
86
118
|
end
|
87
119
|
|
120
|
+
# Type validation
|
88
121
|
def validate_type(id, t)
|
89
122
|
fail 'id missing from type' if id.nil?
|
90
123
|
fail "id can only be lowercase letters: #{id}" unless id[/[a-z]+/] == id
|
data/lib/premonition/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: premonition
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakob Vad Nielsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -106,6 +106,20 @@ dependencies:
|
|
106
106
|
- - "~>"
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: 0.10.0
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: test-unit
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: 3.3.5
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 3.3.5
|
109
123
|
- !ruby/object:Gem::Dependency
|
110
124
|
name: turn
|
111
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,9 +169,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
169
|
version: '0'
|
156
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
171
|
requirements:
|
158
|
-
- - "
|
172
|
+
- - ">="
|
159
173
|
- !ruby/object:Gem::Version
|
160
|
-
version:
|
174
|
+
version: '0'
|
161
175
|
requirements: []
|
162
176
|
rubygems_version: 3.1.2
|
163
177
|
signing_key:
|