ref: a7f5f97bc2c8941cbe9ade740e3c0e54202d8613
parent: f875577197c307116f11c33be0d3f1f95594a500
author: tycho garen <[email protected]>
date: Sat Jul 6 15:36:30 EDT 2013
sanity: move from json to yaml
--- a/docs/config.json
+++ /dev/null
@@ -1,4 +1,0 @@
-{
- "Indexes" : {"tag": "tags"},
- "BaseUrl" : "http://localhost"
-}
--- /dev/null
+++ b/docs/config.yaml
@@ -1,0 +1,4 @@
+Indexes:
+ tag: 'tags'
+BaseUrl: 'http://localhost'
+...
--- a/docs/content/doc/configuration.md
+++ b/docs/content/doc/configuration.md
@@ -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
--- a/docs/content/doc/contributing.md
+++ b/docs/content/doc/contributing.md
@@ -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`)
--- a/docs/content/doc/contributors.md
+++ b/docs/content/doc/contributors.md
@@ -1,7 +1,7 @@
-{
- "title": "Contributors",
- "Pubdate": "2013-07-01"
-}
+---
+title: "Contributors"
+Pubdate: "2013-07-01"
+...
Hugo was built with love and golang by:
--- a/docs/content/doc/example.md
+++ b/docs/content/doc/example.md
@@ -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:
--- a/docs/content/doc/front-matter.md
+++ b/docs/content/doc/front-matter.md
@@ -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
--- a/docs/content/doc/installing.md
+++ b/docs/content/doc/installing.md
@@ -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).
--- a/docs/content/doc/license.md
+++ b/docs/content/doc/license.md
@@ -1,7 +1,7 @@
-{
- "title": "License",
- "Pubdate": "2013-07-01"
-}
+---
+title: "License"
+Pubdate: "2013-07-01"
+...
Hugo is released under the Simple Public License.
--- a/docs/content/doc/organization.md
+++ b/docs/content/doc/organization.md
@@ -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
--- a/docs/content/doc/release-notes.md
+++ b/docs/content/doc/release-notes.md
@@ -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
--- a/docs/content/doc/roadmap.md
+++ b/docs/content/doc/roadmap.md
@@ -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:
--- a/docs/content/doc/shortcodes.md
+++ b/docs/content/doc/shortcodes.md
@@ -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.
--- a/docs/content/doc/source-directory.md
+++ b/docs/content/doc/source-directory.md
@@ -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.
--- a/docs/content/doc/templates.md
+++ b/docs/content/doc/templates.md
@@ -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
--- a/docs/content/doc/usage.md
+++ b/docs/content/doc/usage.md
@@ -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.
--- a/docs/content/doc/variables.md
+++ b/docs/content/doc/variables.md
@@ -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.
--- a/hugolib/config.go
+++ b/hugolib/config.go
@@ -14,7 +14,7 @@
package hugolib
import (
- "encoding/json"
+ "launchpad.net/goyaml"
"fmt"
"io/ioutil"
"os"
@@ -55,7 +55,7 @@
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)
}
--- a/hugolib/helpers.go
+++ b/hugolib/helpers.go
@@ -81,7 +81,7 @@
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 @@
case string:
return s
default:
- Error("Only Strings are supported for this JSON key")
+ Error("Only Strings are supported for this YAML key")
}
return ""
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -15,7 +15,7 @@
import (
"bytes"
- "encoding/json"
+ "launchpad.net/goyaml"
"fmt"
"github.com/theplant/blackfriday"
"html/template"
@@ -141,23 +141,23 @@
}
// 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 @@
}
}
- err = page.handleJsonMetaData([]byte(strings.Join(datum, "\n")))
+ err = page.handleYamlMetaData([]byte(strings.Join(datum, "\n")))
return lines, err
}
@@ -185,10 +185,10 @@
}
}
-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 @@
if data[0] == '-' {
return page.parseFileMetaData(data)
}
- return page.parseJsonMetaData(data)
+ return page.parseYamlMetaData(data)
}
return nil, nil
}
--- a/main.go
+++ b/main.go
@@ -17,7 +17,7 @@
"flag"
"fmt"
"github.com/howeyc/fsnotify"
- "github.com/spf13/hugo/hugolib"
+ "./hugolib"
"net/http"
"os"
"path/filepath"
@@ -26,12 +26,12 @@
)
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")