From 66e9f26f5958c101902923a6d86247f9c43899f3 Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Fri, 4 Mar 2016 23:12:05 +0800 Subject: [PATCH] limited parameters to toc tag --- README.md | 8 +- site/tags/sections.php | 217 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 197 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index a064bf6..461ffc6 100644 --- a/README.md +++ b/README.md @@ -13,17 +13,15 @@ Headline 5: (l5: Headline5)
Headline 6: (l6: Headline6) ##Additional Options -The following are additional options for formatting the table of contents and the contained links +The following are additional options for formatting the table of contents and the contained links. All parameters go into the (toc) tag. - levelchar: Allows to change the character used to separate different levels in the table of contents, usage: *levelchar: >* or *levelchar: space* - -Note that the following options change the link behavior and thus need to be added to all tags that are supposed to work together, so the (toc), as well as all (l1), (l2), etc. - split: Allows to change the replacement character for a space, example usage: *split: -* - lowercase: Allows to change all letters in the link to lowercase, usage: *lowercase: 1* ###Example
(toc:6 split: - lowercase: 1 levelchar: >)
-(l2: Test test�? split: - lowercase: 1)
-(l3: Test2 test�? split: - lowercase: 1)
+(l2: Test test�?)
+(l3: Test2 test�?)
##Installation copy to your kirby/site/tags folder diff --git a/site/tags/sections.php b/site/tags/sections.php index 55445c3..adc1eb8 100644 --- a/site/tags/sections.php +++ b/site/tags/sections.php @@ -2,15 +2,42 @@ kirbytext::$tags['l1'] = array( 'attr' => array( - 'split', - 'lowercase' ), 'html' => function($tag) { - $link = $tag->attr('l1'); + + foreach($tag->page()->content() as $link) { + $cnt+=1; + if($cnt==3) { + preg_match_all("/\(toc: .*\)/", $link, $tocs); + foreach ($tocs[0] as $toc) { + preg_match_all("/lowercase:(\ )?[0,1]?/", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/lowercase:/", "", $param); + $param = preg_replace("/\ /", "", $param); + if($param==1) + { + $lowercase=1; + } + else + { + $lowercase=0; + } + } + $splitchar = '%20'; + preg_match_all("/split:(\ )?./", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/split:(\ )?/", "", $param); + $param = preg_replace("/\ ./", "", $param); + $splitchar = $param; + } + } + } + } + + $link = $tag->attr('l1'); $link = preg_replace("/[^ \w]+/", "", $link); - $splitchar = $tag->attr('split', "%20"); $link = str_replace(" ", $splitchar, $link); - if($tag->attr('lowercase')==1) { + if($lowercase==1) { $link = strtolower($link); } return '

'. $tag->attr('l1') . '

'; @@ -23,11 +50,40 @@ 'lowercase' ), 'html' => function($tag) { + + foreach($tag->page()->content() as $link) { + $cnt+=1; + if($cnt==3) { + preg_match_all("/\(toc: .*\)/", $link, $tocs); + foreach ($tocs[0] as $toc) { + preg_match_all("/lowercase:(\ )?[0,1]?/", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/lowercase:/", "", $param); + $param = preg_replace("/\ /", "", $param); + if($param==1) + { + $lowercase=1; + } + else + { + $lowercase=0; + } + } + $splitchar = '%20'; + preg_match_all("/split:(\ )?./", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/split:(\ )?/", "", $param); + $param = preg_replace("/\ ./", "", $param); + $splitchar = $param; + } + } + } + } + $link = $tag->attr('l2'); $link = preg_replace("/[^ \w]+/", "", $link); - $splitchar = $tag->attr('split', "%20"); $link = str_replace(" ", $splitchar, $link); - if($tag->attr('lowercase')==1) { + if($lowercase==1) { $link = strtolower($link); } return '

'. $tag->attr('l2') . '

'; @@ -40,11 +96,40 @@ 'lowercase' ), 'html' => function($tag) { + + foreach($tag->page()->content() as $link) { + $cnt+=1; + if($cnt==3) { + preg_match_all("/\(toc: .*\)/", $link, $tocs); + foreach ($tocs[0] as $toc) { + preg_match_all("/lowercase:(\ )?[0,1]?/", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/lowercase:/", "", $param); + $param = preg_replace("/\ /", "", $param); + if($param==1) + { + $lowercase=1; + } + else + { + $lowercase=0; + } + } + $splitchar = '%20'; + preg_match_all("/split:(\ )?./", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/split:(\ )?/", "", $param); + $param = preg_replace("/\ ./", "", $param); + $splitchar = $param; + } + } + } + } + $link = $tag->attr('l3'); $link = preg_replace("/[^ \w]+/", "", $link); - $splitchar = $tag->attr('split', "%20"); $link = str_replace(" ", $splitchar, $link); - if($tag->attr('lowercase')==1) { + if($lowercase==1) { $link = strtolower($link); } return '

