csquery 0.1.2 → 0.1.3
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.
- 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.
|