glia 0.1.1 → 0.1.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/README.md +1 -1
- data/lib/glia/cell.rb +4 -0
- data/lib/glia/update_builder.rb +20 -11
- data/lib/glia/version.rb +1 -1
- data/test/unit/update_builder_test.rb +14 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbf015ba736749fad81608cd56993e52235f4e3c
|
4
|
+
data.tar.gz: 74bb89d646e2c577fed3379d1affa0c69185c410
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10d970881a992c4a71ed02dd1970373e77aed1c46ca9fa8877db0c727f3d68af388092ba250180f7bafe2c878bcb89f7ed0f515a5454c8acdc8412c3f40178c9
|
7
|
+
data.tar.gz: 3456730ca644a468fd710ef65a526769d10bb3bb184c5c8d53e615da75b8c433c8a76257899489f3f937ed176358b516501a5ba7262016e0a5fb70ed1653a3a7
|
data/README.md
CHANGED
data/lib/glia/cell.rb
CHANGED
data/lib/glia/update_builder.rb
CHANGED
@@ -11,14 +11,16 @@ module Glia
|
|
11
11
|
self
|
12
12
|
end
|
13
13
|
|
14
|
-
def handle(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
def handle(*keys, &blk)
|
15
|
+
keys.each do |key|
|
16
|
+
begin
|
17
|
+
@current_scope = @data[key] ||= {}
|
18
|
+
@current_cell = nil
|
19
|
+
instance_eval &blk
|
20
|
+
ensure
|
21
|
+
@current_scope = nil
|
22
|
+
@current_cell = nil
|
23
|
+
end
|
22
24
|
end
|
23
25
|
self
|
24
26
|
end
|
@@ -32,7 +34,7 @@ module Glia
|
|
32
34
|
end
|
33
35
|
|
34
36
|
def remove(definition)
|
35
|
-
|
37
|
+
_cell(definition.merge({_removed: true}))
|
36
38
|
end
|
37
39
|
|
38
40
|
def reference(definition, &blk)
|
@@ -52,9 +54,16 @@ module Glia
|
|
52
54
|
|
53
55
|
def merge(handles)
|
54
56
|
_data = {}
|
57
|
+
|
58
|
+
# Merge all of the handles together
|
55
59
|
merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
|
56
60
|
handles.each{|h| _data = _data.merge(@data[h].clone, &merger) unless @data[h].nil?}
|
57
|
-
|
61
|
+
|
62
|
+
# Remove orphan references, or deleted cells
|
63
|
+
_data = _data.delete_if{|k, v| v.nil? || v[:class].nil? || v[:_removed]}
|
64
|
+
|
65
|
+
# Tidy up child references for deleted children, empty child lists
|
66
|
+
_data.each_with_object({}) do |(name, definition), hash|
|
58
67
|
d = definition.clone
|
59
68
|
d[:children].delete_if{|position, n| _data[n].nil?}
|
60
69
|
d.delete(:children) if d[:children].empty?
|
@@ -70,7 +79,7 @@ module Glia
|
|
70
79
|
name = definition.delete(:name)
|
71
80
|
position = definition.delete(:position) || name
|
72
81
|
old_cell = @current_cell
|
73
|
-
@current_cell = @current_scope[name]
|
82
|
+
@current_cell = (@current_scope[name] ||= {children: {}}).merge!(definition)
|
74
83
|
unless old_cell.nil?
|
75
84
|
old_cell[:children][position] = name
|
76
85
|
end
|
data/lib/glia/version.rb
CHANGED
@@ -5,16 +5,27 @@ class Glia::UpdateBuilder::Test < UnitTest
|
|
5
5
|
|
6
6
|
def test_cell
|
7
7
|
builder.handle :test do
|
8
|
+
reference name: :defined_later do
|
9
|
+
cell name: :defined_later_sub_cell, class: :template, position: :here
|
10
|
+
end
|
8
11
|
cell name: :root, class: :html, template_name: 'root' do
|
9
12
|
action name: :compile, args: ['javascript', 'css']
|
10
13
|
cell name: :header, class: :template, template_name: 'header'
|
11
14
|
end
|
12
15
|
end
|
16
|
+
builder.handle :test, :other_handle do
|
17
|
+
cell name: :defined_later, class: :list
|
18
|
+
end
|
13
19
|
expected_output = {
|
14
20
|
test: {
|
15
21
|
root: {class: :html, template_name: 'root',
|
16
22
|
children: {header: :header}, actions: [{name: :compile, args: ['javascript', 'css']}]},
|
17
|
-
header: {class: :template, template_name: 'header', children: {}}
|
23
|
+
header: {class: :template, template_name: 'header', children: {}},
|
24
|
+
defined_later: {children: {here: :defined_later_sub_cell}, class: :list},
|
25
|
+
defined_later_sub_cell: {children: {}, class: :template}
|
26
|
+
},
|
27
|
+
other_handle: {
|
28
|
+
defined_later: {children: {}, class: :list},
|
18
29
|
}
|
19
30
|
}
|
20
31
|
assert_equal expected_output, builder.to_h
|
@@ -25,6 +36,7 @@ class Glia::UpdateBuilder::Test < UnitTest
|
|
25
36
|
|
26
37
|
def test_merge
|
27
38
|
builder.handle :default do
|
39
|
+
remove name: :defined_later
|
28
40
|
cell name: :root, class: :html, template_name: 'root' do
|
29
41
|
action name: :compile, args: ['javascript', 'css']
|
30
42
|
cell name: :header, class: :template, template_name: 'header'
|
@@ -36,6 +48,7 @@ class Glia::UpdateBuilder::Test < UnitTest
|
|
36
48
|
reference name: :footer, template_name: 'new_footer' do
|
37
49
|
cell name: :copyright, class: :template, template_name: 'copyright', position: :footer_bottom
|
38
50
|
end
|
51
|
+
cell name: :defined_later, class: :list
|
39
52
|
end
|
40
53
|
expected_output = {
|
41
54
|
root: {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dane Lowe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|