Sha256: fc66aeaaa6cdcc4fdbd495de154a6be428fe9d915b85f9e38c4833f84cfcec28

Contents?: true

Size: 1.05 KB

Versions: 61

Compression:

Stored size: 1.05 KB

Contents

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

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

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

      COMMENT_OR_EMPTY_LINE_PATTERN = /^\s*#|^\s*$/
      LANGUAGE_PATTERN = /^\s*#\s*language\s*:\s*([a-zA-Z\-]+)/ #:nodoc:
      attr_reader :i18n_language

      def initialize(listener, force_ruby=false)
        @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)
        key = 'en'
        source.split(/\n/).each do |line|
          break unless COMMENT_OR_EMPTY_LINE_PATTERN =~ line
          if LANGUAGE_PATTERN =~ line
            key = $1
            break
          end
        end
        I18n.get(key)
      end

    end
  end
end

Version data entries

61 entries across 61 versions & 3 rubygems

Version Path
resque-pool-0.3.0 vendor/bundle/ruby/1.8/gems/gherkin-2.3.3/lib/gherkin/lexer/i18n_lexer.rb
resque-pool-0.3.0.beta.2 vendor/bundle/ruby/1.8/gems/gherkin-2.3.3/lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.5 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.5-x86-mswin32 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.5-x86-mingw32 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.5-universal-dotnet lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.5-java lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.4 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.4-x86-mswin32 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.4-x86-mingw32 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.4-universal-dotnet lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.4-java lib/gherkin/lexer/i18n_lexer.rb
vim-jar-0.1.2.0001 bundler/ruby/1.8/gems/gherkin-2.2.9/lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.3 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.3-x86-mswin32 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.3-x86-mingw32 lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.3-universal-dotnet lib/gherkin/lexer/i18n_lexer.rb
gherkin-2.3.3-java lib/gherkin/lexer/i18n_lexer.rb
vim-jar-0.1.2 bundler/ruby/1.8/gems/gherkin-2.2.9/lib/gherkin/lexer/i18n_lexer.rb
vim-jar-0.1.1 bundler/ruby/1.8/gems/gherkin-2.2.9/lib/gherkin/lexer/i18n_lexer.rb