class RailInspector::Visitor::FrameworkDefault::VersionedConfig

Attributes

Public Class Methods

# File tools/rail_inspector/lib/rail_inspector/visitor/framework_default.rb, line 49
def initialize
  @configs = {}
  @framework_stack = []
end

Public Instance Methods

# File tools/rail_inspector/lib/rail_inspector/visitor/framework_default.rb, line 54
def config_for(node)
  visit(node)
  @configs
end
# File tools/rail_inspector/lib/rail_inspector/visitor/framework_default.rb, line 74
def visit_assign(node)
  assert_framework(node)

  target = SyntaxTree::Formatter.format(nil, node.target)
  value =
    case node.value
    when SyntaxTree::HashLiteral
      HashToString.new.tap { |v| v.visit(node.value) }.to_s
    when SyntaxTree::StringConcat
      MultilineToString.new.tap { |v| v.visit(node.value) }.to_s
    else
      SyntaxTree::Formatter.format(nil, node.value)
    end
  @configs[target] = value
end
Calls superclass method
# File tools/rail_inspector/lib/rail_inspector/visitor/framework_default.rb, line 60
def visit_if(node)
  unless new_framework = respond_to_framework?(node.predicate)
    return super
  end

  if ENV["STRICT"] && current_framework
    raise "Potentially nested framework? Current: '#{current_framework}', found: '#{new_framework}'"
  end

  @framework_stack << new_framework
  super
  @framework_stack.pop
end
Calls superclass method
# File tools/rail_inspector/lib/rail_inspector/visitor/framework_default.rb, line 90
def visit_opassign(node)
  if node.operator.name == :"||="
    visit_assign(node)
  else
    super
  end
end