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