# File lib/puppet/external/event-loop/better-definers.rb, line 228 228: def guard_writers(*names, &predicate) 229: for name in names.map { |x| x.to_sym } do 230: define_hard_alias("__unguarded_#{name.writer}" => name.writer) 231: define_method(name.writer) do |new_value| 232: case result = predicate.call 233: when :mutable, nil 234: __send__("__unguarded_#{name.writer}", new_value) 235: when :immutable 236: raise ImmutableAttributeError.new(name) 237: else 238: raise ImmutableAttributeError.new(name, result) 239: end 240: end 241: end 242: end