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 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.