supernova 0.7.5 → 0.7.6

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/Gemfile CHANGED
@@ -19,6 +19,8 @@ group :development do
19
19
  gem "ZenTest", "4.5.0"
20
20
  gem "geokit"
21
21
  gem "guard"
22
+ gem "guard-bundler"
23
+ gem "guard-rspec"
22
24
  gem "rb-fsevent"
23
25
  gem "growl"
24
26
  gem "growl_notify"
@@ -27,13 +27,18 @@ GEM
27
27
  rb-appscript
28
28
  guard (0.8.4)
29
29
  thor (~> 0.14.6)
30
+ guard-bundler (0.1.3)
31
+ bundler (>= 1.0.0)
32
+ guard (>= 0.2.2)
33
+ guard-rspec (0.5.0)
34
+ guard (>= 0.8.4)
30
35
  i18n (0.5.0)
31
36
  jeweler (1.6.4)
32
37
  bundler (~> 1.0)
33
38
  git (>= 1.2.5)
34
39
  rake
35
40
  json (1.5.3)
36
- linecache19 (0.5.12)
41
+ linecache19 (0.5.13)
37
42
  ruby_core_source (>= 0.1.4)
38
43
  mime-types (1.17.2)
39
44
  mysql2 (0.2.18)
@@ -49,7 +54,7 @@ GEM
49
54
  rspec-expectations (2.8.0)
50
55
  diff-lcs (~> 1.1.2)
51
56
  rspec-mocks (2.8.0)
52
- ruby-debug-base19 (0.11.25)
57
+ ruby-debug-base19 (0.11.26)
53
58
  columnize (>= 0.3.1)
54
59
  linecache19 (>= 0.5.11)
55
60
  ruby_core_source (>= 0.1.4)
@@ -79,6 +84,8 @@ DEPENDENCIES
79
84
  growl
80
85
  growl_notify
81
86
  guard
87
+ guard-bundler
88
+ guard-rspec
82
89
  i18n
83
90
  jeweler (~> 1.6.0)
84
91
  json
@@ -0,0 +1,29 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ require "rubygems"
5
+ require "guard/guard"
6
+
7
+ guard :bundler do
8
+ watch('Gemfile')
9
+ end
10
+
11
+ def spec_helper_cmd
12
+ "-r ./spec/spec_helper.rb" if File.exists?(File.expand_path("../spec/spec_helper.rb", __FILE__))
13
+ end
14
+
15
+ guard 'rspec', :version => 2, :cli => "#{spec_helper_cmd} --color -t wip", :notification => :growl do
16
+ watch(%r{^spec/.+_spec\.rb$})
17
+ watch(%r{^lib/(.+)\.rb$}) { |m| ["spec/lib/#{m[1]}_spec.rb", "spec/#{m[1]}_spec.rb"] }
18
+ watch('spec/spec_helper.rb') { "spec" }
19
+
20
+ # Rails example
21
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
22
+ watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
23
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
24
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
25
+ watch('config/routes.rb') { "spec/routing" }
26
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
27
+ # Capybara request specs
28
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
29
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.5
1
+ 0.7.6
@@ -42,4 +42,7 @@ require "supernova/symbol_extensions"
42
42
  require "supernova/condition"
43
43
  require "supernova/collection"
44
44
  require "supernova/criteria"
45
- require "supernova/solr"
45
+ require "supernova/solr"
46
+ require "supernova/attr_initializer"
47
+ require "supernova/coordinate"
48
+ require "supernova/circle"
@@ -0,0 +1,22 @@
1
+ module Supernova::AttrInitializer
2
+ module InstanceMethods
3
+ def initialize(attributes = {})
4
+ attributes.each do |key, value|
5
+ self.send(:"#{key}=", value)
6
+ end
7
+ end
8
+ end
9
+
10
+ module ClassMethods
11
+ def attr_initializer(*args)
12
+ args.each do |arg|
13
+ attr_accessor arg
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.included(base)
19
+ base.send(:include, Supernova::AttrInitializer::InstanceMethods)
20
+ base.extend(Supernova::AttrInitializer::ClassMethods)
21
+ end
22
+ end
@@ -0,0 +1,6 @@
1
+ require "supernova/coordinate"
2
+
3
+ class Supernova::Circle
4
+ include Supernova::AttrInitializer
5
+ attr_initializer :center, :radius_in_meters
6
+ end
@@ -50,6 +50,8 @@ class Supernova::Condition
50
50
  "#{key}:[#{values.first} TO #{values.last}]"
