Skip to content

Commit f038f18

Browse files
Add custom tag for markdown codeblocks
1 parent 113220b commit f038f18

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

src/librustdoc/html/markdown.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -1166,6 +1166,7 @@ impl LangString {
11661166
let allow_error_code_check = allow_error_code_check.as_bool();
11671167
let mut seen_rust_tags = false;
11681168
let mut seen_other_tags = false;
1169+
let mut seen_custom_tag = false;
11691170
let mut data = LangString::default();
11701171
let mut ignores = vec![];
11711172

@@ -1195,6 +1196,9 @@ impl LangString {
11951196
data.rust = true;
11961197
seen_rust_tags = true;
11971198
}
1199+
LangStringToken::LangToken("custom") => {
1200+
seen_custom_tag = true;
1201+
}
11981202
LangStringToken::LangToken("test_harness") => {
11991203
data.test_harness = true;
12001204
seen_rust_tags = !seen_other_tags || seen_rust_tags;
@@ -1264,7 +1268,6 @@ impl LangString {
12641268
data.unknown.push(x.to_owned());
12651269
}
12661270
LangStringToken::KeyValueAttribute(key, value) => {
1267-
seen_other_tags = true;
12681271
if key == "class" {
12691272
data.added_classes.push(value.to_owned());
12701273
} else if let Some(extra) = extra {
@@ -1273,7 +1276,6 @@ impl LangString {
12731276
}
12741277
}
12751278
LangStringToken::ClassAttribute(class) => {
1276-
seen_other_tags = true;
12771279
data.added_classes.push(class.to_owned());
12781280
}
12791281
}
@@ -1284,7 +1286,7 @@ impl LangString {
12841286
data.ignore = Ignore::Some(ignores);
12851287
}
12861288

1287-
data.rust &= !seen_other_tags || seen_rust_tags;
1289+
data.rust &= !seen_custom_tag && (!seen_other_tags || seen_rust_tags);
12881290

12891291
data
12901292
}

src/librustdoc/html/markdown/tests.rs

+36
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ fn test_lang_string_parse() {
6464
t(LangString { original: "{rust}".into(), rust: true, ..Default::default() });
6565
t(LangString {
6666
original: "{.rust}".into(),
67+
rust: true,
68+
added_classes: vec!["rust".into()],
69+
..Default::default()
70+
});
71+
t(LangString {
72+
original: "custom,{.rust}".into(),
6773
rust: false,
6874
added_classes: vec!["rust".into()],
6975
..Default::default()
@@ -154,12 +160,24 @@ fn test_lang_string_parse() {
154160
t(LangString {
155161
original: "{class=test}".into(),
156162
added_classes: vec!["test".into()],
163+
rust: true,
164+
..Default::default()
165+
});
166+
t(LangString {
167+
original: "custom,{class=test}".into(),
168+
added_classes: vec!["test".into()],
157169
rust: false,
158170
..Default::default()
159171
});
160172
t(LangString {
161173
original: "{.test}".into(),
162174
added_classes: vec!["test".into()],
175+
rust: true,
176+
..Default::default()
177+
});
178+
t(LangString {
179+
original: "custom,{.test}".into(),
180+
added_classes: vec!["test".into()],
163181
rust: false,
164182
..Default::default()
165183
});
@@ -172,12 +190,24 @@ fn test_lang_string_parse() {
172190
t(LangString {
173191
original: "{class=test:with:colon .test1}".into(),
174192
added_classes: vec!["test:with:colon".into(), "test1".into()],
193+
rust: true,
194+
..Default::default()
195+
});
196+
t(LangString {
197+
original: "custom,{class=test:with:colon .test1}".into(),
198+
added_classes: vec!["test:with:colon".into(), "test1".into()],
175199
rust: false,
176200
..Default::default()
177201
});
178202
t(LangString {
179203
original: "{class=first,class=second}".into(),
180204
added_classes: vec!["first".into(), "second".into()],
205+
rust: true,
206+
..Default::default()
207+
});
208+
t(LangString {
209+
original: "custom,{class=first,class=second}".into(),
210+
added_classes: vec!["first".into(), "second".into()],
181211
rust: false,
182212
..Default::default()
183213
});
@@ -206,6 +236,12 @@ fn test_lang_string_parse() {
206236
t(LangString {
207237
original: r#"{class="first"}"#.into(),
208238
added_classes: vec!["first".into()],
239+
rust: true,
240+
..Default::default()
241+
});
242+
t(LangString {
243+
original: r#"custom,{class="first"}"#.into(),
244+
added_classes: vec!["first".into()],
209245
rust: false,
210246
..Default::default()
211247
});

0 commit comments

Comments
 (0)