GitXplorerGitXplorer
m

go-leansite

public
32 stars
3 forks
0 issues

Commits

List of commits on branch master.
Unverified
22ba5033715a6ac54fdc4339fdf443aff4226ad3

update go-forks imports

committed 12 years ago
Unverified
3949ab6780f03b8742e33694d21d5960423c5c72

markdown

committed 12 years ago
Unverified
cf4ec0dca22d99d109f86b06e96dd722f94d6b11

uio.WatchIn()

committed 12 years ago
Unverified
96e2c45404d01d04c75d73958ab42878f0a9110f

Simplified uio.Walk()ing

committed 12 years ago
Unverified
9e9e8b3b6f64c3f2e19d4044c1af0413c6886ac1

uio.Watcher refactors

committed 12 years ago
Unverified
e589de243dc521fbf951f96df65d3770e7742692

rm __doc.html -- godoc.org and local "go doc" is good enough

committed 12 years ago

README

The README file for this repository.

leansite

-- import "github.com/metaleap/go-leansite"

A super-minimalistic "dynamic-web-page" server written in Go, just to explore the net/http, html/template, and Gorilla web packages.

The folder helloworld represents a sample LeanSite and can be used as a seed site:

  • run it standalone via go run $GOPATH/src/github.com/metaleap/go-leansite/helloworld/go-leansite-helloworld/main.go

  • run it on your Google App Engine SDK via dev_appserver.py $GOPATH/src/github.com/metaleap/go-leansite/helloworld

  • see it in action running on Google App Engine at http://go-leansite-helloworld.appspot.com/

Usage

var (
	//	To be set via Init(), see func Init() docs
	DirPath string

	//	Various file-system watchers, initialized by Init()
	DirWatch *ufs.Watcher

	//	Our request router, initialized by Init()
	Router *mux.Router

	//	Some site-specific data loaded from DirPath
	SiteData struct {
		//	Top-level navigation links loaded from contents/top.nav JSON file
		TopNav NavItems

		//	A map of blogs. Populated by PageContext.GetBlogArchive(), which is called from a template
		Blogs map[string]BlogNav
	}
)

func Init

func Init(dirPath string) (err error)

Stand-alone: call this in your main() before calling ListenAndServe().

App Engine: call this in your init() and DON'T call ListenAndServe().

dirPath: the site's base directory which contains folders "static", "contents" and "templates".

func ListenAndServe

func ListenAndServe(addr string) (err error)

addr: see http.Server.Addr

type BlogNav

type BlogNav struct {
	//	A chronological listing of blog entries
	Nav BlogNavItems
}

A chronological listing of blog entries

func (*BlogNav) ShowYear

func (me *BlogNav) ShowYear(year string) (dif bool)

Returns true if year is different than the value passed when this method was last called

type BlogNavItem

type BlogNavItem struct {
	//	Embedded navigation info (Href, Caption)
	NavItem

	//	Date posted
	Year, Month, Day string
}

Represents a blog entry

type BlogNavItems

type BlogNavItems []BlogNavItem

A collection of blog entries

func (BlogNavItems) Len

func (me BlogNavItems) Len() int

Implements sort.Interface.Len()

func (BlogNavItems) Less

func (me BlogNavItems) Less(i, j int) bool

Implements sort.Interface.Less()

func (BlogNavItems) Swap

func (me BlogNavItems) Swap(i, j int)

Implements sort.Interface.Swap()

type NavItem

type NavItem struct {
	//	Link attributes
	CssClass, Href, Caption, Desc string
}

A navigation link such as used in the sample site's top-navbar

func (*NavItem) IsActive

func (me *NavItem) IsActive(pc *PageContext) bool

Returns true if this NavItem points to the resource represented by pc, or an ancestor resource.

type NavItems

type NavItems []NavItem

A collection of navigation links

type PageContext

type PageContext struct {
	//	The underlying http.Request
	R *http.Request

	//	Host-relative Request URL path
	Path string

	//	Extracted from either SiteData.TopNav or the first <h2> occurence in the final HTML output
	PageTitle string

	//	Final HTML output
	HtmlContent template.HTML

	//	Always equivalent to SiteData.TopNav
	TopNav NavItems

	//	Contains the current year, for auto-updating copyright notices
	Year int
}

Represents a single page request, used as pipeline in main template

func NewPageContext

func NewPageContext(r *http.Request, path string) (me *PageContext)

Creates a new PageContext for the specified http.Request and host-relative request URL path

func (*PageContext) GetBlogArchive

func (me *PageContext) GetBlogArchive(path string) *BlogNav

Returns a BlogNav for the specified path. For example, GetBlogArchive("blog") maps to "contents/blog/"

-- godocdown http://github.com/robertkrimen/godocdown