class SMF::Descripter

Public Class Methods

new(sh) click to toggle source
# File lib/smf/toy/macro.rb, line 238
def initialize(sh)
  @sh = sh
  @es = []
  @es << {}
  @es[-1][:tr] = 1
  @es[-1][:ch] = 0
  @es[-1][:of] = 0
  @es[-1][:oc] = 4.to_r/1
  @es[-1][:le] = 1.to_r/4
  @es[-1][:du] = 9.to_r/10
  @es[-1][:ve] = 3.to_r/4
end

Public Instance Methods

[](k) click to toggle source
# File lib/smf/toy/macro.rb, line 266
def [] (k)
  ch = @es[-1][:ch]
  k = rv(k, ch.to_i)
  @es[-1][k]
end
[]=(k, v) click to toggle source
# File lib/smf/toy/macro.rb, line 272
def []=(k, v)
  ch = @es[-1][:ch]
  k = rv(k, ch.to_i)
  @es[-1][k] = v
end
pop() click to toggle source
# File lib/smf/toy/macro.rb, line 252
def pop() @es.pop end
push() click to toggle source
# File lib/smf/toy/macro.rb, line 251
def push() @es.push(@es[-1].dup) end
snap() click to toggle source
# File lib/smf/toy/macro.rb, line 278
def snap() @sh.snap(@es[-1].dup) end

Private Instance Methods

rv(k, ch) click to toggle source
# File lib/smf/toy/macro.rb, line 254
def rv(k, ch)
  k = k.to_s
  k.gsub!(/0+(\d)/, '\1')
  case k
  when /\A(pp|co|mo)(\d+)\z/; k += format('/%d', ch)
  when /\A(pr|cp|pi)\z/     ; k += format('/%d', ch)
  end
  k = k.intern
end