51
51
  elsif values.respond_to?(:ne) && values.respond_to?(:sw)
52
52
  "#{key}:#{type == :inside ? "{" : "["}#{values.sw.lat},#{values.sw.lng} TO #{values.ne.lat},#{values.ne.lng}#{type == :inside ? "}" : "]"}"
53
+ elsif values.is_a?(Supernova::Circle)
54
+ "{!geofilt}"
53
55
  else
54
56
  values.map { |v| v.nil? ? "!#{nil_filter}" : "#{key}:#{v}"}.join(" OR ")
55
57
  end
@@ -0,0 +1,4 @@
1
+ class Supernova::Coordinate
2
+ include Supernova::AttrInitializer
3
+ attr_initializer :lat, :lng
4
+ end
@@ -1,6 +1,44 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  class Supernova::SolrCriteria < Supernova::Criteria
4
+ def geo_circle_from_with
5
+ geo_filter_in_with.at(1) if geo_filter_in_with
6
+ end
7
+
8
+ def geo_center_from_with
9
+ geo_circle_from_with.center if geo_circle_from_with
10
+ end
11
+
12
+ def geo_distance_in_meters_from_with
13
+ geo_circle_from_with.radius_in_meters if geo_circle_from_with
14
+ end
15
+
16
+ def geo_distance_in_meters
17
+ self.search_options[:geo_distance] || geo_distance_in_meters_from_with
18
+ end
19
+
20
+ def geo_center
21
+ if hash = self.search_options[:geo_center]
22
+ Supernova::Coordinate.new(hash)
23
+ else
24
+ geo_center_from_with
25
+ end
26
+ end
27
+
28
+ def geo_filed_key
29
+ geo_filter_in_with ? geo_filter_in_with.first : :location
30
+ end
31
+
32
+ def geo_attributes_from_center_distance_in_meters_and_key(center, distance_in_meters, key)
33
+ if center && distance_in_meters
34
+ {
35
+ :pt => "#{center.lat},#{center.lng}",
36
+ :d => (distance_in_meters.to_f / Supernova::KM_TO_METER),
37
+ :sfield => solr_field_from_field(key)
38
+ }
39
+ end
40
+ end
41
+
4
42
  # move this into separate methods (test each separatly)
5
43
  def to_params
6
44
  solr_options = { :fq => [], :q => "*:*" }
@@ -16,12 +54,11 @@ class Supernova::SolrCriteria < Supernova::Criteria
16
54
  solr_options[:q] = self.search_options[:search].map { |query| "(#{query})" }.join(" AND ")
17
55
  end
18
56
 
19
- if self.search_options[:geo_center] && self.search_options[:geo_distance]
20
- solr_options[:pt] = "#{self.search_options[:geo_center][:lat]},#{self.search_options[:geo_center][:lng]}"
21
- solr_options[:d] = self.search_options[:geo_distance].to_f / Supernova::KM_TO_METER
22
- solr_options[:sfield] = solr_field_from_field(:location)
57
+ if geo_options = geo_attributes_from_center_distance_in_meters_and_key(geo_center, geo_distance_in_meters, geo_filed_key)
58
+ solr_options.merge!(geo_options)
23
59
  solr_options[:fq] << "{!geofilt}"
24
60
  end
61
+
25
62
  if self.search_options[:select]
26
63
  self.search_options[:select] << "id" if !self.search_options[:select].map(&:to_s).include?("id")
27
64
  solr_options[:fl] = self.search_options[:select].compact.map { |field| solr_field_from_field(field) }.join(",")
@@ -44,6 +81,17 @@ class Supernova::SolrCriteria < Supernova::Criteria
44
81
  solr_options
45
82
  end
46
83
 
84
+ def geo_filter_in_with
85
+ (search_options[:with] || []).each do |option|
86
+ if option.is_a?(Hash)
87
+ option.each do |condition, value|
88
+ return [condition.key, value] if value.is_a?(Supernova::Circle)
89
+ end
90
+ end
91
+ end
92
+ nil
93
+ end
94
+
47
95
  def include_facets?
