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
|
configuration for a site. In fact a config file isn't even needed for many websites
|
||||||
since the defaults used follow commonly used patterns.
|
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**
|
**mysite/project/nitro.md <- http://mysite.com/project/nitro.html**
|
||||||
|
|
||||||
{
|
---
|
||||||
"Title": "Nitro : A quick and simple profiler for golang",
|
Title: "Nitro : A quick and simple profiler for golang"
|
||||||
"Description": "",
|
Description": ""
|
||||||
"Keywords": [ "Development", "golang", "profiling" ],
|
Keywords": [ "Development", "golang", "profiling" ]
|
||||||
"Tags": [ "Development", "golang", "profiling" ],
|
Tags": [ "Development", "golang", "profiling" ]
|
||||||
"Pubdate": "2013-06-19",
|
Pubdate": "2013-06-19"
|
||||||
"Topics": [ "Development", "GoLang" ],
|
Topics": [ "Development", "GoLang" ]
|
||||||
"Slug": "nitro",
|
Slug": "nitro"
|
||||||
"project_url": "http://github.com/spf13/nitro"
|
project_url": "http://github.com/spf13/nitro"
|
||||||
}
|
...
|
||||||
|
|
||||||
# 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
|
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
|
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",
|
Title: "spf13-vim 3.0 release and new website"
|
||||||
"Description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.",
|
Description: "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
|
||||||
"Tags": [ ".vimrc", "plugins", "spf13-vim", "vim" ],
|
Tags: [ ".vimrc", "plugins", "spf13-vim", "vim" ]
|
||||||
"Pubdate": "2012-04-06",
|
Pubdate: "2012-04-06"
|
||||||
"Categories": [ "Development", "VIM" ],
|
Categories:
|
||||||
"Slug": "spf13-vim-3-0-release-and-new-website"
|
- "Development"
|
||||||
}
|
- "VIM"
|
||||||
|
Slug: "spf13-vim-3-0-release-and-new-website"
|
||||||
|
...
|
||||||
|
|
||||||
### Variables
|
### Variables
|
||||||
|
|
||||||
There are a few predefined variables that Hugo is aware of and utilizes. The user can also create
|
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.
|
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>
|
**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>
|
**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>
|
**Slug** The token to appear in the tail of the url.<br>
|
||||||
*or*<br>
|
*or*<br>
|
||||||
**Url** The full path to the content from the web root.<br>
|
**Url** The full path to the content from the web root.<br>
|
||||||
|
|
|
@ -21,6 +21,7 @@ import (
|
||||||
"html/template"
|
"html/template"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -40,6 +41,7 @@ type Page struct {
|
||||||
contentType string
|
contentType string
|
||||||
Draft bool
|
Draft bool
|
||||||
Tmpl *template.Template
|
Tmpl *template.Template
|
||||||
|
Markup string
|
||||||
PageMeta
|
PageMeta
|
||||||
File
|
File
|
||||||
Position
|
Position
|
||||||
|
@ -80,6 +82,7 @@ func initializePage(filename string) (page Page) {
|
||||||
page.Extension = "html"
|
page.Extension = "html"
|
||||||
page.Params = make(map[string]interface{})
|
page.Params = make(map[string]interface{})
|
||||||
page.Keywords = make([]string, 10, 30)
|
page.Keywords = make([]string, 10, 30)
|
||||||
|
page.Markup = "md"
|
||||||
page.setSection()
|
page.setSection()
|
||||||
|
|
||||||
return page
|
return page
|
||||||
|
@ -216,6 +219,8 @@ func (page *Page) handleYamlMetaData(datum []byte) error {
|
||||||
page.Draft = interfaceToBool(v)
|
page.Draft = interfaceToBool(v)
|
||||||
case "layout":
|
case "layout":
|
||||||
page.layout = interfaceToString(v)
|
page.layout = interfaceToString(v)
|
||||||
|
case "markup":
|
||||||
|
page.Markup = interfaceToString(v)
|
||||||
case "status":
|
case "status":
|
||||||
page.Status = interfaceToString(v)
|
page.Status = interfaceToString(v)
|
||||||
default:
|
default:
|
||||||
|
@ -352,7 +357,12 @@ func (page *Page) buildPageFromFile() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
page.convertMarkdown(content)
|
switch page.Markup {
|
||||||
|
case "md":
|
||||||
|
page.convertMarkdown(content)
|
||||||
|
case "rst":
|
||||||
|
page.convertRestructuredText(content)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,3 +389,20 @@ func (page *Page) convertMarkdown(lines []string) {
|
||||||
page.Content = template.HTML(content)
|
page.Content = template.HTML(content)
|
||||||
page.Summary = template.HTML(TruncateWordsToWholeSentence(StripHTML(StripShortcodes(content)), summaryLength))
|
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
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"./hugolib"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/howeyc/fsnotify"
|
"github.com/howeyc/fsnotify"
|
||||||
"./hugolib"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
Loading…
Reference in a new issue