Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c3beba97
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,发现更多精彩内容 >>
提交
c3beba97
编写于
5月 23, 2016
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[json] Add JSONPath
上级
545af1f1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
5 deletion
+14
-5
src/vs/base/common/json.ts
src/vs/base/common/json.ts
+14
-5
未找到文件。
src/vs/base/common/json.ts
浏览文件 @
c3beba97
...
@@ -669,6 +669,7 @@ export interface Node {
...
@@ -669,6 +669,7 @@ export interface Node {
}
}
export
type
Segment
=
string
|
number
;
export
type
Segment
=
string
|
number
;
export
type
JSONPath
=
Segment
[];
export
interface
Location
{
export
interface
Location
{
/**
/**
...
@@ -679,13 +680,13 @@ export interface Location {
...
@@ -679,13 +680,13 @@ export interface Location {
* The path describing the location in the JSON document. The path consists of a sequence strings
* The path describing the location in the JSON document. The path consists of a sequence strings
* representing an object property or numbers for array indices.
* representing an object property or numbers for array indices.
*/
*/
path
:
Segment
[]
;
path
:
JSONPath
;
/**
/**
* Matches the locations path against a pattern consisting of strings (for properties) and numbers (for array indices).
* Matches the locations path against a pattern consisting of strings (for properties) and numbers (for array indices).
* '*' will match a single segment, of any property name or index.
* '*' will match a single segment, of any property name or index.
* '**' will match a sequece of segments or no segment, of any property name or index.
* '**' will match a sequece of segments or no segment, of any property name or index.
*/
*/
matches
:
(
patterns
:
Segment
[]
)
=>
boolean
;
matches
:
(
patterns
:
JSONPath
)
=>
boolean
;
/**
/**
* If set, the location's offset is at a property key.
* If set, the location's offset is at a property key.
*/
*/
...
@@ -927,13 +928,18 @@ export function parseTree(text:string, errors: ParseError[] = [], options?: Pars
...
@@ -927,13 +928,18 @@ export function parseTree(text:string, errors: ParseError[] = [], options?: Pars
visit
(
text
,
visitor
,
options
);
visit
(
text
,
visitor
,
options
);
let
result
=
currentParent
.
children
[
0
];
let
result
=
currentParent
.
children
[
0
];
delete
result
.
parent
;
if
(
result
)
{
delete
result
.
parent
;
}
return
result
;
return
result
;
}
}
export
function
findNodeAtLocation
(
root
:
Node
,
segments
:
Segment
[])
:
Node
{
export
function
findNodeAtLocation
(
root
:
Node
,
path
:
JSONPath
)
:
Node
{
if
(
!
root
)
{
return
void
0
;
}
let
node
=
root
;
let
node
=
root
;
for
(
let
segment
of
segments
)
{
for
(
let
segment
of
path
)
{
if
(
typeof
segment
===
'
string
'
)
{
if
(
typeof
segment
===
'
string
'
)
{
if
(
node
.
type
!==
'
object
'
)
{
if
(
node
.
type
!==
'
object
'
)
{
return
void
0
;
return
void
0
;
...
@@ -1168,6 +1174,9 @@ export function visit(text:string, visitor: JSONVisitor, options?: ParseOptions)
...
@@ -1168,6 +1174,9 @@ export function visit(text:string, visitor: JSONVisitor, options?: ParseOptions)
}
}
scanNext
();
scanNext
();
if
(
_scanner
.
getToken
()
===
SyntaxKind
.
EOF
)
{
return
true
;
}
if
(
!
parseValue
())
{
if
(
!
parseValue
())
{
handleError
(
ParseErrorCode
.
ValueExpected
,
[],
[]);
handleError
(
ParseErrorCode
.
ValueExpected
,
[],
[]);
return
false
;
return
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录