diff options
| author | kaa <kaa@disroot.org> | 2025-08-30 22:03:37 -0700 | 
|---|---|---|
| committer | kaa <kaa@disroot.org> | 2025-08-30 22:03:37 -0700 | 
| commit | f38b4ad8b7543b088c5c0c4018285127ad4f4680 (patch) | |
| tree | a2fd9587a98b8605f5416ea69048f13937fca510 /lib/parse | |
| parent | a333aeef611a099827c4e261a3fce7e541eb1f5f (diff) | |
Basic neatroff
Diffstat (limited to 'lib/parse')
| -rw-r--r-- | lib/parse/parse.go | 21 | 
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/parse/parse.go b/lib/parse/parse.go index a86e166..54a77c3 100644 --- a/lib/parse/parse.go +++ b/lib/parse/parse.go @@ -7,13 +7,13 @@ import (  )  type Tag struct { -	name       string -	attributes map[string]string +	Name       string +	Attributes map[string]string  }  func (t *Tag) String() string { -	s := "<" + t.name -	for k, v := range t.attributes { +	s := "<" + t.Name +	for k, v := range t.Attributes {  		s += " " + k + `="` + v + `"`  	}  	s += ">" @@ -52,14 +52,21 @@ func ReadUntil(r io.Reader, sentinels []byte) (string, byte, error) {  func ReadTag(r io.Reader) (*Tag, error) {  	e := new(Tag) -	e.attributes = make(map[string]string) +	e.Attributes = make(map[string]string)  	var err error  	var foundSentinel byte -	e.name, foundSentinel, err = ReadUntil(r, []byte{' ', '>'}) +	e.Name, foundSentinel, err = ReadUntil(r, []byte{' ', '>'})  	if err != nil {  		return nil, err  	} +	if e.Name[0] == '!' { +		// Not An Element +		e.Name = "NAE" +		// Consume rest of tag +		_, _, err := ReadUntil(r, []byte{'>'}) +		return e, err +	}  	for {  		if foundSentinel == '>' { @@ -88,7 +95,7 @@ func ReadTag(r io.Reader) (*Tag, error) {  			value, foundSentinel, err = ReadUntil(r, []byte{' ', '>'})  			value = string(peek) + value  		} -		e.attributes[key] = value +		e.Attributes[key] = value  	}  	return e, err  | 