48
96
  self.search_options[:facets] || self.search_options[:facet_queries]
49
97
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+ require "spec_helper_ar"
3
3
 
4
4
  describe "Solr" do
5
5
  before(:each) do
@@ -1,13 +1,11 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
- require 'supernova'
5
- require "mysql2"
4
+ require File.expand_path("../../lib/supernova.rb", __FILE__)
6
5
  require "logger"
7
6
  require "fileutils"
8
7
  require "ruby-debug"
9
8
  require "geokit"
10
- require "active_record"
11
9
 
12
10
  def project_root
13
11
  Pathname.new(File.expand_path("..", File.dirname(__FILE__)))
@@ -25,33 +23,12 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
25
23
  RSpec.configure do |config|
26
24
  config.run_all_when_everything_filtered = true
27
25
  config.before(:each) do
28
- ActiveRecord::Base.connection.execute("TRUNCATE offers")
29
26
  Supernova::Criteria.mutable_by_default!
30
27
  end
31
28
  end
32
29
 
33
-
34
- ActiveRecord::Base.establish_connection(
35
- :adapter => "mysql2",
36
- :host => "localhost",
37
- :database => "supernova_test",
38
- :username => "root",
39
- :encoding => "utf8"
40
- )
41
-
42
-
43
30
  FileUtils.mkdir_p(project_root.join("log"))
44
31
 
45
- ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS offers")
46
- ActiveRecord::Base.connection.execute("CREATE TABLE offers (id SERIAL, text TEXT, user_id INTEGER, enabled BOOLEAN, popularity INTEGER, lat FLOAT, lng FLOAT)")
47
-
48
- class Offer < ActiveRecord::Base
49
- include Supernova::Solr
50
- named_search_scope :for_user_ids do |*ids|
51
- with(:user_id => ids.flatten)
52
- end
53
- end
54
-
55
32
  class Host
56
33
  attr_accessor :id
57
34
  end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+ require "active_record"
3
+ require "mysql2"
4
+
5
+ ActiveRecord::Base.establish_connection(
6
+ :adapter => "mysql2",
7
+ :host => "localhost",
8
+ :database => "supernova_test",
9
+ :username => "root",
10
+ :encoding => "utf8"
11
+ )
12
+
13
+ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS offers")
14
+ ActiveRecord::Base.connection.execute("CREATE TABLE offers (id SERIAL, text TEXT, user_id INTEGER, enabled BOOLEAN, popularity INTEGER, lat FLOAT, lng FLOAT)")
15
+
16
+ class Offer < ActiveRecord::Base
17
+ include Supernova::Solr
18
+ named_search_scope :for_user_ids do |*ids|
19
+ with(:user_id => ids.flatten)
20
+ end
21
+ end
22
+
23
+ RSpec.configure do |config|
24
+ config.before(:each) do
25
+ ActiveRecord::Base.connection.execute("TRUNCATE offers")
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ require "supernova/attr_initializer"
2
+
3
+ describe "Supernova::AttrInitializer" do
4
+ it "implements attr_initializer" do
5
+ class User
6
+ include Supernova::AttrInitializer
7
+ attr_initializer :name, :age
8
+ end
9
+
10
+ usr = User.new(:name => "Hans", :age => 10)
11
+ usr.name.should == "Hans"
12
+ usr.age.should == 10
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ require "supernova/circle"
2
+
3
+ describe "Supernova::Circle" do
4
+ let(:center) { Supernova::Coordinate.new(:lat => 47, :lng => 11) }
5
+
6
+ it "can be initialized" do
7
+ Supernova::Circle.new
8
+ end
9
+
10
+ it "can be initialized with center" do
11
+ Supernova::Circle.new(:center => center).center.should == center
12
+ end
13
+
14
+ it "allows setting of radius_in_meters" do
15
+ Supernova::Circle.new(:radius_in_meters => 101_00).radius_in_meters.should == 101_00
16
+ end
17
+ end
@@ -57,6 +57,12 @@ describe "Supernova::Condition" do
57
57
  :pt.inside.or_key_and_value(bounding_box).should == "pt:{47.0,11.0 TO 48.0,12.0}"
