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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e52a544d9ece14775462fc5cacc08be8e4f10f5
4
- data.tar.gz: 325e403731957769f74f0b97ee2b0cf020fcac5c
3
+ metadata.gz: 4445b09e899d09608c7a8c1a5f58d4d39ffdcb19
4
+ data.tar.gz: a3e064a441ca16b2fc28101973ba7a9330aebe7c
5
5
  SHA512:
6
- metadata.gz: 264a55240faffa2adbc0c9f0bc7489c51c6f532486ca42eb059efab2d5564a65adcff07f1c3499b14f959e85373a9863920dce6f84a8c1d385d2b812c7358b12
7
- data.tar.gz: 60126045b4b5abee10b25066e7bb9a328d70eadae06ef5409154c1a297a68c8e17ebc559f71b11f9a7de787f63c4f67cff783f414cc92e6ef4011a827c994a88
6
+ metadata.gz: c045cda5e38dbf774e258f0986b992e4ec97764098b0c9111f54b5635489c38d22e0fc07f490e47e5cf1674ec823d9a78914175c0a39a6de76076f2cc962a562
7
+ data.tar.gz: e7ba4bb72faf160fb3a8c20a1d398584698310068176fc4e9fbca7a69eaf4a4fc055db321f27a1a137c806241a9ec4b270765403bac60cc6291a01bea6412059
@@ -0,0 +1,3 @@
1
+ ## v0.1.3 (2018-02-01)
2
+ * Quote string values in ranges [#2]
3
+ * Add Csquery::Structured::Builder [#3]
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/[USERNAME]/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.
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.
@@ -1,6 +1,8 @@
1
1
  require "csquery/version"
2
2
 
3
3
  require "csquery/structured"
4
+ require "csquery/structured/expression_builder"
5
+ require "csquery/structured/builder"
4
6
 
5
7
  require "csquery/field_value"
6
8
  require "csquery/expression"
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Csquery
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
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.2
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: 2016-06-27 00:00:00.000000000 Z
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.4.5.1
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.