gather 0.0.3 → 0.0.4
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 +3 -0
- data/README +43 -1
- data/lib/gather.rb +10 -6
- data/test/test_changes.rb +18 -0
- data/test/test_gather.rb +89 -0
- data/test/test_helper.rb +51 -0
- metadata +34 -10
data/History.txt
CHANGED
data/README
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
|
1
|
+
= gather
|
2
|
+
|
3
|
+
http://gather.rubyforge.org
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
2
6
|
|
3
7
|
A gem that provides modules to make working with properties a bit easier.
|
4
8
|
|
@@ -20,3 +24,41 @@ Or
|
|
20
24
|
s.troob = %w{one two three four}
|
21
25
|
s.gumf = 15 % 4
|
22
26
|
end
|
27
|
+
|
28
|
+
== FEATURES:
|
29
|
+
|
30
|
+
Changes emits on_change for each property
|
31
|
+
|
32
|
+
== PROBLEMS:
|
33
|
+
|
34
|
+
See TODO file.
|
35
|
+
|
36
|
+
== SYNOPSIS:
|
37
|
+
|
38
|
+
== REQUIREMENTS:
|
39
|
+
|
40
|
+
== INSTALL:
|
41
|
+
|
42
|
+
sudo gem install gather
|
43
|
+
|
44
|
+
== THANKS:
|
45
|
+
|
46
|
+
== LICENSE:
|
47
|
+
|
48
|
+
(The GPL-2 License)
|
49
|
+
|
50
|
+
Copyright (C) 2008 John Anderson
|
51
|
+
|
52
|
+
This program is free software; you can redistribute it and/or
|
53
|
+
modify it under the terms of the GNU Library General Public License
|
54
|
+
as published by the Free Software Foundation; either version 2
|
55
|
+
of the License, or (at your option) any later version.
|
56
|
+
|
57
|
+
This program is distributed in the hope that it will be useful,
|
58
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
59
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
60
|
+
GNU General Public License for more details.
|
61
|
+
|
62
|
+
You should have received a copy of the GNU Library General Public License
|
63
|
+
along with this program; if not, write to the Free Software
|
64
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
data/lib/gather.rb
CHANGED
@@ -71,16 +71,20 @@ module Gather
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def property( *symbols )
|
74
|
-
@
|
74
|
+
@stripper_re ||= /^([^\= ]+)\s*\=?\s*$/
|
75
75
|
symbols.each do |sym|
|
76
|
-
stripped = @
|
76
|
+
stripped = @stripper_re.match( sym.to_s )[1]
|
77
77
|
own_properties << stripped.to_sym
|
78
78
|
line, st = __LINE__, <<-EOF
|
79
|
-
def #{stripped}(*val)
|
80
|
-
if
|
81
|
-
|
79
|
+
def #{stripped}(*val, &block)
|
80
|
+
if block.nil?
|
81
|
+
if val.empty?
|
82
|
+
@#{stripped}
|
83
|
+
else
|
84
|
+
@#{stripped} = val.size == 1 ? val[0] : val
|
85
|
+
end
|
82
86
|
else
|
83
|
-
@#{stripped} =
|
87
|
+
@#{stripped} = block
|
84
88
|
end
|
85
89
|
end
|
86
90
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestChanges < Test::Unit::TestCase
|
4
|
+
def self.startup
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.shutdown
|
8
|
+
end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
end
|
12
|
+
|
13
|
+
should "be true" do
|
14
|
+
assert true
|
15
|
+
end
|
16
|
+
|
17
|
+
should_eventually "do some real tests"
|
18
|
+
end
|
data/test/test_gather.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
require 'gather'
|
3
|
+
|
4
|
+
class SumDumClass
|
5
|
+
include Gather
|
6
|
+
|
7
|
+
property :aac
|
8
|
+
property :ben
|
9
|
+
property :civ
|
10
|
+
end
|
11
|
+
|
12
|
+
class Child < SumDumClass
|
13
|
+
property :epi
|
14
|
+
end
|
15
|
+
|
16
|
+
class TestGather < Test::Unit::TestCase
|
17
|
+
def self.startup
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.shutdown
|
21
|
+
end
|
22
|
+
|
23
|
+
def setup
|
24
|
+
@instance = SumDumClass.new
|
25
|
+
@properties = [:aac, :ben, :civ]
|
26
|
+
@child_properties = [ :epi ]
|
27
|
+
end
|
28
|
+
|
29
|
+
should "have properties" do
|
30
|
+
assert_equal @properties, SumDumClass.properties.to_a
|
31
|
+
end
|
32
|
+
|
33
|
+
should "have methods" do
|
34
|
+
@properties.each do |prop|
|
35
|
+
assert @instance.respond_to?( prop )
|
36
|
+
assert @instance.respond_to?( "#{prop}=" )
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
should "have assigned values" do
|
41
|
+
@instance.aac = 'one'
|
42
|
+
assert_equal 'one', @instance.aac
|
43
|
+
end
|
44
|
+
|
45
|
+
should "have DSL assigned values" do
|
46
|
+
@instance.aac 'two'
|
47
|
+
assert_equal 'two', @instance.aac
|
48
|
+
end
|
49
|
+
|
50
|
+
should "have [] values" do
|
51
|
+
@instance[:aac] = 'two'
|
52
|
+
assert_equal 'two', @instance[:aac]
|
53
|
+
end
|
54
|
+
|
55
|
+
should "take a block" do
|
56
|
+
@instance.aac do |one,two|
|
57
|
+
"This is a block"
|
58
|
+
end
|
59
|
+
|
60
|
+
assert_equal Proc, @instance.aac.class
|
61
|
+
assert_equal 2, @instance.aac.arity
|
62
|
+
assert_equal "This is a block", @instance.aac.call(1,2)
|
63
|
+
end
|
64
|
+
|
65
|
+
should "be assigned a lambda" do
|
66
|
+
@instance.aac = lambda do |three,four,five|
|
67
|
+
"This is another block"
|
68
|
+
end
|
69
|
+
|
70
|
+
assert_equal Proc, @instance.aac.class
|
71
|
+
assert_equal 3, @instance.aac.arity
|
72
|
+
assert_equal "This is another block", @instance.aac.call(1,2,3)
|
73
|
+
end
|
74
|
+
|
75
|
+
should "have hash values" do
|
76
|
+
@instance.aac = 'hey'
|
77
|
+
@instance.ben = 'thewre'
|
78
|
+
@instance.civ = 'dude'
|
79
|
+
|
80
|
+
hash = {:aac => 'hey', :ben => 'thewre', :civ => 'dude'}
|
81
|
+
assert_equal hash, @instance.to_hash
|
82
|
+
end
|
83
|
+
|
84
|
+
should_eventually "test merge with a hash"
|
85
|
+
should_eventually "test gather with a block"
|
86
|
+
should_eventually "test gather with a self-block"
|
87
|
+
should_eventually "test gather with a hash"
|
88
|
+
should_eventually "test gather with everything"
|
89
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'shoulda'
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
$: << ( Pathname.new(__FILE__).parent.parent + 'lib' ).realpath.to_s
|
6
|
+
|
7
|
+
# Allow running of startup and shutdown things before
|
8
|
+
# an entire suite, instead of just one per test.
|
9
|
+
# Creation of a database would be an example.
|
10
|
+
class SuiteWrapper < Test::Unit::TestSuite
|
11
|
+
attr_accessor :tests
|
12
|
+
|
13
|
+
def initialize( name, test_case )
|
14
|
+
super( name )
|
15
|
+
@test_case = test_case
|
16
|
+
end
|
17
|
+
|
18
|
+
def startup
|
19
|
+
end
|
20
|
+
|
21
|
+
def shutdown
|
22
|
+
end
|
23
|
+
|
24
|
+
def run( *args )
|
25
|
+
startup
|
26
|
+
@test_case.startup if @test_case.respond_to? :startup
|
27
|
+
retval = super
|
28
|
+
@test_case.shutdown if @test_case.respond_to? :shutdown
|
29
|
+
shutdown
|
30
|
+
retval
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module Test
|
35
|
+
module Unit
|
36
|
+
class TestCase
|
37
|
+
unless respond_to? :old_suite
|
38
|
+
class << self
|
39
|
+
alias_method :old_suite, :suite
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.suite
|
43
|
+
os = old_suite
|
44
|
+
sw = SuiteWrapper.new( os.name, self )
|
45
|
+
sw.tests = os.tests
|
46
|
+
sw
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gather
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Anderson
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-02 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.
|
23
|
+
version: 1.3.0
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: hoe
|
@@ -32,7 +32,27 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.8.0
|
34
34
|
version:
|
35
|
-
description:
|
35
|
+
description: |-
|
36
|
+
A gem that provides modules to make working with properties a bit easier.
|
37
|
+
|
38
|
+
For example:
|
39
|
+
|
40
|
+
class SumThing
|
41
|
+
include Gather
|
42
|
+
property :thing, :spla, :gumf, :troob
|
43
|
+
end
|
44
|
+
|
45
|
+
s = SumThing.new.gather :spla => 'five', :thing => 'sigma' do
|
46
|
+
troob %w{one two three four}
|
47
|
+
gumf 15 % 4
|
48
|
+
end
|
49
|
+
|
50
|
+
Or
|
51
|
+
|
52
|
+
s = SumThing.new.gather :spla => 'five', :thing => 'sigma' do |s|
|
53
|
+
s.troob = %w{one two three four}
|
54
|
+
s.gumf = 15 % 4
|
55
|
+
end
|
36
56
|
email:
|
37
57
|
- panic@semiosix.com
|
38
58
|
executables: []
|
@@ -52,7 +72,9 @@ files:
|
|
52
72
|
- script/destroy
|
53
73
|
- script/generate
|
54
74
|
has_rdoc: true
|
55
|
-
homepage:
|
75
|
+
homepage: http://gather.rubyforge.org
|
76
|
+
licenses: []
|
77
|
+
|
56
78
|
post_install_message:
|
57
79
|
rdoc_options:
|
58
80
|
- --main
|
@@ -74,9 +96,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
96
|
requirements: []
|
75
97
|
|
76
98
|
rubyforge_project: clevic
|
77
|
-
rubygems_version: 1.3.
|
99
|
+
rubygems_version: 1.3.5
|
78
100
|
signing_key:
|
79
|
-
specification_version:
|
80
|
-
summary:
|
81
|
-
test_files:
|
82
|
-
|
101
|
+
specification_version: 3
|
102
|
+
summary: A gem that provides modules to make working with properties a bit easier
|
103
|
+
test_files:
|
104
|
+
- test/test_helper.rb
|
105
|
+
- test/test_changes.rb
|
106
|
+
- test/test_gather.rb
|