58
58
  end
59
59
 
60
+ it "returns {!geofilt} when center" do
61
+ center = Supernova::Coordinate.new(:lat => 47, :lng => 11)
62
+ circle = Supernova::Circle.new(:center => center, :radius_in_meters => 10)
63
+ :center.in.or_key_and_value(circle).should == "{!geofilt}"
64
+ end
65
+
60
66
  end
61
67
 
62
68
  describe "solr_filter_for", :wip => true do
@@ -0,0 +1,15 @@
1
+ require "supernova/coordinate"
2
+
3
+ describe "Supernova::Coordinate" do
4
+ it "can be initialized" do
5
+ Supernova::Coordinate.new
6
+ end
7
+
8
+ it "allows setting of lat" do
9
+ Supernova::Coordinate.new(:lat => 10).lat.should == 10
10
+ end
11
+
12
+ it "allows setting of lng" do
13
+ Supernova::Coordinate.new(:lng => 10).lng.should == 10
14
+ end
15
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'spec_helper_ar'
2
2
  require "ostruct"
3
3
 
4
4
  describe "Supernova::SolrCriteria" do
@@ -203,6 +203,36 @@ describe "Supernova::SolrCriteria" do
203
203
  end
204
204
  end
205
205
 
206
+ let(:center) { Supernova::Coordinate.new(:lat => 10.1, :lng => 11.2) }
207
+ let(:circle) { Supernova::Circle.new(:center => center, :radius_in_meters => 100) }
208
+ let(:circle_criteria) { criteria.where(:center.in => circle) }
209
+
210
+ describe "geo_filter_in_with" do
211
+ it "finds the correct geo search filter" do
212
+ circle_criteria.geo_filter_in_with.should be_kind_of(Array)
213
+ circle_criteria.geo_filter_in_with.first.should == :center
214
+ circle_criteria.geo_filter_in_with.at(1).should == circle
215
+ end
216
+
217
+ it "returns nil by default" do
218
+ criteria.geo_filter_in_with.should be_nil
219
+ end
220
+ end
221
+
222
+ describe "searching with circle" do
223
+ it "sets the correct center" do
224
+ circle_criteria.to_params[:pt].should == "10.1,11.2"
225
+ end
226
+
227
+ it "sets the correct distance" do
228
+ circle_criteria.to_params[:d].should == 0.1
229
+ end
230
+
231
+ it "sets the sfield to location" do
232
+ circle_criteria.to_params[:sfield].should == "center"
233
+ end
234
+ end
235
+
206
236
  describe "with a nearby search" do
207
237
  let(:nearby_criteria) { Supernova::SolrCriteria.new.near(47, 11).within(10.kms) }
208
238
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'spec_helper_ar'
2
2
 
3
3
  describe Supernova do
4
4
  let(:clazz) do
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "supernova"
8
- s.version = "0.7.5"
8
+ s.version = "0.7.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tobias Schwab"]
12
- s.date = "2012-02-21"
12
+ s.date = "2012-03-12"
13
13
  s.description = "Unified search scopes"
14
14
  s.email = "tobias.schwab@dynport.de"
15
15
  s.executables = ["start_solr"]
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  ".rspec",
25
25
  "Gemfile",
26
26
  "Gemfile.lock",
27
+ "Guardfile",
27
28
  "LICENSE.txt",
28
29
  "README.rdoc",
29
30
  "Rakefile",
@@ -32,8 +33,11 @@ Gem::Specification.new do |s|
32
33
  "autotest/discover.rb",
33
34
  "bin/start_solr",
34
35
  "lib/supernova.rb",
36
+ "lib/supernova/attr_initializer.rb",
37
+ "lib/supernova/circle.rb",
35
38
  "lib/supernova/collection.rb",
36
39
  "lib/supernova/condition.rb",
40
+ "lib/supernova/coordinate.rb",
37
41
  "lib/supernova/criteria.rb",
38
42
  "lib/supernova/numeric_extensions.rb",
39
43
  "lib/supernova/solr.rb",
@@ -81,8 +85,12 @@ Gem::Specification.new do |s|
81
85
  "spec/database.sql",
82
86
  "spec/integration/solr_spec.rb",
83
87
  "spec/spec_helper.rb",
