func (ctx *Context) View() map[string]interface{} {
	m := map[string]interface{}{
		"Version":   vars.Version,
		"Source":    ctx.Source,
		"Nav":       ctx.Source.Nav,
		"Meta":      ctx.Source.Meta,
		"Title":     ctx.Source.Meta.Title + " - " + ctx.Source.Meta.Subtitle,
		"Desc":      ctx.Source.Meta.Desc,
		"Comment":   ctx.Source.Comment,
		"Owner":     ctx.Source.Owner,
		"Analytics": ctx.Source.Analytics,
		"Tree":      ctx.Tree,
		"Lang":      ctx.Source.Meta.Language,
		"Hover":     "",
		"Base":      strings.TrimRight(ctx.Source.Meta.Path, "/"),
		"Root":      strings.TrimRight(ctx.Source.Meta.Root, "/"),
	}
	if ctx.Source.Meta.Language == "" {
		m["I18n"] = ctx.Source.I18n["en"]
		if m["I18n"] == nil {
			m["I18n"] = helper.NewI18nEmpty()
		}
	} else {
		if i18n, ok := ctx.Source.I18n[ctx.Source.Meta.Language]; ok {
			m["I18n"] = i18n
		} else {
			m["I18n"] = helper.NewI18nEmpty()
		}
	}
	return m
}
View get view data to template from Context
package builder
import (
	"errors"
	"fmt"
	"path"
	"strings"
	"sync/atomic"
	"time"
	"github.com/Unknwon/com"
	"github.com/go-xiaohei/pugo/app/helper"
	"github.com/go-xiaohei/pugo/app/model"
	"github.com/go-xiaohei/pugo/app/sync"
	"github.com/go-xiaohei/pugo/app/theme"
	"github.com/go-xiaohei/pugo/app/vars"
	"github.com/urfave/cli"
	"gopkg.in/inconshreveable/log15.v2"
)
type (
	Context struct {
		cli *cli.Context
		From string
		To string
		ThemeName string
		Err error
		Source *Source
		Theme *theme.Theme
		Tree *model.Tree
		Sync *sync.Syncer
		time           time.Time
		counter        int64
		srcDir, dstDir string
	}
)
func NewContext(cli *cli.Context, from, to, theme string) *Context {
	c := &Context{
		cli:       cli,
		From:      from,
		To:        to,
		ThemeName: theme,
		time:      time.Now(),
	}
	c.Tree = model.NewTree(c.DstDir())
	return c
}