diff options
Diffstat (limited to 'definisi_kata.go')
| -rw-r--r-- | definisi_kata.go | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/definisi_kata.go b/definisi_kata.go index 0060a97..8d812f8 100644 --- a/definisi_kata.go +++ b/definisi_kata.go @@ -5,6 +5,7 @@ package kbbi import ( + "fmt" "strings" "github.com/shuLhan/share/lib/net/html" @@ -21,14 +22,14 @@ type DefinisiKata struct { Contoh []string `json:"contoh,omitempty"` } -func parseDefinisiKata(li *html.Node) (defKata *DefinisiKata) { +func parseDefinisiKata(in string, li *html.Node) (defKata *DefinisiKata, err error) { elFont := li.GetFirstChild() if elFont == nil || elFont.Data != tagNameFont { - return nil + return nil, nil } elItalic := elFont.GetFirstChild() if elItalic == nil || elItalic.Data != tagNameItalic { - return nil + return nil, nil } defKata = &DefinisiKata{} @@ -44,13 +45,24 @@ func parseDefinisiKata(li *html.Node) (defKata *DefinisiKata) { el := elFont.GetNextSibling() if el == nil { - return defKata + return defKata, nil } defKata.Isi = strings.TrimSpace(libstrings.SingleSpace(el.Data)) + if defKata.Isi == "→" { + defKata.Isi = "" + el = el.GetNextSibling() + if el == nil || el.Data != tagNameAnchor { + return nil, nil + } + el = el.GetFirstChild() + return nil, fmt.Errorf(`%q adalah bentuk tidak baku dari %q`, + in, el.Data) + } + if defKata.Isi[len(defKata.Isi)-1] != ':' { - return defKata + return defKata, nil } defKata.Isi = defKata.Isi[:len(defKata.Isi)-1] @@ -78,5 +90,5 @@ func parseDefinisiKata(li *html.Node) (defKata *DefinisiKata) { el = el.GetNextSibling() } - return defKata + return defKata, nil } |
