wrap_it 1.0.1 → 1.0.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: 1ebe2ad310631e9623416e7ab4cfbbfe46e8299f
4
- data.tar.gz: d2609b1ad7a2f276e0d6f0d2753dac14ec0d8b48
3
+ metadata.gz: e226d8caa5ed1b449b8c526542e5ef76ddb93468
4
+ data.tar.gz: 56868a38e89d16f4c82ed2926122edea4e499a35
5
5
  SHA512:
6
- metadata.gz: e12f303b02f14177941305aee0b2e9102de737e1a2fd4b372a2481c9d7258ea5ef73f8f9dc618223b3a8c5f052bf4c7eb424a61ea9a83b120868475d2efb70de
7
- data.tar.gz: a1b58c8121c98f0e39a6e645f2b2512210d90cced8e4c86ba11104012be533b2204b80381866aa2a6996991596b29eb5e70896296614f0296eb25001fe55e630
6
+ metadata.gz: f240c8d60c5cdc2febc5f1df4075902285220b289d55de52d7899931616ee93df7034c6495cd0252fdacc91067b6c4811f9a523dae2fb9a869a29a29240f848f
7
+ data.tar.gz: d7e8812aa47765139c88b75f3488b363249e9ec04e8e22b477867fc43a37968efb61b5c3f27db5f6b4bcdf12fed89467110ef4e8e1a6d0e4ae8d9b720fd30ff0
data/README.md CHANGED
@@ -358,6 +358,9 @@ Look to [Reference documentation](http://rubydoc.info/github/cybernetlab/wrap_it
358
358
 
359
359
  # Changes
360
360
 
361
+ `1.0.2`
362
+ * profiling in real application and some performance improvements
363
+
361
364
  `1.0.1`
362
365
  * refactor some code to remove complexity
363
366
  * code now tested with [travis](https://travis-ci.org/cybernetlab/wrap_it)
@@ -200,13 +200,8 @@ module WrapIt
200
200
  def capture_arguments!(args, inherited = true, instance = nil, &block)
201
201
  opts = args.extract_options!
202
202
  if inherited
203
- ancestors.take_while { |a| a != Arguments.base }
204
- .reverse
205
- .unshift(Arguments.base)
206
- .map do |a|
207
- next unless a.methods.include?(:extract_for_class)
208
- a.extract_for_class(args, opts, instance, &block)
209
- end
203
+ arg_parents.select { |a| a.protected_methods.include?(:extract_for_class) }
204
+ .each { |a| a.extract_for_class(args, opts, instance, &block) }
210
205
  result_args = collect_derived(:@provided_arguments, {}, :merge)
211
206
  .values
212
207
  .flatten
@@ -227,6 +222,12 @@ module WrapIt
227
222
 
228
223
  protected
229
224
 
225
+ def arg_parents
226
+ @arg_parents ||= ancestors.take_while { |a| a != Arguments.base }
227
+ .reverse
228
+ .unshift(Arguments.base)
229
+ end
230
+
230
231
  attr_reader :provided_options, :provided_arguments, :provided_block
231
232
 
232
233
  def option_provided?(*list)
@@ -89,6 +89,7 @@ module WrapIt
89
89
 
90
90
  define_method name do |*hargs, extracted: false, **hopts, &hblock|
91
91
  hargs += args
92
+ # TODO: merge html class correctly. Now it just overrided by opts
92
93
  hopts.merge!(opts)
93
94
  hopts[:helper_name] = name
94
95
  child = prepare_child(child_class, block, *hargs, **hopts, &hblock)
@@ -19,6 +19,10 @@ module WrapIt
19
19
  # {DerivedAttributes} class methods
20
20
  #
21
21
  module ClassMethods
22
+ def parents
23
+ @parents ||= ancestors.take_while { |a| a != Base }.concat([Base])
24
+ end
25
+
22
26
  #
23
27
  # retrieves first founded derived variable or nil
24
28
  # @param name [Symbol] variable name (should contain `@` sign)
@@ -42,12 +46,10 @@ module WrapIt
42
46
  # founded variable with collection
43
47
  #
44
48
  # @return [Object] collection of variables
45
- def collect_derived(name, initial = [], method = :concat)
46
- result = initial
47
- ancestors.each do |ancestor|
48
- next unless ancestor.instance_variable_defined?(name)
49
- result = result.send(method, ancestor.instance_variable_get(name))
50
- break if ancestor == Base
49
+ def collect_derived(name, result = [], method = :concat)
50
+ parents.select { |p| p.instance_variable_defined?(name) }
51
+ .each do |p|
52
+ result = result.send(method, p.instance_variable_get(name))
51
53
  end
52
54
  result
53
55
  end
@@ -1,5 +1,5 @@
1
1
  #
2
2
  module WrapIt
3
3
  # Current gem version
4
- VERSION = '1.0.1'
4
+ VERSION = '1.0.2'
5
5
  end
@@ -3843,3 +3843,19 @@
3843
3843
  Rendered inline template (2.4ms)
3844
3844
  Rendered inline template (3.0ms)
3845
3845
  Rendered inline template (2.5ms)
3846
+ Rendered inline template (3.8ms)
3847
+ Rendered inline template (2.5ms)
3848
+ Rendered inline template (5.9ms)
3849
+ Rendered inline template (5.8ms)
3850
+ Rendered inline template (6.3ms)
3851
+ Rendered inline template (2.7ms)
3852
+ Rendered inline template (53.2ms)
3853
+ Rendered inline template (1.9ms)
3854
+ Rendered inline template (4.6ms)
3855
+ Rendered inline template (1.6ms)
3856
+ Rendered inline template (2.8ms)
3857
+ Rendered inline template (2.9ms)
3858
+ Rendered inline template (2.3ms)
3859
+ Rendered inline template (2.2ms)
3860
+ Rendered inline template (1.7ms)
3861
+ Rendered inline template (1.9ms)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wrap_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Ovchinnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-07 00:00:00.000000000 Z
11
+ date: 2014-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler