middleman-data_source 0.6.0 → 0.6.1
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 +3 -0
- data/lib/middleman/data_source/extension.rb +16 -1
- data/lib/middleman/data_source/version.rb +1 -1
- data/spec/lib/middleman/data_source/extension_spec.rb +13 -12
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8644a9a460f377c8c69f395ad49f85e08c600fcc
|
4
|
+
data.tar.gz: 2dc0d7139e818f655f7ad6a3bbd7eb8612d38693
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 031b02e3c88069f6232345bf159f007b9d0b14fa22e87e74c461beaf5abef13d47e7a85bff1d4cf210247ed695c1b37fba8128964c7e286d78af391d748fda0e
|
7
|
+
data.tar.gz: 1699caaa0cdfad8f4ba4cf5d311ca0ff0fe44ea101cfe2bd0d2f7a9e68027763a9e5e0b647e8480dd655126e08ec217afa61f68d4ca16ea5ef38aaa9775a7edf
|
data/changelog.md
CHANGED
@@ -73,8 +73,10 @@ module Middleman
|
|
73
73
|
def attempt_merge_then_enhance new_data, original_callback
|
74
74
|
if original_callback
|
75
75
|
original_data = original_callback.call
|
76
|
-
if original_data.respond_to? :
|
76
|
+
if original_data.respond_to? :deep_merge
|
77
77
|
return ::Middleman::Util.recursively_enhance original_data.deep_merge(new_data)
|
78
|
+
elsif original_data.respond_to? :merge
|
79
|
+
return ::Middleman::Util.recursively_enhance deep_merge(original_data, new_data)
|
78
80
|
end
|
79
81
|
end
|
80
82
|
|
@@ -105,6 +107,19 @@ module Middleman
|
|
105
107
|
end
|
106
108
|
end
|
107
109
|
|
110
|
+
def deep_merge base, extension
|
111
|
+
base.merge extension do |key, old_val, new_val|
|
112
|
+
old_val = old_val.to_hash if old_val.respond_to?(:to_hash)
|
113
|
+
new_val = new_val.to_hash if new_val.respond_to?(:to_hash)
|
114
|
+
|
115
|
+
if old_val.respond_to?(:merge) && new_val.respond_to?(:merge)
|
116
|
+
deep_merge old_val, new_val
|
117
|
+
else
|
118
|
+
new_val
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
108
123
|
class UnsupportedDataExtension < ArgumentError
|
109
124
|
end
|
110
125
|
|
@@ -8,25 +8,25 @@ describe Middleman::DataSource::Extension do
|
|
8
8
|
|
9
9
|
shared_examples "data import" do
|
10
10
|
it "adds data to application" do
|
11
|
-
expect( @mm.data.remote ).to
|
11
|
+
expect( @mm.data.remote.map(&:to_h) ).to match_array [{"item" => "one"}, {"item" => "two"}]
|
12
12
|
end
|
13
13
|
|
14
14
|
it "supports nested routes" do
|
15
|
-
expect( @mm.data.deeply.nested.routes ).to
|
15
|
+
expect( @mm.data.deeply.nested.routes.map(&:to_h) ).to match_array [{"item" => "one"}, {"item" => "two"}]
|
16
16
|
end
|
17
17
|
|
18
18
|
it "supports query params" do
|
19
|
-
expect( @mm.data.query_param ).to
|
19
|
+
expect( @mm.data.query_param.map(&:to_h) ).to match_array [{"foo" => "bar"}]
|
20
20
|
end
|
21
21
|
|
22
22
|
it "attempts to not clobber data of overlapping nested routes (if it's hashes)" do
|
23
|
-
expect( @mm.data.deeply.nested.has_key? "nestable" ).to eq true
|
23
|
+
expect( @mm.data.deeply.nested.to_h.has_key? "nestable" ).to eq true
|
24
24
|
expect( @mm.data.deeply.nested["nestable"] ).to eq "data"
|
25
25
|
end
|
26
26
|
|
27
27
|
it "support yaml or json" do
|
28
|
-
expect( @mm.data.in_yaml ).to
|
29
|
-
expect( @mm.data.in_json ).to
|
28
|
+
expect( @mm.data.in_yaml ).to match_array ["data","in","yaml"]
|
29
|
+
expect( @mm.data.in_json ).to match_array ["data","in","json"]
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -98,8 +98,8 @@ describe Middleman::DataSource::Extension do
|
|
98
98
|
end
|
99
99
|
|
100
100
|
it "returns data from both instances" do
|
101
|
-
expect( @mm.data.remote ).to
|
102
|
-
expect( @mm.data.in_yaml ).to
|
101
|
+
expect( @mm.data.remote ).to match_array [{"item" => "one"}, {"item" => "two"}]
|
102
|
+
expect( @mm.data.in_yaml ).to match_array ["data","in","yaml"]
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
@@ -116,8 +116,8 @@ describe Middleman::DataSource::Extension do
|
|
116
116
|
|
117
117
|
it "maps correctly between route & data name" do
|
118
118
|
expect( @mm.data.mapped_nested["nestable"] ).to eq "data"
|
119
|
-
expect( @mm.data.mapped_in_yaml ).to
|
120
|
-
expect( @mm.data.mapped_in_json ).to
|
119
|
+
expect( @mm.data.mapped_in_yaml ).to match_array ["data","in","yaml"]
|
120
|
+
expect( @mm.data.mapped_in_json ).to match_array ["data","in","json"]
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
@@ -125,8 +125,9 @@ describe Middleman::DataSource::Extension do
|
|
125
125
|
Given.fixture 'imediate_use'
|
126
126
|
@mm = Middleman::Fixture.app
|
127
127
|
|
128
|
-
|
129
|
-
|
128
|
+
remote_data = (@mm.config.setting(:remote_data).value.respond_to?(:value)) ? @mm.config.setting(:remote_data).value.value : @mm.config.setting(:remote_data).value
|
129
|
+
|
130
|
+
expect( remote_data ).to match_array [{"item"=>"one"},{"item"=>"two"}]
|
130
131
|
end
|
131
132
|
|
132
133
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-data_source
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Sloan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: middleman
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
100
|
rubyforge_project:
|
101
|
-
rubygems_version: 2.4.
|
101
|
+
rubygems_version: 2.4.6
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: Allow for loading data in middleman from remote sources
|