Bläddra i källkod

LibMarkdown: Allow extra content to be inserted into HTML output's head

This lets users supply custom styling and scripting, among other things.
Sam Atkins 2 år sedan
förälder
incheckning
aea4fbdd7b
2 ändrade filer med 19 tillägg och 13 borttagningar
  1. 18 12
      Userland/Libraries/LibMarkdown/Document.cpp
  2. 1 1
      Userland/Libraries/LibMarkdown/Document.h

+ 18 - 12
Userland/Libraries/LibMarkdown/Document.cpp

@@ -12,23 +12,29 @@
 
 namespace Markdown {
 
-String Document::render_to_html() const
+String Document::render_to_html(StringView extra_head_contents) const
 {
     StringBuilder builder;
-
-    builder.append("<!DOCTYPE html>\n"sv);
-    builder.append("<html>\n"sv);
-    builder.append("<head>\n"sv);
-    builder.append("<style>\n"sv);
-    builder.append("code { white-space: pre; }\n"sv);
-    builder.append("</style>\n"sv);
-    builder.append("</head>\n"sv);
-    builder.append("<body>\n"sv);
+    builder.append(R"~~~(<!DOCTYPE html>
+<html>
+<head>
+    <style>
+        code { white-space: pre; }
+    </style>
+)~~~"sv);
+    if (!extra_head_contents.is_empty())
+        builder.append(extra_head_contents);
+    builder.append(R"~~~(
+</head>
+<body>
+)~~~"sv);
 
     builder.append(render_to_inline_html());
 
-    builder.append("</body>\n"sv);
-    builder.append("</html>\n"sv);
+    builder.append(R"~~~(
+</body>
+</html>)~~~"sv);
+
     return builder.build();
 }
 

+ 1 - 1
Userland/Libraries/LibMarkdown/Document.h

@@ -19,7 +19,7 @@ public:
         : m_container(move(container))
     {
     }
-    String render_to_html() const;
+    String render_to_html(StringView extra_head_contents = ""sv) const;
     String render_to_inline_html() const;
     String render_for_terminal(size_t view_width = 0) const;