commit | 8fb95984c34738e277513d254dfa4e6bfc39f29a | [log] [tgz] |
---|---|---|
author | Chris Ramón <rchristian.ramon@gmail.com> | Tue May 31 16:43:54 2016 |
committer | Chris Ramón <rchristian.ramon@gmail.com> | Tue May 31 16:43:54 2016 |
tree | 1d8f888c0b0c6a0f038129eb5bde32ebd29a7243 | |
parent | a06d6fa55aeaaef29a6b2e23a39cb94f9b1137ae [diff] | |
parent | ce9bdda3802aedeb8c060f0ff772571f72e444cd [diff] |
Merge pull request #3 from alexsaveliev/master Dealing with CSS comments
A simple CSS parser and inliner in Golang.
Parser is vaguely inspired by CSS Syntax Module Level 3 and corresponding JS parser.
Inliner only parses CSS defined in HTML document, it DOES NOT fetch external stylesheets (for now).
Inliner inserts additional attributes when possible, for example:
<html> <head> <style type="text/css"> body { background-color: #f2f2f2; } </style> </head> <body> <p>Inline me !</p> </body> </html>`
Becomes:
<html> <head> </head> <body style="background-color: #f2f2f2;" bgcolor="#f2f2f2"> <p>Inline me !</p> </body> </html>`
The bgcolor
attribute is inserted, in addition to the inlined background-color
style.
Install tool:
$ go install github.com/chris-ramon/douceur
Parse a CSS file and display result:
$ douceur parse inputfile.css
Inline CSS in an HTML document and display result:
$ douceur inline inputfile.html
Fetch package:
$ go get github.com/chris-ramon/douceur
package main
import (
"fmt"
"github.com/chris-ramon/douceur/parser"
)
func main() {
input := `body {
/* D4rK s1T3 */
background-color: black;
}
p {
/* Try to read that ! HAHA! */
color: red; /* L O L */
}
`
stylesheet, err := parser.Parse(input)
if err != nil {
panic("Please fill a bug :)")
}
fmt.Print(stylesheet.String())
}
Displays:
body { background-color: black; } p { color: red; }
package main
import (
"fmt"
"github.com/chris-ramon/douceur/inliner"
)
func main() {
input := `<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css">
p {
font-family: 'Helvetica Neue', Verdana, sans-serif;
color: #eee;
}
</style>
</head>
<body>
<p>
Inline me please!
</p>
</body>
</html>`
html, err := inliner.Inline(input)
if err != nil {
panic("Please fill a bug :)")
}
fmt.Print(html)
}
Displays:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <p style="color: #eee; font-family: 'Helvetica Neue', Verdana, sans-serif;"> Inline me please! </p> </body></html>
go test ./... -v