charisma 0.3.0 → 0.3.1
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/README.markdown +1 -1
- data/charisma.gemspec +1 -1
- data/lib/charisma.rb +1 -2
- data/lib/charisma/curator.rb +2 -2
- data/lib/charisma/curator/curation.rb +12 -8
- data/lib/charisma/measurement.rb +5 -0
- data/lib/charisma/measurement/length.rb +2 -2
- data/lib/charisma/measurement/speed.rb +2 -2
- data/lib/charisma/version.rb +1 -1
- data/test/test_charisma.rb +1 -1
- metadata +80 -87
data/README.markdown
CHANGED
data/charisma.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.name = 'charisma'
|
6
6
|
s.version = Charisma::VERSION
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
|
-
s.date = "2011-
|
8
|
+
s.date = "2011-07-05"
|
9
9
|
s.authors = ['Andy Rossmeissl', 'Seamus Abshere']
|
10
10
|
s.email = 'andy@rossmeissl.net'
|
11
11
|
s.homepage = 'http://github.com/brighterplanet/charisma'
|
data/lib/charisma.rb
CHANGED
@@ -16,7 +16,6 @@ require 'charisma/base/class_methods'
|
|
16
16
|
require 'charisma/characteristic'
|
17
17
|
require 'charisma/characterization'
|
18
18
|
require 'charisma/measurement'
|
19
|
-
require 'charisma/measurement/length'
|
20
19
|
require 'charisma/curator'
|
21
20
|
require 'charisma/curator/curation'
|
22
21
|
require 'charisma/number_helper'
|
@@ -36,4 +35,4 @@ module Charisma
|
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
|
-
Conversions.register :
|
38
|
+
Conversions.register :metres, :feet, 3.2808399
|
data/lib/charisma/curator.rb
CHANGED
@@ -41,8 +41,8 @@ module Charisma
|
|
41
41
|
# (see #inpsect)
|
42
42
|
def to_s; inspect end
|
43
43
|
|
44
|
-
extend Forwardable
|
45
|
-
|
44
|
+
extend ::Forwardable
|
45
|
+
def_delegators :characteristics, :[], :keys, :slice, :==, :each
|
46
46
|
|
47
47
|
# Loose equality for Hashlike objects
|
48
48
|
#
|
@@ -5,8 +5,8 @@ module Charisma
|
|
5
5
|
#
|
6
6
|
# Implements the Delegator pattern, with uncaught methods delegated to the characteristic's computed value.
|
7
7
|
# (Undocumented below is that <tt>#to_s</tt> is specifically delegated to <tt>#render</tt>.)
|
8
|
-
class Curation < Delegator
|
9
|
-
extend Forwardable
|
8
|
+
class Curation < ::Delegator
|
9
|
+
extend ::Forwardable
|
10
10
|
|
11
11
|
# The computed value of the characteristic
|
12
12
|
attr_accessor :value
|
@@ -26,7 +26,11 @@ module Charisma
|
|
26
26
|
self.value = value
|
27
27
|
end
|
28
28
|
|
29
|
-
|
29
|
+
def_delegators :render, :to_s
|
30
|
+
|
31
|
+
def ==(other)
|
32
|
+
self.value == other.value
|
33
|
+
end
|
30
34
|
|
31
35
|
# An inspection method for more readable IRB sessions and logs.
|
32
36
|
def inspect
|
@@ -47,9 +51,9 @@ module Charisma
|
|
47
51
|
|
48
52
|
# If this curation deals with a measured characteristic, this method will delegate <tt>#u</tt>, <tt>#units</tt>, and appropriate unit-name methods to <tt>#render</tt>.
|
49
53
|
def establish_units_methods
|
50
|
-
self.class.
|
54
|
+
self.class.def_delegators :render, :u, :units
|
51
55
|
if conversions = Conversions.conversions[units.to_sym]
|
52
|
-
self.class.
|
56
|
+
self.class.def_delegators :render, *conversions.keys
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
@@ -89,10 +93,10 @@ module Charisma
|
|
89
93
|
# @return [Class]
|
90
94
|
def measurement_class
|
91
95
|
case characteristic.measurement
|
92
|
-
when Class
|
96
|
+
when ::Class
|
93
97
|
characteristic.measurement
|
94
|
-
when Symbol
|
95
|
-
"Charisma::Measurement::#{characteristic.measurement.to_s.camelize}".constantize
|
98
|
+
when ::Symbol
|
99
|
+
"::Charisma::Measurement::#{characteristic.measurement.to_s.camelize}".constantize
|
96
100
|
else
|
97
101
|
raise InvalidMeasurementError
|
98
102
|
end
|
data/lib/charisma/measurement.rb
CHANGED
@@ -3,6 +3,11 @@ module Charisma
|
|
3
3
|
#
|
4
4
|
# @abstract An actual measurement class should inherit from this and use <tt>#units</tt> to define units.
|
5
5
|
class Measurement
|
6
|
+
autoload :Length, 'charisma/measurement/length'
|
7
|
+
autoload :Mass, 'charisma/measurement/mass'
|
8
|
+
autoload :Speed, 'charisma/measurement/speed'
|
9
|
+
autoload :Time, 'charisma/measurement/time'
|
10
|
+
|
6
11
|
# The quantity of the measured value
|
7
12
|
attr_reader :value
|
8
13
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Charisma
|
2
2
|
class Measurement
|
3
|
-
# Speed, in
|
3
|
+
# Speed, in metres per second
|
4
4
|
class Speed < Measurement
|
5
|
-
units :
|
5
|
+
units :metres_per_second => 'm/s'
|
6
6
|
end
|
7
7
|
# Velocity is an SI-accepted alias for speed
|
8
8
|
Velocity = Speed
|
data/lib/charisma/version.rb
CHANGED
data/test/test_charisma.rb
CHANGED
@@ -6,7 +6,7 @@ class TestCharisma < Test::Unit::TestCase
|
|
6
6
|
assert_equal 'Amaroq', spaceship.characteristics[:name].to_s
|
7
7
|
end
|
8
8
|
def test_002_measured_attribute
|
9
|
-
spaceship = Spaceship.new :size => 10 #
|
9
|
+
spaceship = Spaceship.new :size => 10 # metres
|
10
10
|
assert_equal '10 m', spaceship.characteristics[:size].to_s
|
11
11
|
end
|
12
12
|
def test_003_classified_attribute
|
metadata
CHANGED
@@ -1,117 +1,114 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: charisma
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.1
|
4
5
|
prerelease:
|
5
|
-
version: 0.3.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Andy Rossmeissl
|
9
9
|
- Seamus Abshere
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
dependencies:
|
17
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2011-07-05 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
18
16
|
name: activesupport
|
19
|
-
requirement: &
|
17
|
+
requirement: &2155844680 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
25
23
|
type: :runtime
|
26
24
|
prerelease: false
|
27
|
-
version_requirements: *
|
28
|
-
- !ruby/object:Gem::Dependency
|
25
|
+
version_requirements: *2155844680
|
26
|
+
- !ruby/object:Gem::Dependency
|
29
27
|
name: blockenspiel
|
30
|
-
requirement: &
|
28
|
+
requirement: &2155844160 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
36
34
|
type: :runtime
|
37
35
|
prerelease: false
|
38
|
-
version_requirements: *
|
39
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: *2155844160
|
37
|
+
- !ruby/object:Gem::Dependency
|
40
38
|
name: conversions
|
41
|
-
requirement: &
|
39
|
+
requirement: &2155843680 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version:
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
47
45
|
type: :runtime
|
48
46
|
prerelease: false
|
49
|
-
version_requirements: *
|
50
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version_requirements: *2155843680
|
48
|
+
- !ruby/object:Gem::Dependency
|
51
49
|
name: bundler
|
52
|
-
requirement: &
|
50
|
+
requirement: &2155843140 !ruby/object:Gem::Requirement
|
53
51
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version:
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
58
56
|
type: :development
|
59
57
|
prerelease: false
|
60
|
-
version_requirements: *
|
61
|
-
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: *2155843140
|
59
|
+
- !ruby/object:Gem::Dependency
|
62
60
|
name: bueller
|
63
|
-
requirement: &
|
61
|
+
requirement: &2155842600 !ruby/object:Gem::Requirement
|
64
62
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version:
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
69
67
|
type: :development
|
70
68
|
prerelease: false
|
71
|
-
version_requirements: *
|
72
|
-
- !ruby/object:Gem::Dependency
|
69
|
+
version_requirements: *2155842600
|
70
|
+
- !ruby/object:Gem::Dependency
|
73
71
|
name: rake
|
74
|
-
requirement: &
|
72
|
+
requirement: &2155835100 !ruby/object:Gem::Requirement
|
75
73
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version:
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
80
78
|
type: :development
|
81
79
|
prerelease: false
|
82
|
-
version_requirements: *
|
83
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: *2155835100
|
81
|
+
- !ruby/object:Gem::Dependency
|
84
82
|
name: rcov
|
85
|
-
requirement: &
|
83
|
+
requirement: &2155834680 !ruby/object:Gem::Requirement
|
86
84
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version:
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
91
89
|
type: :development
|
92
90
|
prerelease: false
|
93
|
-
version_requirements: *
|
94
|
-
- !ruby/object:Gem::Dependency
|
91
|
+
version_requirements: *2155834680
|
92
|
+
- !ruby/object:Gem::Dependency
|
95
93
|
name: supermodel
|
96
|
-
requirement: &
|
94
|
+
requirement: &2155834260 !ruby/object:Gem::Requirement
|
97
95
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version:
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
102
100
|
type: :development
|
103
101
|
prerelease: false
|
104
|
-
version_requirements: *
|
105
|
-
description: Define strategies for accessing and displaying a subset of your classes'
|
102
|
+
version_requirements: *2155834260
|
103
|
+
description: Define strategies for accessing and displaying a subset of your classes'
|
104
|
+
attributes
|
106
105
|
email: andy@rossmeissl.net
|
107
106
|
executables: []
|
108
|
-
|
109
107
|
extensions: []
|
110
|
-
|
111
|
-
extra_rdoc_files:
|
108
|
+
extra_rdoc_files:
|
112
109
|
- LICENSE
|
113
110
|
- README.markdown
|
114
|
-
files:
|
111
|
+
files:
|
115
112
|
- .document
|
116
113
|
- .gitignore
|
117
114
|
- Gemfile
|
@@ -135,37 +132,33 @@ files:
|
|
135
132
|
- lib/charisma/version.rb
|
136
133
|
- test/helper.rb
|
137
134
|
- test/test_charisma.rb
|
138
|
-
has_rdoc: true
|
139
135
|
homepage: http://github.com/brighterplanet/charisma
|
140
136
|
licenses: []
|
141
|
-
|
142
137
|
post_install_message:
|
143
138
|
rdoc_options: []
|
144
|
-
|
145
|
-
require_paths:
|
139
|
+
require_paths:
|
146
140
|
- lib
|
147
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
142
|
none: false
|
149
|
-
requirements:
|
150
|
-
- -
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
|
153
|
-
segments:
|
143
|
+
requirements:
|
144
|
+
- - ! '>='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
segments:
|
154
148
|
- 0
|
155
|
-
|
156
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
+
hash: 2768945876583811928
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
151
|
none: false
|
158
|
-
requirements:
|
159
|
-
- -
|
160
|
-
- !ruby/object:Gem::Version
|
152
|
+
requirements:
|
153
|
+
- - ! '>='
|
154
|
+
- !ruby/object:Gem::Version
|
161
155
|
version: 1.3.7
|
162
156
|
requirements: []
|
163
|
-
|
164
157
|
rubyforge_project:
|
165
|
-
rubygems_version: 1.
|
158
|
+
rubygems_version: 1.8.5
|
166
159
|
signing_key:
|
167
160
|
specification_version: 3
|
168
161
|
summary: Curate your rich Ruby objects' attributes
|
169
|
-
test_files:
|
162
|
+
test_files:
|
170
163
|
- test/helper.rb
|
171
164
|
- test/test_charisma.rb
|