X7ROOT File Manager
Current Path:
/opt/alt/ruby30/share/gems/gems/psych-3.3.2/lib/psych
opt
/
alt
/
ruby30
/
share
/
gems
/
gems
/
psych-3.3.2
/
lib
/
psych
/
ðŸ“
..
📄
class_loader.rb
(1.96 KB)
📄
coder.rb
(2.05 KB)
📄
core_ext.rb
(359 B)
📄
exception.rb
(264 B)
📄
handler.rb
(7.2 KB)
ðŸ“
handlers
ðŸ“
json
ðŸ“
nodes
📄
nodes.rb
(2.35 KB)
📄
omap.rb
(75 B)
📄
parser.rb
(1.67 KB)
📄
scalar_scanner.rb
(4.14 KB)
📄
set.rb
(74 B)
📄
stream.rb
(923 B)
📄
streaming.rb
(667 B)
📄
syntax_error.rb
(585 B)
📄
tree_builder.rb
(2.98 KB)
📄
versions.rb
(188 B)
ðŸ“
visitors
📄
visitors.rb
(236 B)
📄
y.rb
(190 B)
Editing: class_loader.rb
# frozen_string_literal: true require 'psych/omap' require 'psych/set' module Psych class ClassLoader # :nodoc: BIG_DECIMAL = 'BigDecimal' COMPLEX = 'Complex' DATE = 'Date' DATE_TIME = 'DateTime' EXCEPTION = 'Exception' OBJECT = 'Object' PSYCH_OMAP = 'Psych::Omap' PSYCH_SET = 'Psych::Set' RANGE = 'Range' RATIONAL = 'Rational' REGEXP = 'Regexp' STRUCT = 'Struct' SYMBOL = 'Symbol' def initialize @cache = CACHE.dup end def load klassname return nil if !klassname || klassname.empty? find klassname end def symbolize sym symbol sym.to_sym end constants.each do |const| konst = const_get const class_eval <<~RUBY def #{const.to_s.downcase} load #{konst.inspect} end RUBY end private def find klassname @cache[klassname] ||= resolve(klassname) end def resolve klassname name = klassname retried = false begin path2class(name) rescue ArgumentError, NameError => ex unless retried name = "Struct::#{name}" retried = ex retry end raise retried end end CACHE = Hash[constants.map { |const| val = const_get const begin [val, ::Object.const_get(val)] rescue nil end }.compact].freeze class Restricted < ClassLoader def initialize classes, symbols @classes = classes @symbols = symbols super() end def symbolize sym return super if @symbols.empty? if @symbols.include? sym super else raise DisallowedClass, 'Symbol' end end private def find klassname if @classes.include? klassname super else raise DisallowedClass, klassname end end end end end
Upload File
Create Folder