GitPedia

Douceur

A simple CSS parser and inliner in Go

From aymerick·Updated May 13, 2026·View on GitHub·

Parser is vaguely inspired by [CSS Syntax Module Level 3](http://www.w3.org/TR/css3-syntax) and [corresponding JS parser](https://github.com/tabatkins/parse-css). The project is written primarily in Go, distributed under the MIT License license, first published in 2015. Key topics include: css-parser, go.

Latest release: v0.2.0Douceur 0.2.0
August 27, 2015View Changelog →

douceur Build Status

A simple CSS parser and inliner in Golang.

Douceur Logo

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
<html> <head> <style type="text/css"> body { background-color: #f2f2f2; } </style> </head> <body> <p>Inline me !</p> </body> </html>`

Becomes:

html
<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.

Tool usage

Install tool:

$ go install github.com/aymerick/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

Library usage

Fetch package:

$ go get github.com/aymerick/douceur

Parse CSS

go
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()) }

Displays:

css
body { background-color: black; } p { color: red; }

Inline HTML

go
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) }

Displays:

css
<!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: &#39;Helvetica Neue&#39;, Verdana, sans-serif;"> Inline me please! </p> </body></html>

Test

go test ./... -v

Dependencies

Similar projects

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from aymerick/douceur via the GitHub API.Last fetched: 6/28/2026