Updating Convert to handle dates properly for yaml and json - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b9bba2b977256642d00938e317cc2b743c418e6e
 (DIR) parent 0c2544608cfae1e272da252c383c8fa72634eed7
 (HTM) Author: spf13 <steve.francia@gmail.com>
       Date:   Thu, 29 May 2014 18:40:16 -0400
       
       Updating Convert to handle dates properly for yaml and json
       
       Fix bug with YAML & JSON with handling dates with 'new' and 'convert'
       
       Diffstat:
         M commands/convert.go                 |      14 ++++++++++++++
         M commands/hugo.go                    |       2 +-
         M commands/new.go                     |       6 ++++++
         M create/content.go                   |       4 ++++
       
       4 files changed, 25 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/commands/convert.go b/commands/convert.go
       @@ -16,7 +16,9 @@ package commands
        import (
                "fmt"
                "path"
       +        "time"
        
       +        "github.com/spf13/cast"
                "github.com/spf13/cobra"
                "github.com/spf13/hugo/hugolib"
                "github.com/spf13/hugo/parser"
       @@ -114,6 +116,18 @@ func convertContents(mark rune) (err error) {
                                return err
                        }
        
       +                // better handling of dates in formats that don't have support for them
       +                if mark == parser.FormatToLeadRune("json") || mark == parser.FormatToLeadRune("yaml") {
       +                        newmetadata := cast.ToStringMap(metadata)
       +                        for k, v := range newmetadata {
       +                                switch vv := v.(type) {
       +                                case time.Time:
       +                                        newmetadata[k] = vv.Format(time.RFC3339)
       +                                }
       +                        }
       +                        metadata = newmetadata
       +                }
       +
                        page.Dir = file.Dir
                        page.SetSourceContent(psr.Content())
                        page.SetSourceMetaData(metadata, mark)
 (DIR) diff --git a/commands/hugo.go b/commands/hugo.go
       @@ -99,7 +99,7 @@ func InitializeConfig() {
                viper.RegisterAlias("taxonomies", "indexes")
        
                viper.SetDefault("Watch", false)
       -        viper.SetDefault("MetadataFormat", "toml")
       +        viper.SetDefault("MetaDataFormat", "toml")
                viper.SetDefault("DisableRSS", false)
                viper.SetDefault("DisableSitemap", false)
                viper.SetDefault("ContentDir", "content")
 (DIR) diff --git a/commands/new.go b/commands/new.go
       @@ -23,6 +23,7 @@ import (
                "github.com/spf13/hugo/helpers"
                "github.com/spf13/hugo/parser"
                jww "github.com/spf13/jwalterweatherman"
       +        "github.com/spf13/viper"
        )
        
        var siteType string
       @@ -33,6 +34,7 @@ var contentFrontMatter string
        
        func init() {
                newSiteCmd.Flags().StringVarP(&configFormat, "format", "f", "toml", "config & frontmatter format")
       +        newCmd.Flags().StringVarP(&configFormat, "format", "f", "toml", "frontmatter format")
                newCmd.Flags().StringVarP(&contentType, "kind", "k", "", "Content type to create")
                newCmd.AddCommand(newSiteCmd)
                newCmd.AddCommand(newThemeCmd)
       @@ -73,6 +75,10 @@ as you see fit.
        func NewContent(cmd *cobra.Command, args []string) {
                InitializeConfig()
        
       +        if cmd.Flags().Lookup("format").Changed {
       +                viper.Set("MetaDataFormat", configFormat)
       +        }
       +
                if len(args) < 1 {
                        cmd.Usage()
                        jww.FATAL.Fatalln("path needs to be provided")
 (DIR) diff --git a/create/content.go b/create/content.go
       @@ -90,6 +90,10 @@ func NewContent(kind, name string) (err error) {
                        return err
                }
        
       +        if x := viper.GetString("MetaDataFormat"); x == "json" || x == "yaml" {
       +                newmetadata["date"] = time.Now().Format(time.RFC3339)
       +        }
       +
                page.Dir = viper.GetString("sourceDir")
                page.SetSourceMetaData(newmetadata, parser.FormatToLeadRune(viper.GetString("MetaDataFormat")))