mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
changing to suport yaml rather than json and adding optional restructuredtext support
This commit is contained in:
parent
a7f5f97bc2
commit
431fa0e2d7
5 changed files with 64 additions and 30 deletions
|
@ -7,13 +7,15 @@ 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
|
||||
since the defaults used follow commonly used patterns.
|
||||
|
||||
The following is an example of a config file with the default values
|
||||
The following is an example of a config file with the default values:
|
||||
|
||||
SourceDir: "content"
|
||||
LayoutDir: "layouts"
|
||||
PublishDir: "public"
|
||||
BuildDrafts: false
|
||||
Tags:
|
||||
category: "categories"
|
||||
tag: "tags"
|
||||
BaseUrl: "http://yourSite.com/"
|
||||
...
|
||||
|
||||
{
|
||||
"SourceDir" : "content",
|
||||
"LayoutDir" : "layouts",
|
||||
"PublishDir" : "public",
|
||||
"BuildDrafts" : false,
|
||||
"Tags" : { "category" : "categories", "tag" : "tags" },
|
||||
"BaseUrl" : "http://yourSite.com/"
|
||||
}
|
||||
|
|
|
@ -7,16 +7,16 @@ Somethings are better shown than explained. The following is a very basic exampl
|
|||
|
||||
**mysite/project/nitro.md <- http://mysite.com/project/nitro.html**
|
||||
|
||||
{
|
||||
"Title": "Nitro : A quick and simple profiler for golang",
|
||||
"Description": "",
|
||||
"Keywords": [ "Development", "golang", "profiling" ],
|
||||
"Tags": [ "Development", "golang", "profiling" ],
|
||||
"Pubdate": "2013-06-19",
|
||||
"Topics": [ "Development", "GoLang" ],
|
||||
"Slug": "nitro",
|
||||
"project_url": "http://github.com/spf13/nitro"
|
||||
}
|
||||
---
|
||||
Title: "Nitro : A quick and simple profiler for golang"
|
||||
Description": ""
|
||||
Keywords": [ "Development", "golang", "profiling" ]
|
||||
Tags": [ "Development", "golang", "profiling" ]
|
||||
Pubdate": "2013-06-19"
|
||||
Topics": [ "Development", "GoLang" ]
|
||||
Slug": "nitro"
|
||||
project_url": "http://github.com/spf13/nitro"
|
||||
...
|
||||
|
||||
# Nitro
|
||||
|
||||
|
|
|
@ -5,18 +5,21 @@ 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
|
||||
different formats. The main format supported is JSON. Here is an example:
|
||||
different formats. The main format supported is YAML. Here is an example:
|
||||
|
||||
{
|
||||
"Title": "spf13-vim 3.0 release and new website",
|
||||
"Description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.",
|
||||
"Tags": [ ".vimrc", "plugins", "spf13-vim", "vim" ],
|
||||
"Pubdate": "2012-04-06",
|
||||
"Categories": [ "Development", "VIM" ],
|
||||
"Slug": "spf13-vim-3-0-release-and-new-website"
|
||||
}
|
||||
---
|
||||
Title: "spf13-vim 3.0 release and new website"
|
||||
Description: "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
|
||||
Tags: [ ".vimrc", "plugins", "spf13-vim", "vim" ]
|
||||
Pubdate: "2012-04-06"
|
||||
Categories:
|
||||
- "Development"
|
||||
- "VIM"
|
||||
Slug: "spf13-vim-3-0-release-and-new-website"
|
||||
...
|
||||
|
||||
### Variables
|
||||
|
||||
There are a few predefined variables that Hugo is aware of and utilizes. The user can also create
|
||||
any variable they want to. These will be placed into the `.Params` variable available to the templates.
|
||||
|
||||
|
@ -31,6 +34,8 @@ any variable they want to. These will be placed into the `.Params` variable avai
|
|||
|
||||
**Draft** If true the content will not be rendered unless `hugo` is called with -d<br>
|
||||
**Type** The type of the content (will be derived from the directory automatically if unset).<br>
|
||||
**Markup** (Experimental) Specify "rst" for reStructuredText (requires
|
||||
`rst2html`,) or "md" (default) for the Markdown.<br>
|
||||
**Slug** The token to appear in the tail of the url.<br>
|
||||
*or*<br>
|
||||
**Url** The full path to the content from the web root.<br>
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"html/template"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
|
@ -40,6 +41,7 @@ type Page struct {
|
|||
contentType string
|
||||
Draft bool
|
||||
Tmpl *template.Template
|
||||
Markup string
|
||||
PageMeta
|
||||
File
|
||||
Position
|
||||
|
@ -80,6 +82,7 @@ func initializePage(filename string) (page Page) {
|
|||
page.Extension = "html"
|
||||
page.Params = make(map[string]interface{})
|
||||
page.Keywords = make([]string, 10, 30)
|
||||
page.Markup = "md"
|
||||
page.setSection()
|
||||
|
||||
return page
|
||||
|
@ -216,6 +219,8 @@ func (page *Page) handleYamlMetaData(datum []byte) error {
|
|||
page.Draft = interfaceToBool(v)
|
||||
case "layout":
|
||||
page.layout = interfaceToString(v)
|
||||
case "markup":
|
||||
page.Markup = interfaceToString(v)
|
||||
case "status":
|
||||
page.Status = interfaceToString(v)
|
||||
default:
|
||||
|
@ -352,7 +357,12 @@ func (page *Page) buildPageFromFile() error {
|
|||
return err
|
||||
}
|
||||
|
||||
page.convertMarkdown(content)
|
||||
switch page.Markup {
|
||||
case "md":
|
||||
page.convertMarkdown(content)
|
||||
case "rst":
|
||||
page.convertRestructuredText(content)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -379,3 +389,20 @@ func (page *Page) convertMarkdown(lines []string) {
|
|||
page.Content = template.HTML(content)
|
||||
page.Summary = template.HTML(TruncateWordsToWholeSentence(StripHTML(StripShortcodes(content)), summaryLength))
|
||||
}
|
||||
|
||||
func (page *Page) convertRestructuredText(lines []string) {
|
||||
|
||||
page.RawMarkdown = strings.Join(lines, " ")
|
||||
|
||||
cmd := exec.Command("rst2html.py", "--template=/tmp/template.txt")
|
||||
cmd.Stdin = strings.NewReader(page.RawMarkdown)
|
||||
var out bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
if err := cmd.Run(); err != nil {
|
||||
print(err)
|
||||
}
|
||||
|
||||
content := out.String()
|
||||
page.Content = template.HTML(content)
|
||||
page.Summary = template.HTML(TruncateWordsToWholeSentence(StripHTML(StripShortcodes(content)), summaryLength))
|
||||
}
|
||||
|
|
2
main.go
2
main.go
|
@ -14,10 +14,10 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"./hugolib"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/howeyc/fsnotify"
|
||||
"./hugolib"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
|
Loading…
Reference in a new issue