benhoskings-ambition 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/LICENSE +18 -0
  2. data/Manifest +42 -0
  3. data/README +24 -0
  4. data/ambition.gemspec +120 -0
  5. data/app_generators/ambition_adapter/USAGE +1 -0
  6. data/app_generators/ambition_adapter/ambition_adapter_generator.rb +66 -0
  7. data/app_generators/ambition_adapter/templates/LICENSE +18 -0
  8. data/app_generators/ambition_adapter/templates/README +6 -0
  9. data/app_generators/ambition_adapter/templates/Rakefile +31 -0
  10. data/app_generators/ambition_adapter/templates/lib/adapter/base.rb.erb +12 -0
  11. data/app_generators/ambition_adapter/templates/lib/adapter/query.rb.erb +52 -0
  12. data/app_generators/ambition_adapter/templates/lib/adapter/select.rb.erb +100 -0
  13. data/app_generators/ambition_adapter/templates/lib/adapter/slice.rb.erb +19 -0
  14. data/app_generators/ambition_adapter/templates/lib/adapter/sort.rb.erb +43 -0
  15. data/app_generators/ambition_adapter/templates/lib/init.rb.erb +22 -0
  16. data/app_generators/ambition_adapter/templates/test/helper.rb.erb +9 -0
  17. data/app_generators/ambition_adapter/templates/test/select_test.rb.erb +157 -0
  18. data/app_generators/ambition_adapter/templates/test/slice_test.rb.erb +36 -0
  19. data/app_generators/ambition_adapter/templates/test/sort_test.rb.erb +53 -0
  20. data/bin/ambition_adapter +13 -0
  21. data/lib/ambition.rb +11 -0
  22. data/lib/ambition/api.rb +116 -0
  23. data/lib/ambition/context.rb +66 -0
  24. data/lib/ambition/core_ext.rb +21 -0
  25. data/lib/ambition/enumerable.rb +6 -0
  26. data/lib/ambition/processors/base.rb +134 -0
  27. data/lib/ambition/processors/ruby.rb +26 -0
  28. data/lib/ambition/processors/select.rb +105 -0
  29. data/lib/ambition/processors/slice.rb +15 -0
  30. data/lib/ambition/processors/sort.rb +51 -0
  31. data/lib/ambition/sexp_translator.rb +16 -0
  32. data/test/adapters/exemplar/association_test.rb +34 -0
  33. data/test/adapters/exemplar/count_test.rb +0 -0
  34. data/test/adapters/exemplar/detect_test.rb +9 -0
  35. data/test/adapters/exemplar/enumerable_test.rb +0 -0
  36. data/test/adapters/exemplar/helper.rb +3 -0
  37. data/test/adapters/exemplar/index_operator.rb +6 -0
  38. data/test/adapters/exemplar/reject_test.rb +0 -0
  39. data/test/adapters/exemplar/select_test.rb +151 -0
  40. data/test/adapters/exemplar/slice_test.rb +0 -0
  41. data/test/adapters/exemplar/sort_test.rb +0 -0
  42. data/test/debug +9 -0
  43. data/test/helper.rb +4 -0
  44. metadata +142 -0
