123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- package gen
- import (
- "git.clearsky.net.au/cody/gex.git/gen/domquery"
- )
- func AddClassAttr(htmlStr string, className string) string {
- dom := domquery.LoadHTML(htmlStr)
- tags := dom.QuerySelectorAll("*")
- for _, tag := range tags {
- if isExcludedTag(tag.TagName()) {
- continue
- }
- tag.ClassListAdd(className)
- }
- return dom.InnerHTML()
- }
- func isExcludedTag(tagName string) bool {
- validTags := map[string]bool{
- "html": true,
- "head": true,
- "style": true,
- "script": true,
- "link": true,
- "meta": true,
- "title": true,
- "slot": true,
- "block": true,
- "layout": true,
- "part": true,
- }
- return validTags[tagName]
- }
- // func isTargetTag(tagName string) bool {
- // validTags := map[string]bool{
- // "a": true,
- // "abbr": true,
- // "address": true,
- // "area": true,
- // "article": true,
- // "aside": true,
- // "audio": true,
- // "b": true,
- // "blockquote": true,
- // "body": true,
- // "br": true,
- // "button": true,
- // "canvas": true,
- // "caption": true,
- // "cite": true,
- // "code": true,
- // "col": true,
- // "colgroup": true,
- // "data": true,
- // "datalist": true,
- // "dd": true,
- // "del": true,
- // "details": true,
- // "dialog": true,
- // "div": true,
- // "dl": true,
- // "dt": true,
- // "em": true,
- // "fieldset": true,
- // "figcaption": true,
- // "figure": true,
- // "footer": true,
- // "form": true,
- // "h1": true,
- // "h2": true,
- // "h3": true,
- // "h4": true,
- // "h5": true,
- // "h6": true,
- // "header": true,
- // "hr": true,
- // "i": true,
- // "iframe": true,
- // "img": true,
- // "input": true,
- // "ins": true,
- // "kbd": true,
- // "label": true,
- // "legend": true,
- // "li": true,
- // "main": true,
- // "map": true,
- // "mark": true,
- // "meter": true,
- // "nav": true,
- // "noscript": true,
- // "object": true,
- // "ol": true,
- // "option": true,
- // "optgroup": true,
- // "p": true,
- // "picture": true,
- // "pre": true,
- // "progress": true,
- // "q": true,
- // "samp": true,
- // "section": true,
- // "select": true,
- // "small": true,
- // "source": true,
- // "span": true,
- // "strong": true,
- // "sub": true,
- // "summary": true,
- // "sup": true,
- // "svg": true,
- // "table": true,
- // "tbody": true,
- // "td": true,
- // "textarea": true,
- // "tfoot": true,
- // "th": true,
- // "thead": true,
- // "time": true,
- // "tr": true,
- // "track": true,
- // "u": true,
- // "ul": true,
- // "var": true,
- // "video": true,
- // "wbr": true,
- // "label-wc": true,
- // "textarea-wc": true,
- // "fieldset-wc": true,
- // "input-wc": true,
- // "select-wc": true,
- // "button-wc": true,
- // }
- // return validTags[tagName]
- // }
- func ExtractCSS(htmlStr *string) string {
- document := domquery.LoadHTML(*htmlStr)
- styleTag := document.QuerySelector("style")
- css := ""
- if styleTag.InnerHTML() != "" {
- css = styleTag.InnerHTML()
- styleTag.SetOuterHTML("")
- *htmlStr = document.InnerHTML()
- }
- return css
- }
|