Module: MaimaiNet::ModuleExt::ExtendedInspect
- Extended by:
- HaveClassMethods
- Defined in:
- lib/maimai_net/module_ext.rb
Overview
extends inspect function into customizable inspect output
Class Method Summary collapse
-
.included(cls) ⇒ void
initializes inspect permit variables upon inclusion.
Instance Method Summary collapse
-
#inspect ⇒ String
Simplified human-readable output.
Methods included from HaveClassMethods
Class Method Details
.included(cls) ⇒ void
Note:
will not apply to modules.
This method returns an undefined value.
initializes inspect permit variables upon inclusion
169 170 171 172 173 174 175 |
# File 'lib/maimai_net/module_ext.rb', line 169 def self.included(cls) super cls.instance_exec do inspect_permit_reset! end if Class === cls end |
Instance Method Details
#inspect ⇒ String
Returns simplified human-readable output.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/maimai_net/module_ext.rb', line 51 def inspect head = '%s:%0#*x' % [ self.class.name, 0.size.succ << 1, Fiddle.dlwrap(self), ] vars = [] all_true = !self.class.instance_variable_defined?(:@_inspect_permit) if all_true then permit_variables = [] permit_expressions = [] exclude_variables = [] else all_true |= !self.class.instance_variable_get(:@_inspect_permit) permit_variables = self.class.instance_variable_get(:@_inspect_permit_variables) permit_expressions = self.class.instance_variable_get(:@_inspect_permit_expressions) exclude_variables = self.class.instance_variable_get(:@_inspect_permit_variable_bans) all_true |= [ permit_variables, exclude_variables, permit_expressions, ].all?(&:empty?) end self.instance_variables.each do |k| name = k.to_s[1..-1].to_sym value = self.instance_variable_get(k) next if exclude_variables.include? name is_permit = all_true unless is_permit is_permit |= permit_variables.include?(name) is_permit |= permit_expressions.any? do |expr| !!expr.call(value) end end vars << sprintf( '@%s=%s', name, is_permit ? value.inspect : value.class.name, ) end '#<%s>' % [ [head, *vars].join(' '), ] end |