class NetSuite::Support::Sublist
Public Class Methods
inherited(subclass)
click to toggle source
# File lib/netsuite/support/sublist.rb, line 6 def self.inherited(subclass) subclass.class_eval do field :replace_all end end
new(attributes = {})
click to toggle source
# File lib/netsuite/support/sublist.rb, line 33 def initialize(attributes = {}) initialize_from_attributes_hash(attributes) end
sublist(key, klass)
click to toggle source
# File lib/netsuite/support/sublist.rb, line 14 def sublist(key, klass) field key # TODO setting class methods might be better? How to reach into the subclass? define_method(:sublist_key) { key } define_method(:sublist_class) { klass } define_method("#{key}=") do |list| self.process_sublist(list) end define_method("#{key}") do @list ||= [] end end
Public Instance Methods
<<(item)
click to toggle source
# File lib/netsuite/support/sublist.rb, line 47 def <<(item) @list ||= [] @list << self.process_sublist_item(item) end
to_record()
click to toggle source
# File lib/netsuite/support/sublist.rb, line 37 def to_record rec = { "#{record_namespace}:#{sublist_key.to_s.lower_camelcase}" => send(self.sublist_key).map(&:to_record) } if !replace_all.nil? rec["#{record_namespace}:replaceAll"] = !!replace_all end rec end
Protected Instance Methods
process_sublist(list)
click to toggle source
# File lib/netsuite/support/sublist.rb, line 53 def process_sublist(list) list = [ list ] if !list.is_a?(Array) @list = list.map do |item| self.process_sublist_item(item) end end
process_sublist_item(item)
click to toggle source
# File lib/netsuite/support/sublist.rb, line 61 def process_sublist_item(item) if item.class == self.sublist_class item else self.sublist_class.new(item) end end