A bare bones front-end for knockout designed for maximum compatibility with "obsolete" browsers
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

119 Zeilen
2.4KB

  1. <?php
  2. namespace App\Helper;
  3. // formatting
  4. use App\BbCode\Tag\Unknown;
  5. use App\BbCode\Tag\Text;
  6. use App\BbCode\Tag\Bold;
  7. use App\BbCode\Tag\Italic;
  8. use App\BbCode\Tag\Underline;
  9. use App\BbCode\Tag\Strikethrough;
  10. use App\BbCode\Tag\Spoiler;
  11. use App\BbCode\Tag\HeadingOne;
  12. use App\BbCode\Tag\HeadingTwo;
  13. use App\BbCode\Tag\Link;
  14. use App\BbCode\Tag\Code;
  15. // quotes
  16. use App\BbCode\Tag\Quote;
  17. use App\BbCode\Tag\Blockquote;
  18. // embeds
  19. use App\BbCode\Tag\Image;
  20. use App\BbCode\Tag\Twitter;
  21. use App\BbCode\Tag\Youtube;
  22. use App\BbCode\Tag\Video;
  23. use Knockout\BbCode\BbCode as Parser;
  24. use Knockout\BbCode\Tokenizer\Tokenizer;
  25. class BBCode {
  26. private $tokens;
  27. public function __construct($content)
  28. {
  29. $this->tokens = (new Tokenizer())->tokenize($content);
  30. }
  31. public function render()
  32. {
  33. $parser = new Parser();
  34. $unknown = new Unknown();
  35. $parser->addTag($unknown);
  36. $text = new Text();
  37. $parser->addTag($text);
  38. $bold = new Bold();
  39. $parser->addTag($bold);
  40. $italic = new Italic();
  41. $parser->addTag($italic);
  42. $underline = new Underline();
  43. $parser->addTag($underline);
  44. $strikethrough = new Strikethrough();
  45. $parser->addTag($strikethrough);
  46. $image = new Image();
  47. $parser->addTag($image);
  48. $link = new Link();
  49. $parser->addTag($link);
  50. $code = new Code();
  51. $parser->addTag($code);
  52. $quote = new Quote();
  53. $parser->addTag($quote);
  54. $blockquote = new Blockquote();
  55. $parser->addTag($blockquote);
  56. $twitter = new Twitter();
  57. $parser->addTag($twitter);
  58. $youtube = new Youtube();
  59. $parser->addTag($youtube);
  60. $video = new Video();
  61. $parser->addTag($video);
  62. $tags = [
  63. $unknown,
  64. $text,
  65. $bold,
  66. $italic,
  67. $underline,
  68. $strikethrough,
  69. $image,
  70. $link,
  71. $code,
  72. $quote,
  73. $blockquote,
  74. $twitter,
  75. $youtube,
  76. $video
  77. ];
  78. $anyChild = [
  79. $bold,
  80. $quote,
  81. $blockquote,
  82. $text,
  83. $unknown
  84. ];
  85. foreach ($anyChild as $parent) {
  86. foreach ($tags as $tag) {
  87. $parser->addAllowedChildTag($parent, $tag);
  88. }
  89. }
  90. return $parser->format($this->tokens);
  91. }
  92. }