Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
54010e9d
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
54010e9d
编写于
2月 02, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
range map: refactor
上级
76c72a77
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
18 deletion
+19
-18
src/vs/base/parts/list/rangeMap.ts
src/vs/base/parts/list/rangeMap.ts
+19
-18
未找到文件。
src/vs/base/parts/list/rangeMap.ts
浏览文件 @
54010e9d
...
...
@@ -75,14 +75,6 @@ function shift({ start, end }: IRange, much: number): IRange {
return
{
start
:
start
+
much
,
end
:
end
+
much
};
}
/**
* Concatenates several collections of ranged groups into a single
* collection.
*/
function
concat
(...
groups
:
IRangedGroup
[][]):
IRangedGroup
[]
{
return
groups
.
reduce
((
r
,
g
)
=>
r
.
concat
(
g
),
[]
as
IRangedGroup
[]);
}
/**
* Consolidates a collection of ranged groups.
*
...
...
@@ -110,32 +102,41 @@ export function consolidate(groups: IRangedGroup[]): IRangedGroup[] {
return
result
;
}
/**
* Concatenates several collections of ranged groups into a single
* collection.
*/
function
concat
(...
groups
:
IRangedGroup
[][]):
IRangedGroup
[]
{
return
consolidate
(
groups
.
reduce
((
r
,
g
)
=>
r
.
concat
(
g
),
[]
as
IRangedGroup
[]));
}
export
class
RangeMap
{
private
groups
:
IRangedGroup
[]
=
[];
splice
(
index
:
number
,
deleteCount
:
number
,
...
groups
:
IGroup
[]):
void
{
const
insertCount
=
groups
.
reduce
((
t
,
r
)
=>
t
+
r
.
count
,
0
);
const
diff
=
insertCount
-
deleteCount
;
const
before
=
groupIntersect
({
start
:
0
,
end
:
index
},
this
.
groups
);
const
after
=
groupIntersect
({
start
:
index
+
deleteCount
,
end
:
Number
.
POSITIVE_INFINITY
},
this
.
groups
)
.
map
<
IRangedGroup
>
(
g
=>
({
range
:
shift
(
g
.
range
,
diff
),
size
:
g
.
size
}));
let
diff
=
-
deleteCount
;
let
index2
=
index
;
const
middle
=
groups
.
filter
(
g
=>
g
.
count
>
0
&&
g
.
size
>
0
)
.
map
<
IRangedGroup
>
(
g
=>
{
const
end
=
index
+
g
.
count
;
const
end
=
index
2
+
g
.
count
;
const
result
=
{
range
:
{
start
:
index
,
end
},
range
:
{
start
:
index
2
,
end
},
size
:
g
.
size
};
index
=
end
;
diff
+=
g
.
count
;
index2
=
end
;
return
result
;
});
this
.
groups
=
consolidate
(
concat
(
before
,
middle
,
after
));
const
before
=
groupIntersect
({
start
:
0
,
end
:
index
},
this
.
groups
);
const
after
=
groupIntersect
({
start
:
index
+
deleteCount
,
end
:
Number
.
POSITIVE_INFINITY
},
this
.
groups
)
.
map
<
IRangedGroup
>
(
g
=>
({
range
:
shift
(
g
.
range
,
diff
),
size
:
g
.
size
}));
this
.
groups
=
concat
(
before
,
middle
,
after
);
}
get
count
():
number
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录