Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node
- attr_accessor :name, :children, :attributes
- def initialiaze(name, children, attributes)
- @name = name
- @children = children
- @attributes = attributes
- end
- end
- def parse_html(string)
- node = Node.new
- node.attributes = Hash.new
- tag_string = ""
- inside_tag = false
- tag_closed = false
- string.each_char do |i|
- if i == "<" && !tag_closed
- inside_tag = true
- tag_closed = false
- next
- end
- if i == ">" && inside_tag
- tag_closed = true
- inside_tag = false
- next
- end
- if inside_tag
- tag_string += i
- end
- end
- node.name = tag_string.split(" ")[0]
- attriute_string = tag_string.gsub(node.name, "")
- tag_string_parse(attriute_string, node)
- node
- end
- def tag_string_parse(attriute_string, node)
- in_key = true
- in_value = false
- key_array = []
- value_array = []
- key = ""
- value = ""
- attriute_string.each_char do |char|
- if char == "\"" && !in_value
- in_value = true
- in_key = false
- key_array << key.delete("=").delete("\"").strip
- key = ""
- elsif char == "\"" && in_value
- in_value = false
- in_key = true
- value_array << value.delete("\"").strip
- value = ""
- end
- if in_key
- key += char
- elsif in_value
- value += char
- end
- end
- key_array.each_with_index do |value, index|
- node.attributes[value] = value_array[index]
- end
- end
- string = "<note class=\"hello\" type=\"chello\"><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"
- node = parse_html(string)
- p node.children
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement