Collection of mostly command line tools / PHP scripts. Somewhat out of date.

⌈⌋ ⎇ branch:  scripts + snippets


Check-in [26da8c8473]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:converts smarty templates into plain php
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 26da8c84735787891cffc0a4b8fcc9e6eea78b6a
User & Date: mario 2012-01-09 04:09:19
Context
2012-01-09
04:09
buetooth dialup gui in tcl/tk check-in: 72881019cc user: mario tags: trunk
04:09
converts smarty templates into plain php check-in: 26da8c8473 user: mario tags: trunk
04:08
copies disk image around (dd), while luks encoding the partition check-in: 882cff0fe3 user: mario tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Added smarty2php.







































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/perl -pw

# written for use with S9Y smarty replacement
# expects already extract()ed $tpl array in current var namespace


#-- lets first unify $variables.index/$CONST into php syntax:
# some are called twice to catch multiple instances in a single smarty tag
s/(\{[^}]*)\$CONST.(\w+)([^}]*})/$1\@$2$3/g;
s/(\{[^}]*)\$CONST.(\w+)([^}]*})/$1\@$2$3/g;  # optional, we had $CONST as local array anyhow
s/(\{[^}]*)\$(\w+)\.(\w+)([^}]*})/$1\$$2\['$3'\]$4/g;
s/(\{[^}]*)\$(\w+)\.(\w+)([^}]*})/$1\$$2\['$3'\]$4/g;
s/(\{[^}]*)\$(\w+)\.(\w+)([^}]*})/$1\$$2\['$3'\]$4/g;
s/(\{[^}]*)\$(\w+)\.(\w+)\.(\w+)([^}]*})/$1\$$2\['$3'\]\['$4'\]$5/g;
$VAR = "[\\\$\\@][\\w\\[\\]\\']+";   # shortcut for further regexs

#-- s9y
s/\{serendipity_hookPlugin hook="(\w+)"}/<? serendipity_plugin_api::hook_event('$1', \$GLOBALS\['template'\]); ?>/;
s/\{serendipity_printSidebar side="(\w+)"}/<? echo serendipity_plugin_api::generate_plugins('$1'); ?>/;
s/\{serendipity_printComments entry=($VAR) mode=($VAR)}/<? echo serendipity_smarty_printComments(array('entry'=>$1, 'mode'=>$2, \$this)); ?>/;
$PARAM = '(\w+)="(\$?\w+)"';
s/\{serendipity_(\w+) +$PARAM(?: +$PARAM)* *}/<?= serendipity_smarty_$1(array('$2'=>"$3", '$4'=>"$5", '$6'=>"$7"), \$this); ?>/g;

#-- variables
s/\{($VAR) *}/<?= $1 ?>/g;
s/\{($VAR) *\| *\@default\:($VAR|\w+) *}/<?= isset($1) ? ($1) : ($2) ?>/g;   # ???

#-- variables with functions, just a basic set here, and no chain handling
s/\{($VAR) *\| *\@formatTime\:($VAR|\w+) *}/<?= strftime($2, $1) ?>/g;
s/\{($VAR) *\| *\@sprintf\:($VAR|\w+) *}/<?= sprintf($2, $1) ?>/g;
s/\{($VAR) *\| *\@(makeFilename) *}/<?= serendipity_makeFilename($1) ?>/g;
#s/\{($VAR) *\| *\@(\w+) *}/<?= smarty_$2($1) ?>/g;   # other plain functions ???

#-- if blocks
s/(\{\w*if[^}]+)( not )([^}]+})/ ! /g;
s/(\{\w*if[^}]+)( and )([^}]+})/ && /g;
s/(\{\w*if[^}]+)( or )([^}]+})/ || /g;
s/\{if +(.+?) *}/<? if ($1): ?>/g;   # more difficult expressions need rework
s/\{else?if +(.+?) *}/<? elseif ($1): ?>/g;
s/\{else *}/<? else: ?>/g;
s/\{\/if *}/<? endif; ?>/g;

#-- foreach blocks
s/\{foreach +from=($VAR) +item="?(\w+)"? key="(\w+)"( [\w="]+)* *}/<? if (count($1))  foreach ($1 as \$$3 => \$$2)  \{\{  \$_foreach++;  ?>/;
s/\{foreach +from=($VAR) +item="?(\w+)"?( [\w="]+)* *}/<? if (count($1))  foreach ($1 as \$$2)  \{\{  \$_foreach++;  ?>/;
#s/\{foreach +from=($VAR) +item="?(\w+)\.(\w+)"?.*?}/<?  foreach ($1 as \$$2\['$3'\])  \{\{   ?>/;
s/\{foreachelse *}/<?  \}\} else \{\{ #foreachelse  ?>/g;
s/\{\/foreach *}/<?  \}\} #endforeach  ?>/g;
s/\{cycle +values="(.+?)" *}/<? \$_cycle = split(", *", "$1"); echo \$_cycle[\$_foreach \% count(\$_cycle)]; \{\{   ?>/;