douceur
Douceur 0.2.0
GolangのシンプルなCSSパーサーとインライナー。
パーサーは、CSS構文モジュールレベル3および対応するJSパーサーに漠然と触発されています。
Inlinerは、HTMLドキュメントで定義されているCSSのみを解析し、外部スタイルシートを取得しません(今のところ)。
Inlinerは、可能であれば追加の属性を挿入します。
< html >
< head >
< style type =" text/css " >
body {
background-color: #f2f2f2;
}
</ style >
</ head >
< body >
< p > Inline me ! </ p >
</ body >
</ html > `
次のようになります
< html >
< head >
</ head >
< body style =" background-color: #f2f2f2; " bgcolor =" #f2f2f2 " >
< p > Inline me ! </ p >
</ body >
</ html > `
bgcolor
属性は、インラードされたbackground-color
スタイルに加えて挿入されます。
ツールのインストール:
$ go install github.com/aymerick/douceur
CSSファイルを解析し、結果を表示します。
$ douceur parse inputfile.css
HTMLドキュメントと表示結果のインラインCSS:
$ douceur inline inputfile.html
フェッチパッケージ:
$ go get github.com/aymerick/douceur
package main
import (
"fmt"
"github.com/aymerick/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 ())
}
ディスプレイ:
body {
background-color : black;
}
p {
color : red;
}
package main
import (
"fmt"
"github.com/aymerick/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 )
}
ディスプレイ:
<! 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