1
- //! Render README files to HTML.
1
+ //! Render Markdown files to HTML.
2
2
3
3
use ammonia:: { Builder , UrlRelative , UrlRelativeEvaluate } ;
4
4
use comrak:: nodes:: { AstNode , NodeValue } ;
@@ -15,7 +15,7 @@ struct MarkdownRenderer<'a> {
15
15
impl < ' a > MarkdownRenderer < ' a > {
16
16
/// Creates a new renderer instance.
17
17
///
18
- /// Per `readme_to_html `, `base_url` is the base URL prepended to any
18
+ /// Per `text_to_html `, `base_url` is the base URL prepended to any
19
19
/// relative links in the input document. See that function for more detail.
20
20
fn new ( base_url : Option < & ' a str > , base_dir : & ' a str ) -> MarkdownRenderer < ' a > {
21
21
let allowed_classes = hashmap ( & [ (
@@ -124,7 +124,7 @@ fn canon_base_url(mut base_url: String) -> String {
124
124
base_url
125
125
}
126
126
127
- /// Sanitize relative URLs in README files.
127
+ /// Sanitize relative URLs in Markdown files.
128
128
struct SanitizeUrl {
129
129
base_url : Option < String > ,
130
130
base_dir : String ,
@@ -217,18 +217,18 @@ impl UrlRelativeEvaluate for SanitizeUrl {
217
217
}
218
218
219
219
/// Renders Markdown text to sanitized HTML with a given `base_url`.
220
- /// See `readme_to_html ` for the interpretation of `base_url`.
220
+ /// See `text_to_html ` for the interpretation of `base_url`.
221
221
fn markdown_to_html ( text : & str , base_url : Option < & str > , base_dir : & str ) -> String {
222
222
let renderer = MarkdownRenderer :: new ( base_url, base_dir) ;
223
223
renderer. to_html ( text)
224
224
}
225
225
226
- /// Any readme with a filename ending in one of these extensions will be rendered as Markdown.
227
- /// Note we also render a readme as Markdown if _no_ extension is on the filename.
226
+ /// Any file with a filename ending in one of these extensions will be rendered as Markdown.
227
+ /// Note we also render a file as Markdown if _no_ extension is on the filename.
228
228
static MARKDOWN_EXTENSIONS : [ & str ; 7 ] =
229
229
[ "md" , "markdown" , "mdown" , "mdwn" , "mkd" , "mkdn" , "mkdown" ] ;
230
230
231
- /// Renders a readme to sanitized HTML. An appropriate rendering method is chosen depending
231
+ /// Renders a text file to sanitized HTML. An appropriate rendering method is chosen depending
232
232
/// on the extension of the supplied `filename`.
233
233
///
234
234
/// The returned text will not contain any harmful HTML tag or attribute (such as iframe,
@@ -242,22 +242,22 @@ static MARKDOWN_EXTENSIONS: [&str; 7] =
242
242
/// # Examples
243
243
///
244
244
/// ```
245
- /// use cio_markdown::readme_to_html ;
245
+ /// use cio_markdown::text_to_html ;
246
246
///
247
247
/// let text = "[Rust](https://rust-lang.org/) is an awesome *systems programming* language!";
248
- /// let rendered = readme_to_html (text, "README.md", None);
248
+ /// let rendered = text_to_html (text, "README.md", None);
249
249
/// ```
250
- pub fn readme_to_html ( text : & str , readme_path : & str , base_url : Option < & str > ) -> String {
251
- let readme_path = Path :: new ( readme_path ) ;
252
- let readme_dir = readme_path . parent ( ) . and_then ( |p| p. to_str ( ) ) . unwrap_or ( "" ) ;
250
+ pub fn text_to_html ( text : & str , path : & str , base_url : Option < & str > ) -> String {
251
+ let path = Path :: new ( path ) ;
252
+ let base_dir = path . parent ( ) . and_then ( |p| p. to_str ( ) ) . unwrap_or ( "" ) ;
253
253
254
- if readme_path . extension ( ) . is_none ( ) {
255
- return markdown_to_html ( text, base_url, readme_dir ) ;
254
+ if path . extension ( ) . is_none ( ) {
255
+ return markdown_to_html ( text, base_url, base_dir ) ;
256
256
}
257
257
258
- if let Some ( ext) = readme_path . extension ( ) . and_then ( |ext| ext. to_str ( ) ) {
258
+ if let Some ( ext) = path . extension ( ) . and_then ( |ext| ext. to_str ( ) ) {
259
259
if MARKDOWN_EXTENSIONS . contains ( & ext. to_lowercase ( ) . as_str ( ) ) {
260
- return markdown_to_html ( text, base_url, readme_dir ) ;
260
+ return markdown_to_html ( text, base_url, base_dir ) ;
261
261
}
262
262
}
263
263
@@ -454,10 +454,10 @@ mod tests {
454
454
455
455
#[ test]
456
456
fn absolute_links_dont_get_resolved ( ) {
457
- let readme_text =
457
+ let text =
458
458
"[](https://crates.io/crates/clap)" ;
459
459
let repository = "https://github.com/kbknapp/clap-rs/" ;
460
- let result = markdown_to_html ( readme_text , Some ( repository) , "" ) ;
460
+ let result = markdown_to_html ( text , Some ( repository) , "" ) ;
461
461
462
462
assert_eq ! (
463
463
result,
@@ -466,7 +466,7 @@ mod tests {
466
466
}
467
467
468
468
#[ test]
469
- fn readme_to_html_renders_markdown ( ) {
469
+ fn text_to_html_renders_markdown ( ) {
470
470
for f in & [
471
471
"README" ,
472
472
"readme.md" ,
@@ -476,30 +476,30 @@ mod tests {
476
476
"s1/s2/readme.md" ,
477
477
] {
478
478
assert_eq ! (
479
- readme_to_html ( "*lobster*" , f, None ) ,
479
+ text_to_html ( "*lobster*" , f, None ) ,
480
480
"<p><em>lobster</em></p>\n "
481
481
) ;
482
482
}
483
483
484
484
assert_eq ! (
485
- readme_to_html ( "*[lobster](docs/lobster)*" , "readme.md" , Some ( "https://github.com/rust-lang/test" ) ) ,
485
+ text_to_html ( "*[lobster](docs/lobster)*" , "readme.md" , Some ( "https://github.com/rust-lang/test" ) ) ,
486
486
"<p><em><a href=\" https://github.com/rust-lang/test/blob/HEAD/docs/lobster\" rel=\" nofollow noopener noreferrer\" >lobster</a></em></p>\n "
487
487
) ;
488
488
assert_eq ! (
489
- readme_to_html ( "*[lobster](docs/lobster)*" , "s/readme.md" , Some ( "https://github.com/rust-lang/test" ) ) ,
489
+ text_to_html ( "*[lobster](docs/lobster)*" , "s/readme.md" , Some ( "https://github.com/rust-lang/test" ) ) ,
490
490
"<p><em><a href=\" https://github.com/rust-lang/test/blob/HEAD/s/docs/lobster\" rel=\" nofollow noopener noreferrer\" >lobster</a></em></p>\n "
491
491
) ;
492
492
assert_eq ! (
493
- readme_to_html ( "*[lobster](docs/lobster)*" , "s1/s2/readme.md" , Some ( "https://github.com/rust-lang/test" ) ) ,
493
+ text_to_html ( "*[lobster](docs/lobster)*" , "s1/s2/readme.md" , Some ( "https://github.com/rust-lang/test" ) ) ,
494
494
"<p><em><a href=\" https://github.com/rust-lang/test/blob/HEAD/s1/s2/docs/lobster\" rel=\" nofollow noopener noreferrer\" >lobster</a></em></p>\n "
495
495
) ;
496
496
}
497
497
498
498
#[ test]
499
- fn readme_to_html_renders_other_things ( ) {
499
+ fn text_to_html_renders_other_things ( ) {
500
500
for f in & [ "readme.exe" , "readem.org" , "blah.adoc" ] {
501
501
assert_eq ! (
502
- readme_to_html ( "<script>lobster</script>\n \n is my friend\n " , f, None ) ,
502
+ text_to_html ( "<script>lobster</script>\n \n is my friend\n " , f, None ) ,
503
503
"<script>lobster</script><br>\n <br>\n is my friend<br>\n "
504
504
) ;
505
505
}
0 commit comments