glia 0.1.1 → 0.1.2

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
2
  SHA1:
3
- metadata.gz: 9a50686cc03676e699d74a01655c296020b723bb
4
- data.tar.gz: 4ba937471d4071c387dec39827bb2f5ed0b480e4
3
+ metadata.gz: bbf015ba736749fad81608cd56993e52235f4e3c
4
+ data.tar.gz: 74bb89d646e2c577fed3379d1affa0c69185c410
5
5
  SHA512:
6
- metadata.gz: bcdd053ca3266f8747da57001154d65c31201bffb43c988d1b63db6277e3dcaf5f5c60732953de6648eb998f9a88e888827903db0a4d20df71249a7f8e1902a8
7
- data.tar.gz: 8e15f7300f86449b0853e6deff45a87d0ef0998a456399c78fe1b9904c9ef3374da2301808482086878cb409e8c44a150aa54e5bae7b5d40863c1f70b2f6b937
6
+ metadata.gz: 10d970881a992c4a71ed02dd1970373e77aed1c46ca9fa8877db0c727f3d68af388092ba250180f7bafe2c878bcb89f7ed0f515a5454c8acdc8412c3f40178c9
7
+ data.tar.gz: 3456730ca644a468fd710ef65a526769d10bb3bb184c5c8d53e615da75b8c433c8a76257899489f3f937ed176358b516501a5ba7262016e0a5fb70ed1653a3a7
data/README.md CHANGED
@@ -61,7 +61,7 @@ Glia.area(:frontend) do
61
61
  end
62
62
  end
63
63
  end
64
- handle :pavlova_view do
64
+ handle :pavlova_view, :new_view do
65
65
  reference name: :specifications do
66
66
  remove name: :cake_specs
67
67
  end
data/lib/glia/cell.rb CHANGED
@@ -18,5 +18,9 @@ module Glia
18
18
  raise Errors::MissingCellError, "No child cell in position #{code}" if name.nil?
19
19
  @children[code] ||= layout.cell(name, *args)
20
20
  end
21
+
22
+ def child_definitions
23
+ @child_definitions ||= {}
24
+ end
21
25
  end
22
26
  end
@@ -11,14 +11,16 @@ module Glia
11
11
  self
12
12
  end
13
13
 
14
- def handle(key, &blk)
15
- begin
16
- @current_scope = @data[key] ||= {}
17
- @current_cell = nil
18
- instance_eval &blk
19
- ensure
20
- @current_scope = nil
21
- @current_cell = nil
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
- @current_scope[definition.delete(:name)] = nil
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
- _data.delete_if{|k, v| v.nil? || v[:class].nil?}.each_with_object({}) do |(name, definition), hash|
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] = {children: {}}.merge(definition)
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
@@ -1,3 +1,3 @@
1
1
  module Glia
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -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.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-02 00:00:00.000000000 Z
11
+ date: 2015-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler