jekyll-antex 0.2.2 → 0.3.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/lib/jekyll/antex/alias.rb +7 -13
- data/lib/jekyll/antex/defaults.yml +15 -0
- data/lib/jekyll/antex/generator.rb +26 -8
- data/lib/jekyll/antex/guard.rb +19 -0
- data/lib/jekyll/antex/guardian.rb +52 -0
- data/lib/jekyll/antex/options.rb +4 -0
- data/lib/jekyll/antex/utils.rb +14 -0
- data/lib/jekyll/antex/version.rb +1 -1
- data/lib/jekyll/antex.rb +3 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 433dcdd8d21dc9ecf05abd9356a52105aefe7646
|
4
|
+
data.tar.gz: 1f233c071d6ed01728d12971c049bc35cce18e43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96479fe656d0ba72cfa2cd8984c1ca9e0653bce6cbabc99ed891a3aa3bd410becd335fef505c165b68720e49c7266129293855708af560305f9cdf7ef9123c8b
|
7
|
+
data.tar.gz: 992dea3ca86bac0da9f0b67213884dfa9ee789b82dd4c5be37392fa878477644a57819b6c8009eda9d6de6500e43f767c26b6e96aae370175de5ab85a224adf8
|
data/lib/jekyll/antex/alias.rb
CHANGED
@@ -1,33 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'jekyll/antex/error'
|
4
|
+
require 'jekyll/antex/utils'
|
4
5
|
|
5
6
|
module Jekyll
|
6
7
|
module Antex
|
7
8
|
class Alias
|
8
9
|
class InvalidRegexp < Error; end
|
9
10
|
|
10
|
-
attr_reader :priority, :regexp, :
|
11
|
+
attr_reader :priority, :regexp, :options
|
11
12
|
|
12
|
-
def initialize(priority:, options: {},
|
13
|
-
|
13
|
+
def initialize(priority:, regexp:, options: {},
|
14
|
+
multiline: false, extended: true)
|
14
15
|
@priority = priority.to_i
|
15
|
-
@regexp = build_regexp source: regexp,
|
16
|
-
|
17
|
-
|
16
|
+
@regexp = Utils.build_regexp source: regexp,
|
17
|
+
extended: extended,
|
18
|
+
multiline: multiline
|
18
19
|
validate_regexp!
|
19
20
|
@options = options.to_h
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
23
24
|
|
24
|
-
def build_regexp(source:, extended:, multiline:)
|
25
|
-
options = 0
|
26
|
-
options |= Regexp::EXTENDED if extended
|
27
|
-
options |= Regexp::MULTILINE if multiline
|
28
|
-
Regexp.new source, options
|
29
|
-
end
|
30
|
-
|
31
25
|
def validate_regexp!
|
32
26
|
return if @regexp.names.include? 'code'
|
33
27
|
raise InvalidRegexp, <<~MESSAGE
|
@@ -73,6 +73,21 @@ commands:
|
|
73
73
|
- "{{ file.fit }}"
|
74
74
|
targets:
|
75
75
|
- "{{ file.svg }}"
|
76
|
+
guards:
|
77
|
+
comment:
|
78
|
+
priority: 1000
|
79
|
+
multiline: true
|
80
|
+
regexp: >
|
81
|
+
<!---
|
82
|
+
.*?
|
83
|
+
--->
|
84
|
+
verbatim:
|
85
|
+
priority: 100
|
86
|
+
multiline: true
|
87
|
+
regexp: >
|
88
|
+
```
|
89
|
+
.*?
|
90
|
+
```
|
76
91
|
aliases:
|
77
92
|
# 'internal' must have the highest priority;
|
78
93
|
# it is the liquid tag all other aliases are rendered to.
|
@@ -6,6 +6,9 @@ require 'jekyll/utils'
|
|
6
6
|
require 'jekyll/antex/alias'
|
7
7
|
require 'jekyll/antex/dealiaser'
|
8
8
|
|
9
|
+
require 'jekyll/antex/guard'
|
10
|
+
require 'jekyll/antex/guardian'
|
11
|
+
|
9
12
|
module Jekyll
|
10
13
|
module Antex
|
11
14
|
class Generator < Jekyll::Generator
|
@@ -23,15 +26,12 @@ module Jekyll
|
|
23
26
|
private
|
24
27
|
|
25
28
|
def dealias_resource_content!(site:, resource:)
|
26
|
-
|
29
|
+
options = build_options site: site, resource: resource
|
30
|
+
guardian = build_guardian options['guards']
|
31
|
+
dealiaser = build_dealiaser options['aliases']
|
32
|
+
resource.content = guardian.apply resource.content
|
27
33
|
resource.content = dealiaser.parse resource.content
|
28
|
-
|
29
|
-
|
30
|
-
def build_dealiaser(site:, resource:)
|
31
|
-
options = build_options(site: site, resource: resource)
|
32
|
-
dealiaser = Jekyll::Antex::Dealiaser.new
|
33
|
-
dealiaser.add_aliases build_aliases(options['aliases'])
|
34
|
-
dealiaser
|
34
|
+
resource.content = guardian.remove resource.content
|
35
35
|
end
|
36
36
|
|
37
37
|
def build_options(site:, resource:)
|
@@ -40,6 +40,24 @@ module Jekyll
|
|
40
40
|
resource.data['antex'] || {}
|
41
41
|
end
|
42
42
|
|
43
|
+
def build_guardian(guards_options_hash)
|
44
|
+
guardian = Jekyll::Antex::Guardian.new
|
45
|
+
guardian.add_guards build_guards(guards_options_hash)
|
46
|
+
guardian
|
47
|
+
end
|
48
|
+
|
49
|
+
def build_dealiaser(aliases_options_hash)
|
50
|
+
dealiaser = Jekyll::Antex::Dealiaser.new
|
51
|
+
dealiaser.add_aliases build_aliases(aliases_options_hash)
|
52
|
+
dealiaser
|
53
|
+
end
|
54
|
+
|
55
|
+
def build_guards(options_hash)
|
56
|
+
options_hash.values.map do |args|
|
57
|
+
Guard.new Jekyll::Utils.symbolize_hash_keys(args)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
43
61
|
def build_aliases(options_hash)
|
44
62
|
options_hash.values.map do |args|
|
45
63
|
Alias.new Jekyll::Utils.symbolize_hash_keys(args)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'jekyll/antex/utils'
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module Antex
|
7
|
+
class Guard
|
8
|
+
attr_reader :priority, :regexp
|
9
|
+
|
10
|
+
def initialize(priority:, regexp:,
|
11
|
+
multiline: false, extended: true)
|
12
|
+
@priority = priority.to_i
|
13
|
+
@regexp = Utils.build_regexp source: regexp,
|
14
|
+
extended: extended,
|
15
|
+
multiline: multiline
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'securerandom'
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module Antex
|
7
|
+
class Guardian
|
8
|
+
attr_reader :guards
|
9
|
+
|
10
|
+
def initialize(tag: 'antex')
|
11
|
+
@guards = []
|
12
|
+
@stash = {}
|
13
|
+
@tag = tag
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_guards(guards)
|
17
|
+
@guards.concat(guards).sort_by!(&:priority).reverse!
|
18
|
+
end
|
19
|
+
|
20
|
+
def apply(content)
|
21
|
+
@content = content.dup
|
22
|
+
@stash = {}
|
23
|
+
stash_guards
|
24
|
+
@content
|
25
|
+
end
|
26
|
+
|
27
|
+
def remove(content)
|
28
|
+
@content = content.dup
|
29
|
+
unstash_guards
|
30
|
+
@content
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def stash_guards
|
36
|
+
@guards.each do |guard|
|
37
|
+
@content.gsub!(guard.regexp) do
|
38
|
+
uuid = SecureRandom.uuid
|
39
|
+
@stash.store uuid, Regexp.last_match.to_s
|
40
|
+
uuid
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def unstash_guards
|
46
|
+
@stash.each do |uuid, guard_match|
|
47
|
+
@content.gsub! uuid, guard_match
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/jekyll/antex/options.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Antex
|
5
|
+
module Utils
|
6
|
+
def self.build_regexp(source:, extended:, multiline:)
|
7
|
+
options = 0
|
8
|
+
options |= Regexp::EXTENDED if extended
|
9
|
+
options |= Regexp::MULTILINE if multiline
|
10
|
+
Regexp.new source, options
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/jekyll/antex/version.rb
CHANGED
data/lib/jekyll/antex.rb
CHANGED
@@ -4,7 +4,10 @@ require 'antex'
|
|
4
4
|
|
5
5
|
require 'jekyll/antex/version'
|
6
6
|
require 'jekyll/antex/error'
|
7
|
+
require 'jekyll/antex/utils'
|
7
8
|
require 'jekyll/antex/options'
|
9
|
+
require 'jekyll/antex/guard'
|
10
|
+
require 'jekyll/antex/guardian'
|
8
11
|
require 'jekyll/antex/alias'
|
9
12
|
require 'jekyll/antex/dealiaser'
|
10
13
|
require 'jekyll/antex/generator'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-antex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paolo Brasolin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -152,7 +152,10 @@ files:
|
|
152
152
|
- lib/jekyll/antex/defaults.yml
|
153
153
|
- lib/jekyll/antex/error.rb
|
154
154
|
- lib/jekyll/antex/generator.rb
|
155
|
+
- lib/jekyll/antex/guard.rb
|
156
|
+
- lib/jekyll/antex/guardian.rb
|
155
157
|
- lib/jekyll/antex/options.rb
|
158
|
+
- lib/jekyll/antex/utils.rb
|
156
159
|
- lib/jekyll/antex/version.rb
|
157
160
|
homepage: https://github.com/paolobrasolin/antex
|
158
161
|
licenses:
|