search_lingo 1.0.0 → 1.0.1

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: 44d740566f9aa77034514ebcfa50c3233527ac24
4
- data.tar.gz: 5cf05354fa6244b95e971062233830e1e6f68d6d
3
+ metadata.gz: 2bdd0cc2315966fc0399d9e24299260dba55e4ed
4
+ data.tar.gz: 25f6f3aab4dec1fb3a612cda703bdcd3cb42ed77
5
5
  SHA512:
6
- metadata.gz: f1629acbe2b30ee2d2355ce615ab92b497921dcdfcaf20018075818ba96bde07ff7e62a013cc28befa4e455e1e70f7544104ea23ddfc7dfdabb162db8ab96c8e
7
- data.tar.gz: fc856b51c4bdba1a5ec41eafdf77c2401cc36ea4dc814d34131c70f65134b9c2e4000a0efd22d66bfdeba49e439404044f422d1c2375c547b863e948ec600180
6
+ metadata.gz: 8bb20be38c50a3c4307d60bbe9ad95697fb1b9d526a37ae2c6d832f1356fa3913737f87d8ceb2955a2b5901c24208586d7bbfbf9fe55107ae4e7c5b552471288
7
+ data.tar.gz: e5a96234ad506535a278478306a0b7b9d9f0b4c408c75d4d81b55721af385dfa609648cdf8d887ae4abbd0f8c262027a0d256e83fe279e15475cdc5414a5559c
data/examples/complex.rb CHANGED
@@ -27,9 +27,7 @@ class JobSearch < AbstractSearch
27
27
  :date
28
28
  parser SearchLingo::Parsers::DateRangeParser.new Job.table_name,
29
29
  :date
30
- parser SearchLingo::Parsers::LTEDateParser.new Job.table_name,
31
- :date, connection: Job.connection
32
- parser SearchLingo::Parsers::GTEDateParser.new Job.table_name,
30
+ parser SearchLingo::Parsers::OpenDateRangeParser.new Job.table_name,
33
31
  :date, connection: Job.connection
34
32
 
35
33
  def default_parse(token)
@@ -44,18 +42,14 @@ class ReceiptSearch < AbstractSearch
44
42
  :check_date
45
43
  parser SearchLingo::Parsers::DateRangeParser.new Receipt.table_name,
46
44
  :check_date
47
- parser SearchLingo::Parsers::LTEDateParser.new Receipt.table_name,
48
- :check_date, connection: Receipt.connection
49
- parser SearchLingo::Parsers::GTEDateParser.new Receipt.table_name,
45
+ parser SearchLingo::Parsers::OpenDateRangeParser.new Receipt.table_name,
50
46
  :check_date, connection: Receipt.connection
51
47
 
52
48
  parser SearchLingo::Parsers::DateParser.new Receipt.table_name,
53
49
  :post_date, 'posted'
54
50
  parser SearchLingo::Parsers::DateRangeParser.new Receipt.table_name,
55
51
  :post_date, 'posted'
56
- parser SearchLingo::Parsers::LTEDateParser.new Receipt.table_name,
57
- :post_date, 'posted', connection: Receipt.connection
58
- parser SearchLingo::Parsers::GTEDateParser.new Receipt.table_name,
52
+ parser SearchLingo::Parsers::OpenDateRangeParser.new Receipt.table_name,
59
53
  :post_date, 'posted', connection: Receipt.connection
60
54
 
61
55
  parser do |token|
@@ -1,25 +1,13 @@
1
- require 'search_lingo/parsers/date_parser'
2
- require 'forwardable'
1
+ require 'search_lingo/parsers/open_date_range_parser'
3
2
 
4
3
  module SearchLingo
5
4
  module Parsers
