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.



24
25
26
27
28
29
# File 'lib/dsl/directory_parser.rb', line 24

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

.default_rel_path?(directory_type, file_type) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
68
69
# File 'lib/dsl/directory_parser.rb', line 65

def self.default_rel_path?(directory_type,file_type)
  if match = file_info_single_match?(directory_type,file_type)
    match[:default_rel_path]
  end
end

.implements_method?(method_name) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/dsl/directory_parser.rb', line 32

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

Instance Method Details

#file_content(rel_file_path) ⇒ Object



36
37
38
# File 'lib/dsl/directory_parser.rb', line 36

def file_content(rel_file_path)
  get_content(rel_file_path)
end

#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



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/dsl/directory_parser.rb', line 42

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