summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Schneider2025-10-14 16:48:37 +0200
committerChristian Schneider2025-10-14 16:50:24 +0200
commit26185bb4f1824d3cc96824d94f35cb241d344028 (patch)
tree96a28339fc90858e080853317625f8dd31b25d8c
parentaef9268f09a332d56d6f0a7136eb20084a6bd32a (diff)
downloaditools-master.tar.gz
itools-master.tar.bz2
itools-master.zip
Simplify js() function and fix boolean attributes like 'async' => true, add tests for itHEADmaster
-rw-r--r--it_html.class14
-rwxr-xr-xtest/it_html.t3
2 files changed, 9 insertions, 8 deletions
diff --git a/it_html.class b/it_html.class
index 9bb8e7a..bab85da 100644
--- a/it_html.class
+++ b/it_html.class
@@ -546,18 +546,16 @@ static function U(...$args)
*/
function js($args)
{
- $args = it::map(fn($v) => it::replace(['<!--' => '\\x3C!--', '<script' => '\\x3Cscript', '</script' => '\\x3C/script'], $v), $args);
+ list($base, $params) = it_parse_args($args);
+ $base= it::replace(['<!--' => '\\x3C!--', '<script' => '\\x3Cscript', '</script' => '\\x3C/script'], $base);
- if (($this->p['htmltype'][0] == 'x') && $args[0] && ((array)$args[0] === array_values((array)$args[0])))
- {
- array_unshift($args, "<!--//--><![CDATA[//><!--\n");
- $args[] = "\n//--><!]]>";
- }
+ if (($this->p['htmltype'][0] == 'x') && strlen($base))
+ $base = "<!--//--><![CDATA[//><!--\n$base\n//--><!]]>";
if ($this->p['htmltype'] != "html5")
- array_unshift($args, array('type' => 'text/javascript'));
+ $params['type'] = 'text/javascript';
- return $this->_tag('script', $args);
+ return $this->_tag('script', [$base, $params]);
}
diff --git a/test/it_html.t b/test/it_html.t
index 13e2bc5..90af4b6 100755
--- a/test/it_html.t
+++ b/test/it_html.t
@@ -81,6 +81,8 @@ is(
"leave legal utf8 intact"
);
+is(js(['async' => true], 'foo'), "<script async>foo</script>\n", 'boolean attribute for js script tag');
+
unset($GLOBALS['debug_utf8check']);
is(
div(['arg' => "value \xc2", "content"]),
@@ -136,6 +138,7 @@ is(
"xhtml doctype"
);
+is(js('foo'), "<script type=\"text/javascript\"><!--//--><![CDATA[//><!--\nfoo\n//--><!]]></script>\n", "escape js script content with CDATA in xml mode");
# XML generation
unset($GLOBALS['it_html']);