Sha256: cbdc04cebd3f8132fb0a932057c3c806d8e482c78d11b35fea3ca81d35cfa0c4

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

class Code
  class Parser
    class Nothing < Language
      def nothing_keyword
        str("nothing")
      end

      def root
        nothing_keyword.aka(:nothing)
      end
    end

    class ThenWithBuffer < Language
      def root
        any.repeat(1).then { "something-else" }
      end
    end

    class ThenWithBufferTransformed < Language
      def root
        any.repeat(1).then { |buffer| buffer.upcase }
      end
    end

    class ThenWithOutput < Language
      def root
        any.repeat(1).aka(:something).then do |output|
          output[:something].upcase
        end
      end
    end
  end
end

RSpec.describe Language do
  it "works with nothing" do
    expect(Code::Parser::Nothing.parse("nothing")).to eq({ nothing: "nothing" })
  end

  it "works with then with buffer" do
    expect(Code::Parser::ThenWithBuffer.parse("something")).to eq("something-else")
  end

  it "works with then with buffer transformed" do
    expect(Code::Parser::ThenWithBufferTransformed.parse("something")).to eq("SOMETHING")
  end

  it "works with then with output" do
    expect(Code::Parser::ThenWithOutput.parse("value")).to eq("VALUE")
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
language-ruby-0.8.1 spec/language_spec.rb
language-ruby-0.8.0 spec/language_spec.rb
language-ruby-0.7.0 spec/language_spec.rb