Sha256: 1d039b915de8058b41fb9e4149a2b1b22f26df0401a88011836964651399a6fa

Contents?: true

Size: 558 Bytes

Versions: 14

Compression:

Stored size: 558 Bytes

Contents

# More later?

def make_exception(sym, str, target_class = Object)
  return if target_class.constants.include?(sym)
  klass = sym   # :"#{sym}_Class"
  target_class.const_set(klass, StandardError.dup)
  define_method(sym) do |*args|
    args = [] unless args.first
    msg = str.dup
    args.each.with_index {|arg, i| msg.sub!("%#{i+1}", arg.to_s) }
    target_class.class_eval(klass.to_s).new(msg)
  end
end

make_exception(:EndWithoutOpening, "Error: found .end with no opening command")
make_exception(:UnknownMethod,     "Error: name '%1' is unknown")

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
livetext-0.9.42 lib/livetext/errors.rb
livetext-0.9.41 lib/livetext/errors.rb
livetext-0.9.40 lib/livetext/errors.rb
livetext-0.9.39 lib/livetext/errors.rb
livetext-0.9.38 lib/livetext/errors.rb
livetext-0.9.37 lib/livetext/errors.rb
livetext-0.9.36 lib/livetext/errors.rb
livetext-0.9.35 lib/livetext/errors.rb
livetext-0.9.33 lib/livetext/errors.rb
livetext-0.9.32 lib/livetext/errors.rb
livetext-0.9.31 lib/livetext/errors.rb
livetext-0.9.30 lib/livetext/errors.rb
livetext-0.9.27 lib/livetext/errors.rb
livetext-0.9.26 lib/livetext/errors.rb