diff --git a/docs/config.json b/docs/config.json deleted file mode 100644 index 6c8a198d8..000000000 --- a/docs/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Indexes" : {"tag": "tags"}, - "BaseUrl" : "http://localhost" -} diff --git a/docs/config.yaml b/docs/config.yaml new file mode 100644 index 000000000..771552606 --- /dev/null +++ b/docs/config.yaml @@ -0,0 +1,4 @@ +Indexes: + tag: 'tags' +BaseUrl: 'http://localhost' +... diff --git a/docs/content/doc/configuration.md b/docs/content/doc/configuration.md index bc8df19e0..eea530f02 100644 --- 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 diff --git a/docs/content/doc/contributing.md b/docs/content/doc/contributing.md index 8ff4fccb4..6b8aa8233 100644 --- 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`) diff --git a/docs/content/doc/contributors.md b/docs/content/doc/contributors.md index 003d18553..e8a8ad976 100644 --- 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: diff --git a/docs/content/doc/example.md b/docs/content/doc/example.md index 67311a1ca..75f35f2bf 100644 --- 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: diff --git a/docs/content/doc/front-matter.md b/docs/content/doc/front-matter.md index 6feb74e4e..3f0083713 100644 --- 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 diff --git a/docs/content/doc/installing.md b/docs/content/doc/installing.md index 303e9ffa8..1f0f02ded 100644 --- 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). diff --git a/docs/content/doc/license.md b/docs/content/doc/license.md index 257c4cf93..43eba11e6 100644 --- 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. diff --git a/docs/content/doc/organization.md b/docs/content/doc/organization.md index 49647c53e..23238b26d 100644 --- 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 diff --git a/docs/content/doc/release-notes.md b/docs/content/doc/release-notes.md index 34bd53156..a4b9e11e5 100644 --- 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 diff --git a/docs/content/doc/roadmap.md b/docs/content/doc/roadmap.md index 3a4faf725..7cc5bc812 100644 --- 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: diff --git a/docs/content/doc/shortcodes.md b/docs/content/doc/shortcodes.md index 1d30aa8dc..abca668fe 100644 --- 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. diff --git a/docs/content/doc/source-directory.md b/docs/content/doc/source-directory.md index 326a556c3..a33adb279 100644 --- 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. diff --git a/docs/content/doc/templates.md b/docs/content/doc/templates.md index e7403bc56..c2164feb8 100644 --- 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 diff --git a/docs/content/doc/usage.md b/docs/content/doc/usage.md index 3c7033be4..950c4abc8 100644 --- 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. diff --git a/docs/content/doc/variables.md b/docs/content/doc/variables.md index ec84ac21c..a5d70739b 100644 --- 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. diff --git a/hugolib/config.go b/hugolib/config.go index abb25046a..84d6ce966 100644 --- 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 @@ 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) } diff --git a/hugolib/helpers.go b/hugolib/helpers.go index 1e02af90b..4ebeea998 100644 --- a/hugolib/helpers.go +++ b/hugolib/helpers.go @@ -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 "" diff --git a/hugolib/page.go b/hugolib/page.go index 2e07cf70d..46c566412 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -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 } diff --git a/main.go b/main.go index d7386c6c1..1de48f766 100644 --- a/main.go +++ b/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")