diff options
author | zotlabs <mike@macgirvin.com> | 2017-05-09 19:12:23 -0700 |
---|---|---|
committer | zotlabs <mike@macgirvin.com> | 2017-05-09 19:12:23 -0700 |
commit | 556407408fc3a8c0a912a23f8d8f9eb7a5872013 (patch) | |
tree | 78508c46ac0ae60332a06a4f28cf20a480776316 /Zotlabs | |
parent | a862bf488c4cce6e514d05b674dc0a1a25069f78 (diff) | |
parent | 6c0e0b3eaeead84686148f0fa43cd441357a8b8c (diff) | |
download | volse-hubzilla-556407408fc3a8c0a912a23f8d8f9eb7a5872013.tar.gz volse-hubzilla-556407408fc3a8c0a912a23f8d8f9eb7a5872013.tar.bz2 volse-hubzilla-556407408fc3a8c0a912a23f8d8f9eb7a5872013.zip |
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge
Diffstat (limited to 'Zotlabs')
-rw-r--r-- | Zotlabs/Render/Comanche.php | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php index 5c1ca7d10..beee9796e 100644 --- a/Zotlabs/Render/Comanche.php +++ b/Zotlabs/Render/Comanche.php @@ -18,7 +18,49 @@ class Comanche { $s = str_replace($mtch[0], '', $s); } } - + + /* + * This section supports the "switch" statement of the form given by the following + * example. The [default][/default] block must be the last in the arbitrary + * list of cases. The first case that matches the switch variable is used + * and the rest are not evaluated. + * + * [switch observer.language] + * [case de] + * [block]german-content[/block] + * [/case] + * [case es] + * [block]spanish-content[/block] + * [/case] + * [default] + * [block]english-content[/block] + * [/default] + * [/switch] + */ + + $cnt = preg_match_all("/\[switch (.*?)\](.*?)\[default\](.*?)\[\/default\]\s*\[\/switch\]/ism", $s, $matches, PREG_SET_ORDER); + if($cnt) { + foreach($matches as $mtch) { + $switch_done = 0; + $switch_var = $this->get_condition_var($mtch[1]); + $default = $mtch[3]; + $cases = array(); + $cntt = preg_match_all("/\[case (.*?)\](.*?)\[\/case\]/ism", $mtch[2], $cases, PREG_SET_ORDER); + if($cntt) { + foreach($cases as $case) { + if($case[1] === $switch_var) { + $switch_done = 1; + $s = str_replace($mtch[0], $case[2], $s); + break; + } + } + if($switch_done === 0) { + $s = str_replace($mtch[0], $default, $s); + } + } + } + } + $cnt = preg_match_all("/\[if (.*?)\](.*?)\[else\](.*?)\[\/if\]/ism", $s, $matches, PREG_SET_ORDER); if($cnt) { foreach($matches as $mtch) { |