Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
# frozen_string_literal: true
module Puppet::Util
module Json
class ParseError < StandardError
attr_reader :cause, :data
def self.build(original_exception, data)
new(original_exception.message).tap do |exception|
exception.instance_eval do
@cause = original_exception
set_backtrace original_exception.backtrace
@data = data
end
end
end
end
require 'json'
# Load the content from a file as JSON if
# contents are in valid format. This method does not
# raise error but returns `nil` when invalid file is
# given.
def self.load_file_if_valid(filename, options = {})
load_file(filename, options)
rescue Puppet::Util::Json::ParseError, ArgumentError, Errno::ENOENT => detail
Puppet.debug("Could not retrieve JSON content from '#{filename}': #{detail.message}")
nil
end
# Load the content from a file as JSON.
def self.load_file(filename, options = {})
json = Puppet::FileSystem.read(filename, :encoding => 'utf-8')
load(json, options)
end
# These methods do similar processing to the fallback implemented by MultiJson
# when using the built-in JSON backend, to ensure consistent behavior
# whether or not MultiJson can be loaded.
def self.load(string, options = {})
string = string.read if string.respond_to?(:read)
options[:symbolize_names] = true if options.delete(:symbolize_keys)
::JSON.parse(string, options)
rescue JSON::ParserError => e
raise Puppet::Util::Json::ParseError.build(e, string)
end
def self.dump(object, options = {})
# Options is a state when we're being called recursively
if !options.is_a?(JSON::State) && options.delete(:pretty)
options.merge!(::JSON::PRETTY_STATE_PROTOTYPE.to_h)
end
object.to_json(options)
end
end
end