xapit 0.2.7 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. data/{CHANGELOG → CHANGELOG.rdoc} +7 -2
  2. data/Gemfile +19 -0
  3. data/LICENSE +4 -4
  4. data/README.rdoc +61 -108
  5. data/Rakefile +11 -10
  6. data/features/facets.feature +93 -82
  7. data/features/finding.feature +196 -138
  8. data/features/indexing.feature +35 -37
  9. data/features/remote_server.feature +10 -0
  10. data/features/step_definitions/xapit_steps.rb +53 -25
  11. data/features/suggestions.feature +20 -14
  12. data/features/support/env.rb +13 -6
  13. data/features/support/xapit_helpers.rb +8 -9
  14. data/lib/generators/xapit/install_generator.rb +14 -0
  15. data/lib/generators/xapit/templates/xapit.ru +6 -0
  16. data/lib/generators/xapit/templates/xapit.yml +11 -0
  17. data/lib/xapit.rb +106 -64
  18. data/lib/xapit/client/collection.rb +150 -0
  19. data/lib/xapit/client/facet.rb +11 -0
  20. data/lib/xapit/client/facet_option.rb +29 -0
  21. data/lib/xapit/client/index_builder.rb +67 -0
  22. data/lib/xapit/client/membership.rb +46 -0
  23. data/lib/xapit/client/model_adapters/abstract_model_adapter.rb +30 -0
  24. data/lib/xapit/client/model_adapters/active_record_adapter.rb +27 -0
  25. data/lib/xapit/client/model_adapters/default_model_adapter.rb +7 -0
  26. data/lib/xapit/client/railtie.rb +18 -0
  27. data/lib/xapit/client/remote_database.rb +21 -0
  28. data/lib/xapit/client/tasks.rb +18 -0
  29. data/lib/xapit/server/app.rb +27 -0
  30. data/lib/xapit/server/database.rb +47 -0
  31. data/lib/xapit/server/indexer.rb +138 -0
  32. data/lib/xapit/server/query.rb +240 -0
  33. data/spec/fixtures/blankdb/flintlock +0 -0
  34. data/spec/fixtures/blankdb/iamchert +1 -0
  35. data/spec/fixtures/blankdb/postlist.DB +0 -0
  36. data/spec/fixtures/blankdb/postlist.baseA +0 -0
  37. data/spec/fixtures/blankdb/record.DB +0 -0
  38. data/spec/fixtures/blankdb/record.baseA +0 -0
  39. data/spec/fixtures/blankdb/termlist.DB +0 -0
  40. data/spec/fixtures/blankdb/termlist.baseA +0 -0
  41. data/spec/fixtures/xapit.ru +13 -0
  42. data/spec/fixtures/xapit.yml +4 -0
  43. data/spec/spec_helper.rb +8 -9
  44. data/spec/support/spec_macros.rb +6 -0
  45. data/spec/{xapit_member.rb → support/xapit_member.rb} +14 -16
  46. data/spec/xapit/client/collection_spec.rb +63 -0
  47. data/spec/xapit/client/facet_option_spec.rb +26 -0
  48. data/spec/xapit/client/facet_spec.rb +13 -0
  49. data/spec/xapit/client/index_builder_spec.rb +66 -0
  50. data/spec/xapit/client/membership_spec.rb +43 -0
  51. data/spec/xapit/client/model_adapters/active_record_adapter_spec.rb +62 -0
  52. data/spec/xapit/client/model_adapters/default_model_adapter_spec.rb +7 -0
  53. data/spec/xapit/client/remote_database_spec.rb +19 -0
  54. data/spec/xapit/server/app_spec.rb +22 -0
  55. data/spec/xapit/server/database_spec.rb +37 -0
  56. data/spec/xapit/server/indexer_spec.rb +82 -0
  57. data/spec/xapit/server/query_spec.rb +43 -0
  58. data/spec/xapit/xapit_spec.rb +28 -0
  59. metadata +124 -93
  60. data/Manifest +0 -60
  61. data/features/sorting.feature +0 -29
  62. data/init.rb +0 -1
  63. data/install.rb +0 -8
  64. data/lib/xapit/adapters/abstract_adapter.rb +0 -47
  65. data/lib/xapit/adapters/active_record_adapter.rb +0 -20
  66. data/lib/xapit/adapters/data_mapper_adapter.rb +0 -10
  67. data/lib/xapit/collection.rb +0 -187
  68. data/lib/xapit/config.rb +0 -84
  69. data/lib/xapit/facet.rb +0 -67
  70. data/lib/xapit/facet_blueprint.rb +0 -59
  71. data/lib/xapit/facet_option.rb +0 -56
  72. data/lib/xapit/index_blueprint.rb +0 -147
  73. data/lib/xapit/indexers/abstract_indexer.rb +0 -116
  74. data/lib/xapit/indexers/classic_indexer.rb +0 -29
  75. data/lib/xapit/indexers/simple_indexer.rb +0 -38
  76. data/lib/xapit/membership.rb +0 -137
  77. data/lib/xapit/query.rb +0 -89
  78. data/lib/xapit/query_parsers/abstract_query_parser.rb +0 -174
  79. data/lib/xapit/query_parsers/classic_query_parser.rb +0 -29
  80. data/lib/xapit/query_parsers/simple_query_parser.rb +0 -75
  81. data/lib/xapit/rake_tasks.rb +0 -13
  82. data/rails_generators/xapit/USAGE +0 -13
  83. data/rails_generators/xapit/templates/setup_xapit.rb +0 -1
  84. data/rails_generators/xapit/templates/xapit.rake +0 -4
  85. data/rails_generators/xapit/xapit_generator.rb +0 -20
  86. data/spec/xapit/adapters/active_record_adapter_spec.rb +0 -31
  87. data/spec/xapit/adapters/data_mapper_adapter_spec.rb +0 -10
  88. data/spec/xapit/collection_spec.rb +0 -176
  89. data/spec/xapit/config_spec.rb +0 -62
  90. data/spec/xapit/facet_blueprint_spec.rb +0 -29
  91. data/spec/xapit/facet_option_spec.rb +0 -80
  92. data/spec/xapit/facet_spec.rb +0 -73
  93. data/spec/xapit/index_blueprint_spec.rb +0 -112
  94. data/spec/xapit/indexers/abstract_indexer_spec.rb +0 -111
  95. data/spec/xapit/indexers/classic_indexer_spec.rb +0 -35
  96. data/spec/xapit/indexers/simple_indexer_spec.rb +0 -69
  97. data/spec/xapit/membership_spec.rb +0 -55
  98. data/spec/xapit/query_parsers/abstract_query_parser_spec.rb +0 -60
  99. data/spec/xapit/query_parsers/classic_query_parser_spec.rb +0 -20
  100. data/spec/xapit/query_parsers/simple_query_parser_spec.rb +0 -86
  101. data/spec/xapit/query_spec.rb +0 -60
  102. data/tasks/spec.rb +0 -9
  103. data/tasks/xapit.rake +0 -1
  104. data/uninstall.rb +0 -5
  105. data/xapit.gemspec +0 -30
