Skip to content
Convenience library for Rubinius-only projects.
Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
spec
.gitignore
README.md
convinius.gemspec

README.md

Convinius

Convenience library for Rubinius-only projects. Use require 'convinius' to get all features.

Installation:

gem install convinius

Running tests:

gem install rspec
rspec spec

Subclassing from arbitrary Objects

in: convinius/to_class

If you subclass from an object, first call to_class on that object and subclass the result instead:

RandomClass = Object.new

def RandomClass.to_class
  [Hash, Object, Set].at rand(3)
end

class Foo < RandomClass
  puts superclass
end

A more realistic example:

module Awesome
  def self.to_class
    Class.new { include Awesome }
  end
end

class Foo < Awesome
end

class Bar < Something
  include Awesome
end

Convenience for Rubinius::Generator

in: convinius/generator

Method for generating tuples (like make_array):

class MyNode < Rubinius::AST::Node
  def bytecode(g)
    (1..5).each { |i| g.push i }
    g.make_tuple 5
  end
end

Byte Code Generator DSL

in: convinius/asm

Example:

include Convinius::ASM

compiled = asm do
  push 1
  push 2
  send :+, 1
end

p compiled.call

If block takes an argument, it won't use instance_eval:

Convinius::ASM.new do |g|
  g.push 1
  g.push 2
  g.send :+, 1
end
Something went wrong with that request. Please try again.