diff --git a/spec/node_spec.cr b/spec/node_spec.cr index 9ebd130..2b8f28a 100644 --- a/spec/node_spec.cr +++ b/spec/node_spec.cr @@ -211,20 +211,12 @@ describe Myhtml::Node do parser.root!.data.null?.should eq true end - describe ".create" do - it "returns a new node" do - node = Myhtml::Node.create(:a) - - node.should be_a(Myhtml::Node) - node.tag_id.should eq(Myhtml::Lib::MyhtmlTags::MyHTML_TAG_A) - end - end - describe "#append" do it "adds a node at the end" do - parent = Myhtml::Node.create(:div) - child = Myhtml::Node.create(:a) - grandchild = Myhtml::Node.create(:span) + tree = Myhtml::Tree.new + parent = tree.create_node(:div) + child = tree.create_node(:a) + grandchild = tree.create_node(:span) parent.append(child) child.append(grandchild) @@ -239,7 +231,8 @@ describe Myhtml::Node do it "adds a node just prior to this node" do document = Myhtml::Parser.new("
") main = document.css("main").first - header = Myhtml::Node.create(:header) + tree = Myhtml::Tree.new + header = tree.create_node(:header) main.before(header) @@ -253,7 +246,8 @@ describe Myhtml::Node do html_string = "
" document = Myhtml::Parser.new(html_string) header = document.css("header").first - main = Myhtml::Node.create(:main) + tree = Myhtml::Tree.new + main = tree.create_node(:main) header.after(main) diff --git a/spec/tree_spec.cr b/spec/tree_spec.cr new file mode 100644 index 0000000..cd15f18 --- /dev/null +++ b/spec/tree_spec.cr @@ -0,0 +1,14 @@ +require "./spec_helper" + +describe Myhtml::Tree do + describe "#create_node" do + it "returns a new Myhtml::Node" do + tree = Myhtml::Tree.new + + node = tree.create_node(:a) + + node.should be_a(Myhtml::Node) + node.tag_id.should eq(Myhtml::Lib::MyhtmlTags::MyHTML_TAG_A) + end + end +end diff --git a/src/myhtml/node.cr b/src/myhtml/node.cr index 0a841f0..aeb9e26 100644 --- a/src/myhtml/node.cr +++ b/src/myhtml/node.cr @@ -15,20 +15,6 @@ struct Myhtml::Node def initialize(@tree, @raw_node) end - def self.create(tag_sym : Symbol) - parser = Parser.new - raw_myhtml = Lib.create - Lib.init(raw_myhtml, Myhtml::Lib::MyhtmlOptions::MyHTML_OPTIONS_PARSE_MODE_SINGLE, 1, 0) - raw_tree = Lib.tree_create - Lib.tree_init(raw_tree, raw_myhtml) - raw_node = Lib.node_create( - raw_tree, - Utils::TagConverter.sym_to_id(tag_sym), - Myhtml::Lib::MyhtmlNamespace::MyHTML_NAMESPACE_HTML - ) - new(parser, raw_node) - end - # # Tag ID # node.tag_id => Myhtml::Lib::MyhtmlTags::MyHTML_TAG_DIV diff --git a/src/myhtml/tree.cr b/src/myhtml/tree.cr index 26d33a4..b973731 100644 --- a/src/myhtml/tree.cr +++ b/src/myhtml/tree.cr @@ -27,6 +27,15 @@ class Myhtml::Tree @finalized = false end + def create_node(tag_sym : Symbol) + raw_node = Lib.node_create( + raw_tree, + Utils::TagConverter.sym_to_id(tag_sym), + Myhtml::Lib::MyhtmlNamespace::MyHTML_NAMESPACE_HTML + ) + Node.new(self, raw_node) + end + def set_flags(flags : Lib::MyhtmlTreeParseFlags) Lib.tree_parse_flags_set(@raw_tree, flags) end