all: Add org-mode support

Fixes #1483 
See #936
This commit is contained in:
Chase Adams
2017-02-20 23:46:03 -08:00
committed by Bjørn Erik Pedersen
parent a3af4fe46e
commit 86e8dd62f0
10 changed files with 59 additions and 10 deletions

View File

@@ -19,6 +19,7 @@ import (
"errors"
"strings"
"github.com/chaseadamsio/goorgeous"
toml "github.com/pelletier/go-toml"
"gopkg.in/yaml.v2"
@@ -154,6 +155,8 @@ func DetectFrontMatter(mark rune) (f *frontmatterType) {
return &frontmatterType{[]byte(TOMLDelim), []byte(TOMLDelim), HandleTOMLMetaData, false}
case '{':
return &frontmatterType{[]byte{'{'}, []byte{'}'}, HandleJSONMetaData, true}
case '#':
return &frontmatterType{[]byte("#+"), []byte("\n"), HandleOrgMetaData, false}
default:
return nil
}
@@ -189,3 +192,7 @@ func HandleJSONMetaData(datum []byte) (interface{}, error) {
err := json.Unmarshal(datum, &f)
return f, err
}
func HandleOrgMetaData(datum []byte) (interface{}, error) {
return goorgeous.OrgHeaders(datum)
}

View File

@@ -21,6 +21,8 @@ import (
"regexp"
"strings"
"unicode"
"github.com/chaseadamsio/goorgeous"
)
const (
@@ -91,9 +93,11 @@ func (p *page) Metadata() (meta interface{}, err error) {
if len(frontmatter) != 0 {
fm := DetectFrontMatter(rune(frontmatter[0]))
meta, err = fm.Parse(frontmatter)
if err != nil {
return
if fm != nil {
meta, err = fm.Parse(frontmatter)
if err != nil {
return
}
}
}
return
@@ -129,6 +133,12 @@ func ReadFrom(r io.Reader) (p Page, err error) {
return nil, err
}
newp.frontmatter = fm
} else if newp.render && goorgeous.IsKeyword(firstLine) {
fm, err := goorgeous.ExtractOrgHeaders(reader)
if err != nil {
return nil, err
}
newp.frontmatter = fm
}
content, err := extractContent(reader)