class Nydp::Namespace
Public Instance Methods
apply(name, *args)
click to toggle source
# File lib/nydp/namespace.rb, line 37 def apply name, *args fn = if name.is_a?(String) || name.is_a?(::Symbol) fetch name elsif name.respond_to? :call name end raise "can't apply #{name.inspect} : not a function" unless fn && fn.respond_to?(:call) fn.call *(args.map { |a| r2n a }) rescue StandardError => e raise Nydp::Error.new("Invoking #{name}\nwith args (#{args.map(&:_nydp_compact_inspect).join(' ')})") end
assign(name, value)
click to toggle source
# File lib/nydp/namespace.rb, line 29 def assign name, value send "ns_#{ruby_name name}=", value end
fetch(name)
click to toggle source
# File lib/nydp/namespace.rb, line 33 def fetch name send "ns_#{ruby_name name}" end
method_missing(name, *args)
click to toggle source
Calls superclass method
# File lib/nydp/namespace.rb, line 5 def method_missing name, *args if name.to_s =~ /^ns_/ attr = name.to_s.gsub(/=$/, '').to_sym singleton_class.instance_eval do attr_accessor attr end send name, *args else super end end
names()
click to toggle source
# File lib/nydp/namespace.rb, line 17 def names mm = methods.select { |m| m.to_s =~ /^ns_.*[^=]$/ }.map { |m| nydp_name(m).to_sym } end
nydp_name(n)
click to toggle source
# File lib/nydp/namespace.rb, line 21 def nydp_name n n.to_s.gsub(/^ns_/, '').gsub(/_../) { |ch| ch[1,2].to_i(16).chr } end
ruby_name(n)
click to toggle source
# File lib/nydp/namespace.rb, line 25 def ruby_name n n.to_s._nydp_name_to_rb_name end