myrrha 1.2.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
  describe "Myrrha.coercions" do
3
3
 
4
4
  it "should support using user-defined domains" do
5
- name = Myrrha.domain{|s| s.is_a?(Symbol)}
5
+ name = Myrrha::Domain.sbyc{|s| s.is_a?(Symbol)}
6
6
  rules = Myrrha.coercions do |r|
7
7
  r.coercion String, name, lambda{|s,t| s.to_sym}
8
8
  r.coercion name, String, lambda{|s,t| s.to_s}
data/spec/test_myrrha.rb CHANGED
@@ -19,9 +19,6 @@ describe Myrrha do
19
19
  lambda{
20
20
  rules.coerce(true, Integer)
21
21
  }.should raise_error(Myrrha::Error, "Unable to coerce `true` to Integer")
22
- lambda{
23
- rules.coerce("12.2", Integer)
24
- }.should raise_error(Myrrha::Error, /^Unable to coerce `12.2` to Integer \(invalid value /)
25
22
  end
26
23
 
27
24
  it "should support upon rules" do
data/tasks/examples.rake CHANGED
@@ -1,4 +1,4 @@
1
- task :examples do
1
+ task :examples => :spec_test do
2
2
  lib = File.expand_path('../../lib', __FILE__)
3
3
  dir = File.expand_path('../../examples', __FILE__)
4
4
  Dir["#{dir}/*.rb"].each do |file|
@@ -10,6 +10,7 @@ task :examples do
10
10
  raise "Example #{file} failed."
11
11
  end
12
12
  end
13
+ puts
13
14
  end
14
15
  task :spec => :examples
15
16
  task :test => :examples
data/tasks/gem.rake CHANGED
@@ -25,13 +25,18 @@
25
25
  #
26
26
  begin
27
27
  require 'rubygems/package_task'
28
- Gem::PackageTask.new($gemspec) do |t|
28
+
29
+ # Dynamically load the gem spec
30
+ gemspec_file = File.expand_path('../../myrrha.gemspec', __FILE__)
31
+ gemspec = Kernel.eval(File.read(gemspec_file))
32
+
33
+ Gem::PackageTask.new(gemspec) do |t|
29
34
 
30
35
  # Name of the package
31
- t.name = $gemspec.name
36
+ t.name = gemspec.name
32
37
 
33
38
  # Version of the package
34
- t.version = $gemspec.version
39
+ t.version = gemspec.version
35
40
 
36
41
  # Directory used to store the package files
37
42
  t.package_dir = "pkg"
@@ -49,7 +54,7 @@ begin
49
54
  t.need_zip = false
50
55
 
51
56
  # List of files to be included in the package.
52
- t.package_files = $gemspec.files
57
+ t.package_files = gemspec.files
53
58
 
54
59
  # Tar command for gzipped or bzip2ed archives.
55
60
  t.tar_command = "tar"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myrrha
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-26 00:00:00.000000000Z
12
+ date: 2012-09-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &75384950 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.9.2
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *75384950
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.2
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &75384660 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 2.8.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *75384660
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.8.0
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: yard
38
- requirement: &75384390 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 0.7.4
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *75384390
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.7.4
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: bluecloth
49
- requirement: &75384020 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: 2.2.0
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *75384020
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.2.0
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: wlang
60
- requirement: &75383730 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ~>
@@ -65,7 +85,12 @@ dependencies:
65
85
  version: 0.10.2
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *75383730
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.10.2
69
94
  description: ! "Myrrha provides the coercion framework which is missing to Ruby. Coercions\nare
70
95
  simply defined as a set of rules for converting values from source to target\ndomains
71
96
  (in an abstract sense). As a typical and useful example, it comes with \na coerce()
@@ -80,48 +105,59 @@ extra_rdoc_files:
80
105
  - CHANGELOG.md
81
106
  - LICENCE.md
82
107
  files:
83
- - examples/to_ruby_literal_foo.rb
84
- - examples/coerce_foo.rb
85
- - examples/coerce_noext.rb
86
108
  - examples/coerce.rb
87
- - examples/friendly_but_safe_api.rb
109
+ - examples/coerce_foo.rb
110
+ - examples/coerce_foo2.rb
111
+ - examples/coerce_foo3.rb
88
112
  - examples/coerce_intro.rb
89
- - examples/to_ruby_literal_foo2.rb
90
- - examples/to_ruby_literal.rb
91
- - examples/String#toXXX.rb
113
+ - examples/coerce_noext.rb
92
114
  - examples/examples_helper.rb
93
- - examples/coerce_foo2.rb
115
+ - examples/friendly_but_safe_api.rb
94
116
  - examples/sbyc_domain.rb
117
+ - examples/String#toXXX.rb
118
+ - examples/to_ruby_literal.rb
119
+ - examples/to_ruby_literal_foo.rb
120
+ - examples/to_ruby_literal_foo2.rb
95
121
  - examples/to_ruby_literal_foo3.rb
96
122
  - examples/to_ruby_literal_noext.rb
97
- - examples/coerce_foo3.rb
98
123
  - lib/myrrha/coerce.rb
99
- - lib/myrrha/to_ruby_literal.rb
124
+ - lib/myrrha/coercions.rb
125
+ - lib/myrrha/domain/coercion_methods.rb
126
+ - lib/myrrha/domain/impl.rb
127
+ - lib/myrrha/domain/sbyc.rb
128
+ - lib/myrrha/domain/value_methods.rb
129
+ - lib/myrrha/domain.rb
130
+ - lib/myrrha/errors.rb
100
131
  - lib/myrrha/loader.rb
101
- - lib/myrrha/with_core_ext.rb
132
+ - lib/myrrha/to_ruby_literal.rb
102
133
  - lib/myrrha/version.rb
134
+ - lib/myrrha/with_core_ext.rb
103
135
  - lib/myrrha.rb
104
- - spec/spec_helper.rb
105
- - spec/myrrha/test_coercions.rb
106
- - spec/myrrha/test_domain.rb
107
- - spec/test_myrrha.rb
108
- - spec/test_to_ruby_literal.rb
109
- - spec/test_value.rb
110
- - spec/coercions/test_convert.rb
111
136
  - spec/coercions/test_append.rb
112
137
  - spec/coercions/test_belongs_to.rb
138
+ - spec/coercions/test_convert.rb
139
+ - spec/coercions/test_delegate.rb
113
140
  - spec/coercions/test_dup.rb
114
141
  - spec/coercions/test_subdomain.rb
115
- - spec/test_coerce.rb
142
+ - spec/domain/impl/test_behavior.rb
143
+ - spec/domain/impl/test_value_methods.rb
144
+ - spec/domain/sbyc/test_behavior.rb
145
+ - spec/domain/test_sbyc.rb
146
+ - spec/myrrha/test_coercions.rb
116
147
  - spec/shared/a_value.rb
148
+ - spec/spec_helper.rb
117
149
  - spec/test_assumptions.rb
150
+ - spec/test_coerce.rb
151
+ - spec/test_myrrha.rb
152
+ - spec/test_to_ruby_literal.rb
153
+ - spec/test_value.rb
118
154
  - tasks/debug_mail.rake
119
- - tasks/yard.rake
155
+ - tasks/debug_mail.txt
120
156
  - tasks/examples.rake
121
157
  - tasks/gem.rake
122
158
  - tasks/spec_test.rake
123
159
  - tasks/unit_test.rake
124
- - tasks/debug_mail.txt
160
+ - tasks/yard.rake
125
161
  - Rakefile
126
162
  - CHANGELOG.md
127
163
  - Gemfile
@@ -145,7 +181,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
181
  version: '0'
146
182
  segments:
147
183
  - 0
148
- hash: 657683567
184
+ hash: -1652815196407861424
149
185
  required_rubygems_version: !ruby/object:Gem::Requirement
150
186
  none: false
151
187
  requirements:
@@ -154,22 +190,26 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
190
  version: '0'
155
191
  requirements: []
156
192
  rubyforge_project:
157
- rubygems_version: 1.8.15
193
+ rubygems_version: 1.8.24
158
194
  signing_key:
159
195
  specification_version: 3
160
196
  summary: Myrrha provides the coercion framework which is missing to Ruby.
161
197
  test_files:
162
- - spec/spec_helper.rb
163
- - spec/myrrha/test_coercions.rb
164
- - spec/myrrha/test_domain.rb
165
- - spec/test_myrrha.rb
166
- - spec/test_to_ruby_literal.rb
167
- - spec/test_value.rb
168
- - spec/coercions/test_convert.rb
169
198
  - spec/coercions/test_append.rb
170
199
  - spec/coercions/test_belongs_to.rb
200
+ - spec/coercions/test_convert.rb
201
+ - spec/coercions/test_delegate.rb
171
202
  - spec/coercions/test_dup.rb
172
203
  - spec/coercions/test_subdomain.rb
173
- - spec/test_coerce.rb
204
+ - spec/domain/impl/test_behavior.rb
205
+ - spec/domain/impl/test_value_methods.rb
206
+ - spec/domain/sbyc/test_behavior.rb
207
+ - spec/domain/test_sbyc.rb
208
+ - spec/myrrha/test_coercions.rb
174
209
  - spec/shared/a_value.rb
210
+ - spec/spec_helper.rb
175
211
  - spec/test_assumptions.rb
212
+ - spec/test_coerce.rb
213
+ - spec/test_myrrha.rb
214
+ - spec/test_to_ruby_literal.rb
215
+ - spec/test_value.rb
@@ -1,116 +0,0 @@
1
- require 'spec_helper'
2
- module Myrrha
3
- describe "#domain" do
4
-
5
- specify "the basic contract" do
6
- subject = Myrrha.domain{|s| s == 12}
7
- subject.should be_a(Class)
8
- subject.superclass.should eq(Object)
9
- (subject === 12).should be_true
10
- (subject === 13).should be_false
11
- end
12
-
13
- specify "with a ruby superclass" do
14
- subject = Myrrha.domain(Integer){|i| i > 0}
15
- subject.should be_a(Class)
16
- subject.superclass.should eq(Integer)
17
- (subject === 12).should be_true
18
- (subject === 0).should be_false
19
- end
20
-
21
- describe "A factored sub domain of Integer" do
22
- PosInt = Myrrha.domain(Integer){|i| i > 0}
23
- specify("#name") {
24
- PosInt.name.should eq("Myrrha::PosInt")
25
- }
26
- specify("#new") {
27
- PosInt.new(12).should eq(12)
28
- lambda {
29
- PosInt.new(0)
30
- }.should raise_error(ArgumentError)
31
- }
32
- specify("#superclass"){
33
- PosInt.superclass.should eql(Integer)
34
- }
35
- specify("#superdomain_of?"){
36
- PosInt.superdomain_of?(Object).should be_false
37
- PosInt.superdomain_of?(Integer).should be_false
38
- }
39
- it "should be usable in a case" do
40
- [-12, 12].collect{|i|
41
- case i
42
- when PosInt
43
- :posint
44
- when Integer
45
- :integer
46
- end
47
- }.should eq([:integer, :posint])
48
- end
49
- end
50
-
51
- describe "A factored domain by module inclusion" do
52
- class NegInt < Integer
53
- extend Myrrha::Domain
54
-
55
- def self.predicate
56
- @predicate ||= lambda{|i| i<0}
57
- end
58
-
59
- end
60
- specify("#name") {
61
- NegInt.name.should eq("Myrrha::NegInt")
62
- }
63
- specify("#new") {
64
- NegInt.new(-12).should eq(-12)
65
- lambda {
66
- NegInt.new(12)
67
- }.should raise_error(ArgumentError)
68
- }
69
- specify("#superclass"){
70
- NegInt.superclass.should eql(Integer)
71
- }
72
- specify("#superdomain_of?"){
73
- NegInt.superdomain_of?(Object).should be_false
74
- NegInt.superdomain_of?(Integer).should be_false
75
- }
76
- it "should be usable in a case" do
77
- [-12, 12].collect{|i|
78
- case i
79
- when NegInt
80
- :negint
81
- when Integer
82
- :integer
83
- end
84
- }.should eq([:negint, :integer])
85
- end
86
- end
87
-
88
- describe "A factored sub domain of a user-defined Class" do
89
- class Color
90
- attr_reader :r
91
- attr_reader :g
92
- attr_reader :b
93
- def initialize(r,g,b)
94
- raise ArgumentError unless [r,g,b].all?{|i| i.is_a?(Integer)}
95
- @r, @g, @b = r, g, b
96
- end
97
- end
98
- RedToZero = Myrrha.domain(Color){|c| c.r == 0}
99
- specify("#===") {
100
- (RedToZero === Color.new(0,1,1)).should be_true
101
- (RedToZero === Color.new(1,1,1)).should be_false
102
- }
103
- specify("#new") {
104
- RedToZero.new(Color.new(0,1,1)).should be_a(Color)
105
- RedToZero.new(0, 1, 1).should be_a(Color)
106
- lambda{
107
- RedToZero.new(Color.new(1,1,1))
108
- }.should raise_error(ArgumentError)
109
- lambda{
110
- RedToZero.new(1, 1, 1)
111
- }.should raise_error(ArgumentError)
112
- }
113
- end
114
-
115
- end
116
- end