6
- class GTEDateParser < DateParser
7
- extend Forwardable
8
-
9
- def call(token)
10
- token.match /\A#{prefix}(?<date>#{US_DATE})-\z/ do |m|
11
- date = parse m[:date]
12
- if date
13
- [:where, "#{quote_table_name table}.#{quote_column_name column} >= ?", date]
14
- end
15
- end
16
- end
17
-
18
- def post_initialize(connection:, **)
19
- @connection = connection
5
+ class GTEDateParser < OpenDateRangeParser
6
+ def initialize(*)
7
+ warn "DEPRECATION WARNING: use SearchLingo::Parsers::OpenDateRangeParser " \
8
+ "instead of #{self.class} (from #{caller.first})"
9
+ super
20
10
  end
21
-
22
- def_delegators :@connection, :quote_column_name, :quote_table_name
23
11
  end
24
12
  end
25
13
  end
@@ -1,25 +1,13 @@
1
- require 'search_lingo/parsers/date_parser'
2
- require 'forwardable'
1
+ require 'search_lingo/parsers/open_date_range_parser'
3
2
 
4
3
  module SearchLingo
5
4
  module Parsers
6
- class LTEDateParser < DateParser
7
- extend Forwardable
8
-
9
- def call(token)
10
- token.match /\A#{prefix}-(?<date>#{US_DATE})\z/ do |m|
11
- date = parse m[:date]
12
- if date
13
- [:where, "#{quote_table_name table}.#{quote_column_name column} <= ?", date]
14
- end
15
- end
16
- end
17
-
18
- def post_initialize(connection:, **)
19
- @connection = connection
5
+ class LTEDateParser < OpenDateRangeParser
6
+ def initialize(*)
7
+ warn "DEPRECATION WARNING: use SearchLingo::Parsers::OpenDateRangeParser " \
8
+ "instead of #{self.class} (from #{caller.first})"
9
+ super
20
10
  end
21
-
22
- def_delegators :@connection, :quote_column_name, :quote_table_name
23
11
  end
24
12
  end
25
13
  end
@@ -0,0 +1,38 @@
1
+ require 'search_lingo/parsers/date_parser'
2
+ require 'forwardable'
3
+
4
+ module SearchLingo
5
+ module Parsers
6
+ class OpenDateRangeParser < DateParser
7
+ extend Forwardable
8
+
9
+ DATE_RANGE = /(?:-(?<max>#{US_DATE})|(?<min>#{US_DATE})-)/
10
+
11
+ def call(token)
12
+ token.match /\A#{prefix}#{DATE_RANGE}\z/ do |m|
13
+ if m[:max]
14
+ date = parse m[:max]
15
+ [
16
+ :where,
17
+ "#{quote_table_name table}.#{quote_column_name column} <= ?",
18
+ date
19
+ ] if date
20
+ else
21
+ date = parse m[:min]
22
+ [
23
+ :where,
24
+ "#{quote_table_name table}.#{quote_column_name column} >= ?",
25
+ date
26
+ ] if date
27
+ end
28
+ end
29
+ end
30
+
31
+ def post_initialize(connection:, **)
32
+ @connection = connection
33
+ end
34
+
35
+ def_delegators :@connection, :quote_column_name, :quote_table_name
36
+ end
37
+ end
38
+ end
@@ -1,4 +1,6 @@
1
1
  require 'search_lingo/parsers/date_parser'
2
2
  require 'search_lingo/parsers/date_range_parser'
3
- require 'search_lingo/parsers/gte_date_parser'
3
+ require 'search_lingo/parsers/open_date_range_parser'
4
+
4
5
  require 'search_lingo/parsers/lte_date_parser'
6
+ require 'search_lingo/parsers/gte_date_parser'
@@ -1,3 +1,3 @@
1
1
  module SearchLingo
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: search_lingo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Parker
@@ -107,6 +107,7 @@ files:
107
107
  - lib/search_lingo/parsers/gte_date_parser.rb
108
108
  - lib/search_lingo/parsers/lte_date_parser.rb
109
109
  - lib/search_lingo/parsers/mdy.rb
110
+ - lib/search_lingo/parsers/open_date_range_parser.rb
110
111
  - lib/search_lingo/token.rb
111
112
  - lib/search_lingo/tokenizer.rb
112
113
  - lib/search_lingo/version.rb