@@ -0,0 +1,34 @@
1
+ # Analog of the join_test.rb in the ActiveRecord adapter.
2
+ # Not all adapters will need these behaviors. E.g. there are no joins in LDAP.
3
+ # ActiveLdap has associations, but doesn't try to fake joins.
4
+ # CouchDb doesn't so much have joins as it has the capacity for creative
5
+ # use of its views.
6
+
7
+ require File.dirname(__FILE__) + '/helper'
8
+
9
+ context "Object associations" do
10
+ xspecify "simple ==" do
11
+ result = User.select { |m| m.account.email == 'chris@ozmm.org' }
12
+ end
13
+
14
+ xspecify "simple mixed == on object and an association" do
15
+ result = User.select { |m| m.name == 'chris' && m.account.email == 'chris@ozmm.org' }
16
+ end
17
+
18
+ xspecify "multiple associations" do
19
+ result = User.select { |m| m.ideas.title == 'New Freezer' || m.invites.email == 'pj@hyett.com' }
20
+ end
21
+
22
+ xspecify "non-existant associations" do
23
+ result = User.select { |m| m.liquor.brand == 'Jack' }
24
+ should.raise { result.to_hash }
25
+ end
26
+
27
+ xspecify "simple order by association attribute" do
28
+ result = User.sort_by { |m| m.ideas.title }
29
+ end
30
+
31
+ xspecify "in a more complex order" do
32
+ result = User.sort_by { |m| [ m.ideas.title, -m.invites.email ] }
33
+ end
34
+ end
File without changes
@@ -0,0 +1,9 @@
1
+ context "Exemplar Adapter :: Detect" do
2
+ xspecify "simple ==" do
3
+ User.detect { |m| m.name == 'chris' }
4
+ end
5
+
6
+ xspecify "nothing found" do
7
+ User.detect { |m| m.name == 'chris' }.should.be.nil
8
+ end
9
+ end
File without changes
@@ -0,0 +1,3 @@
1
+ require File.dirname(__FILE__) + '/../../helper'
2
+
3
+ # require 'ambition/adapters/exemplar'
@@ -0,0 +1,6 @@
1
+ xcontext "Exemplar Adapter :: [] operator" do
2
+ specify "finds a single row" do
3
+ User.expects(:find).with(1)
4
+ User[1]
5
+ end
6
+ end
File without changes
@@ -0,0 +1,151 @@
1
+ context "Exemplar Adapter :: Select" do
2
+ xspecify "simple ==" do
3
+ translator = User.select { |m| m.name == 'jon' }
4
+ translator.to_s.should == %Q(foo)
5
+ end
6
+
7
+ xspecify "simple !=" do
8
+ translator = User.select { |m| m.name != 'jon' }
9
+ translator.to_s.should == %Q(foo)
10
+ end
11
+
12
+ xspecify "simple == && ==" do
13
+ translator = User.select { |m| m.name == 'jon' && m.age == 21 }
14
+ translator.to_s.should == %Q(foo)
15
+ end
16
+
17
+ xspecify "simple == || ==" do
18
+ translator = User.select { |m| m.name == 'jon' || m.age == 21 }
19
+ translator.to_s.should == %Q(foo)
20
+ end
21
+
22
+ xspecify "mixed && and ||" do
23
+ translator = User.select { |m| m.name == 'jon' || m.age == 21 && m.password == 'pass' }
24
+ translator.to_s.should == %Q(foo)
25
+ end
26
+
27
+ xspecify "grouped && and ||" do
28
+ translator = User.select { |m| (m.name == 'jon' || m.name == 'rick') && m.age == 21 }
29
+ translator.to_s.should == %Q(foo)
30
+ end
31
+
32
+ xspecify "simple >/<" do
33
+ translator = User.select { |m| m.age > 21 }
34
+ translator.to_s.should == %Q(foo)
35
+
36
+ translator = User.select { |m| m.age >= 21 }
37
+ translator.to_s.should == %Q(foo)
38
+
39
+ translator = User.select { |m| m.age < 21 }
40
+ translator.to_s.should == %Q(foo)
41
+ end
42
+
43
+ xspecify "array.include? item" do
44
+ translator = User.select { |m| [1, 2, 3, 4].include? m.id }
45
+ translator.to_s.should == %Q(foo)
46
+ end
47
+
48
+ xspecify "variabled array.include? item" do
49
+ array = [1, 2, 3, 4]
50
+ translator = User.select { |m| array.include? m.id }
51
+ translator.to_s.should == %Q(foo)
52
+ end
53
+
54
+ xspecify "simple == with variables" do
55
+ me = 'chris'
56
+ translator = User.select { |m| m.name == me }
57
+ translator.to_s.should == %Q(foo)
58
+ end
59
+
60
+ xspecify "simple == with method arguments" do
61
+ def test_it(name)
62
+ translator = User.select { |m| m.name == name }
63
+ translator.to_s.should == %Q(foo)
64
+ end
65
+
66
+ test_it('chris')
67
+ end
68
+
69
+ xspecify "simple == with instance variables" do
70
+ @me = 'chris'
71
+ translator = User.select { |m| m.name == @me }
72
+ translator.to_s.should == %Q(foo)
73
+ end
74
+
75
+ xspecify "simple == with instance variable method call" do
76
+ require 'ostruct'
77
+ @person = OpenStruct.new(:name => 'chris')
78
+
79
+ translator = User.select { |m| m.name == @person.name }
80
+ translator.to_s.should == %Q(foo)
81
+ end
82
+
83
+ xspecify "simple == with global variables" do
84
+ $my_name = 'boston'
85
+ translator = User.select { |m| m.name == $my_name }
86
+ translator.to_s.should == %Q(foo)
87
+ end
88
+
89
+ xspecify "simple == with method call" do
90
+ def band
91
+ 'skinny puppy'
92
+ end
93
+
94
+ translator = User.select { |m| m.name == band }
95
+ translator.to_s.should == %Q(foo)
96
+ end
97
+
98
+ xspecify "simple =~ with string" do
99
+ translator = User.select { |m| m.name =~ 'chris' }
100
+ translator.to_s.should == %Q(foo)
101
+
102
+ translator = User.select { |m| m.name =~ 'chri%' }
103
+ translator.to_s.should == %Q(foo)
104
+ end
105
+
106
+ xspecify "simple !~ with string" do
107
+ translator = User.select { |m| m.name !~ 'chris' }
108
+ translator.to_s.should == %Q(foo)
109
+
110
+ translator = User.select { |m| !(m.name =~ 'chris') }
111
+ translator.to_s.should == %Q(foo)
112
+ end
113
+
114
+ xspecify "simple =~ with regexp" do
115
+ translator = User.select { |m| m.name =~ /chris/ }
116
+ translator.to_s.should == %Q(foo)
117
+ end
118
+
119
+ xspecify "simple =~ with regexp flags" do
120
+ translator = User.select { |m| m.name =~ /chris/i }
121
+ translator.to_s.should == %Q(foo)
122
+ end
123
+
124
+ xspecify "simple downcase" do
125
+ translator = User.select { |m| m.name.downcase =~ 'chris%' }
126
+ translator.to_s.should == %Q(foo)
127
+ end
128
+
129
+ xspecify "simple upcase" do
130
+ translator = User.select { |m| m.name.upcase =~ 'chris%' }
131
+ translator.to_s.should == %Q(foo)
132
+ end
133
+
134
+ xspecify "undefined equality symbol" do
135
+ should.raise { User.select { |m| m.name =* /chris/ } }
136
+ end
137
+
138
+ xspecify "block variable / assigning variable conflict" do
139
+ m = User.select { |m| m.name == 'chris' }
140
+ m.should == %Q(foo)
141
+ end
142
+
143
+ xspecify "simple == with inline ruby" do
144
+ translator = User.select { |m| m.created_at == 2.days.ago(:db) }
145
+ translator.to_s.should == %Q(foo)
146
+ end
147
+
148
+ xspecify "inspect" do
149
+ User.select { |u| u.name }.inspect.should.match %r(call #to_s or #to_hash)
150
+ end
151
+ end
File without changes
File without changes
data/test/debug ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
3
+ libs = []
4
+ dirname = File.dirname(__FILE__)
5
+
6
+ libs << 'irb/completion'
7
+ libs << File.join(dirname, '..', 'lib', 'ambition')
8
+
9
+ exec "#{irb} -Ilib #{libs.map{|l| " -r #{l}" }.join} --simple-prompt"
data/test/helper.rb ADDED
@@ -0,0 +1,4 @@
1
+ %w( rubygems test/spec mocha redgreen English ).each { |f| require f }
2
+
3
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
4
+ require 'ambition'
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: benhoskings-ambition
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.4
5
+ platform: ruby
6
+ authors:
7
+ - Chris Wanstrath
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-04-26 00:00:00 -07:00
13
+ default_executable: ambition_adapter
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ParseTree
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.1.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ruby2ruby
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.8
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rubigen
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.1.1
44
+ version:
45
+ description: Ambition builds yer API calls from plain jane Ruby.
46
+ email: chris@ozmm.org
47
+ executables:
48
+ - ambition_adapter
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - bin/ambition_adapter
53
+ - lib/ambition/api.rb
54
+ - lib/ambition/context.rb
55
+ - lib/ambition/core_ext.rb
56
+ - lib/ambition/enumerable.rb
57
+ - lib/ambition/processors/base.rb
58
+ - lib/ambition/processors/ruby.rb
59
+ - lib/ambition/processors/select.rb
60
+ - lib/ambition/processors/slice.rb
61
+ - lib/ambition/processors/sort.rb
62
+ - lib/ambition/sexp_translator.rb
63
+ - lib/ambition.rb
64
+ - LICENSE
65
+ - README
66
+ files:
67
+ - app_generators/ambition_adapter/ambition_adapter_generator.rb
68
+ - app_generators/ambition_adapter/templates/lib/adapter/base.rb.erb
69
+ - app_generators/ambition_adapter/templates/lib/adapter/query.rb.erb
70
+ - app_generators/ambition_adapter/templates/lib/adapter/select.rb.erb
71
+ - app_generators/ambition_adapter/templates/lib/adapter/slice.rb.erb
72
+ - app_generators/ambition_adapter/templates/lib/adapter/sort.rb.erb
73
+ - app_generators/ambition_adapter/templates/lib/init.rb.erb
74
+ - app_generators/ambition_adapter/templates/LICENSE
75
+ - app_generators/ambition_adapter/templates/Rakefile
76
+ - app_generators/ambition_adapter/templates/README
77
+ - app_generators/ambition_adapter/templates/test/helper.rb.erb
78
+ - app_generators/ambition_adapter/templates/test/select_test.rb.erb
79
+ - app_generators/ambition_adapter/templates/test/slice_test.rb.erb
80
+ - app_generators/ambition_adapter/templates/test/sort_test.rb.erb
81
+ - app_generators/ambition_adapter/USAGE
82
+ - bin/ambition_adapter
83
+ - lib/ambition/api.rb
84
+ - lib/ambition/context.rb
85
+ - lib/ambition/core_ext.rb
86
+ - lib/ambition/enumerable.rb
87
+ - lib/ambition/processors/base.rb
88
+ - lib/ambition/processors/ruby.rb
89
+ - lib/ambition/processors/select.rb
90
+ - lib/ambition/processors/slice.rb
91
+ - lib/ambition/processors/sort.rb
92
+ - lib/ambition/sexp_translator.rb
93
+ - lib/ambition.rb
94
+ - LICENSE
95
+ - Manifest
96
+ - README
97
+ - test/adapters/exemplar/association_test.rb
98
+ - test/adapters/exemplar/count_test.rb
99
+ - test/adapters/exemplar/detect_test.rb
100
+ - test/adapters/exemplar/enumerable_test.rb
101
+ - test/adapters/exemplar/helper.rb
102
+ - test/adapters/exemplar/index_operator.rb
103
+ - test/adapters/exemplar/reject_test.rb
104
+ - test/adapters/exemplar/select_test.rb
105
+ - test/adapters/exemplar/slice_test.rb
106
+ - test/adapters/exemplar/sort_test.rb
107
+ - test/debug
108
+ - test/helper.rb
109
+ - ambition.gemspec
110
+ has_rdoc: true
111
+ homepage: http://errtheblog.com/
112
+ post_install_message:
113
+ rdoc_options:
114
+ - --line-numbers
115
+ - --inline-source
116
+ - --title
117
+ - Ambition
118
+ - --main
119
+ - README
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 1.8.6
127
+ version:
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: "0"
133
+ version:
134
+ requirements: []
135
+
136
+ rubyforge_project: err
137
+ rubygems_version: 1.2.0
138
+ signing_key:
139
+ specification_version: 2
140
+ summary: Ambition builds yer API calls from plain jane Ruby.
141
+ test_files: []
142
+