Sha256: b3784a213fb739a262d3f6ee71deff0d91a4e4c34a8d3639fe1db008691afe57

Contents?: true

Size: 1013 Bytes

Versions: 3

Compression:

Stored size: 1013 Bytes

Contents

require 'sinatra/base'
require 'haml'
require 'woyo/world'

module Woyo

class Server < Sinatra::Application

  def self.load_world
    world = Woyo::World.new
    Dir['world/*.rb'].each do |filename|
      world.instance_eval File.read filename
    end
    world
  end

  configure do
    enable :sessions
    set root: '.'
    set views: Proc.new { File.join(root, "views/server") }
    set public_folder: Proc.new { File.join(root, "public/server") }
    set world: self.load_world
  end

  def world
    settings.world
  end

  get '/' do
    redirect to 'default.html' if world.locations.empty? || ( !@location && !world.start )
    @location ||= world.locations[world.start]
    session[:location] = @location
    haml :location
  end

  get '/go/*' do |way|
    @location = session[:location].ways[way.to_sym].to
    session[:location] = @location
    haml :location
  end

  get '/do/*/*?/*?' do |item,action,tool|
    # do default or optional action on required item with optional tool
  end
  
end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
woyo-server-0.0.5 lib/woyo/server/server.rb
woyo-server-0.0.4 lib/woyo/server/server.rb
woyo-server-0.0.2 lib/woyo/server/server.rb