PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 28.4
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v28.4
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
wordpress-seo / src / llms-txt / application / markdown-builders / markdown-builder.php

markdown-builder.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 28.4, at src/llms-txt/application/markdown-builders/markdown-builder.php

115 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong
4 namespace Yoast\WP\SEO\Llms_Txt\Application\Markdown_Builders;
5
6 use Yoast\WP\SEO\Llms_Txt\Application\Markdown_Escaper;
7 use Yoast\WP\SEO\Llms_Txt\Domain\Markdown\Llms_Txt_Renderer;
8
9 /**
10 * The builder of the markdown file.
11 */
12 class Markdown_Builder {
13
14 /**
15 * The renderer of the LLMs.txt file.
16 *
17 * @var Llms_Txt_Renderer
18 */
19 protected $llms_txt_renderer;
20
21 /**
22 * The intro builder.
23 *
24 * @var Intro_Builder
25 */
26 protected $intro_builder;
27
28 /**
29 * The title builder.
30 *
31 * @var Title_Builder
32 */
33 protected $title_builder;
34
35 /**
36 * The description builder.
37 *
38 * @var Description_Builder
39 */
40 protected $description_builder;
41
42 /**
43 * The link lists builder.
44 *
45 * @var Link_Lists_Builder
46 */
47 protected $link_lists_builder;
48
49 /**
50 * The markdown escaper.
51 *
52 * @var Markdown_Escaper
53 */
54 protected $markdown_escaper;
55
56 /**
57 * The optional link list builder.
58 *
59 * @var Optional_Link_List_Builder
60 */
61 protected $optional_link_list_builder;
62
63 /**
64 * The constructor.
65 *
66 * @param Llms_Txt_Renderer $llms_txt_renderer The renderer of the LLMs.txt file.
67 * @param Intro_Builder $intro_builder The intro builder.
68 * @param Title_Builder $title_builder The title builder.
69 * @param Description_Builder $description_builder The description builder.
70 * @param Link_Lists_Builder $link_lists_builder The link lists builder.
71 * @param Markdown_Escaper $markdown_escaper The markdown escaper.
72 * @param Optional_Link_List_Builder $optional_link_list_builder The optional link list builder.
73 */
74 public function __construct(
75 Llms_Txt_Renderer $llms_txt_renderer,
76 Intro_Builder $intro_builder,
77 Title_Builder $title_builder,
78 Description_Builder $description_builder,
79 Link_Lists_Builder $link_lists_builder,
80 Markdown_Escaper $markdown_escaper,
81 Optional_Link_List_Builder $optional_link_list_builder
82 ) {
83 $this->llms_txt_renderer = $llms_txt_renderer;
84 $this->intro_builder = $intro_builder;
85 $this->title_builder = $title_builder;
86 $this->description_builder = $description_builder;
87 $this->link_lists_builder = $link_lists_builder;
88 $this->markdown_escaper = $markdown_escaper;
89 $this->optional_link_list_builder = $optional_link_list_builder;
90 }
91
92 /**
93 * Renders the markdown.
94 *
95 * @return string The rendered markdown.
96 */
97 public function render(): string {
98 $this->llms_txt_renderer->add_section( $this->title_builder->build_title() );
99 $this->llms_txt_renderer->add_section( $this->description_builder->build_description() );
100 $this->llms_txt_renderer->add_section( $this->intro_builder->build_intro() );
101
102 foreach ( $this->link_lists_builder->build_link_lists() as $link_list ) {
103 $this->llms_txt_renderer->add_section( $link_list );
104 }
105
106 $this->llms_txt_renderer->add_section( $this->optional_link_list_builder->build_optional_link_list() );
107
108 foreach ( $this->llms_txt_renderer->get_sections() as $section ) {
109 $section->escape_markdown( $this->markdown_escaper );
110 }
111
112 return $this->llms_txt_renderer->render();
113 }
114 }
115