Initial rough sketches for the DOM API.

This commit is contained in:
Yorick Peterse 2014-03-26 18:12:00 +01:00
parent 6c661f3ee9
commit 6ae52c1b12
4 changed files with 86 additions and 0 deletions

View File

@ -4,5 +4,8 @@ require_relative 'oga/ast/node'
require_relative 'oga/xml/lexer'
require_relative 'oga/xml/parser'
require_relative 'oga/xml/node'
require_relative 'oga/xml/element'
require_relative 'oga/xml/builder'
require_relative 'oga/html/parser'

28
lib/oga/xml/builder.rb Normal file
View File

@ -0,0 +1,28 @@
module Oga
module XML
##
# Class for building a DOM tree of XML/HTML nodes.
#
# @!attribute [r] ast
# @return [Oga::AST::Node]
#
class Builder < ::AST::Processor
attr_reader :ast
##
# @param [Oga::AST::Node] ast
#
def initialize(ast)
@ast = ast
end
def on_element(node)
end
def on_text(node)
end
end # Builder
end # XML
end # Oga

19
lib/oga/xml/element.rb Normal file
View File

@ -0,0 +1,19 @@
module Oga
module XML
##
# Class that contains information about an XML element such as the name,
# attributes and child nodes.
#
class Element < Node
##
# @param [String] name The name of the element
# @see Oga::XML::Node#initialize
#
def initialize(name, options = {})
super(options)
@name = name
end
end # Element
end # XML
end # Oga

36
lib/oga/xml/node.rb Normal file
View File

@ -0,0 +1,36 @@
module Oga
module XML
##
# @!attribute [r] parent
# @return [Oga::XML::Node]
#
# @!attribute [r] children
# @return [Array<Oga::XML::Node>]
#
# @!attribute [r] next
# @return [Oga::XML::NOde]
#
# @!attribute [r] previous
# @return [Oga::XML::Node]
#
class Node
attr_reader :parent, :children, :next, :previous
##
# @param [Hash] options
#
# @option options [Array] :children The child nodes of the current
# element.
#
# @option options [Oga::XML::Node] :parent The parent node.
# @option options [Oga::XML::Node] :next The following node.
# @option options [Oga::XML::Node] :previous The previous node.
#
def initialize(options = {})
options.each do |key, value|
instance_variable_set("@#{key}", value) if respond_to?(key)
end
end
end # Element
end # XML
end # Oga