mongoid-haystack 1.2.0 → 1.2.1

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/HISTORY ADDED
@@ -0,0 +1,8 @@
1
+ 1.2.1:
2
+ - stems split on underscore: "cats_dogs" #=> "cat", "dog"
3
+
4
+ 1.2.0:
5
+ - faster indexing using bulk operators
6
+ - pagination support
7
+ - more tests
8
+ - more docs
@@ -2,7 +2,7 @@
2
2
  #
3
3
  module Mongoid
4
4
  module Haystack
5
- const_set :Version, '1.2.0'
5
+ const_set :Version, '1.2.1'
6
6
 
7
7
  class << Haystack
8
8
  def version
@@ -60,8 +60,12 @@ module Mongoid
60
60
  end
61
61
 
62
62
  def words_for(*args)
63
- string = args.flatten.compact.join(' ').scan(/\w+/).join(' ')
63
+ string = args.join(' ')
64
+ string.gsub!(/_+/, '-')
65
+ string.gsub!(/[^\w]/, ' ')
66
+
64
67
  words = []
68
+
65
69
  UnicodeUtils.each_word(string) do |word|
66
70
  word = UnicodeUtils.nfkd(word.strip)
67
71
  word.gsub!(/\A(?:[^\w]|_|\s)+/, '') # leading punctuation/spaces
@@ -69,6 +73,7 @@ module Mongoid
69
73
  next if word.empty?
70
74
  words.push(word)
71
75
  end
76
+
72
77
  words
73
78
  end
74
79
 
@@ -3,13 +3,14 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "mongoid-haystack"
6
- spec.version = "1.2.0"
6
+ spec.version = "1.2.1"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "mongoid-haystack"
9
9
  spec.description = "a mongoid 3 zero-config, zero-integration, POLS pure mongo fulltext solution"
10
10
 
11
11
  spec.files =
12
- ["README.md",
12
+ ["HISTORY",
13
+ "README.md",
13
14
  "Rakefile",
14
15
  "lib",
15
16
  "lib/app",
@@ -339,6 +339,30 @@ Testing Mongoid::Haystack do
339
339
  assert{ models.is_a?(Array) }
340
340
  end
341
341
 
342
+ ##
343
+ #
344
+ test '.words_for' do
345
+ {
346
+ ' cats and dogs ' => %w( cats and dogs ),
347
+ ' cats-and-dogs ' => %w( cats and dogs ),
348
+ ' cats_and_dogs ' => %w( cats and dogs ),
349
+ ' cats!and?dogs ' => %w( cats and dogs ),
350
+ }.each do |src, dst|
351
+ assert{ Mongoid::Haystack::words_for(src) == dst }
352
+ end
353
+ end
354
+
355
+ test '.stems_for' do
356
+ {
357
+ ' cats and dogs ' => %w( cat dog ),
358
+ ' cats!and?dogs ' => %w( cat dog ),
359
+ ' fishing and hunting ' => %w( fish hunt ),
360
+ ' fishing-and-hunting ' => %w( fish hunt ),
361
+ }.each do |src, dst|
362
+ assert{ Mongoid::Haystack::stems_for(src) == dst }
363
+ end
364
+ end
365
+
342
366
  protected
343
367
 
344
368
  def new_klass(&block)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-haystack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-11 00:00:00.000000000 Z
12
+ date: 2012-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
@@ -129,6 +129,7 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
+ - HISTORY
132
133
  - README.md
133
134
  - Rakefile
134
135
  - lib/app/models/mongoid/haystack/index.rb