jekyll-antex 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|