class Qonfig::Commands::Definition::LoadFromJSON

@api private @since 0.5.0

Attributes

file_path[R]

@return [String, Pathname]

@api private @since 0.5.0

strict[R]

@return [Boolean]

@api private @sicne 0.5.0

Public Class Methods

new(file_path, strict: true) click to toggle source

@param file_path [String, Pathname] @option strict [Boolean]

@api private @since 0.5.0

# File lib/qonfig/commands/definition/load_from_json.rb, line 26
def initialize(file_path, strict: true)
  @file_path = file_path
  @strict = strict
end

Public Instance Methods

call(data_set, settings) click to toggle source

@param data_set [Qonfig::DataSet] @param settings [Qonfig::Settings] @return [void]

@api private @since 0.5.0

# File lib/qonfig/commands/definition/load_from_json.rb, line 37
def call(data_set, settings)
  json_data = Qonfig::Loaders::JSON.load_file(file_path, fail_on_unexist: strict)

  raise(
    Qonfig::IncompatibleJSONStructureError,
    'JSON object must be a hash-like structure'
  ) unless json_data.is_a?(Hash)

  json_based_settings = build_data_set_klass(json_data).new.settings
  settings.__append_settings__(json_based_settings)
end

Private Instance Methods

build_data_set_klass(json_data) click to toggle source

@param json_data [Hash] @return [Class<Qonfig::DataSet>]

@api private @since 0.5.0

# File lib/qonfig/commands/definition/load_from_json.rb, line 56
def build_data_set_klass(json_data)
  Qonfig::DataSet::ClassBuilder.build_from_hash(json_data)
end