Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
4d1a9fe4
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4d1a9fe4
编写于
4月 05, 2016
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Theming tests
上级
be0565c6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
178 addition
and
1 deletion
+178
-1
src/vs/workbench/parts/themes/test/electron-browser/fixtures/foo.js
...kbench/parts/themes/test/electron-browser/fixtures/foo.js
+14
-0
src/vs/workbench/parts/themes/test/electron-browser/themes.test.contribution.ts
.../themes/test/electron-browser/themes.test.contribution.ts
+160
-0
src/vs/workbench/workbench.main.js
src/vs/workbench/workbench.main.js
+4
-1
未找到文件。
src/vs/workbench/parts/themes/test/electron-browser/fixtures/foo.js
0 → 100644
浏览文件 @
4d1a9fe4
const
webdriver
=
require
(
'
selenium-webdriver
'
);
function
mergeObjects
(
target
)
{
var
sources
=
[];
for
(
var
_i
=
1
;
_i
<
arguments
.
length
;
_i
++
)
{
sources
[
_i
-
1
]
=
arguments
[
_i
];
}
sources
.
forEach
(
function
(
source
)
{
for
(
var
key
in
source
)
{
target
[
key
]
=
source
[
key
];
}
});
return
target
;
}
\ No newline at end of file
src/vs/workbench/parts/themes/test/electron-browser/themes.test.contribution.ts
0 → 100644
浏览文件 @
4d1a9fe4
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
*
as
nls
from
'
vs/nls
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
SyncActionDescriptor
}
from
'
vs/platform/actions/common/actions
'
;
import
{
Action
}
from
'
vs/base/common/actions
'
;
import
WorkbenchContributions
=
require
(
'
vs/workbench/common/contributions
'
);
import
{
IWorkspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
paths
=
require
(
'
vs/base/common/paths
'
);
import
URI
from
'
vs/base/common/uri
'
;
import
Platform
=
require
(
'
vs/platform/platform
'
);
import
WorkbenchActionRegistry
=
require
(
'
vs/workbench/common/actionRegistry
'
);
import
{
IFileStat
}
from
'
vs/platform/files/common/files
'
;
import
{
TextModelWithTokens
}
from
'
vs/editor/common/model/textModelWithTokens
'
;
import
{
TextModel
}
from
'
vs/editor/common/model/textModel
'
;
import
{
IModeService
}
from
'
vs/editor/common/services/modeService
'
;
import
pfs
=
require
(
'
vs/base/node/pfs
'
);
interface
Data
{
c
:
string
;
// content
t
:
string
;
// token
r
:
string
;
// rule
}
const
ID
=
'
workbench.action.snapshotAction
'
;
const
LABEL
=
nls
.
localize
(
'
togglePosition
'
,
"
Take Theme Snapshot
"
);
class
SnapshotAction
extends
Action
{
private
currentSrcFolder
:
string
;
constructor
(
id
:
string
,
label
:
string
,
@
IModeService
private
modeService
:
IModeService
)
{
super
(
id
,
label
);
let
outFolder
=
require
.
toUrl
(
''
);
this
.
currentSrcFolder
=
paths
.
normalize
(
paths
.
join
(
outFolder
,
"
../src/vs/workbench/parts/themes/test/electron-browser
"
));
}
public
run
():
TPromise
<
any
>
{
let
fixturesPath
=
URI
.
parse
(
paths
.
join
(
this
.
currentSrcFolder
,
'
fixtures
'
)).
fsPath
;
return
pfs
.
readdir
(
fixturesPath
).
then
(
fileNames
=>
{
return
TPromise
.
join
(
fileNames
.
map
(
fileName
=>
{
return
pfs
.
readFile
(
paths
.
join
(
fixturesPath
,
fileName
)).
then
(
content
=>
{
return
this
.
snap
(
fileName
,
content
.
toString
()).
then
(
result
=>
{
return
this
.
verify
(
fileName
,
result
);
});
});
}));
},
err
=>
{
console
.
log
(
err
.
toString
());
});
}
public
getId
()
:
string
{
return
"
TokenizationSnapshotController
"
;
}
private
getEditorNode
()
:
Element
{
let
editorNodes
=
document
.
getElementsByClassName
(
'
monaco-editor
'
);
if
(
editorNodes
.
length
>
0
)
{
return
editorNodes
.
item
(
0
);
}
return
null
;
}
private
getStyle
(
scope
:
string
)
:
string
{
let
element
=
document
.
createElement
(
'
span
'
);
element
.
className
=
scope
;
element
.
hidden
=
true
;
let
cssStyles
=
window
.
getComputedStyle
(
element
);
if
(
cssStyles
)
{
return
cssStyles
.
color
;
}
return
''
;
}
private
getMatchedCSSRule
(
scope
:
string
)
:
string
{
let
element
=
document
.
createElement
(
'
span
'
);
element
.
className
=
'
token
'
+
scope
;
element
.
hidden
=
true
;
let
editorNode
=
this
.
getEditorNode
();
editorNode
.
appendChild
(
element
);
let
rulesList
=
window
.
getMatchedCSSRules
(
element
);
editorNode
.
removeChild
(
element
);
if
(
rulesList
)
{
for
(
let
i
=
rulesList
.
length
-
1
;
i
>=
0
;
i
--
)
{
let
selectorText
=
<
string
>
rulesList
.
item
(
i
)[
'
selectorText
'
];
if
(
selectorText
&&
selectorText
.
indexOf
(
'
.monaco-editor.vs
'
)
===
0
)
{
return
selectorText
.
substr
(
14
);
}
}
}
return
''
;
}
public
snap
(
fileName
:
string
,
content
:
string
)
:
TPromise
<
Data
[]
>
{
return
this
.
modeService
.
getOrCreateModeByFilenameOrFirstLine
(
fileName
).
then
(
mode
=>
{
let
result
:
Data
[]
=
[];
let
model
=
new
TextModelWithTokens
([],
TextModel
.
toRawText
(
content
,
TextModel
.
DEFAULT_CREATION_OPTIONS
),
false
,
mode
);
model
.
tokenIterator
({
lineNumber
:
1
,
column
:
1
},
iterator
=>
{
while
(
iterator
.
hasNext
())
{
let
tokenInfo
=
iterator
.
next
();
let
lineNumber
=
tokenInfo
.
lineNumber
;
let
content
=
model
.
getValueInRange
({
startLineNumber
:
lineNumber
,
endLineNumber
:
lineNumber
,
startColumn
:
tokenInfo
.
startColumn
,
endColumn
:
tokenInfo
.
endColumn
});
result
.
push
({
c
:
content
,
t
:
tokenInfo
.
token
.
type
,
r
:
this
.
getMatchedCSSRule
(
tokenInfo
.
token
.
type
)
});
}
});
return
result
;
});
}
public
verify
(
fileName
:
string
,
data
:
Data
[])
:
TPromise
<
any
>
{
let
dataString
=
JSON
.
stringify
(
data
,
null
,
'
\t
'
);
let
resultFileName
=
fileName
.
replace
(
'
.
'
,
'
_
'
)
+
'
.json
'
;
let
resultPath
=
URI
.
parse
(
paths
.
join
(
this
.
currentSrcFolder
,
'
results
'
,
resultFileName
)).
fsPath
;
return
pfs
.
fileExists
(
resultPath
).
then
(
success
=>
{
if
(
success
)
{
return
pfs
.
readFile
(
resultPath
).
then
(
content
=>
{
let
previousDataString
=
content
.
toString
();
if
(
previousDataString
!==
dataString
)
{
let
errorResultFileName
=
fileName
.
replace
(
'
.
'
,
'
_
'
)
+
'
.error.json
'
;
let
errorResultPath
=
URI
.
parse
(
paths
.
join
(
this
.
currentSrcFolder
,
'
results
'
,
errorResultFileName
)).
fsPath
;
console
.
log
(
`Different result for
${
fileName
}
`
);
return
pfs
.
writeFile
(
errorResultPath
,
dataString
);
}
return
true
;
});
}
else
{
return
pfs
.
writeFile
(
resultPath
,
dataString
);
}
});
}
}
var
workbenchActionsRegistry
=
<
WorkbenchActionRegistry
.
IWorkbenchActionRegistry
>
Platform
.
Registry
.
as
(
WorkbenchActionRegistry
.
Extensions
.
WorkbenchActions
);
workbenchActionsRegistry
.
registerWorkbenchAction
(
new
SyncActionDescriptor
(
SnapshotAction
,
ID
,
LABEL
),
nls
.
localize
(
'
view
'
,
"
View
"
));
src/vs/workbench/workbench.main.js
浏览文件 @
4d1a9fe4
...
...
@@ -87,7 +87,10 @@ define([
'
vs/workbench/electron-browser/darwin/cli.contribution
'
,
'
vs/workbench/electron-browser/main.contribution
'
,
'
vs/workbench/electron-browser/main
'
'
vs/workbench/electron-browser/main
'
,
'
vs/workbench/parts/themes/test/electron-browser/themes.test.contribution
'
],
function
()
{
'
use strict
'
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录