@@ -1,55 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- class OtherMember
4
- include Xapit::Membership
5
- end
6
-
7
- describe XapitMember do
8
- it "should have xapit method" do
9
- OtherMember.should respond_to(:xapit)
10
- end
11
-
12
- it "should not respond to xapit_index_blueprint if xapit isn't called" do
13
- OtherMember.should_not respond_to(:xapit_index_blueprint)
14
- OtherMember.should_not respond_to(:search)
15
- OtherMember.new.should_not respond_to(:search_similar)
16
- OtherMember.new.should_not respond_to(:xapit_relevance)
17
- end
18
-
19
- describe "with description indexed" do
20
- before(:each) do
21
- XapitMember.xapit do |index|
22
- index.text :description
23
- end
24
- XapitMember.instance_variable_set("@xapit_adapter", nil)
25
- end
26
-
27
- it "should have xapit index blueprint" do
28
- XapitMember.xapit_index_blueprint.should be_kind_of(Xapit::IndexBlueprint)
29
- end
30
-
31
- it "should return collection from search" do
32
- XapitMember.search("foo").class.should == Xapit::Collection
33
- end
34
-
35
- it "should store xapit_relevance" do
36
- member = XapitMember.new
37
- member.xapit_relevance = 123
38
- member.xapit_relevance.should == 123
39
- end
40
-
41
- it "should have an adapter" do
42
- XapitMember.xapit_adapter.class.should == Xapit::ActiveRecordAdapter
43
- end
44
-
45
- it "should use DataMapper adapter if that is ancestor" do
46
- stub(XapitMember).ancestors { ["DataMapper::Resource"] }
47
- XapitMember.xapit_adapter.class.should == Xapit::DataMapperAdapter
48
- end
49
-
50
- it "should raise an exception when no adapter is found" do
51
- stub(XapitMember).ancestors { [] }
52
- lambda { XapitMember.xapit_adapter }.should raise_error
53
- end
54
- end
55
- end
@@ -1,60 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe Xapit::AbstractQueryParser do
4
- before(:each) do
5
- end
6
-
7
- it "should parse conditions hash into terms" do
8
- parser = Xapit::AbstractQueryParser.new(:conditions => { :foo => 'bar', 'hello' => :world })
9
- parser.condition_terms.sort.should == ["Xfoo-bar", "Xhello-world"].sort
10
- end
11
-
12
- it "should convert time into integer before placing in condition term" do
13
- time = Time.now
14
- parser = Xapit::AbstractQueryParser.new(:conditions => { :time => time })
15
- parser.condition_terms.should == ["Xtime-#{time.to_i}"]
16
- end
17
-
18
- it "should convert date into time then integer before placing in condition term" do
19
- date = Date.today
20
- parser = Xapit::AbstractQueryParser.new(:conditions => { :date => date })
21
- parser.condition_terms.should == ["Xdate-#{date.to_time.to_i}"]
22
- end
23
-
24
- it "should give spelling suggestion on full term" do
25
- Xapit::Config.writable_database.add_spelling("foo bar")
26
- parser = Xapit::AbstractQueryParser.new(nil, "foo barr")
27
- parser.spelling_suggestion.should == "foo bar"
28
- end
29
-
30
- it "should allow an array of conditions to be specified and use OR xapian query." do
31
- parser = Xapit::AbstractQueryParser.new(:not_conditions => { :foo => %w[hello world]})
32
- parser.not_condition_terms.first.xapian_query.description.should == Xapit::Query.new(%w[Xfoo-hello Xfoo-world], :or).xapian_query.description
33
- end
34
-
35
- it "should allow range condition to be specified and use VALUE_RANGE xapian query." do
36
- XapitMember.xapit { |i| i.field :foo }
37
- expected = Xapian::Query.new(Xapian::Query::OP_VALUE_RANGE, 0, Xapian.sortable_serialise(2), Xapian.sortable_serialise(5))
38
- parser = Xapit::AbstractQueryParser.new(XapitMember, :conditions => { :foo => 2..5 })
39
- parser.condition_terms.first.description.should == expected.description
40
- end
41
-
42
- it "should allow range condition to be specified in array." do
43
- XapitMember.xapit { |i| i.field :foo }
44
- expected = Xapian::Query.new(Xapian::Query::OP_OR,
45
- Xapian::Query.new(Xapian::Query::OP_VALUE_RANGE, 0, Xapian.sortable_serialise(2), Xapian.sortable_serialise(5)),
46
- Xapian::Query.new(Xapian::Query::OP_AND, ["Xfoo-10"])
47
- )
48
- parser = Xapit::AbstractQueryParser.new(XapitMember, :conditions => { :foo => [2..5, 10] })
49
- parser.condition_terms.first.xapian_query.description.should == expected.description
50
- end
51
-
52
- it "should expand punctuated terms properly" do
53
- XapitMember.xapit { |i| i.field :name }
54
- bar = XapitMember.new(:name => "foo-bar")
55
- baz = XapitMember.new(:name => "foo-baz")
56
- zap = XapitMember.new(:name => "foo-zap")
57
- Xapit.index_all
58
- XapitMember.search(:conditions => { :name => "foo-b*"}).should == [bar, baz]
59
- end
60
- end
@@ -1,20 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe Xapit::ClassicQueryParser do
4
- before(:each) do
5
- @parser = Xapit::ClassicQueryParser.new(nil, nil)
6
- end
7
-
8
- it "should have an initial xapian parser with stemming and default operator support" do
9
- Xapit::Config.writable_database # just so a database exists
10
- expected = Xapian::QueryParser.new
11
- expected.stemmer = Xapian::Stem.new("english")
12
- expected.stemming_strategy = Xapian::QueryParser::STEM_SOME
13
- expected.default_op = Xapian::Query::OP_AND
14
- @parser.xapian_query_from_text("foo bar").description.should == expected.parse_query("foo bar").description
15
- end
16
-
17
- it "should remove asterisks from terms with one letter" do
18
- @parser.cleanup_text("J*").should == "J"
19
- end
20
- end
@@ -1,86 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe Xapit::SimpleQueryParser do
4
- describe "with stemming" do
5
- it "should include stemmed variation for single word" do
6
- Xapit::SimpleQueryParser.new(nil, "jumping").parsed.should == "Zjump"
7
- end
8
-
9
- it "should include stemmed variations for multiple words" do
10
- Xapit::SimpleQueryParser.new(nil, "jumping high").parsed.should == [:and, "Zjump", "Zhigh"]
11
- end
12
-
13
- it "should add stemmed variation for 'not' option" do
14
- Xapit::SimpleQueryParser.new(nil, "jumping not high").parsed.should == [:and, "Zjump", [:not, "Zhigh"]]
15
- end
16
- end
17
-
18
- describe "without stemming" do
19
- before(:each) do
20
- Xapit::Config.options[:stemming] = false
21
- end
22
-
23
- it "should parse nothing for simple string" do
24
- Xapit::SimpleQueryParser.new(nil, "foobar").parsed.should == "foobar"
25
- end
26
-
27
- it "should parse empty string as blank string" do
28
- Xapit::SimpleQueryParser.new(nil, "").parsed.should == ""
29
- Xapit::SimpleQueryParser.new(nil, " \t ").parsed.should == ""
30
- end
31
-
32
- it "should parse white space as AND" do
33
- Xapit::SimpleQueryParser.new(nil, "foo bar").parsed.should == [:and, "foo", "bar"]
34
- Xapit::SimpleQueryParser.new(nil, "\t foo \t bar ").parsed.should == [:and, "foo", "bar"]
35
- end
36
-
37
- it "should parse simple 'or' query" do
38
- Xapit::SimpleQueryParser.new(nil, "foo or bar").parsed.should == [:or, "foo", "bar"]
39
- Xapit::SimpleQueryParser.new(nil, " foo or\t bar \t ").parsed.should == [:or, "foo", "bar"]
40
- Xapit::SimpleQueryParser.new(nil, "foo OR bar").parsed.should == [:or, "foo", "bar"]
41
- end
42
-
43
- it "should parse 'and' within 'or' giving 'or' presedence" do
44
- Xapit::SimpleQueryParser.new(nil, "foo or bar blah").parsed.should == [:or, "foo", [:and, "bar", "blah"]]
45
- Xapit::SimpleQueryParser.new(nil, "foo bar or blah").parsed.should == [:or, [:and, "foo", "bar"], "blah"]
46
- end
47
-
48
- it "should parse simple 'not' query" do
49
- Xapit::SimpleQueryParser.new(nil, "foo not bar").parsed.should == [:and, "foo", [:not, "bar"]]
50
- Xapit::SimpleQueryParser.new(nil, "foo NOT bar blah").parsed.should == [:and, "foo", [:not, "bar"], "blah"]
51
- end
52
-
53
- it "should convert simple query to xapian query" do
54
- Xapit::SimpleQueryParser.new(nil, "foo bar").xapian_query.description.should == Xapian::Query.new(Xapian::Query::OP_AND, "foo", "bar").description
55
- Xapit::SimpleQueryParser.new(nil, "foo OR bar").xapian_query.description.should == Xapian::Query.new(Xapian::Query::OP_OR, "foo", "bar").description
56
- end
57
-
58
- it "should convert deep query to xapian query" do
59
- query = Xapian::Query.new(Xapian::Query::OP_OR,
60
- Xapian::Query.new(Xapian::Query::OP_OR, ["foo"]),
61
- Xapian::Query.new(Xapian::Query::OP_AND, ["bar", "blah"])
62
- )
63
- Xapit::SimpleQueryParser.new(nil, "foo or bar blah").xapian_query.description.should == query.description
64
- end
65
-
66
- it "should convert multi-deep query to xapian query" do
67
- query = Xapian::Query.new(Xapian::Query::OP_OR,
68
- Xapian::Query.new(Xapian::Query::OP_AND, ["foo", "bar"]),
69
- Xapian::Query.new(Xapian::Query::OP_AND, ["test", "blah"])
70
- )
71
- Xapit::SimpleQueryParser.new(nil, "foo bar or test blah").xapian_query.description.should == query.description
72
- end
73
-
74
- it "should convert single word query to xapian query" do
75
- Xapit::SimpleQueryParser.new(nil, "foo").xapian_query.description.should == Xapian::Query.new(Xapian::Query::OP_AND, ["foo"]).description
76
- end
77
-
78
- it "should convert negative query to xapian query" do
79
- query = Xapian::Query.new(Xapian::Query::OP_AND_NOT,
80
- Xapian::Query.new(Xapian::Query::OP_AND, ["foo"]),
81
- Xapian::Query.new(Xapian::Query::OP_AND, ["bar"])
82
- )
83
- Xapit::SimpleQueryParser.new(nil, "foo not bar").xapian_query.description.should == query.description
84
- end
85
- end
86
- end
@@ -1,60 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Xapit::Query do
4
- it "should use query passed in" do
5
- expected = Xapian::Query.new(Xapian::Query::OP_AND, ["foo bar"])
6
- query = Xapit::Query.new(expected)
7
- query.xapian_query.should == expected
8
- end
9
-
10
- it "should build a query from a string parameter" do
11
- expected = Xapian::Query.new(Xapian::Query::OP_AND, ["foo bar"])
12
- query = Xapit::Query.new("foo bar")
13
- query.xapian_query.description.should == expected.description
14
- end
15
-
16
- it "should build a query from an array of strings" do
17
- expected = Xapian::Query.new(Xapian::Query::OP_AND, %w[foo bar])
18
- query = Xapit::Query.new(%w[foo bar])
19
- query.xapian_query.description.should == expected.description
20
- end
21
-
22
- it "should build a query from an array of strings with :or operator" do
23
- expected = Xapian::Query.new(Xapian::Query::OP_OR, %w[foo bar])
24
- query = Xapit::Query.new(%w[foo bar], :or)
25
- query.xapian_query.description.should == expected.description
26
- end
27
-
28
- it "should AND two queries together" do
29
- expected = Xapian::Query.new(Xapian::Query::OP_AND,
30
- Xapian::Query.new(Xapian::Query::OP_AND, ["foo"]),
31
- Xapian::Query.new(Xapian::Query::OP_AND, ["bar"])
32
- )
33
- query = Xapit::Query.new("foo")
34
- query.and_query("bar").xapian_query.description.should == expected.description
35
- end
36
-
37
- it "should OR two queries together" do
38
- expected = Xapian::Query.new(Xapian::Query::OP_OR,
39
- Xapian::Query.new(Xapian::Query::OP_AND, ["foo"]),
40
- Xapian::Query.new(Xapian::Query::OP_AND, ["bar"])
41
- )
42
- query = Xapit::Query.new("foo")
43
- query.or_query("bar").xapian_query.description.should == expected.description
44
- end
45
-
46
- it "should build a query from an array of mixed strings and queries" do
47
- expected = Xapian::Query.new(Xapian::Query::OP_AND,
48
- Xapian::Query.new(Xapian::Query::OP_AND, ["foo"]),
49
- Xapian::Query.new(Xapian::Query::OP_AND, ["bar"])
50
- )
51
- query = Xapit::Query.new([Xapit::Query.new("foo"), Xapian::Query.new(Xapian::Query::OP_AND, ["bar"])])
52
- query.xapian_query.description.should == expected.description
53
- end
54
-
55
- it "should use xapit query passed in" do
56
- expected = Xapian::Query.new(Xapian::Query::OP_AND, ["foo bar"])
57
- query = Xapit::Query.new(Xapit::Query.new("foo bar"))
58
- query.xapian_query.description.should == expected.description
59
- end
60
- end
@@ -1,9 +0,0 @@
1
- require 'spec/rake/spectask'
2
-
3
- spec_files = Rake::FileList["spec/**/*_spec.rb"]
4
-
5
- desc "Run specs"
6
- Spec::Rake::SpecTask.new do |t|
7
- t.spec_files = spec_files
8
- t.spec_opts = ["-c"]
9
- end
@@ -1 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '/../lib/xapit/rake_tasks')
@@ -1,5 +0,0 @@
1
- path = "#{Rails.root}/config/initializers/setup_xapit.rb"
2
- if File.exist? path
3
- puts "Removing setup_xapit.rb initializer."
4
- File.delete(path)
5
- end
@@ -1,30 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{xapit}
5
- s.version = "0.2.7"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Ryan Bates"]
9
- s.date = %q{2009-07-07}
10
- s.description = %q{Ruby library for interacting with Xapian, a full text search engine.}
11
- s.email = %q{ryan (at) railscasts (dot) com}
12
- s.extra_rdoc_files = ["CHANGELOG", "lib/xapit/adapters/abstract_adapter.rb", "lib/xapit/adapters/active_record_adapter.rb", "lib/xapit/adapters/data_mapper_adapter.rb", "lib/xapit/collection.rb", "lib/xapit/config.rb", "lib/xapit/facet.rb", "lib/xapit/facet_blueprint.rb", "lib/xapit/facet_option.rb", "lib/xapit/index_blueprint.rb", "lib/xapit/indexers/abstract_indexer.rb", "lib/xapit/indexers/classic_indexer.rb", "lib/xapit/indexers/simple_indexer.rb", "lib/xapit/membership.rb", "lib/xapit/query.rb", "lib/xapit/query_parsers/abstract_query_parser.rb", "lib/xapit/query_parsers/classic_query_parser.rb", "lib/xapit/query_parsers/simple_query_parser.rb", "lib/xapit/rake_tasks.rb", "lib/xapit.rb", "LICENSE", "README.rdoc", "tasks/spec.rb", "tasks/xapit.rake"]
13
- s.files = ["CHANGELOG", "features/facets.feature", "features/finding.feature", "features/indexing.feature", "features/sorting.feature", "features/step_definitions/common_steps.rb", "features/step_definitions/xapit_steps.rb", "features/suggestions.feature", "features/support/env.rb", "features/support/xapit_helpers.rb", "init.rb", "install.rb", "lib/xapit/adapters/abstract_adapter.rb", "lib/xapit/adapters/active_record_adapter.rb", "lib/xapit/adapters/data_mapper_adapter.rb", "lib/xapit/collection.rb", "lib/xapit/config.rb", "lib/xapit/facet.rb", "lib/xapit/facet_blueprint.rb", "lib/xapit/facet_option.rb", "lib/xapit/index_blueprint.rb", "lib/xapit/indexers/abstract_indexer.rb", "lib/xapit/indexers/classic_indexer.rb", "lib/xapit/indexers/simple_indexer.rb", "lib/xapit/membership.rb", "lib/xapit/query.rb", "lib/xapit/query_parsers/abstract_query_parser.rb", "lib/xapit/query_parsers/classic_query_parser.rb", "lib/xapit/query_parsers/simple_query_parser.rb", "lib/xapit/rake_tasks.rb", "lib/xapit.rb", "LICENSE", "Manifest", "rails_generators/xapit/templates/setup_xapit.rb", "rails_generators/xapit/templates/xapit.rake", "rails_generators/xapit/USAGE", "rails_generators/xapit/xapit_generator.rb", "Rakefile", "README.rdoc", "spec/spec_helper.rb", "spec/xapit/adapters/active_record_adapter_spec.rb", "spec/xapit/adapters/data_mapper_adapter_spec.rb", "spec/xapit/collection_spec.rb", "spec/xapit/config_spec.rb", "spec/xapit/facet_blueprint_spec.rb", "spec/xapit/facet_option_spec.rb", "spec/xapit/facet_spec.rb", "spec/xapit/index_blueprint_spec.rb", "spec/xapit/indexers/abstract_indexer_spec.rb", "spec/xapit/indexers/classic_indexer_spec.rb", "spec/xapit/indexers/simple_indexer_spec.rb", "spec/xapit/membership_spec.rb", "spec/xapit/query_parsers/abstract_query_parser_spec.rb", "spec/xapit/query_parsers/classic_query_parser_spec.rb", "spec/xapit/query_parsers/simple_query_parser_spec.rb", "spec/xapit/query_spec.rb", "spec/xapit_member.rb", "tasks/spec.rb", "tasks/xapit.rake", "uninstall.rb", "xapit.gemspec"]
14
- s.homepage = %q{http://github.com/ryanb/xapit}
15
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Xapit", "--main", "README.rdoc"]
16
- s.require_paths = ["lib"]
17
- s.rubyforge_project = %q{xapit}
18
- s.rubygems_version = %q{1.3.3}
19
- s.summary = %q{Ruby library for interacting with Xapian, a full text search engine.}
20
-
21
- if s.respond_to? :specification_version then
22
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
- s.specification_version = 3
24
-
25
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
- else
27
- end
28
- else
29
- end
30
- end