dusen 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OWVjNGViYjQ5OGJlOWNjNzM5ZmMzMzBjZTYxODEyN2VjMWRiZTZlYQ==
5
+ data.tar.gz: !binary |-
6
+ OTQ2ODMzOTg0ZmZhYjg4NjYyMjMyOWNlZDVmZmYxOWU5ZThjYTE5Ng==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NmJjMzI3NDUzMjY1MzgwNDZjMzMxZDcwZmNkNWY5NWUyOWQyMWRkOTg1NTEy
10
+ ZTljNjlhYmZlZWI2MDQyMGM1MmEzZTBlZTcyNzRmOTVlZDQxMDA0MDI1ZWEz
11
+ ODAzMTAyYzgwMjI1Nzc0YThkMTVmMzE5YmI5NTRjYjg2NjYxMDI=
12
+ data.tar.gz: !binary |-
13
+ YTZjYTYzMDYxNDEzMDM4M2RlM2MyY2NmYTcxOWMzYjczYjY5ZjY3YmFkOTBj
14
+ ZjYxMWJiOTY4OTE0OWI4ZjMxMzMzMjc0MTY4NWM5NzMwZDk0NzBkMmEwM2Vl
15
+ NzA3ZmQyMTIxODVhNmJlMDk0ZWQ3ZTY3NDVjMDRiNDNkMTEzNjc=
data/Rakefile CHANGED
@@ -49,6 +49,22 @@ namespace :all do
49
49
  end
50
50
  end
51
51
 
52
+ desc 'Install gems and run tests on several Ruby versions'
53
+ task :rubies do
54
+ success = case
55
+ when system('which rvm')
56
+ run_for_all_rubies :rvm
57
+ when system('which rbenv') && `rbenv commands`.split("\n").include?('alias')
58
+ # rbenv currently works only with the alias plugin, as we do not want to
59
+ # specify Ruby versions down to their patch levels.
60
+ run_for_all_rubies :rbenv
61
+ else
62
+ fail 'Currently only RVM and rbenv (with alias plugin) are supported. Open Rakefile and add your Ruby version manager!'
63
+ end
64
+
65
+ fail "Tests failed" unless success
66
+ end
67
+
52
68
  end
53
69
 
54
70
  def for_each_directory_of(path, &block)
@@ -58,3 +74,35 @@ def for_each_directory_of(path, &block)
58
74
  block.call(directory)
59
75
  end
60
76
  end
77
+
78
+ def run_for_all_rubies(version_manager)
79
+ %w[
80
+ 1.8.7
81
+ 1.9.3
82
+ 2.1.2
83
+ ].all? do |ruby_version|
84
+ announce "Running bundle and specs for Ruby #{ruby_version}", 2
85
+
86
+ execute = case version_manager
87
+ when :rvm
88
+ "rvm #{ruby_version} do"
89
+ when :rbenv
90
+ ENV['RBENV_VERSION'] = ruby_version
91
+ 'rbenv exec'
92
+ end
93
+
94
+ current_version = `#{execute} ruby -v`.match(/^ruby (\d\.\d\.\d)/)[1]
95
+ if current_version == ruby_version
96
+ puts "Currently active Ruby is #{current_version}"
97
+ system "#{execute} rake all:bundle all:spec"
98
+ else
99
+ fail "Failed to set Ruby #{ruby_version} (#{current_version} active!)"
100
+ end
101
+ end
102
+ end
103
+
104
+ def announce(text, level = 1)
105
+ space = "\n" * level
106
+ message = "# #{text}"
107
+ puts "\e[4;34m#{space + message}\e[0m" # blue underline
108
+ end
data/lib/dusen/parser.rb CHANGED
@@ -3,8 +3,7 @@
3
3
  module Dusen
4
4
  class Parser
5
5
 
6
- WESTERNISH_WORD_CHARACTER = '\\w\\-\\.;@_ÄÖÜäöüß' # this is wrong on so many levels
7
- TEXT_QUERY = /(?:(\-)?"([^"]+)"|(\-)?([#{WESTERNISH_WORD_CHARACTER}]+))/
6
+ TEXT_QUERY = /(?:(\-)?"([^"]+)"|(\-)?([\S]+))/
8
7
  FIELD_QUERY = /(\-)?(\w+)\:#{TEXT_QUERY}/
9
8
 
10
9
  def self.parse(query_string)
data/lib/dusen/syntax.rb CHANGED
@@ -70,6 +70,7 @@ module Dusen
70
70
  exclude_scope.except(:where).where(inverted_sql)
71
71
  else
