expo 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/expo2.rb +21 -1
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f1986931d0e1f91a4827833cd0d353a042b3ac8
4
- data.tar.gz: 51100ca3aa75dd72d7c74c953a525f01731f11f3
3
+ metadata.gz: 24572c0179b82dbc9aafb5bf8456a9c3668c8d54
4
+ data.tar.gz: d3de7785f3bf3ec7cb6b77e5038ede6f8a24b2b2
5
5
  SHA512:
6
- metadata.gz: 7563815ae9e21f700fa88e1d906f1c18051e5097e74c4ffaf28a24f913673900146bf8d7b0263d08d15ce00d0cb4c8a33d8e48cb03e7d35fdfc903b72362ebde
7
- data.tar.gz: 797d477836805ab0e553a872ee24ff8eb40e95df4ee3f4308fcc88d4b1b46a83b873d9667232d34f03fe8f8ae754920495f3522aa1185a20e87d3bbd2e47c5de
6
+ metadata.gz: 5c85a08f6e60eefd9a5ff061d6f9cdc1c2c92b436693c44c596a126c335ecc7c97f95f0737d63932badf009b8b5967d2cb456b67b89ac3ed2f47c132cad41c24
7
+ data.tar.gz: 9fdf0f2cd49cb39e3f96be3668b307b465245effeb852b008324c1857592d3f689cd02d465efd74c15b7a2017574b02fac30dedced06fc108fc006947dc7d491
data/lib/expo2.rb CHANGED
@@ -94,7 +94,23 @@ class Expo2
94
94
  end
95
95
  end
96
96
 
97
- #presenters << SubCollection.new(associator, key, sub_expo, block)
97
+ class MergeExpo < Struct.new(:presenter, :sub_expo, :block)
98
+ def go(object, context, index=nil, user_expo)
99
+ assoc = self.presenter
100
+ associated = if assoc.respond_to?(:new)
101
+ assoc.new(object)
102
+ else
103
+ assoc.call(object)
104
+ end
105
+ sub = Expo2.new(self.sub_expo, &self.block)
106
+ if associated
107
+ sub.expo(associated, context)
108
+ else
109
+ {}
110
+ end
111
+ end
112
+ end
113
+
98
114
  class SubCollection < Struct.new(:associator, :key, :sub_expo, :block)
99
115
  def go(object, context, index=nil)
100
116
  assoc = self.associator
@@ -144,6 +160,10 @@ class Expo2
144
160
  presenters << Merger.new(block)
145
161
  end
146
162
 
163
+ def merge_expo(pres, sub_expo, &block)
164
+ presenters << MergeExpo.new(pres, sub_expo, block)
165
+ end
166
+
147
167
  def sub_expo(pres, key, sub_expo, &block)
148
168
  presenters << SubExpo.new(pres, key, sub_expo, block)
149
169
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serguei Filimonov