Class: DtkCommon::DSL::DirectoryParser

Inherits:
Object
  • Object
show all
Defined in:
lib/dsl/directory_parser.rb,
lib/dsl/directory_parser/git.rb,
lib/dsl/directory_parser/linux.rb

Direct Known Subclasses

Git, Linux

Defined Under Namespace

Classes: Git, Linux

Constant Summary collapse

DirectoryParserMethods =
[:parse_directory]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory_type) ⇒ DirectoryParser

Returns a new instance of DirectoryParser.



7
8
9
10
11
12
# File 'lib/dsl/directory_parser.rb', line 7

def initialize(directory_type)
  unless @file_info = file_info(directory_type)
    raise Error.new("Illegal directory type (#{directory_type})")
  end
  @directory_type = directory_type
end

Class Method Details

.implements_method?(method_name) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/dsl/directory_parser.rb', line 15

def self.implements_method?(method_name)
  DirectoryParserMethods.include?(method_name)
end

Instance Method Details

#parse_directory(file_type = nil, opts = {}) ⇒ Object

if file_type is given returns DtkCommon::DSL::FileParser::OutputArray otherwise returns hash at top level taht is indexed by file types found



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dsl/directory_parser.rb', line 21

def parse_directory(file_type=nil,opts={})
  pruned_file_info = 
    if file_type
      matches = @file_info.select{|r|r[:file_type] == file_type}
      if matches.empty?
        raise Error.new("Illegal file type (#{file_type}) for directory_type (#{directory_type})")
      end
      matches
    else
      @file_info
    end
  #instantiate any rel_path_pattern
  pruned_file_instances  = instantiate_rel_path_patterns(pruned_file_info)
  ret = Hash.new
  pruned_file_instances.each do |r|
    file_content = get_content(r[:rel_path])
    opts[:file_path] = r[:rel_path]
    new_parsed = FileParser.parse_content(r[:file_type],file_content,opts)
    ret[file_type] = (ret[file_type] ? ret[file_type] + new_parsed : new_parsed)
  end
  file_type.nil? ? ret : ret[file_type]
end