csquery 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +17 -1
- data/lib/csquery.rb +2 -0
- data/lib/csquery/structured.rb +2 -2
- data/lib/csquery/structured/builder.rb +16 -0
- data/lib/csquery/structured/expression_builder.rb +27 -0
- data/lib/csquery/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4445b09e899d09608c7a8c1a5f58d4d39ffdcb19
|
4
|
+
data.tar.gz: a3e064a441ca16b2fc28101973ba7a9330aebe7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c045cda5e38dbf774e258f0986b992e4ec97764098b0c9111f54b5635489c38d22e0fc07f490e47e5cf1674ec823d9a78914175c0a39a6de76076f2cc962a562
|
7
|
+
data.tar.gz: e7ba4bb72faf160fb3a8c20a1d398584698310068176fc4e9fbca7a69eaf4a4fc055db321f27a1a137c806241a9ec4b270765403bac60cc6291a01bea6412059
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -26,6 +26,22 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
## Usage
|
28
28
|
|
29
|
+
```ruby
|
30
|
+
builder = Csquery::Structured::Builder.new(:and_) do
|
31
|
+
not_('test', field:'genres')
|
32
|
+
|
33
|
+
or_ do
|
34
|
+
term_('star', field:'title', boost:2)
|
35
|
+
term_('star', field:'plot')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
builder.query
|
40
|
+
# => "(and (not field=genres 'test') (or (term field=title boost=2 'star') (term field=plot 'star')))"
|
41
|
+
```
|
42
|
+
|
43
|
+
You can also build a query manually without the DSL:
|
44
|
+
|
29
45
|
```ruby
|
30
46
|
Csquery::Structured.and_(
|
31
47
|
Csquery::Structured.not_('test', field:'genres'),
|
@@ -45,4 +61,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
45
61
|
|
46
62
|
## Contributing
|
47
63
|
|
48
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
64
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/marcy/csquery. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/lib/csquery.rb
CHANGED
data/lib/csquery/structured.rb
CHANGED
@@ -71,8 +71,8 @@ module Csquery
|
|
71
71
|
|
72
72
|
def format_range_values(start_val, end_val = nil)
|
73
73
|
start_paren = [nil, ''].include?(start_val) ? '{' : '['
|
74
|
-
start_value = [nil, ''].include?(start_val) ? '' : start_val
|
75
|
-
end_value = [nil, ''].include?(end_val) ? '' : end_val
|
74
|
+
start_value = [nil, ''].include?(start_val) ? '' : format_value(start_val)
|
75
|
+
end_value = [nil, ''].include?(end_val) ? '' : format_value(end_val)
|
76
76
|
end_paren = [nil, ''].include?(end_val) ? '}' : ']'
|
77
77
|
|
78
78
|
"#{start_paren}#{start_value},#{end_value}#{end_paren}"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Csquery
|
2
|
+
class Structured
|
3
|
+
class Builder < ExpressionBuilder
|
4
|
+
attr_reader :root
|
5
|
+
|
6
|
+
def initialize(root, &block)
|
7
|
+
@root = root
|
8
|
+
super(&block)
|
9
|
+
end
|
10
|
+
|
11
|
+
def query
|
12
|
+
Structured.public_send(root, *expressions).query
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Csquery
|
2
|
+
class Structured
|
3
|
+
class ExpressionBuilder
|
4
|
+
attr_reader :expressions
|
5
|
+
|
6
|
+
def initialize(&block)
|
7
|
+
@expressions = []
|
8
|
+
instance_exec(&block) if block_given?
|
9
|
+
end
|
10
|
+
|
11
|
+
def method_missing(m, *args, &block)
|
12
|
+
args = ExpressionBuilder.new(&block).expressions if block_given?
|
13
|
+
@expressions << Structured.public_send(m, *args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def or_concat_(&block)
|
17
|
+
expressions = ExpressionBuilder.new(&block).expressions
|
18
|
+
|
19
|
+
if expressions.length > 1
|
20
|
+
or_(*expressions)
|
21
|
+
else
|
22
|
+
@expressions.concat(expressions)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/csquery/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csquery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- marcy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- ".gitignore"
|
63
63
|
- ".rspec"
|
64
64
|
- ".travis.yml"
|
65
|
+
- CHANGELOG.md
|
65
66
|
- CODE_OF_CONDUCT.md
|
66
67
|
- Gemfile
|
67
68
|
- README.md
|
@@ -73,6 +74,8 @@ files:
|
|
73
74
|
- lib/csquery/expression.rb
|
74
75
|
- lib/csquery/field_value.rb
|
75
76
|
- lib/csquery/structured.rb
|
77
|
+
- lib/csquery/structured/builder.rb
|
78
|
+
- lib/csquery/structured/expression_builder.rb
|
76
79
|
- lib/csquery/version.rb
|
77
80
|
homepage: https://github.com/marcy/csquery
|
78
81
|
licenses: []
|
@@ -93,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
96
|
version: '0'
|
94
97
|
requirements: []
|
95
98
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.
|
99
|
+
rubygems_version: 2.6.13
|
97
100
|
signing_key:
|
98
101
|
specification_version: 4
|
99
102
|
summary: A simple query builder for Amazon Cloudsearch Structured query parser.
|