Class: Module

Inherits:
Object show all
Defined in:
lib/ruby/jruby_hack.rb

Overview

lib/ruby/module.rb

Instance Method Summary collapse

Instance Method Details

#abstract(name, *params) ⇒ void

This method returns an undefined value.

Creates an abstract method

Examples:

class Collection
  abstract :size
  abstract :add, :args => %w(item)
end


322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
# File 'lib/ruby/jruby_hack.rb', line 322

def abstract(name, *params)
  if params.last.is_a?(Hash)
    # abstract :method, :args => %w(a b c)
    params = params.last[:args]
  end

  file, line, = Stupidedi.caller

  if params.empty?
    class_eval("      def \#{name}(*args)\n        raise NoMethodError,\n          \"method \\\#{self.class.name}.\#{name} is abstract\"\n      end\n    RUBY\n  else\n    class_eval(<<-RUBY, file, line.to_i - 1)\n      def \#{name}(*args)\n        raise NoMethodError,\n          \"method \\\#{self.class.name}.\#{name}(\#{params.join(', ')}) is abstract\"\n      end\n    RUBY\n  end\nend\n", file, line.to_i - 1)

#def_delegators(target, *methods) ⇒ Object



347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
# File 'lib/ruby/jruby_hack.rb', line 347

def def_delegators(target, *methods)
  file, line, = Stupidedi.caller

  for m in methods
    if m.to_s =~ /=$/
      class_eval("        def \#{m}(value)\n          \#{target}.\#{m}(value)\n        end\n      RUBY\n    else\n      class_eval(<<-RUBY, file, line.to_i - 1)\n        def \#{m}(*args, &block)\n          \#{target}.\#{m}(*args, &block)\n        end\n      RUBY\n    end\n  end\nend\n", file, line.to_i - 1)