72
72
  # we cannot build an inverted scope without where-conditions
73
+
73
74
  root_scope
74
75
  end
75
76
  end
data/lib/dusen/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Dusen
4
- VERSION = '0.5.2'
4
+ VERSION = '0.5.3'
5
5
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- dusen (0.5.1)
4
+ dusen (0.5.2)
5
5
  activerecord (>= 3.0)
6
6
  edge_rider (>= 0.2.5)
7
7
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- dusen (0.5.1)
4
+ dusen (0.5.2)
5
5
  activerecord (>= 3.0)
6
6
  edge_rider (>= 0.2.5)
7
7
 
@@ -66,7 +66,7 @@ shared_examples_for 'model with search syntax' do
66
66
  subject.search('E.ONNNEN').to_a.should == [match]
67
67
  end
68
68
 
69
- it 'should find words where one letter is separated from other letters by a period' do
69
+ it 'should find words where one letter is separated from other letters by a semicolon' do
70
70
  match = subject.create!(:name => 'E;ONNNEN')
71
71
  subject.search('E;ONNNEN')
72
72
  subject.search('E;ONNNEN').to_a.should == [match]
@@ -78,6 +78,11 @@ shared_examples_for 'model with search syntax' do
78
78
  subject.search('Baden-Baden').to_a.should == [match]
79
79
  end
80
80
 
81
+ it 'should handle umlauts and special characters' do
82
+ match = subject.create!(:city => 'púlvérìsätëûr')
83
+ subject.search('púlvérìsätëûr').to_a.should == [match]
84
+ end
85
+
81
86
  context 'with excludes' do
82
87
 
83
88
  it 'should exclude words with prefix - (minus)' do
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Dusen::Parser do
@@ -14,6 +16,11 @@ describe Dusen::Parser do
14
16
  query.collect(&:value).should == ['Baden-Baden']
15
17
  end
16
18
 
19
+ it 'should parse umlauts and accents' do
20
+ query = Dusen::Parser.parse('field:åöÙÔøüéíÁ "ÄüÊçñÆ ððÿáÒÉ" pulvérisateur pędzić')
21
+ query.collect(&:value).should == ['åöÙÔøüéíÁ', 'ÄüÊçñÆ ððÿáÒÉ', 'pulvérisateur', 'pędzić']
22
+ end
23
+
17
24
  end
18
25
 
19
26
  end
metadata CHANGED
@@ -1,63 +1,49 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dusen
3
- version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease:
6
- segments:
7
- - 0
8
- - 5
9
- - 2
10
- version: 0.5.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.3
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Henning Koch
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2015-04-02 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: activerecord
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 7
30
- segments:
31
- - 3
32
- - 0
33
- version: "3.0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
34
20
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: edge_rider
38
21
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 29
45
- segments:
46
- - 0
47
- - 2
48
- - 5
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: edge_rider
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
49
33
  version: 0.2.5
50
34
  type: :runtime
51
- version_requirements: *id002
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.2.5
52
41
  description: Comprehensive full text search for ActiveRecord and MySQL
53
42
  email: henning.koch@makandra.de
54
43
  executables: []
55
-
56
44
  extensions: []
57
-
58
45
  extra_rdoc_files: []
59
-
60
- files:
46
+ files:
61
47
  - .gitignore
62
48
  - .ruby-version
63
49
  - .travis.yml
@@ -138,39 +124,28 @@ files:
138
124
  - spec/shared/spec/dusen/parser_spec.rb
139
125
  - spec/shared/spec/dusen/query_spec.rb
140
126
  - spec/shared/spec/dusen/util_spec.rb
141
- has_rdoc: true
142
127
  homepage: https://github.com/makandra/dusen
143
- licenses:
128
+ licenses:
144
129
  - MIT
130
+ metadata: {}
145
131
  post_install_message:
146
132
  rdoc_options: []
147
-
148
- require_paths:
133
+ require_paths:
149
134
  - lib
150
- required_ruby_version: !ruby/object:Gem::Requirement
151
- none: false
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- hash: 3
156
- segments:
157
- - 0
158
- version: "0"
159
- required_rubygems_version: !ruby/object:Gem::Requirement
160
- none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
166
- - 0
167
- version: "0"
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
168
145
  requirements: []
169
-
170
146
  rubyforge_project:
171
- rubygems_version: 1.3.9.5
147
+ rubygems_version: 2.2.2
172
148
  signing_key:
173
- specification_version: 3
149
+ specification_version: 4
174
150
  summary: Comprehensive full text search for ActiveRecord and MySQL
175
151
  test_files: []
176
-