sewell 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +9 -2
- data/lib/sewell/version.rb +1 -1
- data/lib/sewell.rb +17 -3
- data/spec/sewell/sewell_spec.rb +4 -0
- metadata +1 -1
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Sewell
|
2
2
|
|
3
|
-
|
3
|
+
Generator for Groonga's query.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,7 +18,14 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
``` ruby
|
22
|
+
query = Sewell.generate 'sena:airi OR mashiro AND nuko:buta', %w{sena uryu nuko} #=> ( sena:@airi ) OR ( sena:@mashiro OR uryu:@mashiro OR nuko:@mashiro ) AND ( nuko:@buta )
|
23
|
+
Groonga['SenaAiri'].select(query)
|
24
|
+
|
25
|
+
Sewell.generate({sena: 'airi OR huro', nuko: 'trape'}, 'AND') #=> ( sena:@airi OR sena:@huro ) AND ( nuko:@trape )
|
26
|
+
Sewell.generate({sena: 'airi OR huro', nuko: 'trape'}, 'OR') #=> ( sena:@airi OR sena:@huro ) OR ( nuko:@trape )
|
27
|
+
|
28
|
+
```
|
22
29
|
|
23
30
|
## Contributing
|
24
31
|
|
data/lib/sewell/version.rb
CHANGED
data/lib/sewell.rb
CHANGED
@@ -3,11 +3,13 @@ require "sewell/version"
|
|
3
3
|
|
4
4
|
module Sewell
|
5
5
|
# Your code goes here...
|
6
|
-
def self.generate args,
|
7
|
-
raise TypeError unless tables.class == Array
|
6
|
+
def self.generate args, args2
|
8
7
|
case args.class.to_s
|
9
8
|
when 'String'
|
10
|
-
|
9
|
+
raise TypeError unless args2.class == Array
|
10
|
+
from_str args, args2
|
11
|
+
when 'Hash'
|
12
|
+
from_hash args, args2
|
11
13
|
else
|
12
14
|
raise TypeError
|
13
15
|
end
|
@@ -15,6 +17,18 @@ module Sewell
|
|
15
17
|
|
16
18
|
private
|
17
19
|
|
20
|
+
def self.from_hash hash, sep
|
21
|
+
hash.map{|k,v|
|
22
|
+
'( ' + v.split(' ').map{|x|
|
23
|
+
if x == 'OR' or x == 'AND'
|
24
|
+
x
|
25
|
+
else
|
26
|
+
"#{k}:@#{sanitize x, /#{k}\:/}"
|
27
|
+
end
|
28
|
+
}.join(' ') + ' )'
|
29
|
+
}.join " #{sep} "
|
30
|
+
end
|
31
|
+
|
18
32
|
def self.from_str str, tables
|
19
33
|
str.gsub!(/ /, ' ')
|
20
34
|
q = []
|
data/spec/sewell/sewell_spec.rb
CHANGED
@@ -9,4 +9,8 @@ describe Sewell do
|
|
9
9
|
it 'can generate from string' do
|
10
10
|
Sewell.generate('sena:airi OR mashiro AND nuko:buta', %w{sena uryu nuko}).should == '( sena:@airi ) OR ( sena:@mashiro OR uryu:@mashiro OR nuko:@mashiro ) AND ( nuko:@buta )'
|
11
11
|
end
|
12
|
+
|
13
|
+
it 'can generate from hash' do
|
14
|
+
Sewell.generate({sena: 'airi OR huro', nuko: 'trape'}, 'AND').should == '( sena:@airi OR sena:@huro ) AND ( nuko:@trape )'
|
15
|
+
end
|
12
16
|
end
|