From 530951ff45fb78c907a5ff86bc585f19fea831aa Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Wed, 5 Feb 2020 13:40:37 +0100 Subject: [PATCH] Upstream sync --- Gemfile | 2 + Gemfile.lock | 4 + README.md | 8 + Rakefile | 13 + coverage/.resultset.json | 223 +++--- coverage/index.html | 672 +++++++++++------- lib/lexer.rb | 107 +++ lib/parser-parser-part/.gitignore | 4 - lib/parser-parser-part/README.md | 19 - lib/parser-parser-part/Rakefile | 20 - lib/parser-parser-part/grammar.y | 26 - .../spec/query_lexer_spec.rb | 259 ------- .../spec/query_parser_spec.rb | 164 ----- lib/parser-parser-part/specification.rex | 35 - lib/parser.rb | 181 +++++ lib/pg_searchable_regex.rb | 5 +- lib/specification.rex | 4 +- lib/text_to_sql_query.rb | 92 +++ pkg/pg_searchable_regex-1.0.13.gem | Bin 15360 -> 0 bytes pkg/pg_searchable_regex-1.0.21.gem | Bin 0 -> 20992 bytes spec/lib/text_to_sql_query_spec.rb | 61 ++ version.rb | 2 +- 22 files changed, 1016 insertions(+), 885 deletions(-) create mode 100644 lib/lexer.rb delete mode 100644 lib/parser-parser-part/.gitignore delete mode 100644 lib/parser-parser-part/README.md delete mode 100644 lib/parser-parser-part/Rakefile delete mode 100644 lib/parser-parser-part/grammar.y delete mode 100644 lib/parser-parser-part/spec/query_lexer_spec.rb delete mode 100644 lib/parser-parser-part/spec/query_parser_spec.rb delete mode 100644 lib/parser-parser-part/specification.rex create mode 100644 lib/parser.rb create mode 100644 lib/text_to_sql_query.rb delete mode 100644 pkg/pg_searchable_regex-1.0.13.gem create mode 100644 pkg/pg_searchable_regex-1.0.21.gem create mode 100644 spec/lib/text_to_sql_query_spec.rb diff --git a/Gemfile b/Gemfile index 31e2537..54ad0fd 100644 --- a/Gemfile +++ b/Gemfile @@ -23,4 +23,6 @@ group :development do gem 'rubocop', '~> 0.54', require: false gem 'rubocop-rspec', '~> 1.23', require: false gem 'simplecov', '~> 0.16', require: false + gem "rexical" + gem "racc" end diff --git a/Gemfile.lock b/Gemfile.lock index 1bf8e16..ca4785b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,11 +76,13 @@ GEM coderay (~> 1.1.0) method_source (~> 0.9.0) public_suffix (3.1.1) + racc (1.4.16) rack (1.6.11) rainbow (3.0.0) rake (12.3.2) rdoc (3.12.2) json (~> 1.4) + rexical (1.0.7) rspec (3.8.0) rspec-core (~> 3.8.0) rspec-expectations (~> 3.8.0) @@ -132,7 +134,9 @@ DEPENDENCIES juwelier (~> 2.1) pg (~> 0.15) pry (~> 0.12) + racc rdoc (~> 3.12) + rexical rspec (~> 3.8) rubocop (~> 0.54) rubocop-rspec (~> 1.23) diff --git a/README.md b/README.md index 14d73fb..9f52a93 100644 --- a/README.md +++ b/README.md @@ -119,3 +119,11 @@ To run the test suite create `.env.test.local` file containing the same entries ## CONTRIBUTING Make sure the test coverage remains at 100%, there are no rubocop complaints (`bundle exec rubocop`) and make a Pull Request. + + +## Modifying parser and lexer + +* `rake lexer` - generates `lexer.rb` file based on `specification.rex` file +* `rake parser` - generates `parser.rb` file based on `grammar.y` file +* `rake generate` - generates both `lexer.rb` and `parser.rb` files + diff --git a/Rakefile b/Rakefile index 65ca83f..f883b7a 100644 --- a/Rakefile +++ b/Rakefile @@ -44,3 +44,16 @@ Rake::RDocTask.new do |rdoc| rdoc.rdoc_files.include('README*') rdoc.rdoc_files.include('lib/**/*.rb') end + +desc 'Generate Lexer' +task :lexer do + `rex ./lib/specification.rex -o ./lib/lexer.rb` +end + +desc 'Generate Parser' +task :parser do + `racc ./lib/grammar.y -o ./lib/parser.rb` +end + +desc 'Generate Lexer and Parser' +task generate: %i[lexer parser] diff --git a/coverage/.resultset.json b/coverage/.resultset.json index 5f70270..ef5ab35 100644 --- a/coverage/.resultset.json +++ b/coverage/.resultset.json @@ -9,69 +9,69 @@ 1, 1, null, - 1, - 1, + 0, + 0, null, - 1, - 12, - null, - null, - null, - null, - null, - 1, - 1, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - 12, - 12, - 12, - 12, - 12, - 12, - 12, - 12, - 12, - 12, - null, - null, - 1, - 12, - 43, - null, - null, - null, - 1, - 31, - 30, - null, - null, - 1, + 0, 0, null, null, - 1, + null, + null, + null, + 0, 0, null, null, - 1, - 12, null, null, - 1, + null, + null, + null, + null, + null, + null, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, null, null, - 1, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 0, 0, 0, 0, @@ -180,75 +180,102 @@ null, null ], - "/home/hamo/projects/toptal/outfrontmedia/pg_searchable/lib/text_to_regex_query.rb": [ + "/home/hamo/projects/toptal/outfrontmedia/pg_searchable/lib/text_to_sql_query.rb": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, null, null, null, null, null, - 1, - 1, - 35, - 35, - 35, - 35, - 37, - 37, - 7, null, null, null, - 1, - 5, - 5, - 5, - 5, - 5, - 5, null, null, - 1, - null, - 1, - 5, null, null, - 1, - 5, - 5, - 5, null, null, - 1, - 5, - null, - 5, - 7, - 7, - 5, - 5, - null, - 5, - 3, - null, - 5, null, null, - 1, - 5, - 13, - 13, null, - 5, - 8, null, - 5, null, - 5, null, null ] }, - "timestamp": 1579269179 + "timestamp": 1580827025 } } diff --git a/coverage/index.html b/coverage/index.html index 9a8e9c8..cb2a0c4 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -14,27 +14,27 @@ loading