88
+ "spec/spec_helper_ar.rb",
89
+ "spec/supernova/attr_initializer_spec.rb",
90
+ "spec/supernova/circle_spec.rb",
84
91
  "spec/supernova/collection_spec.rb",
85
92
  "spec/supernova/condition_spec.rb",
93
+ "spec/supernova/coordinate_spec.rb",
86
94
  "spec/supernova/criteria_spec.rb",
87
95
  "spec/supernova/numeric_extensions_spec.rb",
88
96
  "spec/supernova/solr_criteria_spec.rb",
@@ -95,7 +103,7 @@ Gem::Specification.new do |s|
95
103
  s.homepage = "http://github.com/dynport/supernova"
96
104
  s.licenses = ["MIT"]
97
105
  s.require_paths = ["lib"]
98
- s.rubygems_version = "1.8.10"
106
+ s.rubygems_version = "1.8.16"
99
107
  s.summary = "Unified search scopes"
100
108
 
101
109
  if s.respond_to? :specification_version then
@@ -113,6 +121,8 @@ Gem::Specification.new do |s|
113
121
  s.add_development_dependency(%q<ZenTest>, ["= 4.5.0"])
114
122
  s.add_development_dependency(%q<geokit>, [">= 0"])
115
123
  s.add_development_dependency(%q<guard>, [">= 0"])
124
+ s.add_development_dependency(%q<guard-bundler>, [">= 0"])
125
+ s.add_development_dependency(%q<guard-rspec>, [">= 0"])
116
126
  s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
117
127
  s.add_development_dependency(%q<growl>, [">= 0"])
118
128
  s.add_development_dependency(%q<growl_notify>, [">= 0"])
@@ -134,6 +144,8 @@ Gem::Specification.new do |s|
134
144
  s.add_dependency(%q<ZenTest>, ["= 4.5.0"])
135
145
  s.add_dependency(%q<geokit>, [">= 0"])
136
146
  s.add_dependency(%q<guard>, [">= 0"])
147
+ s.add_dependency(%q<guard-bundler>, [">= 0"])
148
+ s.add_dependency(%q<guard-rspec>, [">= 0"])
137
149
  s.add_dependency(%q<rb-fsevent>, [">= 0"])
138
150
  s.add_dependency(%q<growl>, [">= 0"])
139
151
  s.add_dependency(%q<growl_notify>, [">= 0"])
@@ -156,6 +168,8 @@ Gem::Specification.new do |s|
156
168
  s.add_dependency(%q<ZenTest>, ["= 4.5.0"])
157
169
  s.add_dependency(%q<geokit>, [">= 0"])
158
170
  s.add_dependency(%q<guard>, [">= 0"])
171
+ s.add_dependency(%q<guard-bundler>, [">= 0"])
172
+ s.add_dependency(%q<guard-rspec>, [">= 0"])
159
173
  s.add_dependency(%q<rb-fsevent>, [">= 0"])
160
174
  s.add_dependency(%q<growl>, [">= 0"])
