module T::Props::Serializable::DecoratorMethods
def add_prop_definition(prop, rules)
def add_prop_definition(prop, rules) rules[:serialized_form] = rules.fetch(:name, prop.to_s) res = super prop_by_serialized_forms[rules[:serialized_form]] = prop res end
def extra_props(instance)
def extra_props(instance) instance.instance_variable_get(:@_extra_props) || EMPTY_EXTRA_PROPS end
def from_hash(hash, strict=false)
def from_hash(hash, strict=false) raise ArgumentError.new("#{hash.inspect} provided to from_hash") if !(hash && hash.is_a?(Hash)) i = @class.allocate i.deserialize(hash, strict) i end
def get_id(instance)
def get_id(instance) prop = prop_by_serialized_forms['_id'] if prop get(instance, prop) else nil end end
def inspect_instance_components(instance, multiline:, indent:)
def inspect_instance_components(instance, multiline:, indent:) tra_props = extra_props(instance)) && !extra_props.empty? ty_kvs = extra_props.map {|k, v| [k.to_sym, v.inspect]} a = join_props_with_pretty_values(pretty_kvs, multiline: false) r + ["@_extra_props=<#{extra}>"] r
def prop_by_serialized_forms; @class.prop_by_serialized_forms; end
def prop_by_serialized_forms; @class.prop_by_serialized_forms; end
def prop_dont_store?(prop); prop_rules(prop)[:dont_store]; end
def prop_dont_store?(prop); prop_rules(prop)[:dont_store]; end
def prop_serialized_form(prop)
def prop_serialized_form(prop) prop_rules(prop)[:serialized_form] end
def prop_validate_definition!(name, cls, rules, type)
def prop_validate_definition!(name, cls, rules, type) result = super if (rules_name = rules[:name]) unless rules_name.is_a?(String) raise ArgumentError.new("Invalid name in prop #{@class.name}.#{name}: #{rules_name.inspect}") end validate_prop_name(rules_name) end if !rules[:raise_on_nil_write].nil? && rules[:raise_on_nil_write] != true raise ArgumentError.new("The value of `raise_on_nil_write` if specified must be `true` (given: #{rules[:raise_on_nil_write]}).") end result end
def required_props
def required_props @class.props.select {|_, v| T::Props::Utils.required_prop?(v)}.keys end
def serialized_form_prop(serialized_form)
def serialized_form_prop(serialized_form) prop_by_serialized_forms[serialized_form.to_s] || raise("No such serialized form: #{serialized_form.inspect}") end
def valid_rule_key?(key)
def valid_rule_key?(key) super || VALID_RULE_KEYS[key] end