Sha256: 6ab24773ac90f87d291deafdc09aaa8a45be54666e07e2cd10e72758572987d2
Contents?: true
Size: 1.48 KB
Versions: 26
Compression:
Stored size: 1.48 KB
Contents
module NetSuite module Support module Fields include Attributes def self.included(base) base.send(:extend, ClassMethods) end module ClassMethods def fields(*args) if args.empty? @fields ||= Set.new else args.each do |arg| field arg end end end def field(name, klass = nil) name_sym = name.to_sym fields << name_sym if klass define_method(name_sym) do attributes[name_sym] ||= klass.new end define_method("#{name_sym}=") do |value| if value.nil? attributes.delete(name_sym) else attributes[name_sym] = value.kind_of?(klass) ? value : klass.new(value) end end else define_method(name_sym) do attributes[name_sym] end define_method("#{name_sym}=") do |value| attributes[name_sym] = value end end end def read_only_fields(*args) if args.empty? @read_only_fields ||= Set.new else args.each do |arg| read_only_field arg end end end def read_only_field(name) name_sym = name.to_sym read_only_fields << name_sym field name end end end end end
Version data entries
26 entries across 26 versions & 1 rubygems