Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
c9415eb9
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c9415eb9
编写于
3月 08, 2017
作者:
G
Guillaume Gomez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remains to fix tables
上级
08a80cbd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
74 addition
and
20 deletion
+74
-20
src/librustdoc/html/markdown.rs
src/librustdoc/html/markdown.rs
+74
-20
未找到文件。
src/librustdoc/html/markdown.rs
浏览文件 @
c9415eb9
...
...
@@ -43,7 +43,7 @@
use
html
::
escape
::
Escape
;
use
test
;
use
pulldown_cmark
::{
self
,
Parser
};
use
pulldown_cmark
::{
self
,
Event
,
Parser
};
/// A unit struct which has the `fmt::Display` trait implemented. When
/// formatted, this struct will emit the HTML corresponding to the rendered
...
...
@@ -467,7 +467,7 @@ fn block(parser: &mut Parser, lang: &str, buffer: &mut String) {
PLAYGROUND
.with
(|
play
|
{
// insert newline to clearly separate it from the
// previous block so we can shorten the html output
let
mut
s
=
String
::
from
(
"
\n
"
);
buffer
.push
(
'\n'
);
let
playground_button
=
play
.borrow
()
.as_ref
()
.and_then
(|
&
(
ref
krate
,
ref
url
)|
{
if
url
.is_empty
()
{
return
None
;
...
...
@@ -506,12 +506,11 @@ fn dont_escape(c: u8) -> bool {
url
,
test_escaped
,
channel
))
});
s
.push_str
(
&
highlight
::
render_with_highlighting
(
&
text
,
Some
(
"rust-example-rendered"
),
None
,
playground_button
.as_ref
()
.map
(
String
::
as_str
)));
buffer
.push_str
(
&
s
);
buffer
.push_str
(
&
highlight
::
render_with_highlighting
(
&
text
,
Some
(
"rust-example-rendered"
),
None
,
playground_button
.as_ref
()
.map
(
String
::
as_str
)));
});
}
...
...
@@ -587,29 +586,84 @@ fn codespan(parser: &mut Parser, buffer: &mut String) {
buffer
.push_str
(
&
format!
(
"<code>{}</code>"
,
Escape
(
&
collapse_whitespace
(
&
content
))));
}
let
mut
toc_builder
=
if
print_toc
{
Some
(
TocBuilder
::
new
())
}
else
{
None
};
let
mut
buffer
=
String
::
new
();
let
mut
parser
=
Parser
::
new
(
s
);
loop
{
let
next_event
=
parser
.next
();
fn
link
(
parser
:
&
mut
Parser
,
buffer
:
&
mut
String
,
url
:
&
str
,
mut
title
:
String
)
{
loop
{
let
event
=
parser
.next
();
if
let
Some
(
event
)
=
event
{
match
event
{
pulldown_cmark
::
Event
::
End
(
pulldown_cmark
::
Tag
::
Link
(
_
,
_
))
=>
break
,
pulldown_cmark
::
Event
::
Text
(
ref
s
)
=>
{
title
.push_str
(
s
);
}
_
=>
{}
}
}
else
{
break
}
}
buffer
.push_str
(
&
format!
(
"<a href=
\"
{}
\"
>{}</a>"
,
url
,
title
));
}
fn
paragraph
(
parser
:
&
mut
Parser
,
buffer
:
&
mut
String
,
toc_builder
:
&
mut
Option
<
TocBuilder
>
)
{
let
mut
content
=
String
::
new
();
loop
{
let
event
=
parser
.next
();
if
let
Some
(
event
)
=
event
{
match
event
{
pulldown_cmark
::
Event
::
End
(
pulldown_cmark
::
Tag
::
Paragraph
)
=>
break
,
pulldown_cmark
::
Event
::
Text
(
ref
s
)
=>
{
content
.push_str
(
s
);
}
x
=>
{
looper
(
parser
,
&
mut
content
,
Some
(
x
),
toc_builder
);
}
}
}
else
{
break
}
}
buffer
.push_str
(
&
format!
(
"<p>{}</p>"
,
content
));
}
fn
looper
<
'a
>
(
parser
:
&
'a
mut
Parser
,
buffer
:
&
mut
String
,
next_event
:
Option
<
Event
<
'a
>>
,
toc_builder
:
&
mut
Option
<
TocBuilder
>
)
->
bool
{
if
let
Some
(
event
)
=
next_event
{
match
event
{
pulldown_cmark
::
Event
::
Start
(
pulldown_cmark
::
Tag
::
CodeBlock
(
s
))
=>
{
block
(
&
mut
parser
,
&*
s
,
&
mut
buffer
);
block
(
parser
,
&*
s
,
buffer
);
}
pulldown_cmark
::
Event
::
Start
(
pulldown_cmark
::
Tag
::
Header
(
level
))
=>
{
header
(
&
mut
parser
,
level
,
&
mut
toc_builder
,
&
mut
buffer
);
header
(
parser
,
level
,
toc_builder
,
buffer
);
}
pulldown_cmark
::
Event
::
Start
(
pulldown_cmark
::
Tag
::
Code
)
=>
{
codespan
(
&
mut
parser
,
&
mut
buffer
);
codespan
(
parser
,
buffer
);
}
pulldown_cmark
::
Event
::
Start
(
pulldown_cmark
::
Tag
::
Paragraph
)
=>
{
paragraph
(
parser
,
buffer
,
toc_builder
);
}
pulldown_cmark
::
Event
::
Start
(
pulldown_cmark
::
Tag
::
Link
(
ref
url
,
ref
t
))
=>
{
link
(
parser
,
buffer
,
url
,
t
.as_ref
()
.to_owned
());
}
_
=>
{}
}
true
}
else
{
false
}
}
let
mut
toc_builder
=
if
print_toc
{
Some
(
TocBuilder
::
new
())
}
else
{
None
};
let
mut
buffer
=
String
::
new
();
let
mut
parser
=
Parser
::
new
(
s
);
loop
{
let
next_event
=
parser
.next
();
if
!
looper
(
&
mut
parser
,
&
mut
buffer
,
next_event
,
&
mut
toc_builder
)
{
break
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录