codeodor-with 0.0.1 → 0.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.
- data/History.txt +5 -0
- data/Manifest.txt +1 -8
- data/{README → README.rdoc} +25 -25
- data/lib/with.rb +1 -1
- data/test/{with_on_object_test.rb → test_with_on_object.rb} +3 -3
- metadata +4 -13
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/test/test_helper.rb +0 -3
- data/test/with_test.rb +0 -103
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,17 +1,10 @@
|
|
1
1
|
History.txt
|
2
2
|
Manifest.txt
|
3
|
-
README
|
4
3
|
README.rdoc
|
5
4
|
Rakefile
|
6
5
|
lib/with.rb
|
7
6
|
lib/with_on_object.rb
|
8
7
|
lib/with_sexp_processor.rb
|
9
|
-
script/console
|
10
|
-
script/destroy
|
11
|
-
script/generate
|
12
8
|
test/foo.rb
|
13
|
-
test/test_helper.rb
|
14
9
|
test/test_with.rb
|
15
|
-
test/
|
16
|
-
test/with_test.rb
|
17
|
-
with.tmproj
|
10
|
+
test/test_with_on_object.rb
|
data/{README → README.rdoc}
RENAMED
@@ -8,31 +8,31 @@ I sometimes get a little descriptive with my variable names, so when you're doin
|
|
8
8
|
specifically with one object, it gets especially ugly and repetetive, making the code harder to
|
9
9
|
read than it needs to be:
|
10
10
|
|
11
|
-
@contract_participants_on_drugs.contract_id = params[:contract_id]
|
12
|
-
@contract_participants_on_drugs.participant_name = params[:participant_name]
|
13
|
-
@contract_participants_on_drugs.drug_conviction = DrugConvictions.find(:wtf => 'this is getting ridiculous')
|
14
|
-
...
|
11
|
+
@contract_participants_on_drugs.contract_id = params[:contract_id]
|
12
|
+
@contract_participants_on_drugs.participant_name = params[:participant_name]
|
13
|
+
@contract_participants_on_drugs.drug_conviction = DrugConvictions.find(:wtf => 'this is getting ridiculous')
|
14
|
+
...
|
15
15
|
|
16
16
|
And so on. It gets ridiculous.
|
17
17
|
|
18
18
|
Utility Belt implements a with(object) method via a change to Object:
|
19
19
|
|
20
|
-
class Object
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
class Object
|
21
|
+
#utility belt implementation
|
22
|
+
def with(object, &block)
|
23
|
+
object.instance_eval &block
|
24
|
+
end
|
24
25
|
end
|
25
|
-
end
|
26
26
|
|
27
27
|
Unfortunately, that just executes the block in the context of the object, so there isn't any
|
28
28
|
crossover, nor can you perform assignments with attr_accessors (that I was able to do, anyway).
|
29
29
|
|
30
30
|
So, here's With.object() to fill the void.
|
31
31
|
|
32
|
-
With.object(@foo) do
|
33
|
-
|
34
|
-
|
35
|
-
end
|
32
|
+
With.object(@foo) do
|
33
|
+
a = "wtf"
|
34
|
+
b = "this is not as bad"
|
35
|
+
end
|
36
36
|
|
37
37
|
In the above example, @foo.a and @foo.b are the variables getting set.
|
38
38
|
|
@@ -56,19 +56,19 @@ block, and is not on @foo).
|
|
56
56
|
|
57
57
|
== SYNOPSIS:
|
58
58
|
|
59
|
-
require 'with'
|
60
|
-
With.object(@foo) do
|
61
|
-
|
62
|
-
|
63
|
-
end
|
59
|
+
require 'with'
|
60
|
+
With.object(@foo) do
|
61
|
+
a = "wtf"
|
62
|
+
b = "this is not as bad"
|
63
|
+
end
|
64
64
|
|
65
65
|
or
|
66
66
|
|
67
|
-
require 'with_on_object'
|
68
|
-
with(@foo) do
|
69
|
-
|
70
|
-
|
71
|
-
end
|
67
|
+
require 'with_on_object'
|
68
|
+
with(@foo) do
|
69
|
+
a = "wtf"
|
70
|
+
b = "this is not as bad"
|
71
|
+
end
|
72
72
|
|
73
73
|
== REQUIREMENTS:
|
74
74
|
|
@@ -77,13 +77,13 @@ end
|
|
77
77
|
|
78
78
|
== INSTALL:
|
79
79
|
|
80
|
-
|
80
|
+
sudo gem install codeodor-with -s http://gems.github.com
|
81
81
|
|
82
82
|
== LICENSE:
|
83
83
|
|
84
84
|
(The MIT License)
|
85
85
|
|
86
|
-
Copyright (c) 2009
|
86
|
+
Copyright (c) 2009 Sammy Larbi
|
87
87
|
|
88
88
|
Permission is hereby granted, free of charge, to any person obtaining
|
89
89
|
a copy of this software and associated documentation files (the
|
data/lib/with.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'with_on_object'
|
2
2
|
require 'test/unit'
|
3
3
|
require 'foo'
|
4
4
|
|
@@ -86,13 +86,13 @@ class TestWithOnObject < Test::Unit::TestCase
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def test_With_works_with_method_call_with_args_using_non_literals
|
89
|
-
def
|
89
|
+
def f2(x,y)
|
90
90
|
398
|
91
91
|
end
|
92
92
|
x = 2
|
93
93
|
y = 5
|
94
94
|
with(@foo) do
|
95
|
-
a =
|
95
|
+
a = f2(x,y)
|
96
96
|
end
|
97
97
|
assert(@foo.a == 398)
|
98
98
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codeodor-with
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sammy Larbi
|
@@ -40,33 +40,24 @@ extensions: []
|
|
40
40
|
extra_rdoc_files:
|
41
41
|
- History.txt
|
42
42
|
- Manifest.txt
|
43
|
-
- PostInstall.txt
|
44
43
|
- README.rdoc
|
45
44
|
files:
|
46
45
|
- History.txt
|
47
46
|
- Manifest.txt
|
48
|
-
- PostInstall.txt
|
49
|
-
- README
|
50
47
|
- README.rdoc
|
51
48
|
- Rakefile
|
52
49
|
- lib/with.rb
|
53
50
|
- lib/with_on_object.rb
|
54
51
|
- lib/with_sexp_processor.rb
|
55
|
-
- script/console
|
56
|
-
- script/destroy
|
57
|
-
- script/generate
|
58
52
|
- test/foo.rb
|
59
|
-
- test/test_helper.rb
|
60
53
|
- test/test_with.rb
|
61
|
-
- test/
|
62
|
-
- test/with_test.rb
|
63
|
-
- with.tmproj
|
54
|
+
- test/test_with_on_object.rb
|
64
55
|
has_rdoc: true
|
65
56
|
homepage: http://github.com/codeodor/with/tree/master
|
66
57
|
post_install_message:
|
67
58
|
rdoc_options:
|
68
59
|
- --main
|
69
|
-
- README
|
60
|
+
- README.rdoc
|
70
61
|
require_paths:
|
71
62
|
- lib
|
72
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -89,5 +80,5 @@ signing_key:
|
|
89
80
|
specification_version: 2
|
90
81
|
summary: "I sometimes get a little descriptive with my variable names, so when you're doing a lot of work specifically with one object, it gets especially ugly and repetetive, making the code harder to read than it needs to be: @contract_participants_on_drugs.contract_id = params[:contract_id] @contract_participants_on_drugs.participant_name = params[:participant_name] @contract_participants_on_drugs.drug_conviction = DrugConvictions.find(:wtf => 'this is getting ridiculous') .."
|
91
82
|
test_files:
|
92
|
-
- test/test_helper.rb
|
93
83
|
- test/test_with.rb
|
84
|
+
- test/test_with_on_object.rb
|
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# File: script/console
|
3
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
-
|
5
|
-
libs = " -r irb/completion"
|
6
|
-
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/with.rb'}"
|
9
|
-
puts "Loading with gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/destroy'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/generate'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/test/test_helper.rb
DELETED
data/test/with_test.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
require '../lib/with'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'foo'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
class TestWith < Test::Unit::TestCase
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@foo = Foo.new
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_With_works_with_attr_accessor_assignment
|
14
|
-
foo = Foo.new
|
15
|
-
With.object(foo) do
|
16
|
-
get = 'got!'
|
17
|
-
end
|
18
|
-
assert(foo.get == "got!")
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_With_works_with_two_attr_accessor_assignments
|
22
|
-
# Seems strange, but one line blocks don't show up as blocks after running through ParseTree,
|
23
|
-
# so this exercises the more common case, whereas the previous test exercises the uncommon one.
|
24
|
-
With.object(@foo) do
|
25
|
-
get = 'got!'
|
26
|
-
a = 'b'
|
27
|
-
end
|
28
|
-
assert(@foo.get == "got!")
|
29
|
-
assert(@foo.a == "b")
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_With_works_with_method_call_no_args
|
33
|
-
With.object(@foo) do
|
34
|
-
get = 'got!'
|
35
|
-
change
|
36
|
-
end
|
37
|
-
assert(@foo.a == "changed!")
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_With_works_with_method_call_with_args
|
41
|
-
With.object @foo do
|
42
|
-
set("c", "d")
|
43
|
-
set("d", "e")
|
44
|
-
end
|
45
|
-
assert @foo.a == "d"
|
46
|
-
assert @foo.b == "e"
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_With_ignores_calls_to_methods_where_foo_respond_to?_is_false
|
50
|
-
With.object(@foo) do
|
51
|
-
puts
|
52
|
-
end
|
53
|
-
assert( true )
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_With_works_with_assignment_to_outside_method_call_no_args
|
57
|
-
def outter
|
58
|
-
5
|
59
|
-
end
|
60
|
-
With.object(@foo) do
|
61
|
-
a = outter
|
62
|
-
end
|
63
|
-
|
64
|
-
assert(@foo.a == 5)
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_With_works_with_assignment_to_outside_lvar
|
68
|
-
outter = "outside"
|
69
|
-
With.object(@foo) do
|
70
|
-
outter = get
|
71
|
-
end
|
72
|
-
assert( outter == @foo.get )
|
73
|
-
#this fails. unsure how / if it should stay as part of the spec
|
74
|
-
#problem is that (as far as I can tell) it will need to evaluate the post-transformation
|
75
|
-
#block in the original context, whereas it currently needs to be executed in a diff one
|
76
|
-
#this would be a lot easier - less transforms on other specs - if we could find the variable
|
77
|
-
#name of "@foo" within With.object
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_With_works_with_assignment_to_outside_method_call_with_args
|
81
|
-
def f(x,y)
|
82
|
-
398
|
83
|
-
end
|
84
|
-
With.object(@foo) do
|
85
|
-
a = f(1,3)
|
86
|
-
end
|
87
|
-
assert(@foo.a == 398)
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_With_works_with_method_call_with_args_using_non_literals
|
91
|
-
def f(x,y)
|
92
|
-
398
|
93
|
-
end
|
94
|
-
x = 2
|
95
|
-
y = 5
|
96
|
-
With.object(@foo) do
|
97
|
-
a = f(x,y)
|
98
|
-
end
|
99
|
-
assert(@foo.a == 398)
|
100
|
-
end
|
101
|
-
|
102
|
-
|
103
|
-
end
|