func NewSource() *Source {
	return &Source{lines: []string{}}
}
NewSource returns a new Source
package goview
import (
	"fmt"
	"strings"
)
type View struct {
	Files []*SourceFile
}
func New(capacity int) *View {
	return &View{Files: make([]*SourceFile, 0, capacity)}
}
func (view *View) Append(file *SourceFile) *SourceFile {
	view.Files = append(view.Files, file)
	return file
}
type SourceFile struct {
	Directory string
	Name      string  
	source    *Source
}
func NewFile(directory, name string) *SourceFile {
	return &SourceFile{
		Directory: directory,
		Name:      name,
		source:    NewSource(),
	}
}
func (sf *SourceFile) Contents() string {
	return sf.source.Contents()
}
func (sf *SourceFile) Append(source *Source) {
	sf.source.lines = append(sf.source.lines, source.lines...)
}
func (sf *SourceFile) P(format string, args ...interface{}) {
	sf.source.P(format, args...)
}
type Source struct {
	lines []string  
}