guerrilla_patch 2.8.3 → 2.8.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,6 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
4
  gem 'rake'
5
+ gem 'binding_of_caller'
5
6
 
6
7
  group :development, :test do
7
8
  gem "rspec", "~> 2.8.0"
data/Gemfile.lock CHANGED
@@ -1,11 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- guerrilla_patch (2.8.3)
4
+ guerrilla_patch (2.8.4)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
+ binding_of_caller (0.7.2)
10
+ debug_inspector (>= 0.0.1)
11
+ debug_inspector (0.0.2)
9
12
  diff-lcs (1.1.3)
10
13
  rake (0.9.2.2)
11
14
  rspec (2.8.0)
@@ -21,6 +24,7 @@ PLATFORMS
21
24
  ruby
22
25
 
23
26
  DEPENDENCIES
27
+ binding_of_caller
24
28
  bundler (>= 1.0.0)
25
29
  guerrilla_patch!
26
30
  rake
data/README.md CHANGED
@@ -5,6 +5,43 @@ Guerrilla Patch
5
5
 
6
6
  I am tired of hunting and tracking down my own monkey patches. Not to mention hassle of dragging them between projects. I figured gem is a remedy for this.
7
7
 
8
+ Assign instance variables automaticaly
9
+ ---------------------------------------
10
+ You know that neat coffee script trick that shortens code below.
11
+
12
+ ```
13
+ class Animal
14
+ constructor: (name) ->
15
+ @name = name
16
+
17
+ ```
18
+
19
+ To be more succint:
20
+
21
+ ```
22
+ class Animal
23
+ constructor: (@name) ->
24
+ ```
25
+
26
+ While waiting for Ruby 2.0 to implement it I am using this:
27
+
28
+ ````
29
+ def initialize(amount, index:nil, envy_no_more:nil)
30
+ auto_assign
31
+ end
32
+ ```
33
+
34
+ It's equvalent to this:
35
+
36
+ ```
37
+ def initialize(amount, index:nil, envy_no_more:nil)
38
+ @amount = amount
39
+ @index = index
40
+ @envy_no_more = envy_no_more
41
+ end
42
+ ```
43
+
44
+
8
45
  BigDecimal
9
46
  -----------
10
47
  Not using BigDecimal is asking for trouble, but using it is way too verbose:
@@ -1,7 +1,13 @@
1
1
  require 'bigdecimal'
2
2
  require 'guerrilla_patch/allocate'
3
+ require 'binding_of_caller'
3
4
 
4
5
  module Kernel
6
+ def auto_assign
7
+ caller_binding = binding.of_caller(1)
8
+ method(caller[0][/`.*'/][1..-2]).parameters.each { |arg| instance_eval("@#{arg[1]} = caller_binding.eval(arg[1].to_s)") }
9
+ end
10
+
5
11
  def let(name, &block)
6
12
  define_method(name, &block)
7
13
  end
@@ -1,3 +1,3 @@
1
1
  module GuerrillaPatch
2
- VERSION = "2.8.3"
2
+ VERSION = "2.8.4"
3
3
  end
@@ -80,6 +80,21 @@ describe Kernel do
80
80
  33.11.divide({ '1A' => 50, '1B' => 50}).should == {"1A"=> 16.56, "1B"=> 16.55 }
81
81
  end
82
82
 
83
+ class TestAssign
84
+ attr_reader :index, :amount
85
+
86
+ def initialize(index, amount)
87
+ auto_assign
88
+ end
89
+
90
+ end
91
+
92
+ it 'assigns by default' do
93
+ subject = TestAssign.new(1, 100.0)
94
+ subject.index.should == 1
95
+ subject.amount.should == 100.0
96
+ end
97
+
83
98
  end
84
99
 
85
100
  describe Array do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guerrilla_patch
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.3
4
+ version: 2.8.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -27,7 +27,6 @@ files:
27
27
  - LICENSE.txt
28
28
  - README.md
29
29
  - Rakefile
30
- - VERSION
31
30
  - guerrilla_patch.gemspec
32
31
  - guerrilla_patch.sublime-project
33
32
  - lib/guerrilla_patch.rb
@@ -58,7 +57,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
57
  version: '0'
59
58
  segments:
60
59
  - 0
61
- hash: 692317867878337078
60
+ hash: -700366039810131134
62
61
  required_rubygems_version: !ruby/object:Gem::Requirement
63
62
  none: false
64
63
  requirements:
@@ -67,10 +66,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
66
  version: '0'
68
67
  segments:
69
68
  - 0
70
- hash: 692317867878337078
69
+ hash: -700366039810131134
71
70
  requirements: []
72
71
  rubyforge_project:
73
- rubygems_version: 1.8.24
72
+ rubygems_version: 1.8.23
74
73
  signing_key:
75
74
  specification_version: 3
76
75
  summary: Since I am tired of hunting down monkey patches at large I am caging them
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 2.8.2