require 'needle' require 'needle/extras' Nukumi2::DefaultRegistry = Needle::Registry.new { |r| # Load needle-extras. r.require_library 'needle/extras' r.define.page(:model => :multiton_inject) { |c, p, view, flavor| Nukumi2::Page.new(view, flavor) } # Make this a :prototype if you want dynamic template loading. # (no cache!) r.define.engine(:model => :multiton) { |c, p, flavor| Tangerine::XML.new(",,@page", Nukumi2::FlavorTagLib.new(flavor)) } r.define.webrick { s = WEBrick::HTTPServer.new(:Port => 2000) s.mount("/data", WEBrick::HTTPServlet::FileHandler, File.expand_path("data"), {:FancyIndexing => true}) s.mount("/graphics", WEBrick::HTTPServlet::FileHandler, File.expand_path("graphics"), {:FancyIndexing => true}) s } r.define! { blog(:model => :singleton_inject) { Nukumi2::Blog.new } backends { Kernel.abort "No backends given! (Replace with a namespace)" } all_backends { this_container.multicast *backends.keys.map { |k| backends.get k } } configparser(:model => :singleton_inject) { Nukumi2::ConfigParser.new("config.rb") } blogconfig(:model => :singleton_inject) { Nukumi2::ConfigParser::Blog.new } config { begin configparser.load rescue Kernel.abort "Error loading config file: #{$!.inspect}" end } show_last { config.show_last || 15 } default_flavor { config.default_flavor || 'html' } topictree { Topical::TopicTree.new } registry { this_container } } } PluginLoader.new(File.join(File.dirname(__FILE__), "plugins")).load! PluginLoader.new("plugins").load!