File tree Expand file tree Collapse file tree 3 files changed +41
-1
lines changed
web/landing/src/Flow/Website/Service Expand file tree Collapse file tree 3 files changed +41
-1
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,8 @@ public function all() : array
3434 continue ;
3535 }
3636
37+ $ relativePath = str_replace ('.md ' , '' , $ relativePath );
38+
3739 $ pages [] = new Page ($ relativePath , \file_get_contents ($ file ->path ->path ()));
3840 }
3941
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Flow \Website \Service \Markdown ;
6+
7+ use League \CommonMark \Extension \CommonMark \Node \Inline \Link ;
8+ use League \CommonMark \Node \Node ;
9+ use League \CommonMark \Renderer \{ChildNodeRendererInterface , NodeRendererInterface };
10+ use League \CommonMark \Util \HtmlElement ;
11+
12+ class FlowLinkRenderer implements NodeRendererInterface
13+ {
14+ public function render (Node $ node , ChildNodeRendererInterface $ childRenderer )
15+ {
16+ if (!$ node instanceof Link) {
17+ throw new \InvalidArgumentException ('Incompatible node type: ' . $ node ::class);
18+ }
19+
20+ $ attrs = $ node ->data ->get ('attributes ' );
21+
22+ $ urlParts = parse_url ($ node ->getUrl ());
23+
24+ if (!isset ($ urlParts ['scheme ' ]) && !isset ($ urlParts ['host ' ])) {
25+ $ node ->setUrl (str_replace ('.md ' , '' , $ node ->getUrl ()));
26+ }
27+
28+ $ attrs ['href ' ] = $ node ->getUrl ();
29+
30+ if ($ node ->getTitle ()) {
31+ $ attrs ['title ' ] = $ node ->getTitle ();
32+ }
33+
34+ return new HtmlElement ('a ' , $ attrs , $ childRenderer ->renderNodes ($ node ->children ()));
35+ }
36+ }
Original file line number Diff line number Diff line change 77use League \CommonMark \CommonMarkConverter ;
88use League \CommonMark \Extension \CommonMark \CommonMarkCoreExtension ;
99use League \CommonMark \Extension \CommonMark \Node \Block \FencedCode ;
10+ use League \CommonMark \Extension \CommonMark \Node \Inline \Link ;
1011use League \CommonMark \Extension \ExternalLink \ExternalLinkExtension ;
1112
1213final class LeagueCommonMarkConverterFactory
@@ -24,7 +25,8 @@ public function __invoke() : CommonMarkConverter
2425
2526 $ converter ->getEnvironment ()
2627 ->addExtension (new ExternalLinkExtension ())
27- ->addRenderer (FencedCode::class, new FlowCodeRenderer (), 0 );
28+ ->addRenderer (FencedCode::class, new FlowCodeRenderer (), 0 )
29+ ->addRenderer (Link::class, new FlowLinkRenderer (), 0 );
2830 // $converter->getEnvironment()->addExtension(new CommonMarkCoreExtension());
2931 // foreach ($this->extensions as $extension) {
3032 // $converter->getEnvironment()->addRenderer(new FlowCodeRenderer());
You can’t perform that action at this time.
0 commit comments