mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
sanity: move from json to yaml
This commit is contained in:
parent
f875577197
commit
a7f5f97bc2
21 changed files with 82 additions and 82 deletions
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"Indexes" : {"tag": "tags"},
|
||||
"BaseUrl" : "http://localhost"
|
||||
}
|
4
docs/config.yaml
Normal file
4
docs/config.yaml
Normal file
|
@ -0,0 +1,4 @@
|
|||
Indexes:
|
||||
tag: 'tags'
|
||||
BaseUrl: 'http://localhost'
|
||||
...
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Configuring Hugo",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Configuring Hugo"
|
||||
pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
The directory structure and templates provide the majority of the
|
||||
configuration for a site. In fact a config file isn't even needed for many websites
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Contributing to Hugo",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Contributing to Hugo"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
1. Fork it from https://github.com/spf13/hugo
|
||||
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Contributors",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Contributors"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Hugo was built with love and golang by:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Example Content File",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Example Content File"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Somethings are better shown than explained. The following is a very basic example of a content file:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Front Matter",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Front Matter"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
The front matter is one of the features that gives Hugo it's strength. It enables
|
||||
you to include the meta data of the content right with it. Hugo supports a few
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"title": "Installing Hugo",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Installing Hugo"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Hugo is written in GoLang with support for Windows, Linux, FreeBSD and OSX.
|
||||
|
||||
The latest release can be found at [hugo releases](https://github.com/spf13/hugo/releases).
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "License",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "License"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Hugo is released under the Simple Public License.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Organization",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Organization"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Hugo uses markdown files with headers commonly called the front matter. Hugo respects the organization
|
||||
that you provide for your content to minimize any extra configuration, though this can be overridden
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
"title": "Release Notes",
|
||||
"Pubdate": "2013-07-01"
|
||||
|
||||
}
|
||||
---
|
||||
title: "Release Notes"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
* **0.7.0** July 4, 2013
|
||||
* Hugo now includes a simple server
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Roadmap",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Roadmap"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
In no particular order, here is what I'm working on:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Shortcodes",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Shortcodes"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Because Hugo uses markdown for it's content format, it was clear that there's a lot of things that
|
||||
markdown doesn't support well. This is good, the simple nature of markdown is exactly why we chose it.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Source Directory Organization",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Source Directory Organization"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Hugo takes a single directory and uses it as the input for creating a complete website.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Templates",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Templates"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Hugo uses the excellent golang html/template library for it's template engine. It is an extremely
|
||||
lightweight engine that provides a very small amount of logic. In our
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Using Hugo",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Using Hugo"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Make sure either hugo is in your path or provide a path to it.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"title": "Variables",
|
||||
"Pubdate": "2013-07-01"
|
||||
}
|
||||
---
|
||||
title: "Variables"
|
||||
Pubdate: "2013-07-01"
|
||||
...
|
||||
|
||||
Hugo makes a set of values available to the templates. Go templates are context based. The following
|
||||
are available in the context for the templates.
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
package hugolib
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"launchpad.net/goyaml"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
@ -55,7 +55,7 @@ func SetupConfig(cfgfile *string, path *string) *Config {
|
|||
|
||||
file, err := ioutil.ReadFile(configPath)
|
||||
if err == nil {
|
||||
if err := json.Unmarshal(file, &c); err != nil {
|
||||
if err := goyaml.Unmarshal(file, &c); err != nil {
|
||||
fmt.Printf("Error parsing config: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ func interfaceToBool(i interface{}) bool {
|
|||
case bool:
|
||||
return b
|
||||
default:
|
||||
Error("Only Boolean values are supported for this JSON key")
|
||||
Error("Only Boolean values are supported for this YAML key")
|
||||
}
|
||||
|
||||
return false
|
||||
|
@ -106,7 +106,7 @@ func interfaceToString(i interface{}) string {
|
|||
case string:
|
||||
return s
|
||||
default:
|
||||
Error("Only Strings are supported for this JSON key")
|
||||
Error("Only Strings are supported for this YAML key")
|
||||
}
|
||||
|
||||
return ""
|
||||
|
|
|
@ -15,7 +15,7 @@ package hugolib
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"launchpad.net/goyaml"
|
||||
"fmt"
|
||||
"github.com/theplant/blackfriday"
|
||||
"html/template"
|
||||
|
@ -141,23 +141,23 @@ func (p *Page) analyzePage() {
|
|||
}
|
||||
|
||||
// TODO //rewrite to use byte methods instead
|
||||
func (page *Page) parseJsonMetaData(data []byte) ([]string, error) {
|
||||
func (page *Page) parseYamlMetaData(data []byte) ([]string, error) {
|
||||
var err error
|
||||
|
||||
lines := strings.Split(string(data), "\n")
|
||||
datum := lines[0:]
|
||||
|
||||
// go through content parse between "{" and "}"
|
||||
// go through content parse between "---" and "..."
|
||||
// must be on their own lines (for now)
|
||||
var found = 0
|
||||
for i, line := range lines {
|
||||
line = strings.TrimSpace(line)
|
||||
|
||||
if line == "{" {
|
||||
if line == "---" {
|
||||
found += 1
|
||||
}
|
||||
|
||||
if line == "}" {
|
||||
if line == "..." {
|
||||
found -= 1
|
||||
}
|
||||
|
||||
|
@ -168,7 +168,7 @@ func (page *Page) parseJsonMetaData(data []byte) ([]string, error) {
|
|||
}
|
||||
}
|
||||
|
||||
err = page.handleJsonMetaData([]byte(strings.Join(datum, "\n")))
|
||||
err = page.handleYamlMetaData([]byte(strings.Join(datum, "\n")))
|
||||
|
||||
return lines, err
|
||||
}
|
||||
|
@ -185,10 +185,10 @@ func (p *Page) Permalink() template.HTML {
|
|||
}
|
||||
}
|
||||
|
||||
func (page *Page) handleJsonMetaData(datum []byte) error {
|
||||
func (page *Page) handleYamlMetaData(datum []byte) error {
|
||||
var f interface{}
|
||||
if err := json.Unmarshal(datum, &f); err != nil {
|
||||
return fmt.Errorf("Invalide JSON in $v \nError parsing page meta data: %s", page.FileName, err)
|
||||
if err := goyaml.Unmarshal(datum, &f); err != nil {
|
||||
return fmt.Errorf("Invalide YAML in $v \nError parsing page meta data: %s", page.FileName, err)
|
||||
}
|
||||
|
||||
m := f.(map[string]interface{})
|
||||
|
@ -309,7 +309,7 @@ func (page *Page) parseFileHeading(data []byte) ([]string, error) {
|
|||
if data[0] == '-' {
|
||||
return page.parseFileMetaData(data)
|
||||
}
|
||||
return page.parseJsonMetaData(data)
|
||||
return page.parseYamlMetaData(data)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
|
6
main.go
6
main.go
|
@ -17,7 +17,7 @@ import (
|
|||
"flag"
|
||||
"fmt"
|
||||
"github.com/howeyc/fsnotify"
|
||||
"github.com/spf13/hugo/hugolib"
|
||||
"./hugolib"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -26,12 +26,12 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
cfgFiledefault = "config.json"
|
||||
cfgFiledefault = "config.yaml"
|
||||
)
|
||||
|
||||
var (
|
||||
baseUrl = flag.String("b", "", "hostname (and path) to the root eg. http://spf13.com/")
|
||||
cfgfile = flag.String("c", cfgFiledefault, "config file (default is path/config.json)")
|
||||
cfgfile = flag.String("c", cfgFiledefault, "config file (default is path/config.yaml)")
|
||||
checkMode = flag.Bool("k", false, "analyze content and provide feedback")
|
||||
draft = flag.Bool("d", false, "include content marked as draft")
|
||||
help = flag.Bool("h", false, "show this help")
|
||||
|
|
Loading…
Reference in a new issue