Class: RgGen::Core::InputBase::Loader

Inherits:
Object
  • Object
show all
Includes:
RaiseError
Defined in:
lib/rggen/core/input_base/loader.rb

Direct Known Subclasses

Configuration::Loader, RegisterMap::Loader

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(extractors, ignore_values) ⇒ Loader



18
19
20
21
# File 'lib/rggen/core/input_base/loader.rb', line 18

def initialize(extractors, ignore_values)
  @extractors = extractors
  @ignore_values = ignore_values
end

Class Method Details

.require_no_input_fileObject



14
15
16
# File 'lib/rggen/core/input_base/loader.rb', line 14

def self.require_no_input_file
  @require_input_file = false
end

.support_types(types = nil) ⇒ Object



9
10
11
12
# File 'lib/rggen/core/input_base/loader.rb', line 9

def self.support_types(types = nil)
  types && (@support_types ||= []).concat(types.map(&:to_sym))
  @support_types
end

Instance Method Details

#load_data(input_data, valid_value_lists, file = nil) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/rggen/core/input_base/loader.rb', line 35

def load_data(input_data, valid_value_lists, file = nil)
  if require_input_file?
    load_file(input_data, valid_value_lists, file)
  else
    load_builtin_data(input_data)
  end
end

#load_file(input_data, valid_value_lists, file) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/rggen/core/input_base/loader.rb', line 43

def load_file(input_data, valid_value_lists, file)
  File.readable?(file) ||
    (raise Core::LoadError.new('cannot load such file', file))
  @input_data = input_data
  @valid_value_lists = valid_value_lists
  format_data(read_file(file), input_data, input_data.layer, file)
end

#require_input_file?Boolean



29
30
31
32
33
# File 'lib/rggen/core/input_base/loader.rb', line 29

def require_input_file?
  loader = self.class
  !loader.instance_variable_defined?(:@require_input_file) ||
    loader.instance_variable_get(:@require_input_file)
end

#support?(file) ⇒ Boolean



23
24
25
26
27
# File 'lib/rggen/core/input_base/loader.rb', line 23

def support?(file)
  ext = File.ext(file).to_sym
  types = self.class.support_types
  types&.any? { |type| type.casecmp?(ext) } || false
end