Sha256: 197b83b5073184009e3d662d86648c3ad7f41cbe33b15b9c715f05594a02164c

Contents?: true

Size: 1.41 KB

Versions: 49

Compression:

Stored size: 1.41 KB

Contents

begin
  require 'treetop'
  require 'treetop/runtime'
  require 'treetop/ruby_extensions'
rescue LoadError
  require "rubygems"
  gem "treetop"
  require 'treetop'
  require 'treetop/runtime'
  require 'treetop/ruby_extensions'
end

module Cucumber
  module Parser
    # Raised if Cucumber fails to parse a feature file
    class SyntaxError < StandardError
      def initialize(parser, file, line_offset)
        tf = parser.terminal_failures
        expected = tf.size == 1 ? tf[0].expected_string.inspect : "one of #{tf.map{|f| f.expected_string.inspect}.uniq*', '}"
        line = parser.failure_line + line_offset
        message = "#{file}:#{line}:#{parser.failure_column}: Parse error, expected #{expected}."
        super(message)
      end
    end
    
    module TreetopExt #:nodoc:
      def parse_or_fail(source, file=nil, filter=nil, line_offset=0)
        parse_tree = parse(source)
        if parse_tree.nil?
          raise Cucumber::Parser::SyntaxError.new(self, file, line_offset)
        else
          ast = parse_tree.build(filter) # may return nil if it doesn't match filter.
          ast.file = file unless ast.nil?
          ast
        end
      end
    end
  end
end

module Treetop #:nodoc:
  module Runtime #:nodoc:
    class SyntaxNode #:nodoc:
      def line
        input.line_of(interval.first)
      end
    end

    class CompiledParser #:nodoc:
      include Cucumber::Parser::TreetopExt
    end
  end
end

Version data entries

49 entries across 49 versions & 9 rubygems

Version Path
aslakhellesoy-cucumber-0.3.100 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.101.2 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.101 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.102.1 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.102.2 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.102 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.103 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.104 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.97 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.98 lib/cucumber/parser/treetop_ext.rb
aslakhellesoy-cucumber-0.3.99 lib/cucumber/parser/treetop_ext.rb
dwaite-cucumber-0.3.101 lib/cucumber/parser/treetop_ext.rb
engineyard-cucumber-0.3.101 lib/cucumber/parser/treetop_ext.rb
kosmas58-cucumber-0.3.100 lib/cucumber/parser/treetop_ext.rb
kosmas58-cucumber-0.3.102 lib/cucumber/parser/treetop_ext.rb
kosmas58-cucumber-0.3.103 lib/cucumber/parser/treetop_ext.rb
kosmas58-cucumber-0.3.97 lib/cucumber/parser/treetop_ext.rb
kosmas58-cucumber-0.3.98 lib/cucumber/parser/treetop_ext.rb
kosmas58-cucumber-0.3.99 lib/cucumber/parser/treetop_ext.rb
davidtrogers-cucumber-0.6.2 lib/cucumber/parser/treetop_ext.rb