package html
import "github.com/tdewolff/minify/v2/html"
Package html minifies HTML5 following the specifications at http://www.w3.org/TR/html5/syntax.html.
Index ¶
- Variables
- func Minify(m *minify.M, w io.Writer, r io.Reader, params map[string]string) error
- type Hash
- type Minifier
- type Token
- type TokenBuffer
Examples ¶
Variables ¶
EntitiesMap are all named character entities.
TextRevEntitiesMap is a map of escapes.
Functions ¶
func Minify ¶
Minify minifies HTML data, it reads from r and writes to w.
Code:
Code:
Code:
Output: Code:
Output:Example¶
{
m := minify.New()
m.AddFunc("text/html", Minify)
m.AddFunc("text/css", css.Minify)
m.AddFunc("image/svg+xml", svg.Minify)
m.AddFuncRegexp(regexp.MustCompile("^(application|text)/(x-)?(java|ecma)script$"), js.Minify)
m.AddFuncRegexp(regexp.MustCompile("[/+]json$"), json.Minify)
m.AddFuncRegexp(regexp.MustCompile("[/+]xml$"), xml.Minify)
// set URL to minify link locations too
m.URL, _ = url.Parse("https://www.example.com/")
if err := m.Minify("text/html", os.Stdout, os.Stdin); err != nil {
panic(err)
}
}
Example (Options)¶
{
m := minify.New()
m.Add("text/html", &Minifier{
KeepDefaultAttrVals: true,
KeepWhitespace: true,
})
if err := m.Minify("text/html", os.Stdout, os.Stdin); err != nil {
panic(err)
}
}
Example (Reader)¶
{
b := bytes.NewReader([]byte("<html><body><h1>Example</h1></body></html>"))
m := minify.New()
m.Add("text/html", &Minifier{})
r := m.Reader("text/html", b)
if _, err := io.Copy(os.Stdout, r); err != nil {
panic(err)
}
// Output: <h1>Example</h1>
}
<h1>Example</h1>
Example (Writer)¶
{
m := minify.New()
m.Add("text/html", &Minifier{})
w := m.Writer("text/html", os.Stdout)
w.Write([]byte("<html><body><h1>Example</h1></body></html>"))
w.Close()
// Output: <h1>Example</h1>
}
<h1>Example</h1>
Types ¶
type Hash ¶
type Hash uint32
Hash defines perfect hashes for a predefined list of strings
const ( A Hash = 0x1 // a Abbr Hash = 0x3b804 // abbr About Hash = 0x5 // about Accept Hash = 0x1106 // accept Accept_Charset Hash = 0x110e // accept-charset Acronym Hash = 0x4a07 // acronym Action Hash = 0x21d06 // action Address Hash = 0x7807 // address Align Hash = 0x35b05 // align Alink Hash = 0x3a405 // alink Allowfullscreen Hash = 0x2e10f // allowfullscreen Amp_Boilerplate Hash = 0x7f0f // amp-boilerplate Applet Hash = 0xd706 // applet Area Hash = 0x2fd04 // area Article Hash = 0x2707 // article Aside Hash = 0x5b05 // aside Async Hash = 0x8e05 // async Audio Hash = 0x9605 // audio Autofocus Hash = 0xcc09 // autofocus Autoplay Hash = 0x10c08 // autoplay Axis Hash = 0x11404 // axis B Hash = 0x101 // b Background Hash = 0x300a // background Base Hash = 0x17804 // base Basefont Hash = 0x17808 // basefont Bb Hash = 0x3b902 // bb Bdi Hash = 0x18403 // bdi Bdo Hash = 0x35303 // bdo Bgcolor Hash = 0x12a07 // bgcolor Big Hash = 0x13103 // big Blockquote Hash = 0x1340a // blockquote Body Hash = 0xd04 // body Br Hash = 0x36102 // br Button Hash = 0x13e06 // button Canvas Hash = 0x5706 // canvas Caption Hash = 0x1fe07 // caption Center Hash = 0xb706 // center Charset Hash = 0x1807 // charset Checked Hash = 0x19707 // checked Cite Hash = 0x9204 // cite Class Hash = 0x15105 // class Classid Hash = 0x15107 // classid Clear Hash = 0x2b05 // clear Code Hash = 0x17404 // code Codebase Hash = 0x17408 // codebase Codetype Hash = 0x18808 // codetype Col Hash = 0x12c03 // col Colgroup Hash = 0x1af08 // colgroup Color Hash = 0x12c05 // color Cols Hash = 0x1c904 // cols Colspan Hash = 0x1c907 // colspan Compact Hash = 0x1d707 // compact Content Hash = 0x27b07 // content Controls Hash = 0x1e708 // controls Data Hash = 0x1f04 // data Datalist Hash = 0x1f08 // datalist Datatype Hash = 0xac08 // datatype Dd Hash = 0x7902 // dd Declare Hash = 0x5e07 // declare Default Hash = 0xeb07 // default DefaultChecked Hash = 0x2270e // defaultChecked DefaultMuted Hash = 0xeb0c // defaultMuted DefaultSelected Hash = 0xf60f // defaultSelected Defer Hash = 0x10405 // defer Del Hash = 0x37903 // del Details Hash = 0x15707 // details Dfn Hash = 0x16403 // dfn Dialog Hash = 0xc606 // dialog Dir Hash = 0x18503 // dir Disabled Hash = 0x19d08 // disabled Div Hash = 0x1a403 // div Dl Hash = 0x1e502 // dl Dt Hash = 0x21702 // dt Em Hash = 0x4302 // em Embed Hash = 0x37505 // embed Enabled Hash = 0x26307 // enabled Enctype Hash = 0x2a207 // enctype Face Hash = 0xb504 // face Fieldset Hash = 0x1f308 // fieldset Figcaption Hash = 0x1fb0a // figcaption Figure Hash = 0x20c06 // figure Font Hash = 0x17c04 // font Hash = 0xa006 // footer For Hash = 0x21903 // for Form Hash = 0x21904 // form Formaction Hash = 0x2190a // formaction Formnovalidate Hash = 0x2350e // formnovalidate Frame Hash = 0x14505 // frame Frameborder Hash = 0x2830b // frameborder Frameset Hash = 0x14508 // frameset H1 Hash = 0x2d002 // h1 H2 Hash = 0x24302 // h2 H3 Hash = 0x24502 // h3 H4 Hash = 0x24702 // h4 H5 Hash = 0x24902 // h5 H6 Hash = 0x24b02 // h6 Head Hash = 0x2c204 // head Header Hash = 0x2c206 // header Hgroup Hash = 0x24d06 // hgroup Hidden Hash = 0x25f06 // hidden Hr Hash = 0x16802 // hr Href Hash = 0x16804 // href Hreflang Hash = 0x16808 // hreflang Html Hash = 0x26a04 // html Http_Equiv Hash = 0x26e0a // http-equiv I Hash = 0x2401 // i Icon Hash = 0x27a04 // icon Id Hash = 0x5d02 // id Iframe Hash = 0x28206 // iframe Image Hash = 0x28e05 // image Img Hash = 0x29303 // img Inert Hash = 0x5205 // inert Inlist Hash = 0x29606 // inlist Input Hash = 0x2a905 // input Ins Hash = 0x2ae03 // ins Ismap Hash = 0x11605 // ismap Itemscope Hash = 0xe209 // itemscope Kbd Hash = 0x18303 // kbd Keygen Hash = 0x29e06 // keygen Label Hash = 0x6505 // label Lang Hash = 0x16c04 // lang Language Hash = 0x16c08 // language Legend Hash = 0x31706 // legend Li Hash = 0x2302 // li Link Hash = 0x3a504 // link Longdesc Hash = 0x6908 // longdesc Main Hash = 0x5004 // main Manifest Hash = 0x11e08 // manifest Map Hash = 0xd603 // map Mark Hash = 0x2b404 // mark Marquee Hash = 0x2b807 // marquee Math Hash = 0x2bf04 // math Max Hash = 0x2c803 // max Maxlength Hash = 0x2c809 // maxlength Media Hash = 0xc405 // media Menu Hash = 0xde04 // menu Menuitem Hash = 0xde08 // menuitem Meta Hash = 0x2d204 // meta Meter Hash = 0x30605 // meter Method Hash = 0x30b06 // method Multiple Hash = 0x31108 // multiple Muted Hash = 0x31d05 // muted Name Hash = 0xc204 // name Hash = 0x35803 // nav Nobr Hash = 0x35f04 // nobr Noembed Hash = 0x37307 // noembed Noframes Hash = 0x14308 // noframes Nohref Hash = 0x16606 // nohref Noresize Hash = 0x1cf08 // noresize Noscript Hash = 0x20408 // noscript Noshade Hash = 0x22207 // noshade Novalidate Hash = 0x2390a // novalidate Nowrap Hash = 0x2ef06 // nowrap Object Hash = 0x9a06 // object Ol Hash = 0x7202 // ol Open Hash = 0x35504 // open Optgroup Hash = 0x39908 // optgroup Option Hash = 0x32206 // option Output Hash = 0x206 // output P Hash = 0x501 // p Param Hash = 0x11a05 // param Pauseonexit Hash = 0x1b60b // pauseonexit Picture Hash = 0x25207 // picture Plaintext Hash = 0x2f409 // plaintext Portal Hash = 0x3a006 // portal Poster Hash = 0x38c06 // poster Pre Hash = 0x38503 // pre Prefix Hash = 0x38506 // prefix Profile Hash = 0x32807 // profile Progress Hash = 0x32f08 // progress Property Hash = 0x33e08 // property Q Hash = 0x13901 // q Rb Hash = 0x2f02 // rb Readonly Hash = 0x2fe08 // readonly Rel Hash = 0x6303 // rel Required Hash = 0x21008 // required Resource Hash = 0x25708 // resource Rev Hash = 0xa503 // rev Reversed Hash = 0xa508 // reversed Rows Hash = 0xbc04 // rows Rowspan Hash = 0xbc07 // rowspan Rp Hash = 0x8802 // rp Rt Hash = 0x2802 // rt Rtc Hash = 0x5503 // rtc Ruby Hash = 0x10804 // ruby Rules Hash = 0x36205 // rules S Hash = 0x1c01 // s Samp Hash = 0x7e04 // samp Scope Hash = 0xe605 // scope Scoped Hash = 0xe606 // scoped Script Hash = 0x20606 // script Scrolling Hash = 0x6f09 // scrolling Seamless Hash = 0x36608 // seamless Section Hash = 0x36d07 // section Select Hash = 0x15d06 // select Selected Hash = 0x15d08 // selected Shape Hash = 0x1ee05 // shape Size Hash = 0x1d304 // size Slot Hash = 0x2b004 // slot Small Hash = 0x2df05 // small Sortable Hash = 0x33608 // sortable Source Hash = 0x25906 // source Span Hash = 0xbf04 // span Src Hash = 0x34603 // src Srcset Hash = 0x34606 // srcset Start Hash = 0x2505 // start Strike Hash = 0x29a06 // strike Strong Hash = 0x12406 // strong Style Hash = 0x34c05 // style Sub Hash = 0x35103 // sub Summary Hash = 0x37c07 // summary Sup Hash = 0x38303 // sup Svg Hash = 0x39203 // svg Tabindex Hash = 0x2d408 // tabindex Table Hash = 0x33905 // table Target Hash = 0x706 // target Tbody Hash = 0xc05 // tbody Td Hash = 0x1e02 // td Template Hash = 0x4208 // template Text Hash = 0x2f904 // text Textarea Hash = 0x2f908 // textarea Tfoot Hash = 0x9f05 // tfoot Th Hash = 0x2c102 // th Thead Hash = 0x2c105 // thead Time Hash = 0xdc04 // time Title Hash = 0x14c05 // title Tr Hash = 0x12502 // tr Track Hash = 0x17f05 // track Translate Hash = 0x1c009 // translate Truespeed Hash = 0x1dd09 // truespeed Tt Hash = 0x14002 // tt Type Hash = 0xb004 // type Typemustmatch Hash = 0x18c0d // typemustmatch Typeof Hash = 0xb006 // typeof U Hash = 0x301 // u Ul Hash = 0xef02 // ul Undeterminate Hash = 0x370d // undeterminate Usemap Hash = 0xd306 // usemap Valign Hash = 0x35a06 // valign Value Hash = 0x1a605 // value Valuetype Hash = 0x1a609 // valuetype Var Hash = 0x27703 // var Video Hash = 0x39505 // video Visible Hash = 0x3a907 // visible Vlink Hash = 0x3b005 // vlink Vocab Hash = 0x3b505 // vocab Wbr Hash = 0x3bc03 // wbr Xmlns Hash = 0x2db05 // xmlns Xmp Hash = 0x38a03 // xmp )
Unique hash definitions to be used instead of strings
func ToHash ¶
ToHash returns the hash whose name is s. It returns zero if there is no such hash. It is case sensitive.
func (Hash) String ¶
String returns the hash' name.
type Minifier ¶
type Minifier struct { KeepComments bool KeepConditionalComments bool KeepDefaultAttrVals bool KeepDocumentTags bool KeepEndTags bool KeepQuotes bool KeepWhitespace bool }
Minifier is an HTML minifier.
func (*Minifier) Minify ¶
Minify minifies HTML data, it reads from r and writes to w.
type Token ¶
type Token struct { html.TokenType Hash Hash Data []byte Text []byte AttrVal []byte Traits traits Offset int }
Token is a single token unit with an attribute value (if given) and hash of the data.
type TokenBuffer ¶
type TokenBuffer struct {
// contains filtered or unexported fields
}
TokenBuffer is a buffer that allows for token look-ahead.
func NewTokenBuffer ¶
func NewTokenBuffer(r *parse.Input, l *html.Lexer) *TokenBuffer
NewTokenBuffer returns a new TokenBuffer.
func (*TokenBuffer) Attributes ¶
func (z *TokenBuffer) Attributes(hashes ...Hash) []*Token
Attributes extracts the gives attribute hashes from a tag. It returns in the same order pointers to the requested token data or nil.
func (*TokenBuffer) Peek ¶
func (z *TokenBuffer) Peek(pos int) *Token
Peek returns the ith element and possibly does an allocation. Peeking past an error will panic.
func (*TokenBuffer) Shift ¶
func (z *TokenBuffer) Shift() *Token
Shift returns the first element and advances position.
Source Files ¶
buffer.go hash.go html.go table.go
- Version
- v2.12.8
- Published
- Jul 31, 2023
- Platform
- darwin/amd64
- Imports
- 6 packages
- Last checked
- 24 minutes ago –
Tools for package owners.