From be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 04:57:58 +0200 Subject: Adding upstream version 1.44.3. Signed-off-by: Daniel Baumann --- web/server/h2o/libh2o/misc/oktavia/src/style.jsx | 105 +++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 web/server/h2o/libh2o/misc/oktavia/src/style.jsx (limited to 'web/server/h2o/libh2o/misc/oktavia/src/style.jsx') diff --git a/web/server/h2o/libh2o/misc/oktavia/src/style.jsx b/web/server/h2o/libh2o/misc/oktavia/src/style.jsx new file mode 100644 index 00000000..3886dc45 --- /dev/null +++ b/web/server/h2o/libh2o/misc/oktavia/src/style.jsx @@ -0,0 +1,105 @@ +import "sax.jsx"; + +class _HTMLHandler extends SAXHandler +{ + var text : string[]; + var styles : Map.; + var escape : boolean; + + static function escapeHTML (str : string) : string + { + return str.replace(/\n/g, "
").replace(/&/g, "&").replace(/"/g, """).replace(//g, ">"); + } + + function constructor (styles : Map., escape : boolean) + { + this.text = [] : string[]; + this.escape = escape; + this.styles = styles; + } + + override function onopentag (tagname : string, attributes : Map.) : void + { + this.text.push(this.styles[tagname][0]); + } + + override function onclosetag (tagname : string) : void + { + this.text.push(this.styles[tagname][1]); + } + + override function ontext (text : string) : void + { + if (this.escape) + { + this.text.push(_HTMLHandler.escapeHTML(text)); + } + else + { + this.text.push(text); + } + } + + function result () : string + { + return this.text.join(''); + } +} + +class Style +{ + var styles : Map.; + var escapeHTML : boolean; + + static const console = { + 'title' : ['\x1B[32m\x1b[4m', '\x1B[39m\x1b[0m'], + 'url' : ['\x1B[34m', '\x1B[39m'], + 'hit' : ['\x1B[4m', '\x1B[0m'], + 'del' : ['\x1B[9m', '\x1B[0m'], + 'summary' : ['\x1B[90m', '\x1B[39m'] + }; + + static const html = { + 'title' : ['', ''], + 'url' : ['', ''], + 'hit' : ['', ''], + 'del' : ['', ''], + 'summary' : ['', ''] + }; + + static const ignore = { + 'tilte' : ['', ''], + 'url' : ['', ''], + 'hit' : ['', ''], + 'del' : ['', ''], + 'summary' : ['', ''] + }; + + function constructor (mode : string) + { + switch (mode) + { + case 'console': + this.styles = Style.console; + break; + case 'html': + this.styles = Style.html; + break; + case 'ignore': + this.styles = Style.ignore; + break; + default: + this.styles = Style.ignore; + break; + } + this.escapeHTML = (mode == 'html'); + } + + function convert (source : string) : string + { + var handler = new _HTMLHandler(this.styles, this.escapeHTML); + var parser = new SAXParser(handler); + parser.parse(source); + return handler.result(); + } +} -- cgit v1.2.3