Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
scie
提交
a113221c
S
scie
项目概览
Phodal
/
scie
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
scie
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
a113221c
编写于
9月 08, 2020
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: add simple get dep logic
上级
c7eab902
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
39 addition
and
5 deletion
+39
-5
scie-grammar/src/grammar_registry.rs
scie-grammar/src/grammar_registry.rs
+29
-1
scie-grammar/src/scope_dependency.rs
scie-grammar/src/scope_dependency.rs
+10
-4
未找到文件。
scie-grammar/src/grammar_registry.rs
浏览文件 @
a113221c
use
std
::
collections
::
HashMap
;
use
std
::
collections
::{
HashMap
,
HashSet
};
use
crate
::
scope_dependency
::{
ScopeDependency
,
FullScopeDependency
};
use
crate
::
scope_dependency
::
ScopeDependency
::
Full
;
pub
struct
IEmbeddedLanguagesMap
{
map
:
HashMap
<
String
,
i32
>
,
...
...
@@ -31,7 +33,33 @@ impl GrammarRegistry {
)
{}
// todo: modify logic to here for _collectDependenciesForDep
pub
fn
_
load_grammar
(
&
self
,
initial_scope_name
:
String
,
_
initial_language
:
i32
,
_
token_type
:
Option
<
ITokenTypeMap
>
)
{
let
mut
seen_full_scope_requests
:
HashSet
<
String
>
=
HashSet
::
new
();
let
seen_partial_scope_requests
:
HashSet
<
String
>
=
HashSet
::
new
();
seen_full_scope_requests
.insert
(
initial_scope_name
.clone
());
let
dependency
=
FullScopeDependency
::
new
(
initial_scope_name
);
let
mut
Q
:
Vec
<
ScopeDependency
>
=
vec!
[
ScopeDependency
::
Full
(
dependency
)];
while
Q
.len
()
>
0
{
let
q
=
Q
.clone
();
Q
=
vec!
[];
for
x
in
q
{
match
x
{
Full
(
dep
)
=>
{
self
._loadSingleGrammar
(
dep
.scope_name
);
},
ScopeDependency
::
Partial
(
dep
)
=>
{
self
._loadSingleGrammar
(
dep
.scope_name
);
},
}
}
}
}
pub
fn
_
loadSingleGrammar
(
&
self
,
scope_name
:
String
)
{
// todo: add cache supportr
}
pub
fn
load_grammar
(
&
self
,
initial_scope_name
:
String
)
{
...
...
scie-grammar/src/scope_dependency.rs
浏览文件 @
a113221c
...
...
@@ -18,10 +18,16 @@ pub struct FullScopeDependency {
pub
scope_name
:
String
}
impl
FullScopeDependency
{
pub
fn
new
(
scope_name
:
String
)
->
Self
{
FullScopeDependency
{
scope_name
}
}
}
#[derive(Clone,
Debug,
Serialize)]
pub
enum
ScopeDependency
{
Full
ScopeDependency
(
FullScopeDependency
),
Partial
ScopeDependency
(
PartialScopeDependency
)
Full
(
FullScopeDependency
),
Partial
(
PartialScopeDependency
)
}
#[derive(Clone,
Debug,
Serialize)]
...
...
@@ -46,14 +52,14 @@ impl ScopeDependencyCollector {
pub
fn
add
(
&
mut
self
,
dep
:
ScopeDependency
)
{
match
dep
{
ScopeDependency
::
Full
ScopeDependency
(
full_dep
)
=>
{
ScopeDependency
::
Full
(
full_dep
)
=>
{
let
scope_name
=
&*
full_dep
.scope_name
.clone
();
if
let
None
=
self
._seen_full
.get
(
scope_name
.clone
())
{
self
._seen_full
.insert
(
String
::
from
(
scope_name
));
self
.full
.push
(
full_dep
);
}
},
ScopeDependency
::
Partial
ScopeDependency
(
partial_dep
)
=>
{
ScopeDependency
::
Partial
(
partial_dep
)
=>
{
let
key
=
&*
partial_dep
.to_key
();
if
let
None
=
self
._seen_partial
.get
(
key
)
{
self
._seen_partial
.insert
(
String
::
from
(
key
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录