'. $tag->attr('l3') . '

'; @@ -57,11 +142,40 @@ 'lowercase' ), 'html' => function($tag) { + + foreach($tag->page()->content() as $link) { + $cnt+=1; + if($cnt==3) { + preg_match_all("/\(toc: .*\)/", $link, $tocs); + foreach ($tocs[0] as $toc) { + preg_match_all("/lowercase:(\ )?[0,1]?/", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/lowercase:/", "", $param); + $param = preg_replace("/\ /", "", $param); + if($param==1) + { + $lowercase=1; + } + else + { + $lowercase=0; + } + } + $splitchar = '%20'; + preg_match_all("/split:(\ )?./", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/split:(\ )?/", "", $param); + $param = preg_replace("/\ ./", "", $param); + $splitchar = $param; + } + } + } + } + $link = $tag->attr('l4'); $link = preg_replace("/[^ \w]+/", "", $link); - $splitchar = $tag->attr('split', "%20"); $link = str_replace(" ", $splitchar, $link); - if($tag->attr('lowercase')==1) { + if($lowercase==1) { $link = strtolower($link); } return '

'. $tag->attr('l4') . '

'; @@ -74,11 +188,40 @@ 'lowercase' ), 'html' => function($tag) { + + foreach($tag->page()->content() as $link) { + $cnt+=1; + if($cnt==3) { + preg_match_all("/\(toc: .*\)/", $link, $tocs); + foreach ($tocs[0] as $toc) { + preg_match_all("/lowercase:(\ )?[0,1]?/", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/lowercase:/", "", $param); + $param = preg_replace("/\ /", "", $param); + if($param==1) + { + $lowercase=1; + } + else + { + $lowercase=0; + } + } + $splitchar = '%20'; + preg_match_all("/split:(\ )?./", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/split:(\ )?/", "", $param); + $param = preg_replace("/\ ./", "", $param); + $splitchar = $param; + } + } + } + } + $link = $tag->attr('l5'); $link = preg_replace("/[^ \w]+/", "", $link); - $splitchar = $tag->attr('split', "%20"); $link = str_replace(" ", $splitchar, $link); - if($tag->attr('lowercase')==1) { + if($lowercase==1) { $link = strtolower($link); } return '
'. $tag->attr('l5') . '
'; @@ -91,11 +234,40 @@ 'lowercase' ), 'html' => function($tag) { + + foreach($tag->page()->content() as $link) { + $cnt+=1; + if($cnt==3) { + preg_match_all("/\(toc: .*\)/", $link, $tocs); + foreach ($tocs[0] as $toc) { + preg_match_all("/lowercase:(\ )?[0,1]?/", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/lowercase:/", "", $param); + $param = preg_replace("/\ /", "", $param); + if($param==1) + { + $lowercase=1; + } + else + { + $lowercase=0; + } + } + $splitchar = '%20'; + preg_match_all("/split:(\ )?./", $toc, $parameters); + foreach ($parameters[0] as $param) { + $param = preg_replace("/split:(\ )?/", "", $param); + $param = preg_replace("/\ ./", "", $param); + $splitchar = $param; + } + } + } + } + $link = $tag->attr('l6'); $link = preg_replace("/[^ \w]+/", "", $link); - $splitchar = $tag->attr('split', "%20"); $link = str_replace(" ", $splitchar, $link); - if($tag->attr('lowercase')==1) { + if($lowercase==1) { $link = strtolower($link); } return '
'. $tag->attr('l6') . '
'; @@ -125,28 +297,27 @@ $name = preg_split("/\(l[1-6]?: /",$heading); $name = preg_split("/\)/",$name[1]); $link = $name[0]; - $link = preg_replace("/\ split: ./", "", $link); - $link = preg_replace("/\ lowercase: \d/", "", $link); - // $link = normalizer_normalize( $name[0], Normalizer::FORM_C ); + $link = preg_replace("/[^ \w]+/", "", $link); $link = str_replace(" ", $splitchar, $link); $link = htmlentities($link); - if($tag->attr('lowercase')==1) { - $link = strtolower($link); - } $number = preg_split("/\(l/",$heading); $number = preg_split("/: .*\)/",$number[1]); $number = $number[0]; + if($tag->attr('lowercase')==1) { + $link = strtolower($link); + } + if($number <= $tag->attr('toc')) { for ($x = 2; $x < $number; $x++) { $html .= $levelchar.' '; } - $name = preg_replace("/\ split: ./", "", $name[0]); - $name = preg_replace("/\ lowercase: \d/", "", $name); + $name = preg_replace("/\ split:(\ )?./", "", $name[0]); + $name = preg_replace("/\ lowercase:(\ )?\d/", "", $name); $html .= '