Class: RailsParser::Parsers::Rails::ApplicationConfigParser

Inherits:
SexpProcessor
  • Object
show all
Defined in:
lib/rails_parser/parsers/rails/application_config_parser.rb

Overview

Gemfile Parser

The class inspects an application.rb config file and extracts the options

It works like this: parser = ApplicationConfigParser.new parser.parse(“/path/to/application.rb”) parser.application_name #=> “Foobar”

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeApplicationConfigParser

Returns a new instance of ApplicationConfigParser.



18
19
20
21
# File 'lib/rails_parser/parsers/rails/application_config_parser.rb', line 18

def initialize
  super
  self.auto_shift_type = true
end

Instance Attribute Details

#application_nameObject (readonly)

Returns the value of attribute application_name.



15
16
17
# File 'lib/rails_parser/parsers/rails/application_config_parser.rb', line 15

def application_name
  @application_name
end

#config_optionsObject (readonly)

Returns the value of attribute config_options.



16
17
18
# File 'lib/rails_parser/parsers/rails/application_config_parser.rb', line 16

def config_options
  @config_options
end

Instance Method Details

#parse(filepath) ⇒ Object



23
24
25
26
27
# File 'lib/rails_parser/parsers/rails/application_config_parser.rb', line 23

def parse(filepath)
  content = File.read(filepath)
  sexp = RubyParser.new.process(content)
  process(sexp)
end

#process_class(exp) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rails_parser/parsers/rails/application_config_parser.rb', line 36

def process_class(exp)
  class_name = exp.shift
  block_exp = exp.pop
  parent_class = exp.shift
  
  if parent_class && parent_class[1][1] == :Rails && parent_class[2] == :Application
    parser = ConfigParser.new
    parser.process(block_exp)
    @config_options = parser.config_options
  end
  
  exp
end

#process_module(exp) ⇒ Object



29
30
31
32
33
34
# File 'lib/rails_parser/parsers/rails/application_config_parser.rb', line 29

def process_module(exp)
  @application_name = exp.shift.to_s
  module_exp = exp.shift
  process(module_exp)
  exp
end