snippr 0.15.24 → 0.16.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/README.md +23 -8
- data/lib/snippr/meta_data.rb +12 -1
- data/lib/snippr/snip.rb +2 -1
- data/snippr.gemspec +1 -1
- data/spec/fixtures/include/main.snip +6 -0
- data/spec/fixtures/include/test.snip +4 -0
- data/spec/fixtures/include/test2.snip +4 -0
- data/spec/snippr/meta_data_spec.rb +18 -0
- data/spec/snippr/snip_spec.rb +5 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04987e98947b0190ff1c5d80e54f0f10d5261c79
|
4
|
+
data.tar.gz: a901855ac7e59a75c478b9d5fdd26f7efe7a55fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 726583051abb204696a534c43e9eed5d4e6ed59af7e1f88b9f2bd871747b6594c66defd52070e64001bd8ef6d25bfd6bd81f58165c296e15909ceeb370317f64
|
7
|
+
data.tar.gz: b2df93eef30d90fe05410c9e95f6aef81b22f5c4fbad7cb7cfc63440689168c239761a4e7a8749a8c1baa7cea571afbdcc2e46792479e8d036b488d381805b14
|
data/README.md
CHANGED
@@ -119,14 +119,29 @@ The data itself is parsed as YAML:
|
|
119
119
|
Or with Segmentfilter:
|
120
120
|
|
121
121
|
---
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
122
|
+
a_yaml: old
|
123
|
+
---
|
124
|
+
old snippet content comes here until before segment filter
|
125
|
+
==== valid_from: 2013-05-17 13:15:00 ====
|
126
|
+
---
|
127
|
+
a_yaml: new
|
128
|
+
---
|
129
|
+
new snippet content after segment filter
|
130
|
+
|
131
|
+
You call also include other front matter blocks from another snippet with the magic `_include` YAML construct.
|
132
|
+
If you have a snippet `a/path/snippet.snip`:
|
133
|
+
|
134
|
+
---
|
135
|
+
_include:
|
136
|
+
- path/from/root/to/snippet
|
137
|
+
- ./relative/to/this/snippet
|
138
|
+
---
|
139
|
+
|
140
|
+
This would merge the metadata from `path/from/root/to/snippet.snip` and `a/path/relative/to/this/snippet.snip` into the containing snippets metadata.
|
141
|
+
If there are duplicate keys the metadata in the main/base snippet is chosen.
|
142
|
+
|
143
|
+
Be aware that the `_include` key is *removed* from the metadata after including.
|
144
|
+
|
130
145
|
|
131
146
|
### Including snippr files inside other files
|
132
147
|
|
data/lib/snippr/meta_data.rb
CHANGED
@@ -9,10 +9,21 @@ module Snippr
|
|
9
9
|
|
10
10
|
class MetaData
|
11
11
|
|
12
|
-
|
12
|
+
INCLUDE = "_include"
|
13
|
+
|
14
|
+
def self.extract(name, content, snippet=nil)
|
13
15
|
if content =~ /^(---\s*\n.*?\n?)^(---\s*$?)/m
|
14
16
|
content = Regexp.last_match.post_match.strip
|
15
17
|
meta = yaml_load(name, $1)
|
18
|
+
if meta.keys.include?(INCLUDE)
|
19
|
+
Array(meta[INCLUDE]).each do |includePath|
|
20
|
+
if (snippet && includePath.start_with?("./"))
|
21
|
+
includePath = snippet.name.gsub(/\/.*?$/,"") + "/" + includePath.gsub(/^\.\//, "")
|
22
|
+
end
|
23
|
+
snippet = Snippr.load(includePath)
|
24
|
+
meta = snippet.meta.merge(meta)
|
25
|
+
end
|
26
|
+
end
|
16
27
|
end
|
17
28
|
|
18
29
|
meta = meta ? meta : {}
|
data/lib/snippr/snip.rb
CHANGED
@@ -31,7 +31,8 @@ module Snippr
|
|
31
31
|
"<!-- missing snippr: #{name} -->"
|
32
32
|
else
|
33
33
|
content = SegmentParser.new(raw_content).content
|
34
|
-
@unprocessed_content, @meta = MetaData.extract(name, content)
|
34
|
+
@unprocessed_content, @meta = MetaData.extract(name, content, self)
|
35
|
+
@meta = @meta.reject { |key_from_meta| key_from_meta == MetaData::INCLUDE }
|
35
36
|
content = Processor.process @unprocessed_content, opts, self
|
36
37
|
"<!-- starting snippr: #{name} -->\n#{content}\n<!-- closing snippr: #{name} -->"
|
37
38
|
end
|
data/snippr.gemspec
CHANGED
@@ -6,6 +6,8 @@ describe Snippr::MetaData do
|
|
6
6
|
|
7
7
|
TEST_CONTENT = 'Hier ist jede Menge Content.'
|
8
8
|
TEST_CONTENT_WITH_METABLOCK = "---\nyml_key: yml_value\n---\n#{TEST_CONTENT}"
|
9
|
+
TEST_CONTENT_WITH_INCLUDE = "---\n_include:\n - include/test\n - include/test2\ntest: main\n---"
|
10
|
+
TEST_CONTENT_WITH_RELATIVE_INCLUDE = "---\n_include:\n - ./test\n - ./test2\ntest: main\n---"
|
9
11
|
|
10
12
|
describe '.extract' do
|
11
13
|
it 'returns an array with 2 elements [contentstring, metahash]' do
|
@@ -35,6 +37,22 @@ describe Snippr::MetaData do
|
|
35
37
|
result = Snippr::MetaData.extract([:content], TEST_CONTENT_WITH_METABLOCK)
|
36
38
|
expect(result.first).to eq TEST_CONTENT
|
37
39
|
end
|
40
|
+
|
41
|
+
it "includes other front matter via the _include key" do
|
42
|
+
result = Snippr::MetaData.extract([:content], TEST_CONTENT_WITH_INCLUDE)
|
43
|
+
expect(result.second).to eq({"this_is_also"=>"included_from_include_test2_snippet", "test"=>"main", "this_is"=>"included_from_include_test_snippet", "_include"=>["include/test", "include/test2"]})
|
44
|
+
end
|
45
|
+
|
46
|
+
it "includes metadata from relative include paths" do
|
47
|
+
snippet = Snippr.load("include/main")
|
48
|
+
result = Snippr::MetaData.extract([:content], TEST_CONTENT_WITH_RELATIVE_INCLUDE, snippet)
|
49
|
+
expect(result.second).to eq({"this_is_also"=>"included_from_include_test2_snippet", "test"=>"main", "this_is"=>"included_from_include_test_snippet", "_include"=>["./test", "./test2"]})
|
50
|
+
end
|
51
|
+
|
52
|
+
it "includes other front matter blocks but lets the main block win" do
|
53
|
+
result = Snippr::MetaData.extract([:content], TEST_CONTENT_WITH_INCLUDE)
|
54
|
+
expect(result.second).to eq({"this_is_also"=>"included_from_include_test2_snippet", "test"=>"main", "this_is"=>"included_from_include_test_snippet", "_include"=>["include/test", "include/test2"]})
|
55
|
+
end
|
38
56
|
end
|
39
57
|
|
40
58
|
end
|
data/spec/snippr/snip_spec.rb
CHANGED
@@ -142,6 +142,11 @@ describe Snippr::Snip do
|
|
142
142
|
expect(Snippr::Processor).to receive(:process).never
|
143
143
|
expect(Snippr::Snip.new(:doesnotexist, :a => :b).content).to eq('<!-- missing snippr: doesnotexist -->')
|
144
144
|
end
|
145
|
+
|
146
|
+
it "removes the _include key from the metadata" do
|
147
|
+
snip = Snippr::Snip.new(:include, :main)
|
148
|
+
expect(snip.meta).to_not have_key("_include")
|
149
|
+
end
|
145
150
|
end
|
146
151
|
|
147
152
|
describe "#missing?" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snippr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Harrington
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-07-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: i18n
|
@@ -155,6 +155,9 @@ files:
|
|
155
155
|
- spec/fixtures/i18n/list_de.snip
|
156
156
|
- spec/fixtures/i18n/shop_de.snip
|
157
157
|
- spec/fixtures/i18n/shop_en.snip
|
158
|
+
- spec/fixtures/include/main.snip
|
159
|
+
- spec/fixtures/include/test.snip
|
160
|
+
- spec/fixtures/include/test2.snip
|
158
161
|
- spec/fixtures/meta/broken.snip
|
159
162
|
- spec/fixtures/meta/onlyContent_de.snip
|
160
163
|
- spec/fixtures/meta/withContent.snip
|
@@ -218,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
221
|
version: '0'
|
219
222
|
requirements: []
|
220
223
|
rubyforge_project: snippr
|
221
|
-
rubygems_version: 2.
|
224
|
+
rubygems_version: 2.4.1
|
222
225
|
signing_key:
|
223
226
|
specification_version: 4
|
224
227
|
summary: File based content management
|
@@ -231,6 +234,9 @@ test_files:
|
|
231
234
|
- spec/fixtures/i18n/list_de.snip
|
232
235
|
- spec/fixtures/i18n/shop_de.snip
|
233
236
|
- spec/fixtures/i18n/shop_en.snip
|
237
|
+
- spec/fixtures/include/main.snip
|
238
|
+
- spec/fixtures/include/test.snip
|
239
|
+
- spec/fixtures/include/test2.snip
|
234
240
|
- spec/fixtures/meta/broken.snip
|
235
241
|
- spec/fixtures/meta/onlyContent_de.snip
|
236
242
|
- spec/fixtures/meta/withContent.snip
|