161
175
  s.add_dependency(%q<growl_notify>, [">= 0"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supernova
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
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-02-21 00:00:00.000000000Z
12
+ date: 2012-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: will_paginate
16
- requirement: &70243495302500 !ruby/object:Gem::Requirement
16
+ requirement: &70106658325520 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70243495302500
24
+ version_requirements: *70106658325520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70243495302000 !ruby/object:Gem::Requirement
27
+ requirement: &70106658325040 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70243495302000
35
+ version_requirements: *70106658325040
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70243495301420 !ruby/object:Gem::Requirement
38
+ requirement: &70106658324560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70243495301420
46
+ version_requirements: *70106658324560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: typhoeus
49
- requirement: &70243495300860 !ruby/object:Gem::Requirement
49
+ requirement: &70106658340460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.3.3
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70243495300860
57
+ version_requirements: *70106658340460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: i18n
60
- requirement: &70243495300340 !ruby/object:Gem::Requirement
60
+ requirement: &70106658339980 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70243495300340
68
+ version_requirements: *70106658339980
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activerecord
71
- requirement: &70243495299820 !ruby/object:Gem::Requirement
71
+ requirement: &70106658339120 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 3.0.7
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70243495299820
79
+ version_requirements: *70106658339120
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ruby-debug19
82
- requirement: &70243495299280 !ruby/object:Gem::Requirement
82
+ requirement: &70106658338120 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70243495299280
90
+ version_requirements: *70106658338120
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: mysql2
93
- requirement: &70243495298800 !ruby/object:Gem::Requirement
93
+ requirement: &70106658337240 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.2.18
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70243495298800
101
+ version_requirements: *70106658337240
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ZenTest
104
- requirement: &70243495298300 !ruby/object:Gem::Requirement
104
+ requirement: &70106658336500 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - =
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 4.5.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70243495298300
112
+ version_requirements: *70106658336500
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: geokit
115
- requirement: &70243495297800 !ruby/object:Gem::Requirement
115
+ requirement: &70106658335440 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70243495297800
123
+ version_requirements: *70106658335440
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: guard
126
- requirement: &70243495297280 !ruby/object:Gem::Requirement
126
+ requirement: &70106658334340 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,32 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70243495297280
134
+ version_requirements: *70106658334340
135
+ - !ruby/object:Gem::Dependency
136
+ name: guard-bundler
137
+ requirement: &70106658333460 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *70106658333460
146
+ - !ruby/object:Gem::Dependency
147
+ name: guard-rspec
148
+ requirement: &70106658332780 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *70106658332780
135
157
  - !ruby/object:Gem::Dependency
136
158
  name: rb-fsevent
137
- requirement: &70243495296760 !ruby/object:Gem::Requirement
159
+ requirement: &70106658348640 !ruby/object:Gem::Requirement
138
160
  none: false
139
161
  requirements:
140
162
  - - ! '>='
@@ -142,10 +164,10 @@ dependencies:
142
164
  version: '0'
143
165
  type: :development
144
166
  prerelease: false
145
- version_requirements: *70243495296760
167
+ version_requirements: *70106658348640
146
168
  - !ruby/object:Gem::Dependency
147
169
  name: growl
148
- requirement: &70243495296280 !ruby/object:Gem::Requirement
170
+ requirement: &70106658348160 !ruby/object:Gem::Requirement
149
171
  none: false
150
172
  requirements:
151
173
  - - ! '>='
@@ -153,10 +175,10 @@ dependencies:
153
175
  version: '0'
154
176
  type: :development
155
177
  prerelease: false
156
- version_requirements: *70243495296280
178
+ version_requirements: *70106658348160
157
179
  - !ruby/object:Gem::Dependency
158
180
  name: growl_notify
159
- requirement: &70243495295760 !ruby/object:Gem::Requirement
181
+ requirement: &70106658347680 !ruby/object:Gem::Requirement
160
182
  none: false
161
183
  requirements:
162
184
  - - ! '>='
@@ -164,10 +186,10 @@ dependencies:
164
186
  version: '0'
165
187
  type: :development
166
188
  prerelease: false
167
- version_requirements: *70243495295760
189
+ version_requirements: *70106658347680
168
190
  - !ruby/object:Gem::Dependency
169
191
  name: autotest
170
- requirement: &70243495295240 !ruby/object:Gem::Requirement
192
+ requirement: &70106658345480 !ruby/object:Gem::Requirement
171
193
  none: false
172
194
  requirements:
173
195
  - - ! '>='
@@ -175,10 +197,10 @@ dependencies:
175
197
  version: '0'
176
198
  type: :development
177
199
  prerelease: false
178
- version_requirements: *70243495295240
200
+ version_requirements: *70106658345480
179
201
  - !ruby/object:Gem::Dependency
180
202
  name: autotest-growl
181
- requirement: &70243495294680 !ruby/object:Gem::Requirement
203
+ requirement: &70106658341980 !ruby/object:Gem::Requirement
182
204
  none: false
183
205
  requirements:
184
206
  - - ! '>='
@@ -186,10 +208,10 @@ dependencies:
186
208
  version: '0'
187
209
  type: :development
188
210
  prerelease: false
189
- version_requirements: *70243495294680
211
+ version_requirements: *70106658341980
190
212
  - !ruby/object:Gem::Dependency
191
213
  name: rspec
192
- requirement: &70243495294200 !ruby/object:Gem::Requirement
214
+ requirement: &70106658341500 !ruby/object:Gem::Requirement
193
215
  none: false
194
216
  requirements:
195
217
  - - ~>
@@ -197,10 +219,10 @@ dependencies:
197
219
  version: 2.8.0
198
220
  type: :development
199
221
  prerelease: false
200
- version_requirements: *70243495294200
222
+ version_requirements: *70106658341500
201
223
  - !ruby/object:Gem::Dependency
202
224
  name: bundler
203
- requirement: &70243495293720 !ruby/object:Gem::Requirement
225
+ requirement: &70106658340880 !ruby/object:Gem::Requirement
204
226
  none: false
205
227
  requirements:
206
228
  - - ~>
@@ -208,10 +230,10 @@ dependencies:
208
230
  version: 1.0.0
209
231
  type: :development
210
232
  prerelease: false
211
- version_requirements: *70243495293720
233
+ version_requirements: *70106658340880
212
234
  - !ruby/object:Gem::Dependency
213
235
  name: jeweler
214
- requirement: &70243495293160 !ruby/object:Gem::Requirement
236
+ requirement: &70106658356540 !ruby/object:Gem::Requirement
215
237
  none: false
216
238
  requirements:
217
239
  - - ~>
@@ -219,10 +241,10 @@ dependencies:
219
241
  version: 1.6.0
220
242
  type: :development
221
243
  prerelease: false
222
- version_requirements: *70243495293160
244
+ version_requirements: *70106658356540
223
245
  - !ruby/object:Gem::Dependency
224
246
  name: rcov
225
- requirement: &70243495292600 !ruby/object:Gem::Requirement
247
+ requirement: &70106658355840 !ruby/object:Gem::Requirement
226
248
  none: false
227
249
  requirements:
228
250
  - - ! '>='
@@ -230,7 +252,7 @@ dependencies:
230
252
  version: '0'
231
253
  type: :development
232
254
  prerelease: false
233
- version_requirements: *70243495292600
255
+ version_requirements: *70106658355840
234
256
  description: Unified search scopes
235
257
  email: tobias.schwab@dynport.de
236
258
  executables:
@@ -246,6 +268,7 @@ files:
246
268
  - .rspec
247
269
  - Gemfile
248
270
  - Gemfile.lock
271
+ - Guardfile
249
272
  - LICENSE.txt
250
273
  - README.rdoc
251
274
  - Rakefile
@@ -254,8 +277,11 @@ files:
254
277
  - autotest/discover.rb
255
278
  - bin/start_solr
256
279
  - lib/supernova.rb
280
+ - lib/supernova/attr_initializer.rb
281
+ - lib/supernova/circle.rb
257
282
  - lib/supernova/collection.rb
258
283
  - lib/supernova/condition.rb
284
+ - lib/supernova/coordinate.rb
259
285
  - lib/supernova/criteria.rb
260
286
  - lib/supernova/numeric_extensions.rb
261
287
  - lib/supernova/solr.rb
@@ -303,8 +329,12 @@ files:
303
329
  - spec/database.sql
304
330
  - spec/integration/solr_spec.rb
305
331
  - spec/spec_helper.rb
332
+ - spec/spec_helper_ar.rb
333
+ - spec/supernova/attr_initializer_spec.rb
334
+ - spec/supernova/circle_spec.rb
306
335
  - spec/supernova/collection_spec.rb
307
336
  - spec/supernova/condition_spec.rb
337
+ - spec/supernova/coordinate_spec.rb
308
338
  - spec/supernova/criteria_spec.rb
309
339
  - spec/supernova/numeric_extensions_spec.rb
310
340
  - spec/supernova/solr_criteria_spec.rb
@@ -328,7 +358,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
328
358
  version: '0'
329
359
  segments:
330
360
  - 0
331
- hash: 2377453050298449102
361
+ hash: 1564723688025824690
332
362
  required_rubygems_version: !ruby/object:Gem::Requirement
333
363
  none: false
334
364
  requirements:
@@ -337,7 +367,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
367
  version: '0'
338
368
  requirements: []
339
369
  rubyforge_project:
340
- rubygems_version: 1.8.10
370
+ rubygems_version: 1.8.16
341
371
  signing_key:
342
372
  specification_version: 3
343
373
  summary: Unified search scopes