class Pione::Global::Item
Attributes
dependencies[R]
item names that the item depends
desc[RW]
item description
init[RW]
initial value
name[R]
item name
orig[R]
original value
record[RW]
record target
type[RW]
type of item value
updater[R]
update process object
value[R]
item value
Public Class Methods
new(name, configurable, option={})
click to toggle source
# File lib/pione/global/item.rb, line 97 def initialize(name, configurable, option={}) @name = name @value = nil @configurable = configurable @dependencies = option[:dependencies] || [] @desc = nil @init = nil @type = nil @updater = Proc.new {|val| val} @post_action = nil @orig = nil @record = false end
Public Instance Methods
configurable?()
click to toggle source
Return true if the item is configurable.
# File lib/pione/global/item.rb, line 112 def configurable? @configurable end
define_updater(&b)
click to toggle source
Define updater process of the item.
# File lib/pione/global/item.rb, line 158 def define_updater(&b) @updater = b end
post(&b)
click to toggle source
# File lib/pione/global/item.rb, line 162 def post(&b) @post_action = b end
register()
click to toggle source
Register the item to global system.
# File lib/pione/global/item.rb, line 117 def register # register this item Global.item[@name] = self # build dependency table for computed items if @dependencies @dependencies.each do |dependency| Global.__dependencies__[dependency] << self end end # set reader and writer name = @name Global.singleton_class.module_eval do |mod| define_method(name) {get(name)} define_method("set_%s" % name) {|val| set(name, val)} define_method("%s=" % name) {|val| set(name, val)} end end
unregister()
click to toggle source
Unregister the item from global system.
# File lib/pione/global/item.rb, line 138 def unregister Global.item.delete(@name) # remove dependency if @dependencies @dependencies.each do |dependency| Global.__dependencies__.delete(dependency) end end # remove accessors name = @name Global.singleton_class.module_eval do |mod| remove_method(name) remove_method("set_%s" % name) remove_method("%s=" % name) end end
update(val)
click to toggle source
Update the item with the value.
# File lib/pione/global/item.rb, line 167 def update(val) @orig = val @value = @updater.call(ValueConverter.convert(@type, val)) if @post_action @post_action.call(@value) end end