fix #69
parent
fbbf79d757
commit
b46dcb6ccb
|
@ -82,6 +82,45 @@ func Unmarshal(content []byte) (interface{}, error) {
|
|||
return data, nil
|
||||
}
|
||||
|
||||
// Marshal encodes the interface in a specific format
|
||||
func Marshal(data interface{}, mark rune) ([]byte, error) {
|
||||
b := new(bytes.Buffer)
|
||||
|
||||
switch mark {
|
||||
case '+':
|
||||
enc := toml.NewEncoder(b)
|
||||
err := enc.Encode(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b.Bytes(), nil
|
||||
case '{':
|
||||
by, err := json.MarshalIndent(data, "", " ")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
b.Write(by)
|
||||
_, err = b.Write([]byte("\n"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b.Bytes(), nil
|
||||
case '-':
|
||||
by, err := yaml.Marshal(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
b.Write(by)
|
||||
_, err = b.Write([]byte("..."))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b.Bytes(), nil
|
||||
default:
|
||||
return nil, errors.New("Unsupported Format provided")
|
||||
}
|
||||
}
|
||||
|
||||
// Content is the block content
|
||||
type Content struct {
|
||||
Other interface{}
|
||||
|
|
|
@ -4,14 +4,13 @@ import (
|
|||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/hacdias/caddy-filemanager/config"
|
||||
"github.com/spf13/hugo/parser"
|
||||
"github.com/hacdias/caddy-filemanager/frontmatter"
|
||||
)
|
||||
|
||||
// PreProccessPUT is used to update a file that was edited
|
||||
|
@ -83,27 +82,21 @@ func ParseFrontMatterOnlyFile(data interface{}, filename string) ([]byte, error)
|
|||
}
|
||||
|
||||
// ParseFrontMatter is the frontmatter parser
|
||||
func ParseFrontMatter(data interface{}, frontmatter string) ([]byte, error) {
|
||||
func ParseFrontMatter(data interface{}, front string) ([]byte, error) {
|
||||
var mark rune
|
||||
|
||||
switch frontmatter {
|
||||
switch front {
|
||||
case "toml":
|
||||
mark = rune('+')
|
||||
mark = '+'
|
||||
case "json":
|
||||
mark = rune('{')
|
||||
mark = '{'
|
||||
case "yaml":
|
||||
mark = rune('-')
|
||||
mark = '-'
|
||||
default:
|
||||
return []byte{}, errors.New("Can't define the frontmatter.")
|
||||
return nil, errors.New("Unsupported Format provided")
|
||||
}
|
||||
|
||||
f, err := parser.InterfaceToFrontMatter(data, mark)
|
||||
|
||||
if err != nil {
|
||||
return []byte{}, err
|
||||
}
|
||||
|
||||
return f, nil
|
||||
return frontmatter.Marshal(data, mark)
|
||||
}
|
||||
|
||||
// ParseCompleteFile parses a complete file
|
||||
|
@ -126,7 +119,6 @@ func ParseCompleteFile(data map[string]interface{}, filename string, frontmatter
|
|||
front, err := ParseFrontMatter(data, frontmatter)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(frontmatter)
|
||||
return []byte{}, err
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue