From 66621fb5b8a519b45500193c23ab97d3b9f1ac85 Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Tue, 26 Oct 2021 10:30:56 -0700 Subject: [PATCH 1/9] Update dependencies. --- ebnf.gemspec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ebnf.gemspec b/ebnf.gemspec index f1e2ecd..49e0a55 100755 --- a/ebnf.gemspec +++ b/ebnf.gemspec @@ -28,11 +28,11 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency 'scanf', '~> 1.0' gem.add_runtime_dependency 'rdf', '~> 3.1' # Required by sxp gem.add_runtime_dependency 'htmlentities', '~> 4.3' - gem.add_runtime_dependency 'unicode-types', '~> 1.6' - gem.add_runtime_dependency 'amazing_print', '~> 1.2' + gem.add_runtime_dependency 'unicode-types', '~> 1.7' + gem.add_runtime_dependency 'amazing_print', '~> 1.4' gem.add_development_dependency 'rdf-spec', '~> 3.1' gem.add_development_dependency 'rdf-turtle', '~> 3.1' - gem.add_development_dependency 'nokogiri', '~> 1.10' + gem.add_development_dependency 'nokogiri', '~> 1.12' gem.add_development_dependency 'erubis', '~> 2.7' gem.add_development_dependency 'rspec', '~> 3.10' gem.add_development_dependency 'rspec-its', '~> 1.3' From 6b4303319231b40757e35c5222eb5de92197c6b4 Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Tue, 26 Oct 2021 11:28:41 -0700 Subject: [PATCH 2/9] Update CI. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3475da9..0a4430c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest env: CI: true - ALLOW_FAILURES: ${{ endsWith(matrix.ruby, 'head') }} + ALLOW_FAILURES: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'jruby' }} strategy: fail-fast: false matrix: @@ -36,7 +36,7 @@ jobs: - name: Install dependencies run: bundle install --jobs 4 --retry 3 - name: Run tests - run: bundle exec rspec spec || $ALLOW_FAILURES + run: ruby --version; bundle exec rspec spec || $ALLOW_FAILURES - name: Coveralls GitHub Action uses: coverallsapp/github-action@v1.1.2 if: "matrix.ruby == '3.0'" From 5848adf7699f96ef0ee422a67d5f165ad0e6c37f Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Wed, 8 Dec 2021 10:58:04 -0800 Subject: [PATCH 3/9] Don't use bundler for 'ebnf' cli, which interferes when used in projects. --- bin/ebnf | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/ebnf b/bin/ebnf index fca115d..b84e069 100755 --- a/bin/ebnf +++ b/bin/ebnf @@ -6,7 +6,6 @@ # * And with First/Follow rules $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", 'lib'))) -require "bundler/setup" require 'rubygems' require 'getoptlong' require 'ebnf' From fd8bdd1b02e88ce17d31f4fa978281ec4fb13d3c Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Wed, 8 Dec 2021 11:08:51 -0800 Subject: [PATCH 4/9] Update documentation, dependencies, and version sync for 2.3. --- .github/workflows/ci.yml | 1 - Gemfile | 13 +++++++------ VERSION | 2 +- ebnf.gemspec | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a4430c..7326117 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,6 @@ jobs: fail-fast: false matrix: ruby: - - 2.5 - 2.6 - 2.7 - 3.0 diff --git a/Gemfile b/Gemfile index 97c28cb..ba49601 100644 --- a/Gemfile +++ b/Gemfile @@ -5,12 +5,13 @@ gem 'sxp', github: "dryruby/sxp.rb", branch: "develop" gem 'rdf', github: "ruby-rdf/rdf", branch: "develop" group :development do - gem 'rdf-spec', github: "ruby-rdf/rdf-spec", branch: "develop" - gem "byebug", platforms: :mri - gem 'psych', platforms: [:mri, :rbx] - gem "redcarpet", platforms: :mri - gem "rocco", platforms: :mri - gem "pygmentize", platforms: :mri + gem 'rdf-isomorphic', github: "ruby-rdf/rdf-isomorphic", branch: "develop" + gem 'rdf-spec', github: "ruby-rdf/rdf-spec", branch: "develop" + gem "byebug", platforms: :mri + gem 'psych', platforms: [:mri, :rbx] + gem "redcarpet", platforms: :mri + gem "rocco", platforms: :mri + gem "pygmentize", platforms: :mri end group :development, :test do diff --git a/VERSION b/VERSION index c043eea..276cbf9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.1 +2.3.0 diff --git a/ebnf.gemspec b/ebnf.gemspec index 49e0a55..310654a 100755 --- a/ebnf.gemspec +++ b/ebnf.gemspec @@ -22,15 +22,15 @@ Gem::Specification.new do |gem| gem.executables = %w(ebnf) gem.require_paths = %w(lib) - gem.required_ruby_version = '>= 2.4' + gem.required_ruby_version = '>= 2.6' gem.requirements = [] - gem.add_runtime_dependency 'sxp', '~> 1.1' + gem.add_runtime_dependency 'sxp', '~> 1.2' gem.add_runtime_dependency 'scanf', '~> 1.0' - gem.add_runtime_dependency 'rdf', '~> 3.1' # Required by sxp + gem.add_runtime_dependency 'rdf', '~> 3.2' # Required by sxp gem.add_runtime_dependency 'htmlentities', '~> 4.3' gem.add_runtime_dependency 'unicode-types', '~> 1.7' gem.add_runtime_dependency 'amazing_print', '~> 1.4' - gem.add_development_dependency 'rdf-spec', '~> 3.1' + gem.add_development_dependency 'rdf-spec', '~> 3.2' gem.add_development_dependency 'rdf-turtle', '~> 3.1' gem.add_development_dependency 'nokogiri', '~> 1.12' gem.add_development_dependency 'erubis', '~> 2.7' From 5f7d4226a5b67406887e136a62641040f0d32395 Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Mon, 13 Dec 2021 14:44:14 -0800 Subject: [PATCH 5/9] Sync more gem versions. --- ebnf.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ebnf.gemspec b/ebnf.gemspec index 310654a..36b2306 100755 --- a/ebnf.gemspec +++ b/ebnf.gemspec @@ -31,7 +31,7 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency 'unicode-types', '~> 1.7' gem.add_runtime_dependency 'amazing_print', '~> 1.4' gem.add_development_dependency 'rdf-spec', '~> 3.2' - gem.add_development_dependency 'rdf-turtle', '~> 3.1' + gem.add_development_dependency 'rdf-turtle', '~> 3.2' gem.add_development_dependency 'nokogiri', '~> 1.12' gem.add_development_dependency 'erubis', '~> 2.7' gem.add_development_dependency 'rspec', '~> 3.10' From b1e5f5d3ef5aa23198389bc103edbe5316599930 Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Mon, 13 Dec 2021 14:54:22 -0800 Subject: [PATCH 6/9] Add rdf-turtle to Gemfile. --- Gemfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile b/Gemfile index ba49601..035cdb7 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,7 @@ gem 'rdf', github: "ruby-rdf/rdf", branch: "develop" group :development do gem 'rdf-isomorphic', github: "ruby-rdf/rdf-isomorphic", branch: "develop" gem 'rdf-spec', github: "ruby-rdf/rdf-spec", branch: "develop" + gem 'rdf-turtle', github: "ruby-rdf/rdf-turtle", branch: "develop" gem "byebug", platforms: :mri gem 'psych', platforms: [:mri, :rbx] gem "redcarpet", platforms: :mri From d03a26a55e749ce6b800ca28e87c3d253aaa5a54 Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Thu, 16 Dec 2021 15:23:36 -0800 Subject: [PATCH 7/9] Synch with SXP changes in version 1.2 of the SXP gem. --- examples/abnf/parser.rb | 6 +++++- examples/ebnf-ll1-parser/parser.rb | 6 +++++- examples/ebnf-peg-parser/parser.rb | 6 +++++- examples/isoebnf/parser.rb | 6 +++++- lib/ebnf/base.rb | 5 ++++- lib/ebnf/rule.rb | 7 +++++-- spec/base_spec.rb | 1 + spec/ll1/data/parser.rb | 6 +++++- spec/peg/data/parser.rb | 6 +++++- 9 files changed, 40 insertions(+), 9 deletions(-) diff --git a/examples/abnf/parser.rb b/examples/abnf/parser.rb index b94ae54..fb9ab3b 100644 --- a/examples/abnf/parser.rb +++ b/examples/abnf/parser.rb @@ -272,7 +272,11 @@ def ast end # Output formatted S-Expression of grammar - def to_sxp + # + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) + # @return [String] + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(ast.map(&:for_sxp)) diff --git a/examples/ebnf-ll1-parser/parser.rb b/examples/ebnf-ll1-parser/parser.rb index e83555a..aa2ebc1 100644 --- a/examples/ebnf-ll1-parser/parser.rb +++ b/examples/ebnf-ll1-parser/parser.rb @@ -314,7 +314,11 @@ def initialize(input, **options, &block) end # Output formatted S-Expression of grammar - def to_sxp + # + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) + # @return [String] + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/examples/ebnf-peg-parser/parser.rb b/examples/ebnf-peg-parser/parser.rb index 0088051..bad6cfb 100644 --- a/examples/ebnf-peg-parser/parser.rb +++ b/examples/ebnf-peg-parser/parser.rb @@ -310,7 +310,11 @@ def initialize(input, **options, &block) end # Output formatted S-Expression of grammar - def to_sxp + # + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) + # @return [String] + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/examples/isoebnf/parser.rb b/examples/isoebnf/parser.rb index 3123876..e4b619f 100644 --- a/examples/isoebnf/parser.rb +++ b/examples/isoebnf/parser.rb @@ -230,7 +230,11 @@ def initialize(input, **options, &block) end # Output formatted S-Expression of grammar - def to_sxp + # + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) + # @return [String] + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/lib/ebnf/base.rb b/lib/ebnf/base.rb index df84bc7..7c3cc9f 100644 --- a/lib/ebnf/base.rb +++ b/lib/ebnf/base.rb @@ -201,8 +201,11 @@ def each(kind, &block) ## # Write out parsed syntax string as an S-Expression + # + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) SXP::Generator.string(ast.map(&:for_sxp)) end diff --git a/lib/ebnf/rule.rb b/lib/ebnf/rule.rb index f01e9c5..96f94d6 100644 --- a/lib/ebnf/rule.rb +++ b/lib/ebnf/rule.rb @@ -206,10 +206,12 @@ def for_sxp end # Return SXP representation of this rule + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) - for_sxp.to_sxp + for_sxp.to_sxp(prefixes: prefixes, base_uri: base_uri) end alias_method :to_s, :to_sxp @@ -416,6 +418,7 @@ def inspect # @param [Rule] other # @return [Boolean] def ==(other) + other.is_a?(Rule) && sym == other.sym && kind == other.kind && expr == other.expr diff --git a/spec/base_spec.rb b/spec/base_spec.rb index 44c5c17..73056e8 100644 --- a/spec/base_spec.rb +++ b/spec/base_spec.rb @@ -59,6 +59,7 @@ it "parses generated SXP for #{input.inspect}" do ast = parse(expected, format: :sxp).ast ast.each {|r| expect(r).to be_a(EBNF::Rule)} + ast.to_sxp expect(ast.to_sxp).to produce(expected, @debug) end end diff --git a/spec/ll1/data/parser.rb b/spec/ll1/data/parser.rb index e9a0079..21f2b9e 100644 --- a/spec/ll1/data/parser.rb +++ b/spec/ll1/data/parser.rb @@ -218,7 +218,11 @@ def initialize(input, **options, &block) end # Output formatted S-Expression of grammar - def to_sxp + # + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) + # @return [String] + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/spec/peg/data/parser.rb b/spec/peg/data/parser.rb index b15964b..d805370 100644 --- a/spec/peg/data/parser.rb +++ b/spec/peg/data/parser.rb @@ -159,7 +159,11 @@ def initialize(input, **options, &block) end # Output formatted S-Expression of grammar - def to_sxp + # + # @param [Hash{Symbol => RDF::URI}] prefixes(nil) + # @param [RDF::URI] base_uri(nil) + # @return [String] + def to_sxp(prefixes: nil, base_uri: nil) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) From dd64fd68bcd0af9ee26280c1a7b4dac66de9a7d8 Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Sun, 19 Dec 2021 12:45:19 -0800 Subject: [PATCH 8/9] Back off on explicit to_sxp arguments. --- examples/abnf/parser.rb | 4 +--- examples/ebnf-ll1-parser/parser.rb | 4 +--- examples/ebnf-peg-parser/parser.rb | 4 +--- examples/isoebnf/parser.rb | 4 +--- lib/ebnf/base.rb | 4 +--- lib/ebnf/rule.rb | 7 +++---- spec/ll1/data/parser.rb | 4 +--- spec/peg/data/parser.rb | 4 +--- 8 files changed, 10 insertions(+), 25 deletions(-) diff --git a/examples/abnf/parser.rb b/examples/abnf/parser.rb index fb9ab3b..3122bd1 100644 --- a/examples/abnf/parser.rb +++ b/examples/abnf/parser.rb @@ -273,10 +273,8 @@ def ast # Output formatted S-Expression of grammar # - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(ast.map(&:for_sxp)) diff --git a/examples/ebnf-ll1-parser/parser.rb b/examples/ebnf-ll1-parser/parser.rb index aa2ebc1..de210e0 100644 --- a/examples/ebnf-ll1-parser/parser.rb +++ b/examples/ebnf-ll1-parser/parser.rb @@ -315,10 +315,8 @@ def initialize(input, **options, &block) # Output formatted S-Expression of grammar # - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/examples/ebnf-peg-parser/parser.rb b/examples/ebnf-peg-parser/parser.rb index bad6cfb..a163534 100644 --- a/examples/ebnf-peg-parser/parser.rb +++ b/examples/ebnf-peg-parser/parser.rb @@ -311,10 +311,8 @@ def initialize(input, **options, &block) # Output formatted S-Expression of grammar # - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/examples/isoebnf/parser.rb b/examples/isoebnf/parser.rb index e4b619f..9555c41 100644 --- a/examples/isoebnf/parser.rb +++ b/examples/isoebnf/parser.rb @@ -231,10 +231,8 @@ def initialize(input, **options, &block) # Output formatted S-Expression of grammar # - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/lib/ebnf/base.rb b/lib/ebnf/base.rb index 7c3cc9f..de1bc3d 100644 --- a/lib/ebnf/base.rb +++ b/lib/ebnf/base.rb @@ -202,10 +202,8 @@ def each(kind, &block) ## # Write out parsed syntax string as an S-Expression # - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) SXP::Generator.string(ast.map(&:for_sxp)) end diff --git a/lib/ebnf/rule.rb b/lib/ebnf/rule.rb index 96f94d6..39625e6 100644 --- a/lib/ebnf/rule.rb +++ b/lib/ebnf/rule.rb @@ -206,12 +206,11 @@ def for_sxp end # Return SXP representation of this rule - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) + # # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) - for_sxp.to_sxp(prefixes: prefixes, base_uri: base_uri) + for_sxp.to_sxp(**options) end alias_method :to_s, :to_sxp diff --git a/spec/ll1/data/parser.rb b/spec/ll1/data/parser.rb index 21f2b9e..50fe07f 100644 --- a/spec/ll1/data/parser.rb +++ b/spec/ll1/data/parser.rb @@ -219,10 +219,8 @@ def initialize(input, **options, &block) # Output formatted S-Expression of grammar # - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) diff --git a/spec/peg/data/parser.rb b/spec/peg/data/parser.rb index d805370..4f652ed 100644 --- a/spec/peg/data/parser.rb +++ b/spec/peg/data/parser.rb @@ -160,10 +160,8 @@ def initialize(input, **options, &block) # Output formatted S-Expression of grammar # - # @param [Hash{Symbol => RDF::URI}] prefixes(nil) - # @param [RDF::URI] base_uri(nil) # @return [String] - def to_sxp(prefixes: nil, base_uri: nil) + def to_sxp(**options) require 'sxp' unless defined?(SXP) # Output rules as a formatted S-Expression SXP::Generator.string(@ast.map(&:for_sxp)) From c735eba37a95b4217ae48d6cf0372b75014b32db Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Sun, 26 Dec 2021 22:45:30 -0800 Subject: [PATCH 9/9] CI on Ruby 3.1. --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7326117..9827680 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,7 @@ jobs: - 2.6 - 2.7 - 3.0 + - 3.1 - ruby-head - jruby steps: