wrap_it 1.0.1 → 1.0.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: 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