pub mod site;
use regex::Regex;
use std::fmt::{self, Display, Formatter};
const A: &str = "a";
const ABBR: &str = "abbr";
const ACRONYM: &str = "acronym";
const ADDRESS: &str = "address";
const APPLET: &str = "applet";
const AREA: &str = "area";
const ARTICLE: &str = "article";
const ASIDE: &str = "aside";
const AUDIO: &str = "audio";
const B: &str = "b";
const BASE: &str = "base";
const BASEFONT: &str = "basefont";
const BDI: &str = "bdi";
const BDO: &str = "bdo";
const BIG: &str = "big";
const BLOCKQUOTE: &str = "blockquote";
const BODY: &str = "body";
const BR: &str = "br";
const BUTTON: &str = "button";
const CANVAS: &str = "canvas";
const CAPTION: &str = "caption";
const CENTER: &str = "center";
const CITE: &str = "cite";
const CODE: &str = "code";
const COL: &str = "col";
const COLGROUP: &str = "colgroup";
const DATALIST: &str = "datalist";
const DD: &str = "dd";
const DEL: &str = "del";
const DETAILS: &str = "details";
const DFN: &str = "dfn";
const DIR: &str = "dir";
const DIV: &str = "div";
const DL: &str = "dl";
const DT: &str = "dt";
const EM: &str = "em";
const EMBED: &str = "embed";
const FIELDSET: &str = "fieldset";
const FIGCAPTION: &str = "figcaption";
const FIGURE: &str = "figure";
const FONT: &str = "font";
const FOOTER: &str = "footer";
const FORM: &str = "form";
const FRAME: &str = "frame";
const FRAMESET: &str = "frameset";
const H1: &str = "h1";
const H2: &str = "h2";
const H3: &str = "h3";
const H4: &str = "h4";
const H5: &str = "h5";
const H6: &str = "h6";
const HEAD: &str = "head";
const HEADER: &str = "header";
const HR: &str = "hr";
const HTML: &str = "html";
const I: &str = "i";
const IFRAME: &str = "iframe";
const IMG: &str = "img";
const INPUT: &str = "input";
const INS: &str = "ins";
const KBD: &str = "kbd";
const KEYGEN: &str = "keygen";
const LABEL: &str = "label";
const LEGEND: &str = "legend";
const LI: &str = "li";
const LINK: &str = "link";
const MAIN: &str = "main";
const MAP: &str = "map";
const MARK: &str = "mark";
const MENU: &str = "menu";
const MENUITEM: &str = "menuitem";
const META: &str = "meta";
const METER: &str = "meter";
const NAV: &str = "nav";
const NOFRAMES: &str = "noframes";
const NOSCRIPT: &str = "noscript";
const OBJECT: &str = "object";
const OL: &str = "ol";
const OPTGROUP: &str = "optgroup";
const OPTION: &str = "option";
const OUTPUT: &str = "output";
const P: &str = "p";
const PARAM: &str = "param";
const PRE: &str = "pre";
const PROGRESS: &str = "progress";
const Q: &str = "q";
const S: &str = "s";
const SAMP: &str = "samp";
const SCRIPT: &str = "script";
const SECTION: &str = "section";
const SELECT: &str = "select";
const SMALL: &str = "small";
const SOURCE: &str = "source";
const SPAN: &str = "span";
const STRIKE: &str = "strike";
const STRONG: &str = "strong";
const STYLE: &str = "style";
const SUB: &str = "sub";
const SUMMARY: &str = "summary";
const SUP: &str = "sup";
const TABLE: &str = "table";
const TBODY: &str = "tbody";
const TD: &str = "td";
const TEXTAREA: &str = "textarea";
const TFOOT: &str = "tfoot";
const TH: &str = "th";
const THEAD: &str = "thead";
const TIME: &str = "time";
const TITLE: &str = "title";
const TR: &str = "tr";
const TRACK: &str = "track";
const TT: &str = "tt";
const U: &str = "u";
const UL: &str = "ul";
const VAR: &str = "var";
const VIDEO: &str = "video";
pub struct HtmlTag(pub &'static str);
impl Display for HtmlTag {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
write!(f, "{}", self.0)
}
}
impl HtmlTag {
pub const A: HtmlTag = HtmlTag(A);
pub const ABBR: HtmlTag = HtmlTag(ABBR);
pub const ACRONYM: HtmlTag = HtmlTag(ACRONYM);
pub const ADDRESS: HtmlTag = HtmlTag(ADDRESS);
pub const APPLET: HtmlTag = HtmlTag(APPLET);
pub const AREA: HtmlTag = HtmlTag(AREA);
pub const ARTICLE: HtmlTag = HtmlTag(ARTICLE);
pub const ASIDE: HtmlTag = HtmlTag(ASIDE);
pub const AUDIO: HtmlTag = HtmlTag(AUDIO);
pub const B: HtmlTag = HtmlTag(B);
pub const BASE: HtmlTag = HtmlTag(BASE);
pub const BASEFONT: HtmlTag = HtmlTag(BASEFONT);
pub const BDI: HtmlTag = HtmlTag(BDI);
pub const BDO: HtmlTag = HtmlTag(BDO);
pub const BIG: HtmlTag = HtmlTag(BIG);
pub const BLOCKQUOTE: HtmlTag = HtmlTag(BLOCKQUOTE);
pub const BODY: HtmlTag = HtmlTag(BODY);
pub const BR: HtmlTag = HtmlTag(BR);
pub const BUTTON: HtmlTag = HtmlTag(BUTTON);
pub const CANVAS: HtmlTag = HtmlTag(CANVAS);
pub const CAPTION: HtmlTag = HtmlTag(CAPTION);
pub const CENTER: HtmlTag = HtmlTag(CENTER);
pub const CITE: HtmlTag = HtmlTag(CITE);
pub const CODE: HtmlTag = HtmlTag(CODE);
pub const COL: HtmlTag = HtmlTag(COL);
pub const COLGROUP: HtmlTag = HtmlTag(COLGROUP);
pub const DATALIST: HtmlTag = HtmlTag(DATALIST);
pub const DD: HtmlTag = HtmlTag(DD);
pub const DEL: HtmlTag = HtmlTag(DEL);
pub const DETAILS: HtmlTag = HtmlTag(DETAILS);
pub const DFN: HtmlTag = HtmlTag(DFN);
pub const DIR: HtmlTag = HtmlTag(DIR);
pub const DIV: HtmlTag = HtmlTag(DIV);
pub const DL: HtmlTag = HtmlTag(DL);
pub const DT: HtmlTag = HtmlTag(DT);
pub const EM: HtmlTag = HtmlTag(EM);
pub const EMBED: HtmlTag = HtmlTag(EMBED);
pub const FIELDSET: HtmlTag = HtmlTag(FIELDSET);
pub const FIGCAPTION: HtmlTag = HtmlTag(FIGCAPTION);
pub const FIGURE: HtmlTag = HtmlTag(FIGURE);
pub const FONT: HtmlTag = HtmlTag(FONT);
pub const FOOTER: HtmlTag = HtmlTag(FOOTER);
pub const FORM: HtmlTag = HtmlTag(FORM);
pub const FRAME: HtmlTag = HtmlTag(FRAME);
pub const FRAMESET: HtmlTag = HtmlTag(FRAMESET);
pub const H1: HtmlTag = HtmlTag(H1);
pub const H2: HtmlTag = HtmlTag(H2);
pub const H3: HtmlTag = HtmlTag(H3);
pub const H4: HtmlTag = HtmlTag(H4);
pub const H5: HtmlTag = HtmlTag(H5);
pub const H6: HtmlTag = HtmlTag(H6);
pub const HEAD: HtmlTag = HtmlTag(HEAD);
pub const HEADER: HtmlTag = HtmlTag(HEADER);
pub const HR: HtmlTag = HtmlTag(HR);
pub const HTML: HtmlTag = HtmlTag(HTML);
pub const I: HtmlTag = HtmlTag(I);
pub const IFRAME: HtmlTag = HtmlTag(IFRAME);
pub const IMG: HtmlTag = HtmlTag(IMG);
pub const INPUT: HtmlTag = HtmlTag(INPUT);
pub const INS: HtmlTag = HtmlTag(INS);
pub const KBD: HtmlTag = HtmlTag(KBD);
pub const KEYGEN: HtmlTag = HtmlTag(KEYGEN);
pub const LABEL: HtmlTag = HtmlTag(LABEL);
pub const LEGEND: HtmlTag = HtmlTag(LEGEND);
pub const LI: HtmlTag = HtmlTag(LI);
pub const LINK: HtmlTag = HtmlTag(LINK);
pub const MAIN: HtmlTag = HtmlTag(MAIN);
pub const MAP: HtmlTag = HtmlTag(MAP);
pub const MARK: HtmlTag = HtmlTag(MARK);
pub const MENU: HtmlTag = HtmlTag(MENU);
pub const MENUITEM: HtmlTag = HtmlTag(MENUITEM);
pub const META: HtmlTag = HtmlTag(META);
pub const METER: HtmlTag = HtmlTag(METER);
pub const NAV: HtmlTag = HtmlTag(NAV);
pub const NOFRAMES: HtmlTag = HtmlTag(NOFRAMES);
pub const NOSCRIPT: HtmlTag = HtmlTag(NOSCRIPT);
pub const OBJECT: HtmlTag = HtmlTag(OBJECT);
pub const OL: HtmlTag = HtmlTag(OL);
pub const OPTGROUP: HtmlTag = HtmlTag(OPTGROUP);
pub const OPTION: HtmlTag = HtmlTag(OPTION);
pub const OUTPUT: HtmlTag = HtmlTag(OUTPUT);
pub const P: HtmlTag = HtmlTag(P);
pub const PARAM: HtmlTag = HtmlTag(PARAM);
pub const PRE: HtmlTag = HtmlTag(PRE);
pub const PROGRESS: HtmlTag = HtmlTag(PROGRESS);
pub const Q: HtmlTag = HtmlTag(Q);
pub const S: HtmlTag = HtmlTag(S);
pub const SAMP: HtmlTag = HtmlTag(SAMP);
pub const SCRIPT: HtmlTag = HtmlTag(SCRIPT);
pub const SECTION: HtmlTag = HtmlTag(SECTION);
pub const SELECT: HtmlTag = HtmlTag(SELECT);
pub const SMALL: HtmlTag = HtmlTag(SMALL);
pub const SOURCE: HtmlTag = HtmlTag(SOURCE);
pub const SPAN: HtmlTag = HtmlTag(SPAN);
pub const STRIKE: HtmlTag = HtmlTag(STRIKE);
pub const STRONG: HtmlTag = HtmlTag(STRONG);
pub const STYLE: HtmlTag = HtmlTag(STYLE);
pub const SUB: HtmlTag = HtmlTag(SUB);
pub const SUMMARY: HtmlTag = HtmlTag(SUMMARY);
pub const SUP: HtmlTag = HtmlTag(SUP);
pub const TABLE: HtmlTag = HtmlTag(TABLE);
pub const TBODY: HtmlTag = HtmlTag(TBODY);
pub const TD: HtmlTag = HtmlTag(TD);
pub const TEXTAREA: HtmlTag = HtmlTag(TEXTAREA);
pub const TFOOT: HtmlTag = HtmlTag(TFOOT);
pub const TH: HtmlTag = HtmlTag(TH);
pub const THEAD: HtmlTag = HtmlTag(THEAD);
pub const TIME: HtmlTag = HtmlTag(TIME);
pub const TITLE: HtmlTag = HtmlTag(TITLE);
pub const TR: HtmlTag = HtmlTag(TR);
pub const TRACK: HtmlTag = HtmlTag(TRACK);
pub const TT: HtmlTag = HtmlTag(TT);
pub const U: HtmlTag = HtmlTag(U);
pub const UL: HtmlTag = HtmlTag(UL);
pub const VAR: HtmlTag = HtmlTag(VAR);
pub const VIDEO: HtmlTag = HtmlTag(VIDEO);
pub fn parse_tags(&self, input: &str) -> Vec<String> {
let re = Regex::new(&format!(r#"(?s)<{}[^>]*>(.*?)</{}>"#, &self, &self)).unwrap();
let mut result = Vec::new();
for capture in re.captures_iter(input) {
if let Some(text) = capture.get(1) {
result.push(text.as_str().trim().to_string());
}
}
result
}
}