jekyll-documents 0.7.1 → 0.7.2
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/CHANGELOG.md +5 -0
- data/lib/jekyll/documents/options_parser.rb +43 -0
- data/lib/jekyll/documents/tags/doc_category.rb +1 -7
- data/lib/jekyll/documents/tags/doc_link.rb +1 -7
- data/lib/jekyll/documents/tags/document_icon.rb +1 -7
- data/lib/jekyll/documents/tags/latest_documents.rb +2 -12
- data/lib/jekyll/documents/version.rb +1 -1
- data/lib/jekyll-documents.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 884c3afc18e96312dcd25a2328f652ec8cb1417ad8ec26337b4aa4ee2f175517
|
|
4
|
+
data.tar.gz: 29e0d75b6b50c68acb124e0b31123cc85c3810789c39d562beb8da00c5c50a87
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c50ee45d94b33d62b344dadda31c9cf865d8d175de1b00e7c7f92aaeb046f0cef7fec3835de627e68ec0ce9849d925b8fbacb3012be5a5face435822c173b9c3
|
|
7
|
+
data.tar.gz: 3a28dee0ff0b8078cac42e4097676a991496e8510a38518bd7d6ea013275f2f9f804b15b5f4ab46e846f6ab2a5eaa8e72dfd4a535ed8a1b9c7cf338671a64019
|
data/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "strscan"
|
|
4
|
+
|
|
5
|
+
module Jekyll
|
|
6
|
+
module Documents
|
|
7
|
+
# Linear-time parser for Liquid tag markup key:value pairs.
|
|
8
|
+
# Replaces polynomial-redos-vulnerable regex scanning with
|
|
9
|
+
# anchored scans that advance through the input once.
|
|
10
|
+
module OptionsParser
|
|
11
|
+
module_function
|
|
12
|
+
|
|
13
|
+
def parse_options(markup)
|
|
14
|
+
scanner = StringScanner.new(markup.to_s)
|
|
15
|
+
options = {}
|
|
16
|
+
|
|
17
|
+
until scanner.eos?
|
|
18
|
+
scanner.skip(/\s+/)
|
|
19
|
+
break if scanner.eos?
|
|
20
|
+
|
|
21
|
+
key = scanner.scan(/\w+/)
|
|
22
|
+
unless key
|
|
23
|
+
scanner.getch
|
|
24
|
+
next
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
scanner.skip(/\s*/)
|
|
28
|
+
next unless scanner.scan(":")
|
|
29
|
+
|
|
30
|
+
scanner.skip(/\s*/)
|
|
31
|
+
value = if scanner.scan(/'([^']*)'/) || scanner.scan(/"([^"]*)"/)
|
|
32
|
+
scanner[1]
|
|
33
|
+
else
|
|
34
|
+
scanner.scan(/\S+/)
|
|
35
|
+
end
|
|
36
|
+
options[key] = value unless value.nil?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
options
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -152,13 +152,7 @@ module Jekyll
|
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
def extract_options(text)
|
|
155
|
-
|
|
156
|
-
text.to_s.scan(
|
|
157
|
-
/(\w+)\s*:\s*(?:'([^']*)'|"([^"]*)"|([^\s]+))/
|
|
158
|
-
) do |key, single, double, bare|
|
|
159
|
-
options[key] = single || double || bare
|
|
160
|
-
end
|
|
161
|
-
options
|
|
155
|
+
OptionsParser.parse_options(text)
|
|
162
156
|
end
|
|
163
157
|
|
|
164
158
|
def escape_html(value)
|
|
@@ -148,13 +148,7 @@ module Jekyll
|
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
def extract_options(text)
|
|
151
|
-
|
|
152
|
-
text.to_s.scan(
|
|
153
|
-
/(\w+)\s*:\s*(?:'([^']*)'|"([^"]*)"|([^\s]+))/
|
|
154
|
-
) do |key, single, double, bare|
|
|
155
|
-
options[key] = single || double || bare
|
|
156
|
-
end
|
|
157
|
-
options
|
|
151
|
+
OptionsParser.parse_options(text)
|
|
158
152
|
end
|
|
159
153
|
|
|
160
154
|
def escape_html(value)
|
|
@@ -45,13 +45,7 @@ module Jekyll
|
|
|
45
45
|
|
|
46
46
|
def parse_markup(markup)
|
|
47
47
|
expression = markup.to_s.strip[/\A[^\s]+/]
|
|
48
|
-
|
|
49
|
-
markup.to_s.scan(
|
|
50
|
-
/(\w+)\s*:\s*(?:'([^']*)'|"([^"]*)"|([^\s]+))/
|
|
51
|
-
) do |key, single, double, bare|
|
|
52
|
-
options[key] = single || double || bare
|
|
53
|
-
end
|
|
54
|
-
[expression, options]
|
|
48
|
+
[expression, OptionsParser.parse_options(markup)]
|
|
55
49
|
end
|
|
56
50
|
|
|
57
51
|
def escape_html(value)
|
|
@@ -46,19 +46,9 @@ module Jekyll
|
|
|
46
46
|
})
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
+
# supports: count:5 category:'referat'
|
|
49
50
|
def parse_args(markup)
|
|
50
|
-
|
|
51
|
-
args = {}
|
|
52
|
-
# Safe: markup comes from Jekyll template authors (trusted), not end users
|
|
53
|
-
# Runs only during static site generation, not on user requests
|
|
54
|
-
markup.scan(/(\w+)\s*:\s*'([^']*)'|(\w+)\s*:\s*([^\s]+)/).each do |match|
|
|
55
|
-
if match[0]
|
|
56
|
-
args[match[0]] = match[1]
|
|
57
|
-
else
|
|
58
|
-
args[match[2]] = match[3]
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
args
|
|
51
|
+
OptionsParser.parse_options(markup)
|
|
62
52
|
end
|
|
63
53
|
end
|
|
64
54
|
end
|
data/lib/jekyll-documents.rb
CHANGED
|
@@ -11,6 +11,7 @@ require_relative "jekyll/documents/text_extraction_manifest"
|
|
|
11
11
|
require_relative "jekyll/documents/assets_generator"
|
|
12
12
|
require_relative "jekyll/documents/json_index_generator"
|
|
13
13
|
require_relative "jekyll/documents/layout_registrar"
|
|
14
|
+
require_relative "jekyll/documents/options_parser"
|
|
14
15
|
|
|
15
16
|
# Liquid tag(s)
|
|
16
17
|
require_relative "jekyll/documents/tags/latest_documents"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jekyll-documents
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.7.
|
|
4
|
+
version: 0.7.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Svend Gundestrup
|
|
@@ -154,6 +154,7 @@ files:
|
|
|
154
154
|
- lib/jekyll/documents/generator.rb
|
|
155
155
|
- lib/jekyll/documents/json_index_generator.rb
|
|
156
156
|
- lib/jekyll/documents/layout_registrar.rb
|
|
157
|
+
- lib/jekyll/documents/options_parser.rb
|
|
157
158
|
- lib/jekyll/documents/tags/doc_category.rb
|
|
158
159
|
- lib/jekyll/documents/tags/doc_link.rb
|
|
159
160
|
- lib/jekyll/documents/tags/document_icon.rb
|