lib/osheet/worksheet.rb in osheet-0.4.0 vs lib/osheet/worksheet.rb in osheet-0.5.0

- old
+ new

@@ -1,34 +1,38 @@ require 'osheet/column' require 'osheet/row' module Osheet class Worksheet + include Instance include Associations include WorkbookElement include MetaElement hm :columns hm :rows def initialize(workbook=nil, *args, &block) - @workbook = workbook - @name = nil - instance_exec(*args, &block) if block_given? + set_ivar(:workbook, workbook) + set_ivar(:name, nil) + if block_given? + set_binding_ivars(block.binding) + instance_exec(*args, &block) + end end def name(value=nil) - !value.nil? ? @name = sanitized_name(value) : @name + !value.nil? ? set_ivar(:name, sanitized_name(value)) : get_ivar(:name) end def attributes - { :name => @name } + { :name => get_ivar(:name) } end private def sanitized_name(name_value) - if @workbook && @workbook.worksheets.collect{|ws| ws.name}.include?(name_value) + if get_ivar(:workbook) && get_ivar(:workbook).worksheets.collect{|ws| ws.name}.include?(name_value) raise ArgumentError, "the sheet name '#{name_value}' is already in use. choose a sheet name that is not used by another sheet" end name_value end