diff --git a/display.go b/display.go index 79bebd8..2d08f62 100644 --- a/display.go +++ b/display.go @@ -76,6 +76,13 @@ func jsonify(node *html.Node) map[string]interface{} { } vals["text"] = text } + case html.CommentNode: + comment := strings.TrimSpace(child.Data) + currComment, ok := vals["comment"] + if ok { + comment = fmt.Sprintf("%s %s", currComment, comment) + } + vals["comment"] = comment } } if len(children) > 0 { diff --git a/main.go b/main.go index f9a4769..e85ea4a 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,7 @@ import ( "strings" ) -const VERSION string = "0.3.1" +const VERSION string = "0.3.2" var ( // Flags @@ -35,7 +35,7 @@ func Fatal(format string, args ...interface{}) { func PrintHelp() { helpString := `Usage - pup [list of css selectors] + pup [flags] [selectors] [optional display function] Version diff --git a/printing.go b/printing.go index 54faef9..e22632a 100644 --- a/printing.go +++ b/printing.go @@ -1,25 +1,23 @@ package main import ( + "fmt" + "strings" + "code.google.com/p/go.net/html" "code.google.com/p/go.net/html/atom" - "fmt" + "github.com/fatih/color" "github.com/mattn/go-colorable" - "regexp" ) var ( // Colors - tagColor *color.Color = color.New(color.FgYellow).Add(color.Bold) - tokenColor = color.New(color.FgCyan).Add(color.Bold) - attrKeyColor = color.New(color.FgRed) + tagColor *color.Color = color.New(color.FgCyan) + tokenColor = color.New(color.FgCyan) + attrKeyColor = color.New(color.FgMagenta) quoteColor = color.New(color.FgBlue) - - // Regexp helpers - whitespaceRegexp *regexp.Regexp = regexp.MustCompile(`^\s*$`) - preWhitespace = regexp.MustCompile(`^\s+`) - postWhitespace = regexp.MustCompile(`\s+$`) + commentColor = color.New(color.FgYellow) ) func init() { @@ -75,10 +73,9 @@ func (t TreeDisplayer) printNode(n *html.Node, level int) { switch n.Type { case html.TextNode: s := html.EscapeString(n.Data) - if !whitespaceRegexp.MatchString(s) { - s = preWhitespace.ReplaceAllString(s, "") - s = postWhitespace.ReplaceAllString(s, "") - t.printIndent(level) + s = strings.TrimSpace(s) + if s != "" { + t.printIndent(level + 1) fmt.Println(s) } case html.ElementNode: @@ -117,7 +114,15 @@ func (t TreeDisplayer) printNode(n *html.Node, level int) { fmt.Printf("\n", n.Data) } } - case html.CommentNode, html.DoctypeNode, html.DocumentNode: + case html.CommentNode: + t.printIndent(level) + if printColor { + commentColor.Printf("\n", n.Data) + } else { + fmt.Printf("\n", n.Data) + } + t.printChildren(n, level) + case html.DoctypeNode, html.DocumentNode: t.printChildren(n, level) } }