【发布时间】:2015-08-26 04:00:54
【问题描述】:
我想在某些来源上使用js beautify,但没有办法检测它是什么类型的来源。有什么方法可以检测来源是 css、html、javascript 还是无?
看看他们的site,他们有这个,看起来它会弄清楚它是否是 html:
function looks_like_html(source) {
// <foo> - looks like html
// <!--\nalert('foo!');\n--> - doesn't look like html
var trimmed = source.replace(/^[ \t\n\r]+/, '');
var comment_mark = '<' + '!-' + '-';
return (trimmed && (trimmed.substring(0, 1) === '<' && trimmed.substring(0, 4) !== comment_mark));
}
只需要看看它是 css、javascript 还是两者都不是。这是在 node.js 中运行的
所以这段代码需要告诉我它是 JavaScript:
var foo = {
bar : 'baz'
};
这段代码需要告诉我它是 CSS:
.foo {
background : red;
}
所以一个测试这个的函数会返回类型:
function getSourceType(source) {
if (isJs) {
return 'js';
}
if (isHtml) {
return 'html';
}
if (isCss) {
return 'css';
}
}
在某些情况下,我需要忽略使用其他语言(例如 Java)的情况,但对于 css/html/js,我可以使用美化器。
【问题讨论】:
-
你期望的输出是什么。例如,如果我将一个字符串传递给确定它是什么的函数,您期望返回什么?
-
这是否适用于嵌入了 JavaScript 和 CSS 的页面?您可以检查
<style>和<script>,但可能不是万无一失的。 -
这可能是多个,具体取决于实现。如果它是一个确定类型的函数,那么它可以返回一个字符串(
'css'、'html'、'js'、null),或者如果有单独的函数,那么它可以返回一个用于isCss函数的布尔值。 -
我今天没有时间了,但是对于有兴趣解决这个问题的人,here's my start。不过,不确定如何快速检查 JS 的正则表达式。祝你好运!
-
@MitchellSimoens 好吧,这就是我的想法,这不会是一个简单的解决方案,甚至可能不可能(对于其他编程语言来说)......因为语法可能太相似了.
标签: javascript html css node.js code-analysis