xapit 0.2.7 → 0.3.0

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.
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