diff --git a/vlib/net/html/dom.v b/vlib/net/html/dom.v index 8081a49084a4e2..7e8a991cbe18af 100644 --- a/vlib/net/html/dom.v +++ b/vlib/net/html/dom.v @@ -63,14 +63,14 @@ fn (mut dom DocumentObjectModel) add_tag_attribute(tag &Tag) { dom.tag_attributes[attribute_name] = [] } for { - mut temp_array := dom.tag_attributes[attribute_name] + mut temp_array := unsafe { dom.tag_attributes[attribute_name] } temp_array << []&Tag{} dom.tag_attributes[attribute_name] = temp_array - if location < dom.tag_attributes[attribute_name].len + 1 { + if location < unsafe { dom.tag_attributes[attribute_name].len } + 1 { break } } - mut temp_array := dom.tag_attributes[attribute_name][location] + mut temp_array := unsafe { dom.tag_attributes[attribute_name][location] } temp_array << tag dom.tag_attributes[attribute_name][location] = temp_array } @@ -81,7 +81,7 @@ fn (mut dom DocumentObjectModel) add_tag_by_type(tag &Tag) { if tag_name !in dom.tag_type { dom.tag_type[tag_name] = [tag] } else { - mut temp_array := dom.tag_type[tag_name] + mut temp_array := unsafe { dom.tag_type[tag_name] } temp_array << tag dom.tag_type[tag_name] = temp_array } @@ -92,7 +92,7 @@ fn (mut dom DocumentObjectModel) add_tag_by_attribute(tag &Tag) { if attribute_name !in dom.all_attributes { dom.all_attributes[attribute_name] = [tag] } else { - mut temp_array := dom.all_attributes[attribute_name] + mut temp_array := unsafe { dom.all_attributes[attribute_name] } temp_array << tag dom.all_attributes[attribute_name] = temp_array } @@ -176,13 +176,17 @@ pub fn (dom DocumentObjectModel) get_root() &Tag { // get_tag retrieves all tags in the document that have the given tag name. @[deprecated: 'use get_tags instead'] pub fn (dom DocumentObjectModel) get_tag(name string) []&Tag { - return if name in dom.tag_type { dom.tag_type[name] } else { []&Tag{} } + return dom.get_tags(name: name) } // get_tags returns all tags stored in the document. pub fn (dom DocumentObjectModel) get_tags(options GetTagsOptions) []&Tag { if options.name != '' { - return if options.name in dom.tag_type { dom.tag_type[options.name] } else { []&Tag{} } + return if options.name in dom.tag_type { + unsafe { dom.tag_type[options.name] } + } else { + []&Tag{} + } } return dom.all_tags } @@ -195,31 +199,26 @@ pub fn (dom DocumentObjectModel) get_tags_by_class_name(names ...string) []&Tag // get_tag_by_attribute retrieves all tags in the document that have the given attribute name. @[deprecated: 'use get_tags_by_attribute instead'] pub fn (dom DocumentObjectModel) get_tag_by_attribute(name string) []&Tag { - return if name in dom.all_attributes { dom.all_attributes[name] } else { []&Tag{} } + return dom.get_tags_by_attribute(name) } // get_tags_by_attribute retrieves all tags in the document that have the given attribute name. pub fn (dom DocumentObjectModel) get_tags_by_attribute(name string) []&Tag { - return if name in dom.all_attributes { dom.all_attributes[name] } else { []&Tag{} } + return if name in dom.all_attributes { unsafe { dom.all_attributes[name] } } else { []&Tag{} } } // get_tags_by_attribute_value retrieves all tags in the document that have the given attribute name and value. pub fn (mut dom DocumentObjectModel) get_tags_by_attribute_value(name string, value string) []&Tag { location := dom.where_is(value, name) - return if dom.tag_attributes[name].len > location { - dom.tag_attributes[name][location] - } else { - []&Tag{} + attributes := unsafe { dom.tag_attributes[name] } + if attributes.len > location { + return attributes[location] } + return [] } // get_tag_by_attribute_value retrieves all tags in the document that have the given attribute name and value. @[deprecated: 'use get_tags_by_attribute_value instead'] pub fn (mut dom DocumentObjectModel) get_tag_by_attribute_value(name string, value string) []&Tag { - location := dom.where_is(value, name) - return if dom.tag_attributes[name].len > location { - dom.tag_attributes[name][location] - } else { - []&Tag{} - } + return dom.get_tags_by_attribute_value(name, value) }