Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
b348cd01
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b348cd01
编写于
2月 25, 2015
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Editor: Added script syntax validator.
上级
9c126977
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
4262 addition
and
4 deletion
+4262
-4
editor/css/main.css
editor/css/main.css
+16
-0
editor/index.html
editor/index.html
+1
-0
editor/js/Script.js
editor/js/Script.js
+89
-4
editor/js/libs/esprima.js
editor/js/libs/esprima.js
+4156
-0
未找到文件。
editor/css/main.css
浏览文件 @
b348cd01
...
...
@@ -67,6 +67,8 @@ textarea, input { outline: none; } /* osx */
display
:
none
;
}
/* CodeMirror */
.CodeMirror
{
position
:
absolute
!important
;
...
...
@@ -76,6 +78,20 @@ textarea, input { outline: none; } /* osx */
}
.CodeMirror
.errorLine
{
background
:
rgba
(
255
,
0
,
0
,
0.25
);
}
.CodeMirror
.esprima-error
{
color
:
#f00
;
text-align
:
right
;
padding
:
0px
20px
;
}
/* scene types */
.type
{
...
...
editor/index.html
浏览文件 @
b348cd01
...
...
@@ -41,6 +41,7 @@
<link
rel=
"stylesheet"
href=
"js/libs/codemirror/theme/monokai.css"
>
<script
src=
"js/libs/codemirror/codemirror.js"
></script>
<script
src=
"js/libs/codemirror/mode/javascript.js"
></script>
<script
src=
"js/libs/esprima.js"
></script>
<script
src=
"js/libs/jszip.min.js"
></script>
<script
src=
"js/libs/sortable.min.js"
></script>
...
...
editor/js/Script.js
浏览文件 @
b348cd01
...
...
@@ -15,7 +15,7 @@ var Script = function ( editor ) {
var
header
=
new
UI
.
Panel
();
header
.
setPadding
(
'
10px
'
);
container
.
add
(
header
);
var
title
=
new
UI
.
Text
().
setColor
(
'
#fff
'
);
header
.
add
(
title
);
...
...
@@ -59,16 +59,101 @@ var Script = function ( editor ) {
clearTimeout
(
delay
);
delay
=
setTimeout
(
function
()
{
currentScript
.
source
=
codemirror
.
getValue
();
var
value
=
codemirror
.
getValue
();
if
(
validate
(
value
)
)
{
currentScript
.
source
=
value
;
signals
.
scriptChanged
.
dispatch
(
currentScript
);
signals
.
scriptChanged
.
dispatch
(
currentScript
);
}
},
300
);
});
// validate
var
errorLines
=
[];
var
widgets
=
[];
var
validate
=
function
(
string
)
{
var
syntax
,
errors
;
return
codemirror
.
operation
(
function
()
{
while
(
errorLines
.
length
>
0
)
{
codemirror
.
removeLineClass
(
errorLines
.
shift
(),
'
background
'
,
'
errorLine
'
);
}
for
(
var
i
=
0
;
i
<
widgets
.
length
;
i
++
)
{
codemirror
.
removeLineWidget
(
widgets
[
i
]
);
}
widgets
.
length
=
0
;
//
try
{
syntax
=
esprima
.
parse
(
string
,
{
tolerant
:
true
}
);
errors
=
syntax
.
errors
;
for
(
var
i
=
0
;
i
<
errors
.
length
;
i
++
)
{
var
error
=
errors
[
i
];
var
message
=
document
.
createElement
(
'
div
'
);
message
.
className
=
'
esprima-error
'
;
message
.
textContent
=
error
.
message
.
replace
(
/Line
[
0-9
]
+: /
,
''
);
var
lineNumber
=
error
.
lineNumber
-
1
;
errorLines
.
push
(
lineNumber
);
codemirror
.
addLineClass
(
lineNumber
,
'
background
'
,
'
errorLine
'
);
var
widget
=
codemirror
.
addLineWidget
(
lineNumber
,
message
);
widgets
.
push
(
widget
);
}
}
catch
(
error
)
{
var
message
=
document
.
createElement
(
'
div
'
);
message
.
className
=
'
esprima-error
'
;
message
.
textContent
=
error
.
message
.
replace
(
/Line
[
0-9
]
+: /
,
''
);
var
lineNumber
=
error
.
lineNumber
-
1
;
errorLines
.
push
(
lineNumber
);
codemirror
.
addLineClass
(
lineNumber
,
'
background
'
,
'
errorLine
'
);
var
widget
=
codemirror
.
addLineWidget
(
lineNumber
,
message
);
widgets
.
push
(
widget
);
}
return
errorLines
.
length
===
0
;
});
};
//
signals
.
editorCleared
.
add
(
function
()
{
container
.
setDisplay
(
'
none
'
);
...
...
editor/js/libs/esprima.js
0 → 100644
浏览文件 @
b348cd01
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录