rquerypad 0.1.21 → 0.1.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/CHANGELOG +3 -0
  2. data/README +2 -2
  3. data/Rakefile +1 -1
  4. data/lib/rquerypad.rb +19 -53
  5. metadata +7 -7
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ Changes in version 0.1.22 (2009-4-30)
2
+ refactoring remove_dup_includes and fix related bugs
3
+
1
4
  Changes in version 0.1.21 (2009-4-14)
2
5
  rquerypad will not change original options to avoid side effect
3
6
 
data/README CHANGED
@@ -1,4 +1,4 @@
1
- Rquerypad, release 0.1.20 (Mar. 2009)
1
+ Rquerypad
2
2
  =========
3
3
  Simplify query options with association automation and improve inner join for activerecord of rails
4
4
 
@@ -41,7 +41,7 @@ $RQUERYPAD_DEBUG = true
41
41
 
42
42
  Test
43
43
  =======
44
- Note: current migrate script works only in rails 2.0
44
+ Note: current migrate script works only in rails 2.0 or later
45
45
 
46
46
  1.Prepare
47
47
 
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rake/testtask'
5
5
  require 'rake/rdoctask'
6
6
 
7
7
  PKG_NAME = "rquerypad"
8
- PKG_VERSION = "0.1.21"
8
+ PKG_VERSION = "0.1.22"
9
9
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
10
10
  PKG_FILES = FileList[
11
11
  '[A-Z]*',
data/lib/rquerypad.rb CHANGED
@@ -98,25 +98,7 @@ class Rquerypad
98
98
  end
99
99
  end
100
100
  }
101
-
102
- Hash.class_eval do
103
- def single_lt?(other)
104
- return false if self == other
105
- return true if self.size == 0
106
- return false unless other.is_a?(Hash)
107
- return false if other.nil? || other.size < self.size
108
- return false if self.size != other.size || self.size > 1
109
- a = self.to_a[0]
110
- o = other.to_a[0]
111
- return false if a[0] != o[0]
112
- return true unless a[1].is_a?(Hash)
113
- a[1].single_lt?(o[1])
114
- end
115
- def single_gt?(other)
116
- return false if self == other
117
- return !(single_lt?(other))
118
- end
119
- end
101
+
120
102
  end
121
103
 
122
104
  def process_inner_join(sql, inner_joins)
@@ -163,48 +145,32 @@ class Rquerypad
163
145
  return new_options if @new_include.empty?
164
146
  # #generate new include
165
147
 
166
- remove_dup_includes
148
+
167
149
  unless @new_include.nil?
168
150
  new_options[:include] ||= []
151
+ new_options[:include] = [new_options[:include] ] unless new_options[:include] .is_a?(Array)
169
152
  new_options[:include] += @new_include
170
- new_options[:include].uniq!
171
153
  end
154
+ new_options[:include] = remove_dup_includes(new_options[:include])
155
+
172
156
  new_options[:inner_joins] = @inner_joins unless @inner_joins.empty?
173
157
  new_options
174
158
  end
175
-
176
- def remove_dup_includes
177
- final_includes = []
178
- @new_include.each do |ni|
179
- next if final_includes.include?(ni)
180
- if final_includes.size > 0
181
- final_includes.each_index do |i|
182
- if ni.is_a?(Hash)
183
- if final_includes[i].is_a?(Hash)
184
- if final_includes[i].single_lt?(ni)
185
- final_includes[i] = ni
186
- elsif final_includes[i].single_gt?(ni)
187
- else
188
- final_includes << ni
189
- end
190
- elsif ni.entries[0][0].to_s == final_includes[i].to_s
191
- final_includes[i] = ni
192
- else
193
- final_includes << ni
194
- end
195
- else
196
- if final_includes[i].is_a?(Hash)
197
- final_includes << ni if final_includes[i].entries[0][0].to_s != ni.to_s
198
- else
199
- final_includes << ni if final_includes[i].to_s != ni.to_s
200
- end
201
- end
202
- end
203
- else
204
- final_includes << ni
205
- end
159
+
160
+ #suppose {:a => :b} {:a => {:b => :c} }, will remove {:a => :b}
161
+ def remove_dup_includes(options)
162
+ result = {}
163
+ options.each {|o| result[o.inspect.gsub(/[\{\}\":]/, '') + "=>"] = o}
164
+ result = result.sort.reverse
165
+ keep_keys = []
166
+ options = []
167
+ result.each do |o|
168
+ skip = false
169
+ keep_keys.each {|k| skip = true if (k.index(o[0]) == 0)}
170
+ options << o[1] unless skip
171
+ keep_keys << o[0]
206
172
  end
207
- @new_include = final_includes
173
+ options
208
174
  end
209
175
 
210
176
  def improve_conditions(options)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rquerypad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.21
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Li
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-15 00:00:00 +08:00
12
+ date: 2009-04-30 00:00:00 +08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: Simplify query options with association automation and improve inner join for ActiveRecord of rails by providing a compact and OO query language instead of writing some explicit join
16
+ description: " Simplify query options with association automation and improve inner join for ActiveRecord of rails by providing a compact and OO query language instead of writing some explicit join\n"
17
17
  email: scorpio_leon@hotmail.com
18
18
  executables: []
19
19
 
@@ -31,16 +31,16 @@ files:
31
31
  - test/test_helper.rb
32
32
  - test/rquerypad_test.rb
33
33
  - test/model.rb
34
- - test/fixtures
35
34
  - test/fixtures/forum_replies.yml
36
35
  - test/fixtures/users.yml
37
36
  - test/fixtures/forum_threads.yml
38
- - test/migrate
39
37
  - test/migrate/003_create_replies.rb
40
38
  - test/migrate/001_create_users.rb
41
39
  - test/migrate/002_create_threads.rb
42
40
  has_rdoc: false
43
41
  homepage: http://rquerypad.rubyforge.org/
42
+ licenses: []
43
+
44
44
  post_install_message:
45
45
  rdoc_options: []
46
46
 
@@ -61,9 +61,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
61
  requirements: []
62
62
 
63
63
  rubyforge_project: Rquerypad
64
- rubygems_version: 1.3.1
64
+ rubygems_version: 1.3.2
65
65
  signing_key:
66
- specification_version: 2
66
+ specification_version: 3
67
67
  summary: Simplify query with OO way and improve inner join for ActiveRecord
68
68
  test_files: []
69
69