diff options
Diffstat (limited to 'vendor/github.com/chaseadamsio/goorgeous/header.go')
-rw-r--r-- | vendor/github.com/chaseadamsio/goorgeous/header.go | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/vendor/github.com/chaseadamsio/goorgeous/header.go b/vendor/github.com/chaseadamsio/goorgeous/header.go deleted file mode 100644 index 66e8b993..00000000 --- a/vendor/github.com/chaseadamsio/goorgeous/header.go +++ /dev/null @@ -1,70 +0,0 @@ -package goorgeous - -import ( - "bufio" - "bytes" - "regexp" - "strings" -) - -// ExtractOrgHeaders finds and returns all of the headers -// from a bufio.Reader and returns them as their own byte slice -func ExtractOrgHeaders(r *bufio.Reader) (fm []byte, err error) { - var out bytes.Buffer - endOfHeaders := true - for endOfHeaders { - p, err := r.Peek(2) - if err != nil { - return nil, err - } - if !charMatches(p[0], '#') && !charMatches(p[1], '+') { - endOfHeaders = false - break - } - line, _, err := r.ReadLine() - if err != nil { - return nil, err - } - out.Write(line) - out.WriteByte('\n') - } - return out.Bytes(), nil -} - -var reHeader = regexp.MustCompile(`^#\+(\w+?): (.*)`) - -// OrgHeaders find all of the headers from a byte slice and returns -// them as a map of string interface -func OrgHeaders(input []byte) (map[string]interface{}, error) { - out := make(map[string]interface{}) - scanner := bufio.NewScanner(bytes.NewReader(input)) - - for scanner.Scan() { - data := scanner.Bytes() - if !charMatches(data[0], '#') && !charMatches(data[1], '+') { - return out, nil - } - matches := reHeader.FindSubmatch(data) - - if len(matches) < 3 { - continue - } - - key := string(matches[1]) - val := matches[2] - switch { - case strings.ToLower(key) == "tags" || strings.ToLower(key) == "categories" || strings.ToLower(key) == "aliases": - bTags := bytes.Split(val, []byte(" ")) - tags := make([]string, len(bTags)) - for idx, tag := range bTags { - tags[idx] = string(tag) - } - out[key] = tags - default: - out[key] = string(val) - } - - } - return out, nil - -} |