move Node class under Mechanize namespace

master
Anton Maminov 2021-11-18 10:25:49 +02:00
parent a247432bc4
commit f62c04949a
6 changed files with 19 additions and 16 deletions

View File

@ -73,13 +73,13 @@ class Mechanize
def post(uri : String | URI,
headers = ::HTTP::Headers.new,
query : Hash(String, String | Array(String)) = Hash(String, String).new) : Mechanize::Page
node = Node.new
node = Mechanize::Node.new
node["method"] = "POST"
node["enctype"] = "application/x-www-form-urlencoded"
form = Mechanize::Form.new(node)
query.each do |k, v|
node = Node.new
node = Mechanize::Node.new
node["name"] = k
form.fields << Mechanize::FormContent::Field.new(node, v)
end

View File

@ -13,7 +13,7 @@ class Mechanize
class Form
include ElementMatcher
getter node : Node | Lexbor::Node
getter node : Mechanize::Node | Lexbor::Node
# returns hoge array of `Mechanize::FormContent::Field` in the form.
getter fields : Array(FormContent::Field)
# returns an array of input tags whose type is checkbox in the form.
@ -35,7 +35,7 @@ class Mechanize
# returns the page which includes the form.
getter page : Page?
def initialize(node : Node | Lexbor::Node, page : Page? = nil)
def initialize(node : Mechanize::Node | Lexbor::Node, page : Page? = nil)
@enctype = node.fetch("enctype", "application/x-www-form-urlencoded")
@node = node
@fields = Array(FormContent::Field).new

View File

@ -1,9 +1,9 @@
# This class represents button related html element.
# &lt;button&gt;, and &lt;input&gt; whose type is button, reset, image, submit.
class Mechanize::FormContent::Button < Mechanize::FormContent::Field
getter form_node : Node | Lexbor::Node
getter form_node : Mechanize::Node | Lexbor::Node
def initialize(node : Node | Lexbor::Node, form_node : Node | Lexbor::Node, value = nil)
def initialize(node : Mechanize::Node | Lexbor::Node, form_node : Mechanize::Node | Lexbor::Node, value = nil)
@form_node = form_node
super(node, value)
end

View File

@ -9,9 +9,9 @@ class Mechanize::FormContent::Field
# returns field's 'value' attribute.
# value property is changeable, but this property stores raw value.
getter raw_value : String?
getter node : Node | Lexbor::Node
getter node : Mechanize::Node | Lexbor::Node
def initialize(node : Node | Lexbor::Node, value = nil)
def initialize(node : Mechanize::Node | Lexbor::Node, value = nil)
@node = node
@name = node.fetch("name", "")
@value = value || node.fetch("value", nil)

View File

@ -2,7 +2,7 @@
class Mechanize::FormContent::RadioButton < Mechanize::FormContent::Field
property :checked, :form
def initialize(node : Node | Lexbor::Node, form : Form)
def initialize(node : Mechanize::Node | Lexbor::Node, form : Form)
@checked = !!node.fetch("checked", nil)
@form = form
super(node)

View File

@ -1,7 +1,8 @@
require "lexbor"
# This is a fake node used when sending post request.
class Node < Hash(String, String)
class Mechanize
# This is a fake node used when sending post request.
class Node < Hash(String, String)
def css(str)
[] of Hash(String, String)
end
@ -9,9 +10,11 @@ class Node < Hash(String, String)
def inner_text
""
end
end
end
# This is a real Node got from html.
# TODO: create PR to https://github.com/kostya/lexbor
struct Lexbor::Node
delegate :[], to: attributes
delegate :[]=, to: attributes