search_lingo 1.0.0 → 1.0.1

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