require 'forwardable'
require 'nokogiri'
require 'nokogiri/decorators/xbel'
class XBEL < Nokogiri::XML::Document
extend Forwardable
def_delegators :root, :title, :title=, :desc, :desc=
# Returns an instance of XBEL.
def self.new(major = 1, minor = 0)
parse %Q'' % [major, minor]
end
# Reads file at path into parse.
# @yield [XBEL]
# @see Nokogiri.parse
def self.open(path, &block)
parse File.read(path.to_s), &block
end
# Calls Nokogiri#initialize and decorates XBEL nodes.
def initialize(*args)
super
decorators(Nokogiri::XML::Node) << Nokogiri::Decorators::XBEL
decorate!
end
# Returns node with given id.
def [](id)
root.at("//*[@id='#{ id }']")
end
# Returns an array of version numbers.
def version
root.attribute('version').value.split('.').map { |n| n.to_i }
end
# Sets version numbers.
def version=(*numbers)
root.attribute('version').value = numbers * '.'
end
end