Sha256: 153d86bd6578cf41e956f35302854ea78539146816ee734af031204350c5dfd1

Contents?: true

Size: 894 Bytes

Versions: 1

Compression:

Stored size: 894 Bytes

Contents

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
require 'rulebook'

class User
  follows_the_rules!

  attr :title

  def initialize(title=:user)
    @title = title
  end

  rulebook.add /^is_(admin|user)$/ do |title|
    @title = title.to_sym
    self
  end

  rulebook.add /^is_(admin|user)\?$/ do |title|
    @title == title.to_sym
  end

  class << self
    follows_the_rules!
    
    rulebook.add /^new_(admin|user)$/ do |title|
      instance = new
      instance.instance_eval { @title = title.to_sym }
      instance
    end
  end
end

u = User.new

p u.is_user?  # => true
p u.is_admin? # => false

u.is_admin

p u.is_user?  # => false
p u.is_admin? # => true

u = User.new_admin
p u
p u.is_admin? # => true


# DEV: TODO CLASS RULES O_O
Integer.follows_the_rules!
Integer.rulebook.add /to_base_(\d+)/ do |base|
  p base
  p "OMG"
  to_s(base)
end

p 10.to_base_16

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rulebook-0.5.0 examples/simple.rb