aboutsummaryrefslogtreecommitdiff
path: root/kata.go
diff options
context:
space:
mode:
Diffstat (limited to 'kata.go')
-rw-r--r--kata.go98
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
-}