Paragraph.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) 2019-2020, Sergey Bugaev <bugaevc@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/StringBuilder.h>
  7. #include <LibMarkdown/Paragraph.h>
  8. namespace Markdown {
  9. String Paragraph::render_to_html() const
  10. {
  11. StringBuilder builder;
  12. builder.append("<p>");
  13. bool first = true;
  14. for (auto& line : m_lines) {
  15. if (!first)
  16. builder.append(' ');
  17. first = false;
  18. builder.append(line.text().render_to_html());
  19. }
  20. builder.append("</p>\n");
  21. return builder.build();
  22. }
  23. String Paragraph::render_for_terminal(size_t) const
  24. {
  25. StringBuilder builder;
  26. bool first = true;
  27. for (auto& line : m_lines) {
  28. if (!first)
  29. builder.append(' ');
  30. first = false;
  31. builder.append(line.text().render_for_terminal());
  32. }
  33. builder.append("\n\n");
  34. return builder.build();
  35. }
  36. OwnPtr<Paragraph::Line> Paragraph::Line::parse(Vector<StringView>::ConstIterator& lines)
  37. {
  38. if (lines.is_end())
  39. return {};
  40. auto text = Text::parse(*lines++);
  41. if (!text.has_value())
  42. return {};
  43. return make<Paragraph::Line>(text.release_value());
  44. }
  45. }