jekyll-conrefifier 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/jekyll-conrefifier.rb +16 -12
- data/lib/version.rb +1 -1
- data/spec/conrefifier_spec.rb +8 -0
- data/spec/fixtures/_config.yml +5 -0
- data/spec/fixtures/_data/warnings.yml +6 -0
- data/spec/fixtures/warnings.html +5 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efdff59b0efc358924f29d372fdde512b16c1280
|
4
|
+
data.tar.gz: 32e3178eb7720e9e7f8371251fc057495584f386
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebf92a86304459d5004088293efdd19e1586a30ccc3c61680eaee9fdfc875895c84cb4d221eeba215391fa51f2b7b4c3ff14ba0235327d66d3df2308148a00e8
|
7
|
+
data.tar.gz: 459315d522117b7db0d552cd053727c01f3959da75e7cfc67d792918c682096ff9c36336505c1890ee8e7cedafffd9a3abcecb5442ecdd83acc5df96b2492dc0
|
data/.gitignore
CHANGED
data/lib/jekyll-conrefifier.rb
CHANGED
@@ -116,11 +116,9 @@ module Jekyll
|
|
116
116
|
ConrefifierUtils.og_paths << path.slice(dir.index(src) + src.length + 1..-1).sub(/\.[^.]+\z/, '')
|
117
117
|
# if we hit upon if/unless conditionals, we'll need to pause and render them
|
118
118
|
contents = File.read(path)
|
119
|
-
if (matches = contents.scan /(\{% (?:if|unless).+? %\}.*?\{% end(?:if|unless) %\})/m)
|
119
|
+
if (matches = contents.scan /(\s*\{% (?:if|unless).+? %\}.*?\{% end(?:if|unless) %\})/m)
|
120
120
|
unless ConrefifierUtils.data_file_variables(config, path).nil?
|
121
|
-
contents = contents
|
122
|
-
contents = apply_vars_to_datafile(contents, matches, path)
|
123
|
-
contents = contents.gsub(/\[\[/, '{{')
|
121
|
+
contents = apply_vars_to_datafile(contents, matches, path, { preserve_all: true } )
|
124
122
|
end
|
125
123
|
end
|
126
124
|
|
@@ -139,13 +137,14 @@ module Jekyll
|
|
139
137
|
keys = path.split('/')
|
140
138
|
value = keys.inject(data, :fetch)
|
141
139
|
yaml_dump = YAML::dump value
|
140
|
+
|
142
141
|
keys[0...-1].inject(data, :fetch)[keys.last] = SafeYAML.load transform_liquid_variables(yaml_dump, path)
|
143
142
|
end
|
144
143
|
old_read_collections
|
145
144
|
end
|
146
145
|
|
147
146
|
# apply the custom scope plus the rest of the `site.data` information
|
148
|
-
def apply_vars_to_datafile(contents, matches, path)
|
147
|
+
def apply_vars_to_datafile(contents, matches, path, preserve_all: true, preserve_non_vars: false)
|
149
148
|
return contents if matches.empty?
|
150
149
|
|
151
150
|
data_vars = path.nil? ? {} : ConrefifierUtils.data_file_variables(config, path)
|
@@ -155,16 +154,21 @@ module Jekyll
|
|
155
154
|
|
156
155
|
matches.each do |match|
|
157
156
|
match = match.is_a?(Array) ? match.first : match
|
157
|
+
safe_match = if preserve_all
|
158
|
+
match.gsub(/\{\{/, '[[\1')
|
159
|
+
elsif preserve_non_vars
|
160
|
+
match.gsub(/\{\{(\s*)(?!\s*(site|page))/, '[[\1')
|
161
|
+
end
|
158
162
|
|
159
163
|
parsed_content = begin
|
160
|
-
Liquid::Template.parse(
|
161
|
-
|
164
|
+
parsed = Liquid::Template.parse(safe_match).render(config)
|
165
|
+
parsed.gsub(/\[\[/, '{{\1') if preserve_all || preserve_non_vars
|
166
|
+
rescue Exception => e
|
167
|
+
puts "Parse error in #{matches}: #{e}"
|
162
168
|
match
|
163
169
|
end
|
164
|
-
|
165
|
-
|
166
|
-
contents = contents.sub(match, parsed_content)
|
167
|
-
end
|
170
|
+
next if parsed_content.nil?
|
171
|
+
contents = contents.sub(match, parsed_content)
|
168
172
|
end
|
169
173
|
contents
|
170
174
|
end
|
@@ -174,7 +178,7 @@ module Jekyll
|
|
174
178
|
# renders as "GitHub Glossary" for dotcom, but "GitHub Enterprise Glossary" for Enterprise
|
175
179
|
def transform_liquid_variables(contents, path = nil)
|
176
180
|
if (matches = contents.scan /(\{\{.+?\}\})/)
|
177
|
-
contents = apply_vars_to_datafile(contents, matches, path)
|
181
|
+
contents = apply_vars_to_datafile(contents, matches, path, preserve_all: false, preserve_non_vars: true)
|
178
182
|
end
|
179
183
|
|
180
184
|
contents
|
data/lib/version.rb
CHANGED
data/spec/conrefifier_spec.rb
CHANGED
@@ -64,4 +64,12 @@ describe("Conrefifier") do
|
|
64
64
|
expect(filtering_layout_contents.scan(/Article v2.0/).count).to eq(1)
|
65
65
|
expect(filtering_layout_contents.scan(/Ignored/).count).to eq(1)
|
66
66
|
end
|
67
|
+
|
68
|
+
it 'filters items even if they have other curlies' do
|
69
|
+
warnings = @dest.join("warnings.html")
|
70
|
+
expect(warnings).to exist
|
71
|
+
warnings_contents = File.read(warnings)
|
72
|
+
expect(warnings_contents.scan(/- A dotcom Article/).count).to eq(1)
|
73
|
+
expect(warnings_contents.scan(/Article v2.0/).count).to eq(0)
|
74
|
+
end
|
67
75
|
end
|
data/spec/fixtures/_config.yml
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-conrefifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen J. Torikian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -79,12 +79,14 @@ files:
|
|
79
79
|
- spec/fixtures/_data/conrefs.yml
|
80
80
|
- spec/fixtures/_data/enterprise_filtered_categories.yml
|
81
81
|
- spec/fixtures/_data/filtered_categories.yml
|
82
|
+
- spec/fixtures/_data/warnings.yml
|
82
83
|
- spec/fixtures/_layouts/article.html
|
83
84
|
- spec/fixtures/_layouts/filtering_layout.html
|
84
85
|
- spec/fixtures/enterprise_filtered_index.html
|
85
86
|
- spec/fixtures/filtered_index.html
|
86
87
|
- spec/fixtures/filtering_layout.html
|
87
88
|
- spec/fixtures/index.html
|
89
|
+
- spec/fixtures/warnings.html
|
88
90
|
- spec/spec_helper.rb
|
89
91
|
homepage: ''
|
90
92
|
licenses:
|