Class: Archruby::Architecture::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/archruby/architecture/parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_file_path, base_path) ⇒ Parser

Returns a new instance of Parser.



9
10
11
12
13
14
15
16
17
# File 'lib/archruby/architecture/parser.rb', line 9

def initialize config_file_path, base_path
  @config_file = config_file_path
  @base_path = base_path
  @modules = []
  parse
  ruby_std_lib_module
  ruby_core_module
  unknow_module
end

Instance Attribute Details

#modulesObject (readonly)

Returns the value of attribute modules.



7
8
9
# File 'lib/archruby/architecture/parser.rb', line 7

def modules
  @modules
end

Instance Method Details

#parseObject



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/archruby/architecture/parser.rb', line 19

def parse
  parsed_yaml = yaml_parser.load_file @config_file
  parsed_yaml.each do |module_name, definitions|
    begin
      config_definition = Archruby::Architecture::ConfigDefinition.new module_name, definitions
      module_definition = Archruby::Architecture::ModuleDefinition.new config_definition, @base_path
    rescue ArchChecker::MultipleConstraints => e
      STDOUT.puts "The config file is not right: #{e.msg} | err_code: #{e.status_code} | module_definition: #{module_name}"
      exit(e.status_code)
    end
    @modules << module_definition
  end
end

#ruby_core_moduleObject



44
45
46
47
48
49
# File 'lib/archruby/architecture/parser.rb', line 44

def ruby_core_module
  config_definition_core = Archruby::Architecture::ConfigDefinition.new Archruby::Ruby::CORE_LIB_NAME, {"gems"=>"", "files"=>"", "allowed"=>"", "forbidden" => ""}
  module_definiton_core = Archruby::Architecture::ModuleDefinition.new(config_definition_core, @base_path)
  module_definiton_core.classes = Archruby::Ruby::CORE_LIBRARY_CLASSES
  @modules << module_definiton_core
end

#ruby_std_lib_moduleObject



37
38
39
40
41
42
# File 'lib/archruby/architecture/parser.rb', line 37

def ruby_std_lib_module
  config_definition_std_lib = Archruby::Architecture::ConfigDefinition.new Archruby::Ruby::STD_LIB_NAME, {"gems"=>"", "files"=>"", "allowed"=>"", "forbidden" => ""}
  module_definiton_std_lib = Archruby::Architecture::ModuleDefinition.new(config_definition_std_lib, @base_path)
  module_definiton_std_lib.classes = Archruby::Ruby::STD_LIBRARY_CLASSES
  @modules << module_definiton_std_lib
end

#unknow_moduleObject



51
52
53
54
# File 'lib/archruby/architecture/parser.rb', line 51

def unknow_module
  config_definition_unknow = Archruby::Architecture::ConfigDefinition.new "unknown", {"gems"=>"unknown", "files"=>"", "allowed"=>"", "forbidden" => ""}
  @modules << Archruby::Architecture::ModuleDefinition.new(config_definition_unknow, @base_path)
end

#yaml_parserObject



33
34
35
# File 'lib/archruby/architecture/parser.rb', line 33

def yaml_parser
  YAML
end