Sha256: e5b5075d24c356c57cab7e41106d71c04fc510af2e3e1bc45358df37480c5d25

Contents?: true

Size: 850 Bytes

Versions: 15

Compression:

Stored size: 850 Bytes

Contents

require 'gherkin/i18n'
require 'gherkin/native'

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

  # The main entry point to lexing Gherkin source.
  class I18nLexer
    native_impl('gherkin')

    LANGUAGE_PATTERN = /language\s*:\s*(.*)/ #:nodoc:
    attr_reader :i18n_language

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

    def scan(source, uri, offset)
      create_delegate(source).scan(source, uri, offset)
    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

15 entries across 15 versions & 1 rubygems

Version Path
gherkin-2.0.2 lib/gherkin/i18n_lexer.rb
gherkin-2.0.2-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-2.0.2-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-2.0.2-universal-dotnet lib/gherkin/i18n_lexer.rb
gherkin-2.0.2-java lib/gherkin/i18n_lexer.rb
gherkin-2.0.1 lib/gherkin/i18n_lexer.rb
gherkin-2.0.1-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-2.0.1-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-2.0.1-universal-dotnet lib/gherkin/i18n_lexer.rb
gherkin-2.0.1-java lib/gherkin/i18n_lexer.rb
gherkin-2.0.0 lib/gherkin/i18n_lexer.rb
gherkin-2.0.0-i386-mswin32 lib/gherkin/i18n_lexer.rb
gherkin-2.0.0-i386-mingw32 lib/gherkin/i18n_lexer.rb
gherkin-2.0.0-universal-dotnet lib/gherkin/i18n_lexer.rb
gherkin-2.0.0-java lib/gherkin/i18n_lexer.rb