Module: Gherkin::Lexer

Defined in:
lib/gherkin/lexer.rb

Constant Summary collapse

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

Class Method Summary collapse

Class Method Details

.[](i18n_lang) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/gherkin/lexer.rb', line 7

def [](i18n_lang)
  begin
    # Uncomment the line below (during development) to force use of Ruby lexer
    # return rb[i18n_lang]

    if defined?(JRUBY_VERSION)
      java[i18n_lang]
    else
      begin
        c[i18n_lang]
      rescue NameError, LoadError => e
        warn("WARNING: #{e.message}. Reverting to Ruby lexer")
        rb[i18n_lang]
      end
    end
  rescue LoadError => e
    raise I18nLexerNotFound, "No lexer was found for #{i18n_lang} (#{e.message}). Supported languages are listed in gherkin/i18n.yml."
  end
end

.cObject



27
28
29
30
# File 'lib/gherkin/lexer.rb', line 27

def c
  require 'gherkin/c_lexer'
  CLexer
end

.javaObject



32
33
34
35
# File 'lib/gherkin/lexer.rb', line 32

def java
  require 'gherkin/java_lexer'
  JavaLexer
end

.rbObject



37
38
39
40
# File 'lib/gherkin/lexer.rb', line 37

def rb
  require 'gherkin/rb_lexer'
  RbLexer
end