module Utopia
Utopia is a web application framework built on top of Rack.
Nested
Definitions
Locale
A structured representation of locale based on RFC3066.
Implementation
Locale = Struct.new(:language, :country, :variant) do
def to_s
to_a.compact.join('-')
end
def self.dump(instance)
if instance
instance.to_s
end
end
def self.load(instance)
if instance.is_a? String
self.new(*instance.split('-', 3))
elsif instance.is_a? Array
return self.new(*instance)
elsif instance.is_a? self
return instance.frozen? ? instance : instance.dup
end
end
end
PAGES_PATH = 'pages'.freeze
The default pages path for class Utopia::Content
middleware.
VARIABLES_KEY = 'utopia.variables'.freeze
This is used for shared controller variables which get consumed by the content middleware.
def self.default_root(subdirectory = PAGES_PATH, pwd = Dir.pwd)
The default root directory for middleware to operate within, e.g. the web-site directory. Convention over configuration.
Implementation
def self.default_root(subdirectory = PAGES_PATH, pwd = Dir.pwd)
File.expand_path(subdirectory, pwd)
end
def self.default_path(*arguments)
The same as Utopia.default_root
but returns an instance of class Utopia::Path
.
Implementation
def self.default_path(*arguments)
Path[default_root(*arguments)]
end
def self.setup(root = nil, **options)
You can call this method exactly once per process.
Implementation
def self.setup(root = nil, **options)
if @setup
raise RuntimeError, "Utopia already setup!"
end
# We extract the root from the caller of this method:
if root.nil?
config_root = File.dirname(caller[0])
root = File.dirname(config_root)
end
@setup = Setup.new(root, **options)
@setup.apply!
return @setup
end