aboutsummaryrefslogtreecommitdiff
path: root/spec/practical/not_xml_spec.cr
diff options
context:
space:
mode:
authorMatthew Hall <hallmatthew314@gmail.com>2023-03-26 15:27:41 +1300
committerMatthew Hall <hallmatthew314@gmail.com>2023-03-26 15:27:41 +1300
commited57fac2de48c7a86536ae22c77540f787d49a81 (patch)
treeef4e2b314a2e39c7327b01cf9fed09edbbc6b91d /spec/practical/not_xml_spec.cr
parent63dcfef9b99de484a737043afabe8c48d5105eb6 (diff)
Refactoring
Diffstat (limited to 'spec/practical/not_xml_spec.cr')
-rw-r--r--spec/practical/not_xml_spec.cr37
1 files changed, 9 insertions, 28 deletions
diff --git a/spec/practical/not_xml_spec.cr b/spec/practical/not_xml_spec.cr
index c9db2a6..4d87481 100644
--- a/spec/practical/not_xml_spec.cr
+++ b/spec/practical/not_xml_spec.cr
@@ -40,7 +40,7 @@ def match_literal(s : String) : Parser(Char, String)
end
def letter
- Parser(Char, Char).satisfy { |c| c.letter? }
+ Parser(Char, Char).satisfy(&.letter?)
end
def alphanum_dash
@@ -62,7 +62,7 @@ def quote
end
def string_body
- Parser(Char, Char).satisfy { |c| c != '"' }.many.map(&.join)
+ Parser(Char, Char).satisfy(&.!=('"')).many.map(&.join)
end
def string_literal
@@ -70,7 +70,7 @@ def string_literal
end
def ws_char
- Parser(Char, Char).satisfy { |c| c.whitespace? }
+ Parser(Char, Char).satisfy(&.whitespace?)
end
def within_ws(p)
@@ -78,8 +78,8 @@ def within_ws(p)
end
def attr_pair
- (identifier + (equal >> string_literal)).map do |tup|
- Attribute.new(tup.first, tup.last)
+ (identifier + (equal >> string_literal)).map do |name, value|
+ Attribute.new(name, value)
end
end
@@ -92,14 +92,14 @@ def element_start
end
def single_element
- (element_start << match_literal("/>")).map do |tup|
- Element.new(tup.first, tup.last, [] of Element)
+ (element_start << match_literal("/>")).map do |name, attributes|
+ Element.new(name, attributes, [] of Element)
end
end
def open_element
- (element_start << match_literal(">")).map do |tup|
- Element.new(tup.first, tup.last, [] of Element)
+ (element_start << match_literal(">")).map do |name, attributes|
+ Element.new(name, attributes, [] of Element)
end
end
@@ -123,25 +123,6 @@ def parent_element : Parser(Char, Element)
end
end
-#def old_parent_element
-# Parser(Char, Element).new("parent element") do |tokens|
-# result_open = open_element.parse(tokens)
-# tokens = result_open.tokens
-# base_element = result_open.value
-# closing_name = base_element.name
-#
-# result_children = (element.many << close_element(closing_name)).parse(tokens)
-# Result.new(
-# result_children.tokens,
-# Element.new(
-# base_element.name,
-# base_element.attributes,
-# result_children.value
-# )
-# )
-# end
-#end
-
# Adapted from: https://bodil.lol/parser-combinators/
describe "markup language similar to XML" do