premonition 4.0.0.pre1 → 4.0.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +120 -65
- data/lib/premonition.rb +1 -0
- data/lib/premonition/commands/install_scss.rb +65 -0
- data/lib/premonition/processor.rb +2 -2
- data/lib/premonition/resources.rb +8 -8
- data/lib/premonition/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 702f70cebe5c5bc886febd4ef952d96ae29fb3648005c0c2b479dcb6558ad05d
|
4
|
+
data.tar.gz: f68b77e7d9a65c7d92bf859375d6705df066c902548425f0d81020afba05991b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 738fa98b26ce9d6f5a8ed7bfd7ae646d264d85a252139f4d7ad44dcff77d25bc98389ea2412d36a0f194e179745bfd085d54576e8282badbf577a446f885c862
|
7
|
+
data.tar.gz: 8f86832b377ba7be043d80cdde9ff8134dbb6d4f42c2caf27adbed85dfe3f5902ba45b3316981918fe23ba3f6d0980fd788eebe0572c11302710dbb3ed7f85df
|
data/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# Premonition
|
2
2
|
|
3
|
-
[Demo site](https://lazee.github.io/premonition-demo/)
|
3
|
+
[Demo site](https://lazee.github.io/premonition-demo/) ([Source code](https://github.com/lazee/premonition-demo))
|
4
4
|
|
5
|
-
Premonition is a [Jekyll](https://jekyllrb.com/)
|
5
|
+
Premonition is a higly customizable [Jekyll](https://jekyllrb.com/) plugin that can convert Markdown block-quotes into beautiful block styled content.
|
6
6
|
|
7
|
-
By simply adding a
|
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.
|
8
8
|
|
9
9
|
<p align="center">
|
10
10
|
<img src="https://github.com/lazee/premonition/raw/master/screen.png" height="450"/>
|
@@ -15,28 +15,31 @@ By simply adding a special header to the first line of a [block quote](https://g
|
|
15
15
|
* Highly customizable (Create your own styles and templates easily)
|
16
16
|
* Non-intrusive - Its just Markdown!
|
17
17
|
* Easy to install
|
18
|
-
* Comes with a stylesheet (Sass/Css) and templates for
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
*
|
24
|
-
*
|
25
|
-
*
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
*
|
30
|
-
|
31
|
-
|
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
|
+
|
32
36
|
## Requirements
|
33
37
|
|
34
|
-
* Jekyll 3.7.x or higher
|
35
|
-
|
36
|
-
|
38
|
+
* Jekyll 3.7.x or higher (We recommend the new Jekyll 4)
|
39
|
+
|
37
40
|
## Installation
|
38
41
|
|
39
|
-
Add the following line to your `Gemfile
|
42
|
+
Add the following line to your `Gemfile` inside your Jekyll project folder:
|
40
43
|
|
41
44
|
```
|
42
45
|
group :jekyll_plugins do
|
@@ -44,80 +47,115 @@ group :jekyll_plugins do
|
|
44
47
|
end
|
45
48
|
```
|
46
49
|
|
47
|
-
Then add
|
50
|
+
Then add the the plugin to your `_config.yml`:
|
48
51
|
|
49
52
|
```yaml
|
50
53
|
plugins:
|
51
54
|
- premonition
|
52
55
|
```
|
53
56
|
|
54
|
-
|
57
|
+
Now make sure to download the Premonition bundle:
|
58
|
+
|
59
|
+
```
|
60
|
+
bundle install
|
61
|
+
```
|
62
|
+
|
63
|
+
### Installing the default stylesheet
|
64
|
+
|
65
|
+
Finally, if you want to use the default Premonition styling (You really should!), then you have to install the SASS stylesheet.
|
66
|
+
|
67
|
+
From your Jekyll project folder, run:
|
68
|
+
|
69
|
+
```
|
70
|
+
bundle exec jekyll premonition-install
|
71
|
+
```
|
72
|
+
|
73
|
+
This will add the `premonition.scss` file to your `_sass` folder and ask if you want to import this file into your `assets/main.scss` file.
|
74
|
+
Both of these settings (destination folder and main file) can be configured. Run `bundle exec jekyll premonition-install --help` to see how.
|
75
|
+
|
76
|
+
If you prefer CSS, then download the stylesheet/premonition.css file directly from this repo.
|
55
77
|
|
56
78
|
## Usage
|
57
79
|
|
58
|
-
Premonition
|
59
|
-
special format to activate the transformation.
|
80
|
+
A Premonition block is really just a standard Markdown blockquote where the first line of the block must follow a certain syntax.
|
60
81
|
|
61
|
-
`> [type] "Title"`
|
82
|
+
`> [type] "Title" [ attributes... ]`
|
62
83
|
|
63
|
-
The type
|
64
|
-
|
65
|
-
generated markup.
|
84
|
+
The type must be set to one of the default Premonition block types, or a type
|
85
|
+
defined by you in `_config.yml`.
|
66
86
|
|
67
|
-
|
87
|
+
The default types are:
|
68
88
|
|
69
89
|
* note
|
70
90
|
* info
|
71
91
|
* warning
|
72
92
|
* error
|
93
|
+
* citation
|
94
|
+
|
95
|
+
The *Title* will normally be the block header. Leave it empty to disable
|
96
|
+
the header.
|
97
|
+
|
98
|
+
*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.
|
73
99
|
|
74
|
-
|
100
|
+
### Examples
|
75
101
|
|
102
|
+
Simple note with no header
|
76
103
|
~~~markdown
|
77
|
-
>
|
104
|
+
> note ""
|
78
105
|
> No headers in here
|
79
106
|
~~~
|
80
107
|
|
81
|
-
|
108
|
+
Note
|
109
|
+
~~~markdown
|
110
|
+
> note "I am a not"
|
111
|
+
> The body of the note goes here. Premonition allows you to write any `Markdown` inside the block.
|
112
|
+
~~~
|
113
|
+
|
114
|
+
Info
|
115
|
+
~~~markdown
|
116
|
+
> info "I am some info"
|
117
|
+
> The body of the info box goes here. Premonition allows you to write any `Markdown` inside the block.
|
118
|
+
~~~
|
82
119
|
|
120
|
+
Warning
|
83
121
|
~~~markdown
|
84
122
|
> warning "I am a warning"
|
85
|
-
> The body of the warning goes here. Premonition allows you to write any `Markdown` inside the block.
|
123
|
+
> The body of the warning box goes here. Premonition allows you to write any `Markdown` inside the block.
|
86
124
|
~~~
|
87
125
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
126
|
+
Error
|
127
|
+
~~~markdown
|
128
|
+
> error "I am an error"
|
129
|
+
> The body of the error box goes here. Premonition allows you to write any `Markdown` inside the block.
|
92
130
|
~~~
|
93
131
|
|
94
|
-
|
132
|
+
Citation (Note the use of attributes here)
|
133
|
+
~~~markdown
|
134
|
+
> citations "Mark Twain" [ cite = "mt" ]
|
135
|
+
> I will be a beautiful citation quote
|
136
|
+
~~~
|
95
137
|
|
96
138
|
## Configuration
|
97
139
|
|
98
|
-
The templates can be customized in two eays. Either by replacing the default
|
140
|
+
The templates can be customized in two eays. Either by replacing one of the default templates, or by adding a new type from scratch.
|
99
141
|
|
100
|
-
All this is done inside your `_config.yml`.
|
142
|
+
All this is done inside your `_config.yml`. Look at the [source code for our demo site](https://github.com/lazee/premonition-demo), for live examples on how configuration can be done.
|
101
143
|
|
102
144
|
### Templates
|
103
145
|
|
104
|
-
Like Jekyll itself, Premonition uses the [Liquid Markup Language](https://github.com/Shopify/liquid) for
|
146
|
+
Like Jekyll itself, Premonition uses the [Liquid Markup Language](https://github.com/Shopify/liquid) for templating.
|
105
147
|
|
106
|
-
|
148
|
+
Six variables are available to the template engine:
|
107
149
|
|
108
150
|
* *header* Boolean that tells you if a title exists and that a header should be added.
|
109
151
|
* *content* The rendered content for your block.
|
110
152
|
* *title* The block title.
|
111
153
|
* *type* The type name (eg: note).
|
112
154
|
* *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`
|
155
|
+
* *attrs* These are the attributes set in the block header. Like we did in the Citation example above.
|
113
156
|
|
114
|
-
|
115
|
-
|
116
|
-
~~~html
|
117
|
-
<div class="premonition {{type}}">
|
118
|
-
<div class="fa {{meta.fa-icon}}"></div>
|
119
|
-
<div class="content">{% if header %}<p class="header">{{title}}</p>{% endif %}{{content}}</div></div>
|
120
|
-
~~~
|
157
|
+
Take a look at our default template inside `lib/premonition/resources.rb` to
|
158
|
+
get an idea of how this is done.
|
121
159
|
|
122
160
|
#### Overriding the default template
|
123
161
|
|
@@ -158,32 +196,49 @@ premonition:
|
|
158
196
|
types:
|
159
197
|
custombox:
|
160
198
|
meta:
|
161
|
-
|
199
|
+
my-meta: 'By myself'
|
162
200
|
advanced:
|
163
201
|
template: 'Liquid template goes here'
|
164
202
|
default_title: 'MY BLOCK'
|
165
203
|
meta:
|
166
|
-
|
204
|
+
my-meta: 'By myself'
|
167
205
|
~~~
|
168
206
|
|
169
|
-
##
|
207
|
+
## More on styling
|
208
|
+
|
209
|
+
As described in the Installation section above, it is pretty easy to install the default stylesheet into your project.
|
210
|
+
But we recognize that this design probably isn't a perfect fit for everybody. Luckily you can modify it :)
|
170
211
|
|
171
|
-
|
172
|
-
|
212
|
+
Our recommendation is to install the default stylesheet and override it in another SASS file. This way it will be
|
213
|
+
easy to upgrade the default Stylesheet later without loosing your changes.
|
173
214
|
|
174
|
-
|
215
|
+
The [Jekyll Documentation](https://jekyllrb.com/docs/assets/) describes the process of adding your own SASS files in great details.
|
175
216
|
|
176
|
-
|
177
|
-
Be aware that you have to use v5.x of Font Awesome together with our CSS.
|
217
|
+
## Font Awesome support
|
178
218
|
|
179
|
-
|
219
|
+
Premonition 4.x no longer depends on Font Awesome for its default stylesheet.
|
220
|
+
But it is still supported.
|
180
221
|
|
181
|
-
|
222
|
+
To add Font Awesome support you should add something like this
|
223
|
+
to your head template file:
|
224
|
+
|
225
|
+
```
|
182
226
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.1/css/all.css">
|
183
|
-
|
227
|
+
```
|
184
228
|
|
185
|
-
|
229
|
+
Feel free to install it any other way you prefer, as long as you follow their
|
230
|
+
[license](https://fontawesome.com/license/free).
|
186
231
|
|
187
|
-
|
188
|
-
|
189
|
-
|
232
|
+
Now you can swith to Font Awesome for any of the default types by adding
|
233
|
+
`fa-icon` to a types meta object. Let's say you want to replace the default error box icon with the beautiful `fa-bug` icon from Font Awesome.
|
234
|
+
|
235
|
+
Then just add this to your `_config.yml`:
|
236
|
+
|
237
|
+
```yml
|
238
|
+
premonition:
|
239
|
+
types:
|
240
|
+
error:
|
241
|
+
fa-icon: 'fa-bug'
|
242
|
+
```
|
243
|
+
|
244
|
+
Simple as that :)
|
data/lib/premonition.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'net/http'
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module Premonition
|
7
|
+
class InstallScssCommand < Jekyll::Command
|
8
|
+
class << self
|
9
|
+
def init_with_program(prog)
|
10
|
+
prog.command(:"premonition-install") do |c|
|
11
|
+
c.syntax 'premonition-install [options]'
|
12
|
+
c.description 'Install Premonition SASS stylesheet into your Jekyll site.'
|
13
|
+
c.option 'dest', '-d DEST', 'Where premonition.scss should be stored. (defaults to _sass/)'
|
14
|
+
c.option 'main', '-m DEST', 'The path to your main SASS file (defaults to assets/main.scss)'
|
15
|
+
c.action do |args, opts|
|
16
|
+
Jekyll::Premonition::InstallScssCommand.process(args, opts)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def process(_args, opts)
|
22
|
+
begin
|
23
|
+
puts '== Installing Premonition Stylesheet and resources =="'
|
24
|
+
puts '-- premonition.scss --'
|
25
|
+
dest = opts['dest'].nil? || opts['dest'].empty? ? './_sass/' : File.join(opts['dest'], '')
|
26
|
+
main = opts['main'].nil? || opts['main'].empty? ? './assets/main.scss' : opts['main']
|
27
|
+
raise StandardError, "#{dest} folder does not exist" unless Dir.exist?(dest)
|
28
|
+
raise StandardError, "#{main} does not exist" unless File.exist?(main)
|
29
|
+
|
30
|
+
uri = URI('https://raw.githubusercontent.com/lazee/premonition/master/stylesheet/premonition.scss')
|
31
|
+
pf = "#{dest}premonition.scss"
|
32
|
+
|
33
|
+
if File.exist?(pf)
|
34
|
+
print "You already have #{pf} installed. Continue? [Y/n]"
|
35
|
+
override = gets.chomp
|
36
|
+
raise StandardError, "Aborted. No harm done." if override == 'n'
|
37
|
+
end
|
38
|
+
|
39
|
+
File.write(pf, Net::HTTP.get(uri))
|
40
|
+
puts "Saved stylesheet in #{pf}"
|
41
|
+
|
42
|
+
if File.readlines(main).grep(/\@import \"premonition\"/).any?
|
43
|
+
puts "#{main} already imports the Premonition stylesheet."
|
44
|
+
else
|
45
|
+
puts 'You must add Premonition to your main SASS file.'
|
46
|
+
print "Add '@import \"premonition\";' to end of #{main} now? [Y/n] "
|
47
|
+
add = gets.chomp
|
48
|
+
if add == 'n'
|
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
|
56
|
+
end
|
57
|
+
|
58
|
+
rescue StandardError => msg
|
59
|
+
puts "ERROR: #{msg}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -93,8 +93,8 @@ module Jekyll
|
|
93
93
|
|
94
94
|
unless @resources.config['types'].include? block['type']
|
95
95
|
c['title'] = ''
|
96
|
-
c['meta'] = { '
|
97
|
-
c['template'] = '<div class="premonition error"><div class="fa {{meta.
|
96
|
+
c['meta'] = { 'pn-icon' => 'pn-error' }
|
97
|
+
c['template'] = '<div class="premonition error"><div class="fa {{meta.pn-icon}}"></div>'\
|
98
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>'
|
99
99
|
return c
|
100
100
|
end
|
@@ -27,18 +27,18 @@ module Jekyll
|
|
27
27
|
def default_config
|
28
28
|
{
|
29
29
|
'default' => {
|
30
|
-
'template' => '<div class="premonition {{type}}"><i class="fas {{meta.fa-icon}}"></i>'\
|
30
|
+
'template' => '<div class="premonition {{type}}"><i class="{% if meta.fa-icon %}fas {{meta.fa-icon}}{% else %}premonition {{meta.pn-icon}}{% endif %}"></i>'\
|
31
31
|
'<div class="content">{% if header %}<p class="header">{{title}}</p>{% endif %}{{content}}</div></div>',
|
32
|
-
'meta' => { '
|
32
|
+
'meta' => { 'pn-icon' => 'pn-square', 'fa-icon' => nil },
|
33
33
|
'title' => nil
|
34
34
|
},
|
35
35
|
'types' => {
|
36
|
-
'note' => { 'meta' => { '
|
37
|
-
'info' => { 'meta' => { '
|
38
|
-
'warning' => { 'meta' => { '
|
39
|
-
'error' => { 'meta' => { '
|
40
|
-
'citation' => { 'meta' => { '
|
41
|
-
'<div class="premonition {{type}}"><i class="fas {{meta.fa-icon}}"></i>'\
|
36
|
+
'note' => { 'meta' => { 'pn-icon' => 'pn-note' } },
|
37
|
+
'info' => { 'meta' => { 'pn-icon' => 'pn-info' } },
|
38
|
+
'warning' => { 'meta' => { 'pn-icon' => 'pn-warn' } },
|
39
|
+
'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
42
|
'<blockquote class="content blockquote"{% if attrs.cite %} cite="{{attrs.cite}}"{% endif %}>{{content}}{% if header %}'\
|
43
43
|
'<footer class="blockquote-footer">'\
|
44
44
|
'<cite title="{{title}}">{{title}}</cite></footer>{% endif %}</blockquote></div>' }
|
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.pre2
|
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-03-
|
11
|
+
date: 2020-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- lib/premonition/attributes/error.rb
|
135
135
|
- lib/premonition/attributes/parser.rb
|
136
136
|
- lib/premonition/attributes/stacker.rb
|
137
|
+
- lib/premonition/commands/install_scss.rb
|
137
138
|
- lib/premonition/hook.rb
|
138
139
|
- lib/premonition/processor.rb
|
139
140
|
- lib/premonition/resources.rb
|
@@ -158,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
159
|
- !ruby/object:Gem::Version
|
159
160
|
version: 1.3.1
|
160
161
|
requirements: []
|
161
|
-
rubygems_version: 3.
|
162
|
+
rubygems_version: 3.1.2
|
162
163
|
signing_key:
|
163
164
|
specification_version: 4
|
164
165
|
summary: Jekyll generator that will convert special block quotes into message boxes.
|