require 'yaml' class BlogRoll class Blog attr_reader :name, :title, :url def initialize(name, title, url) if name.nil? || url.nil? raise "Invalid blogroll entry, #{name}/#{title}/#{url}" end @name, @title, @url = name, title||name, url end end def self.load(filename) new YAML.load(File.read(filename)) end def initialize(entries) @entries = {} entries.each { |cat, blogs| @entries[cat] = blogs.map { |k, v| Blog.new k, v['title'] || k, v['url'] } } end def entries(category=nil) (category ? @entries[category] : @entries.values.flatten).sort_by { |e| e.name.downcase } end end class Nukumi2::Page attr_inject :blogroll attr_reader :blogroll end # By default, no blogroll. Nukumi2::DefaultRegistry.define.blogroll { nil }