A bare bones front-end for knockout designed for maximum compatibility with "obsolete" browsers
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

119 linhas
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. }