diff options
Diffstat (limited to 'kata.go')
| -rw-r--r-- | kata.go | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/kata.go b/kata.go deleted file mode 100644 index 8cf6466..0000000 --- a/kata.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2020, Shulhan <m.shulhan@gmail.com>. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package kamusku - -import ( - "bytes" - - "github.com/shuLhan/share/lib/net/html" -) - -// -// Err return an error from retrieving definition. -// -func (kata *Kata) Err() error { - return kata.err -} - -// -// Kata store the single root word and its definitions. -// -type Kata struct { - Dasar string `json:"dasar,omitempty"` - Definisi []*DefinisiKata `json:"definisi"` - - // Pesan will contains the message when the word is not found or the - // word is informal (kata tidak baku). - Pesan string `json:"pesan,omitempty"` - - err error -} - -// -// parseHTMLEntri parse HTML body from "/entri/<kata>" page to find the -// definition of the word. -// -func (kata *Kata) parseHTMLEntri(in string, htmlBody []byte) (err error) { - iter, err := html.Parse(bytes.NewReader(htmlBody)) - if err != nil { - return err - } - - for node := iter.Next(); node != nil; node = iter.Next() { - if !node.IsElement() { - continue - } - - switch node.Data { - case tagNameHeader2: - kata.parseKataDasar(node) - - case tagNameOrderedList, tagNameUnorderedList: - li := node.GetFirstChild() - for li != nil { - defKata, err := parseDefinisiKata(in, li) - if err != nil { - kata.Pesan = err.Error() - err = nil - break - } - if defKata == nil { - break - } - kata.Definisi = append(kata.Definisi, defKata) - li = li.GetNextSibling() - } - next := node.GetNextSibling() - iter.SetNext(next) - } - } - - return nil -} - -// -// parseKataDasar given an HMTL element "h2" find a possible root word and -// return true; otherwise it will return false. -// -func (kata *Kata) parseKataDasar(h2 *html.Node) bool { - el := h2.GetFirstChild() - if el.Data != tagNameSpan { - return false - } - v := el.GetAttrValue(attrNameClass) - if v != attrValueRootWord { - return false - } - - el = el.GetFirstChild() - if el.Data != tagNameAnchor { - return false - } - el = el.GetFirstChild() - kata.Dasar = el.Data - - return true -} |
