Sha256: deef8e7183b94248d0826bc810d91a67f150f965e9e148c28c00cbaff606eeb0

Contents?: true

Size: 1011 Bytes

Versions: 20

Compression:

Stored size: 1011 Bytes

Contents

require 'gherkin/i18n'

module Gherkin
  I18nLexerNotFound = Class.new(LoadError)
  LexingError = Class.new(StandardError)

  # The main entry point to lexing Gherkin source.
  class I18nLexer
    LANGUAGE_PATTERN = /language\s*:\s*(.*)/ #:nodoc:

    attr_reader :i18n_language

    class << self
      def new(listener, force_ruby)
        if !force_ruby && defined?(JRUBY_VERSION)
          require 'gherkin.jar'
          Java::Gherkin::I18nLexer.new(listener)
        else
          super
        end
      end
    end

    def initialize(listener, force_ruby)
      @listener = listener
      @force_ruby = force_ruby
    end

    def scan(source)
      create_delegate(source).scan(source)
    end

  private

    def create_delegate(source)
      @i18n_language = lang(source)
      @i18n_language.lexer(@listener, @force_ruby)
    end

    def lang(source)
      line_one = source.split(/\n/)[0]
      match = LANGUAGE_PATTERN.match(line_one)
      I18n.get(match ? match[1] : 'en')
    end

  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
gherkin-1.0.8 lib/gherkin/i18n_lexer.rb
gherkin-1.0.8-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.8-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.8-java lib/gherkin/i18n_lexer.rb
gherkin-1.0.7 lib/gherkin/i18n_lexer.rb
gherkin-1.0.7-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.7-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.7-java lib/gherkin/i18n_lexer.rb
gherkin-1.0.6 lib/gherkin/i18n_lexer.rb
gherkin-1.0.6-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.6-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.6-java lib/gherkin/i18n_lexer.rb
gherkin-1.0.5-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.5-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.5-java lib/gherkin/i18n_lexer.rb
gherkin-1.0.5 lib/gherkin/i18n_lexer.rb
gherkin-1.0.4-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.4-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-1.0.4-java lib/gherkin/i18n_lexer.rb
gherkin-1.0.4 lib/gherkin/i18n_lexer.rb