lib/pdk/config/json_with_schema.rb in pdk-2.4.0 vs lib/pdk/config/json_with_schema.rb in pdk-2.5.0

- old
+ new

@@ -1,49 +1,49 @@ -require 'pdk' - -module PDK - class Config - class JSONWithSchema < JSONSchemaNamespace - # Parses a JSON document with a schema. - # - # @see PDK::Config::Namespace.parse_file - def parse_file(filename) - raise unless block_given? - data = load_data(filename) - data = '{}' if data.nil? || data.empty? - require 'json' - - @raw_data = ::JSON.parse(data) - @raw_data = {} if @raw_data.nil? - - begin - # Ensure the parsed document is actually valid - validate_document!(@raw_data) - rescue ::JSON::Schema::ValidationError => e - raise PDK::Config::LoadError, _('The configuration file %{filename} is not valid: %{message}') % { - filename: filename, - message: e.message, - } - end - - schema_property_names.each do |key| - yield key, PDK::Config::JSONSchemaSetting.new(key, self, @raw_data[key]) - end - - # Remove all of the "known" settings from the schema and - # we're left with the settings that we don't manage. - self.unmanaged_settings = @raw_data.reject { |k, _| schema_property_names.include?(k) } - rescue ::JSON::ParserError => e - raise PDK::Config::LoadError, e.message - end - - # Serializes object data into a JSON string. - # - # @see PDK::Config::Namespace.serialize_data - def serialize_data(data) - require 'json' - - ::JSON.pretty_generate(data) - end - end - end -end +require 'pdk' + +module PDK + class Config + class JSONWithSchema < JSONSchemaNamespace + # Parses a JSON document with a schema. + # + # @see PDK::Config::Namespace.parse_file + def parse_file(filename) + raise unless block_given? + data = load_data(filename) + data = '{}' if data.nil? || data.empty? + require 'json' + + @raw_data = ::JSON.parse(data) + @raw_data = {} if @raw_data.nil? + + begin + # Ensure the parsed document is actually valid + validate_document!(@raw_data) + rescue ::JSON::Schema::ValidationError => e + raise PDK::Config::LoadError, _('The configuration file %{filename} is not valid: %{message}') % { + filename: filename, + message: e.message, + } + end + + schema_property_names.each do |key| + yield key, PDK::Config::JSONSchemaSetting.new(key, self, @raw_data[key]) + end + + # Remove all of the "known" settings from the schema and + # we're left with the settings that we don't manage. + self.unmanaged_settings = @raw_data.reject { |k, _| schema_property_names.include?(k) } + rescue ::JSON::ParserError => e + raise PDK::Config::LoadError, e.message + end + + # Serializes object data into a JSON string. + # + # @see PDK::Config::Namespace.serialize_data + def serialize_data(data) + require 'json' + + ::JSON.pretty_generate(data) + end + end + end +end