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