Class: Stepmod::Utils::Change

Inherits:
Object
  • Object
show all
Defined in:
lib/stepmod/utils/change.rb

Constant Summary collapse

MODULE_TYPES =
{
  arm: "arm",
  mim: "mim",
  arm_longform: "arm_lf",
  mim_longform: "mim_lf",
  mapping: "mapping",
  changes: "changes",
  mapping_table: "mapping",
}.freeze
TYPES_WITHOUT_EXTENSION =
%w[
  changes
  mapping_table
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(stepmod_dir:, schema_name:, type:) ⇒ Change

Returns a new instance of Change.



26
27
28
29
30
31
32
# File 'lib/stepmod/utils/change.rb', line 26

def initialize(stepmod_dir:, schema_name:, type:)
  @stepmod_dir = stepmod_dir
  @change_editions = Stepmod::Utils::ChangeEditionCollection.new
  @mapping_table = {}
  @schema_name = schema_name
  @type = type
end

Instance Attribute Details

#change_editionsObject (readonly)

Returns the value of attribute change_editions.



9
10
11
# File 'lib/stepmod/utils/change.rb', line 9

def change_editions
  @change_editions
end

#mapping_tableObject

Returns the value of attribute mapping_table.



8
9
10
# File 'lib/stepmod/utils/change.rb', line 8

def mapping_table
  @mapping_table
end

#schema_nameObject

Returns the value of attribute schema_name.



8
9
10
# File 'lib/stepmod/utils/change.rb', line 8

def schema_name
  @schema_name
end

Instance Method Details

#add_change_edition(change_edition) ⇒ Object



42
43
44
# File 'lib/stepmod/utils/change.rb', line 42

def add_change_edition(change_edition)
  @change_editions[change_edition[:version]] = change_edition
end

#fetch_change_edition(version) ⇒ Object Also known as: []



46
47
48
# File 'lib/stepmod/utils/change.rb', line 46

def fetch_change_edition(version)
  @change_editions[version]
end

#module?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/stepmod/utils/change.rb', line 38

def module?
  MODULE_TYPES.key?(@type.to_sym) || MODULE_TYPES.value?(@type.to_s)
end

#resource?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/stepmod/utils/change.rb', line 34

def resource?
  !module?
end

#save_to_fileObject



51
52
53
54
55
56
57
58
59
60
# File 'lib/stepmod/utils/change.rb', line 51

def save_to_file
  change_hash = if @type == "mapping_table"
                  @mapping_table
                else
                  to_h
                end
  return if change_hash.empty?

  File.write(filepath(@type), Psych.dump(stringify_keys(change_hash)))
end

#to_hObject



62
63
64
65
66
67
68
69
70
71
# File 'lib/stepmod/utils/change.rb', line 62

def to_h
  change_editions_list = change_editions.to_h

  return {} if change_editions_list.empty?

  {
    "schema" => schema_name,
    "change_edition" => change_editions_list,
  }
end