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 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