jekyll-include_snippet 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fc96c6c7044170c2e858747e776b28f800b03c60f03d2e729853904cf784963d
|
4
|
+
data.tar.gz: 6203cdb73dfb12262c8886f2b516aa88446037b2a53a41c6aa618e618356775b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb15ef38f0bb497d0420d2d81722de82a1426b3cd4d19a1a7ff64c86402b461a7146862348afe8402451c3553034cb697484b9ac9a0de9a2a3f582e50c4900e6
|
7
|
+
data.tar.gz: 6a7aa922d917cb5c03d45ef92cdde145fd0709d640435327df6da5ce3870eccc99fb9c7653b63129607cb3392294cbbe54fc63ffaa2b894363cee20c84e16f5e
|
data/README.md
CHANGED
@@ -51,6 +51,30 @@ Optionally, you can set a default source path in the YAML frontmatter:
|
|
51
51
|
{% include_snippet my_method_snippet %}
|
52
52
|
```
|
53
53
|
|
54
|
+
## Languages Other Than Ruby
|
55
|
+
|
56
|
+
If you're using another language, you will probably need to change the "comment prefix".
|
57
|
+
|
58
|
+
---
|
59
|
+
title: "My Blerg Post"
|
60
|
+
date: "2018-01-01"
|
61
|
+
snippet_comment_prefix: "//"
|
62
|
+
---
|
63
|
+
|
64
|
+
```js
|
65
|
+
{% include_snippet whatever from whatever.js %}
|
66
|
+
```
|
67
|
+
|
68
|
+
```js
|
69
|
+
// whatever.js
|
70
|
+
|
71
|
+
// begin-snippet: whatever
|
72
|
+
function whatever() {
|
73
|
+
console.log("Hello there");
|
74
|
+
}
|
75
|
+
// end-snippet
|
76
|
+
```
|
77
|
+
|
54
78
|
## License
|
55
79
|
|
56
80
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
File without changes
|
@@ -1,16 +1,11 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module IncludeSnippet
|
3
3
|
class Extractor
|
4
|
-
|
5
|
-
(\s*)\#\s* # Line must start with a hash (surrounding whitespace optional)
|
6
|
-
begin-snippet: # Magic string for beginning a snippet
|
7
|
-
(.+) # The remainder of the line is the snippet name
|
8
|
-
}x
|
4
|
+
attr_reader :comment_prefix
|
9
5
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
}x
|
6
|
+
def initialize(comment_prefix:)
|
7
|
+
@comment_prefix = comment_prefix
|
8
|
+
end
|
14
9
|
|
15
10
|
def call(source)
|
16
11
|
everything = Snippet.new(name: 'everything', indent: 0)
|
@@ -19,9 +14,9 @@ module Jekyll
|
|
19
14
|
|
20
15
|
source.each_line.each_with_index do |line, lineno|
|
21
16
|
case line
|
22
|
-
when
|
17
|
+
when begin_regex
|
23
18
|
active_snippets << Snippet.new(name: $2.strip, indent: $1.length)
|
24
|
-
when
|
19
|
+
when end_regex
|
25
20
|
raise missing_begin_snippet(lineno) if active_snippets.empty?
|
26
21
|
all_snippets << active_snippets.pop
|
27
22
|
else
|
@@ -38,6 +33,25 @@ module Jekyll
|
|
38
33
|
|
39
34
|
private
|
40
35
|
|
36
|
+
def begin_regex
|
37
|
+
%r{
|
38
|
+
(\s*) # optional whitespace (indenting)
|
39
|
+
#{Regexp.quote(comment_prefix)} # the comment prefix
|
40
|
+
\s* # optional whitespace
|
41
|
+
begin-snippet: # magic string for beginning a snippet
|
42
|
+
(.+) # the remainder of the line is the snippet name
|
43
|
+
}x
|
44
|
+
end
|
45
|
+
|
46
|
+
def end_regex
|
47
|
+
%r{
|
48
|
+
\s* # optional whitespace (indenting)
|
49
|
+
#{Regexp.quote(comment_prefix)} # the comment prefix
|
50
|
+
\s* # optional whitespace
|
51
|
+
end-snippet # Magic string for ending a snippet
|
52
|
+
}x
|
53
|
+
end
|
54
|
+
|
41
55
|
def missing_begin_snippet(lineno)
|
42
56
|
<<~END_ERROR
|
43
57
|
There was an `end-snippet` on line #{lineno}, but there doesn't
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module IncludeSnippet
|
3
3
|
class LiquidTag < Liquid::Tag
|
4
|
+
DEFAULT_COMMENT_PREFIX = '#'
|
5
|
+
|
4
6
|
def initialize(tag_name, arg_str, tokens)
|
5
7
|
super
|
6
8
|
@snippet_name, @source_path = arg_str.split(/\sfrom\s/).map(&:strip)
|
@@ -9,7 +11,7 @@ module Jekyll
|
|
9
11
|
def render(context)
|
10
12
|
source_path = source_path_for(context)
|
11
13
|
source = File.read(source_path)
|
12
|
-
extractor = Extractor.new
|
14
|
+
extractor = Extractor.new(comment_prefix: comment_prefix_for(context))
|
13
15
|
snippets = extractor.(source)
|
14
16
|
snippets.fetch(@snippet_name) do
|
15
17
|
fail "Snippet not found: #{@snippet_name.inspect}\n in file: #{@source_path}"
|
@@ -19,9 +21,7 @@ module Jekyll
|
|
19
21
|
private
|
20
22
|
|
21
23
|
def source_path_for(context)
|
22
|
-
|
23
|
-
frontmatter_default_source = page && page['snippet_source']
|
24
|
-
result = frontmatter_default_source || @source_path
|
24
|
+
result = get_option(:snippet_source, context) || @source_path
|
25
25
|
|
26
26
|
if result.nil?
|
27
27
|
fail "No source path provided for snippet: #{@snippet_name}"
|
@@ -29,6 +29,15 @@ module Jekyll
|
|
29
29
|
|
30
30
|
result
|
31
31
|
end
|
32
|
+
|
33
|
+
def comment_prefix_for(context)
|
34
|
+
get_option(:snippet_comment_prefix, context) || DEFAULT_COMMENT_PREFIX
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_option(option_name, context)
|
38
|
+
page = context['page']
|
39
|
+
page && page[option_name.to_s]
|
40
|
+
end
|
32
41
|
end
|
33
42
|
end
|
34
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-include_snippet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Dalling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: liquid
|
@@ -106,7 +106,7 @@ files:
|
|
106
106
|
- Gemfile
|
107
107
|
- LICENSE.txt
|
108
108
|
- README.md
|
109
|
-
- jekyll-
|
109
|
+
- jekyll-include_snippet.gemspec
|
110
110
|
- lib/jekyll/include_snippet.rb
|
111
111
|
- lib/jekyll/include_snippet/extractor.rb
|
112
112
|
- lib/jekyll/include_snippet/liquid_tag.rb
|
@@ -130,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
requirements: []
|
133
|
-
|
134
|
-
rubygems_version: 2.6.11
|
133
|
+
rubygems_version: 3.0.3
|
135
134
|
signing_key:
|
136
135
|
specification_version: 4
|
137
136
|
summary: Include snippets of text from external files into your markdown
|