module RailsRouteChecker::Parsers::Loader

Public Class Methods

haml_available?() click to toggle source
# File lib/rails-route-checker/parsers/loader.rb, line 24
def haml_available?
  return @haml_available if defined?(@haml_available)

  @haml_available = gem_installed?('haml')
end
load_parser(type) click to toggle source
# File lib/rails-route-checker/parsers/loader.rb, line 7
def load_parser(type)
  case type
  when :ruby
    load_basic_parser(:ruby)
  when :erb
    load_basic_parser(:ruby)
    load_basic_parser(:erb)
  when :haml
    if haml_available?
      load_basic_parser(:ruby)
      load_haml_parser
    end
  else
    raise "Unrecognised parser attempting to be loaded: #{type}"
  end
end

Private Class Methods

gem_installed?(name, version_requirement = nil) click to toggle source
# File lib/rails-route-checker/parsers/loader.rb, line 32
def gem_installed?(name, version_requirement = nil)
  Gem::Dependency.new(name, version_requirement).matching_specs.any?
end
if_unloaded(parser) { || ... } click to toggle source
# File lib/rails-route-checker/parsers/loader.rb, line 49
def if_unloaded(parser)
  @loaded_parsers ||= {}
  return false if @loaded_parsers[parser]

  yield
  @loaded_parsers[parser] = true
end
load_basic_parser(parser_name) click to toggle source
# File lib/rails-route-checker/parsers/loader.rb, line 36
def load_basic_parser(parser_name)
  if_unloaded(parser_name) do
    require_relative "#{parser_name}_parser"
  end
end
load_haml_parser() click to toggle source
# File lib/rails-route-checker/parsers/loader.rb, line 42
def load_haml_parser
  if_unloaded(:haml) do
    require 'haml'
    require_relative 'haml_parser'
  end
end