This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
require 'safe_yaml/load'
|
||||
require 'yaml/store'
|
||||
|
||||
module SafeYAML
|
||||
|
||||
class Store < YAML::Store
|
||||
|
||||
# Override YAML::Store#initialize to accept additional option
|
||||
# +safe_yaml_opts+.
|
||||
def initialize(file_name, yaml_opts = {}, safe_yaml_opts = {})
|
||||
@safe_yaml_opts = safe_yaml_opts
|
||||
super(file_name, yaml_opts)
|
||||
end
|
||||
|
||||
# Override YAML::Store#load to use SafeYAML.load instead of
|
||||
# YAML.load (via #safe_yaml_load).
|
||||
#--
|
||||
# PStore#load is private, while YAML::Store#load is public.
|
||||
#++
|
||||
def load(content)
|
||||
table = safe_yaml_load(content)
|
||||
table == false ? {} : table
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
if SafeYAML::YAML_ENGINE == 'psych'
|
||||
def safe_yaml_load(content)
|
||||
SafeYAML.load(content, nil, @safe_yaml_opts)
|
||||
end
|
||||
else
|
||||
def safe_yaml_load(content)
|
||||
SafeYAML.load(content, @safe_yaml_opts)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user