Merge pull request #18 from mamantoha/refactor-node-class

move Node class under Mechanize namespace
master
Kanezoh 2021-11-19 14:33:02 +09:00 committed by GitHub
commit 4aa26122d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 21 additions and 31 deletions

View File

@ -1,3 +1,6 @@
require "uri"
require "http/client"
require "lexbor"
require "./mechanize/http/agent"
require "./mechanize/form"
require "./mechanize/node"
@ -73,13 +76,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

@ -1,5 +1,3 @@
require "http/client"
class Mechanize
abstract class File
# property :filename

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,5 +1,3 @@
require "uri"
require "http/client"
require "../cookie"
require "../history"

View File

@ -1,21 +1,12 @@
require "lexbor"
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
# This is a fake node used when sending post request.
class Node < Hash(String, String)
def css(str)
[] of Hash(String, String)
end
def inner_text
""
def inner_text
""
end
end
end
# This is a real Node got from html.
struct Lexbor::Node
delegate :[], to: attributes
delegate :[]=, to: attributes
delegate :[]?, to: attributes
delegate :fetch, to: attributes
delegate :has_key?, to: attributes
end