PHP and Javascript implementations of a simple markdown parser
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

playgroundapi.php 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  3. http_response_code(405); // method not allowed
  4. exit();
  5. }
  6. $readerNames = $_POST['readers'];
  7. $markdown = $_POST['markdown'];
  8. $permittedReaders = [
  9. 'MDUnderlinedHeadingReader' => true,
  10. 'MDHashHeadingReader' => true,
  11. 'MDSubtextReader' => true,
  12. 'MDBlockQuoteReader' => true,
  13. 'MDUnorderedListReader' => true,
  14. 'MDOrderedListReader' => true,
  15. 'MDFencedCodeBlockReader' => true,
  16. 'MDIndentedCodeBlockReader' => true,
  17. 'MDHorizontalRuleReader' => true,
  18. 'MDTableReader' => true,
  19. 'MDDefinitionListReader' => true,
  20. 'MDFootnoteReader' => true,
  21. 'MDAbbreviationReader' => true,
  22. 'MDParagraphReader' => true,
  23. 'MDSpreadsheetReader' => true,
  24. 'MDEmphasisReader' => true,
  25. 'MDStrongReader' => true,
  26. 'MDStrikethroughReader' => true,
  27. 'MDUnderlineReader' => true,
  28. 'MDHighlightReader' => true,
  29. 'MDCodeSpanReader' => true,
  30. 'MDSubscriptReader' => true,
  31. 'MDSuperscriptReader' => true,
  32. 'MDLinkReader' => true,
  33. 'MDReferencedLinkReader' => true,
  34. 'MDImageReader' => true,
  35. 'MDReferencedImageReader' => true,
  36. 'MDLineBreakReader' => true,
  37. 'MDHTMLTagReader' => true,
  38. 'MDModifierReader' => true,
  39. ];
  40. include 'php/markdown.php';
  41. include 'php/spreadsheet.php';
  42. try {
  43. $readers = [];
  44. foreach ($readerNames as $readerName) {
  45. if ($permittedReaders[$readerName] ?? false) {
  46. $ref = new ReflectionClass($readerName);
  47. $reader = $ref->newInstanceArgs([]);
  48. array_push($readers, $reader);
  49. }
  50. }
  51. $parser = new Markdown($readers);
  52. $html = $parser->toHTML($markdown);
  53. header('Content-Type: text/html');
  54. print($html);
  55. } catch (Error $e) {
  56. header('Content-Type: text/html');
  57. print('<pre><code>');
  58. print($e->getMessage() . "\n");
  59. print($e->getTraceAsString() . "\n");
  60. print('</code></pre>');
  61. flush();
  62. throw $e;
  63. }
  64. ?>