express_templates 0.11.17 → 0.11.18

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: 2657456072d4ef3e2bdefa7a90aeb4d0661513c3
4
- data.tar.gz: e4061750733bb15e0bbfe68cf379d2ac102fc742
3
+ metadata.gz: 890df022013fa147cf7e3ebc99ca0e193248b3a5
4
+ data.tar.gz: 1f12843eb4d1cb79628a6b93ff5c0e535a4aed3e
5
5
  SHA512:
6
- metadata.gz: 8c012d5ab9d10634ed9904c0d0ea6015a68df9c96769b54080268036b0f39d1d0e4b99d79fe3cff7cb6815e43c173281b7c287bf7eb105f28b71d21ed42ecfee
7
- data.tar.gz: 8839b0c6effbafb74e1cedc7624f51daa05e8ce81f062523baf1954a9a31565942ca8232af617a90668328d37c18142db57b1579cdc178f5701a21d0013b7634
6
+ metadata.gz: 12c5c6aabac29e5c94e7a8e37404f6689d7b09b731e8ce93c1e0fa9c4dce2fe841e87b7ede3f85489ce825580406a0e9275f6ad7b45ccb6fe9f5f283b2c2b303
7
+ data.tar.gz: 9fa7499b429c0253d83029343239bfcb25f85932285533d115b1770d22059987c9a83f294a36add75c0f31022fd408eab3bdef1769e2661e2625724b3ae28b5c
data/lib/arbre/patches.rb CHANGED
@@ -19,11 +19,11 @@ module Arbre
19
19
  tag.parent = current_arbre_element
20
20
 
21
21
  with_current_arbre_element tag do
22
- begin
22
+ # begin
23
23
  tag.build(*args, &block)
24
- rescue Exception => e
25
- on_component_error(tag, e)
26
- end
24
+ # rescue Exception => e
25
+ # on_component_error(tag, e)
26
+ # end
27
27
  end
28
28
 
29
29
  tag
@@ -2,14 +2,13 @@ module ExpressTemplates
2
2
  module Compiler
3
3
  def compile(template_or_src=nil, &block)
4
4
  template, src = _normalize(template_or_src)
5
- %Q{
6
- assigns.merge!(template_virtual_path: @virtual_path)
7
- if defined?(local_assigns)
8
- Arbre::Context.new(assigns.merge(local_assigns), self) { #{src || block.source_body} }.to_s
9
- else
10
- Arbre::Context.new(assigns, self) { #{src || block.source_body} }.to_s
11
- end
12
- }
5
+
6
+ # local_assigns = {} if !defined?(local_assigns)
7
+ # merged_assigns = assigns.merge(template_virtual_path: @virtual_path)
8
+ # .merge(local_assigns)
9
+ # The following must be one-line otherwise we lose accurate
10
+ # line reporting on the stack.
11
+ %Q{Arbre::Context.new(assigns.merge(template_virtual_path: @virtual_path).merge(defined?(local_assigns) ? local_assigns : {}), self) { #{src || block.source_body} }.to_s}
13
12
  end
14
13
 
15
14
  private
@@ -6,6 +6,7 @@ end
6
6
  # Abbreviation for your component class definitions
7
7
  ET = ExpressTemplates
8
8
 
9
+ require 'express_templates/components/capabilities/iteration'
9
10
  require 'express_templates/components/registry'
10
11
  require 'express_templates/components/base'
11
12
  require 'express_templates/components/configurable'
@@ -2,26 +2,21 @@ module ExpressTemplates
2
2
  module Components
3
3
  module Presenters
4
4
  class All < Container
5
+ include Capabilities::Iteration
5
6
 
6
- has_argument :id, "Name of the collection", as: :collection_name, type: :symbol
7
+ has_argument :id, "Name of the collection", type: :symbol
8
+
9
+ def start_tag; ''; end
10
+ def end_tag; ''; end
7
11
 
8
12
  contains -> (&block) {
9
13
  prepended
10
- collection.each do |item|
11
- assigns[member_name.to_sym] = item
14
+ for_all(config[:id]) {
12
15
  block.call(self) if block
13
- end
16
+ }
14
17
  appended
15
18
  }
16
19
 
17
- def member_name
18
- config[:collection_name].to_s.singularize.to_sym
19
- end
20
-
21
- def collection
22
- self.send(config[:collection_name])
23
- end
24
-
25
20
  end
26
21
  end
27
22
  end
@@ -0,0 +1,50 @@
1
+ module ExpressTemplates
2
+ module Components
3
+ module Capabilities
4
+
5
+ # Provides iteration to components that iterate over a collection.
6
+
7
+ module Iteration
8
+
9
+ def self.included(base)
10
+ base.class_eval do
11
+
12
+ # Iterates over the collection calling the block provided to emit markup.
13
+ #
14
+ # The collection (symbol) must be available as a method on the component
15
+ # or as a local (assigns) value in the rendering context.
16
+ #
17
+ # The collection name is singularized and a local value is set
18
+ # for each item in the collection.
19
+
20
+ def for_all(collection_name, &block)
21
+ @collection_name = collection_name
22
+ raise "#{collection_name} is not a collection" unless self.send(collection_name).respond_to?(:each)
23
+ self.send(collection_name).each do |item|
24
+ old_value = assigns[singular_item_name]
25
+ assigns[singular_item_name] = item
26
+ block.call
27
+ assigns[singular_item_name] = old_value
28
+ end
29
+ end
30
+
31
+ protected
32
+
33
+ def collection_name
34
+ @collection_name
35
+ end
36
+
37
+ def singular_item_name
38
+ collection_name.to_s.singularize.to_sym
39
+ end
40
+
41
+ def item
42
+ assigns[singular_item_name]
43
+ end
44
+
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,3 +1,3 @@
1
1
  module ExpressTemplates
2
- VERSION = "0.11.17"
2
+ VERSION = "0.11.18"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: express_templates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.17
4
+ version: 0.11.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Talcott Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-07 00:00:00.000000000 Z
12
+ date: 2017-04-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: arbre
@@ -73,6 +73,7 @@ files:
73
73
  - lib/express_templates/components/base.rb
74
74
  - lib/express_templates/components/capabilities/configurable.rb
75
75
  - lib/express_templates/components/capabilities/hideable.rb
76
+ - lib/express_templates/components/capabilities/iteration.rb
76
77
  - lib/express_templates/components/capabilities/resourceful.rb
77
78
  - lib/express_templates/components/capabilities/suppressable.rb
78
79
  - lib/express_templates/components/configurable.rb