| 
<?phpinclude_once("../../SL5_preg_contentFinder.php");
 $bugIt=true;
 $bugIt=false;
 
 $pathinfo__FILE__ = pathinfo(__FILE__);
 $pathinfo_Script_Name = (isset($_SERVER['SCRIPT_NAME'])) ? pathinfo($_SERVER['SCRIPT_NAME']) : '';
 $isIncluded = ((isset($argv[0]) && !empty($argv[0]))
 && ($pathinfo_Script_Name && @$pathinfo__FILE__['basename'] == @$pathinfo_Script_Name['basename']));
 
 # http://php.net/manual/de/features.commandline.php
 //parse_str(implode('&', array_slice($argv, 1)), $_GET);
 //if(!$isIncluded) echo 'little autohotkey example. $argv[0]=' . @$argv[0];
 //echo '' . @$argv[0];
 if($bugIt)echo ' :-) ';
 if(!$isIncluded && !file_exists('SL5_phpGeneratedRunOnChanged.tmpl.ahk')) {
 if($bugIt)echo ' :-] ';
 #echo(':( NOT EXIST: SL5_phpGeneratedRunOnChanged.tmpl.ahk');
 }
 
 if(!$isIncluded && !isset($argv[1])) {
 $file = 'test.ahk';
 $i = 0;
 
 while(!file_exists($file) && $i++ < 6) {
 $file = '..\\' . $file;
 }
 $realpath = realpath($file);
 if(!$realpath) {
 //        echo("\n".__LINE__ . ':( NOT EXISTS ' . nl2br("\n\$file=" . $realpath . " = $file\n"));
 }
 else {
 //        echo __LINE__ . ':' . nl2br("\n\$file=" . $realpath . " = $file\n");
 
 $argv[1] = '--source1="E:\fre\private\HtmlDevelop\AutoHotKey\SL5_AHK_Refactor_engine_gitHub\\' . $file . '" --renameSymbol="Mod" --renameSymbol_To="zzzzzzz"';
 $argv[1] = '--source1="E:\fre\private\HtmlDevelop\AutoHotKey\SL5_AHK_Refactor_engine_gitHub\\' . $file . '" renameSymbol="zzzzzzz" renameSymbol_To="rrrrrrrrr"';
 $argv[1] = '--source1="E:\fre\private\HtmlDevelop\AutoHotKey\SL5_AHK_Refactor_engine_gitHub\\' . $file . '" --A_ThisLabel="Alt & Down"';
 
 $argv[1] = 'E:\fre\private\HtmlDevelop\AutoHotKey\SL5_AHK_Refactor_engine\phpdesktop-msie-1.14-php-5.4.33\php\php-cgi.exe E:\fre\private\HtmlDevelop\AutoHotKey\SL5_AHK_Refactor_engine\phpdesktop-msie-1.14-php-5.4.33\www\SL5_preg_contentFinder\examples\AutoHotKey\Reformatting_Autohotkey_Source.php --source1="E:\fre\private\HtmlDevelop\AutoHotKey\SL5_AHK_Refactor_engine\keys_SL5_AHK_Refactor_engine.ahk" --A_ThisLabel="Alt & Up"
 ';
 unset($argv[1]);
 }
 }
 if(isset($argv)) {
 if($bugIt)echo __LINE__.':  :-) ';
 
 $arguments = arguments($argv);
 $fileAddress = (isset($arguments['source1'])) ? $arguments['source1'] : '';
 //    $fileAddress = (isset($arguments['source1'])) ? $arguments['source1'] : '';
 }
 if(!$isIncluded && isset($fileAddress) && file_exists($fileAddress)) {
 if(!isset($fileAddress) || !$fileAddress || empty($fileAddress)) {
 
 $fileAddress = 'input_compressed_2.ahk';
 $file_content = file_get_contents($fileAddress);
 $fileAddress = 'output_reformatted_2.ahk';
 $arguments = null;
 }
 else {
 $file_content = file_get_contents($fileAddress);
 
 }
 }
 if($bugIt)echo ' :-) $isIncluded='.$isIncluded;
 if(!$isIncluded && isset($fileAddress) && file_exists($fileAddress)) {
 $format = new DateTime();
 $timeStamp = $format->format('s'); // Y-m-d_H-s
 file_put_contents($fileAddress . '.backup' . $timeStamp . '.ahk', $file_content);
 
 if($bugIt)echo ' :-) ';
 $actual_content = reformat_AutoHotKey($file_content, $arguments);
 file_put_contents($fileAddress, $actual_content);
 }
 
 function reformat_AutoHotKey($file_content, $arguments = null) {
 if(!isset($file_content)) die('15-06-25_15-07 $f_input');
 if(@empty($arguments['indentStyle'])) {
 /*
 https://en.wikipedia.org/wiki/Indent_style
 https://de.wikipedia.org/wiki/Einr%C3%BCckungsstil#1TBS_.2F_K.26R_.2F_Kernel_.2F_Linux_.2F_UNIX_.2F_.E2.80.9EWest_Coast.E2.80.9C_.2F_Stroustrup_.2F_Java_.2F_Sun
 Java-Style
 int f(int x, int y, int z) {
 if (x < foo(y, z)) {
 qux = bar[4] + 5;
 } else {
 return ++x + bar();
 }
 }
 SL5net-Style
 int f(int x, int y, int z) {
 if (x < foo(y, z)) {
 qux = bar[4] + 5;
 } else {
 return ++x + bar();
 }    }
 Allman-Style
 if (x < foo(y, z))
 {
 qux = bar[4] + 5;
 }
 else
 {
 return ++x + bar();
 }
 */
 $arguments['indentStyle'] = 'free';
 }
 if(!@empty($arguments['renameSymbol'])) {
 $fArgs = '\([^)]*\)';
 $old_open = '(' . $fArgs . '\s*[^{;\n]*)\{[\s\n]';
 }
 else {
 # } else {
 $old_open = '([^\n{;]*)\{[^\w%$`]'; # problem this searchs in comments
 $old_open = '^([^{;]*?)\{[^\w%$`]'; #
 //        $old_open = '\{';
 $old_open = '^([^{;\n]*)\{[\s\n]';# todo: problem. dont finds:  } else {
 }
 
 $old_close = '^[ ]*\}?([^{};\n\r]*?)\}?[\s\n\r]';
 $old_close = '^[ ]*\}?([^{};\n\r]*)\}';
 $old_close = '(\n\s*)\}';
 //    $old_close = '^([^{};\n\r]*)\}[ ]*$';
 //    $old_close = '\}';
 //Send,{CtrlUp} {Blind}
 
 
 $new_open_default = '[ ';
 $new_close_default = ']';
 $new_open_default = '{ ';
 $new_close_default = '}';
 $charSpace = (isset($arguments['charSpace'])) ? $arguments['charSpace'] : " ";
 $newline = (isset($arguments['newline'])) ? $arguments['newline'] : "\r\n";
 $indentSize = (isset($arguments['indentSize'])) ? $arguments['indentSize'] : 3;
 
 
 $file_content = trim(preg_replace('/^\h+/ism', '', $file_content));
 # horizontal whitespace character class \h. http://stackoverflow.com/questions/3469080/match-whitespace-but-not-newlines-perl
 # Match whitespace but not newlines
 
 $getIndentStr = function ($indent, $char, $indentSize) {
 $multiplier = $indentSize * $indent;
 $indentStr = str_repeat($char, (($multiplier < 0) ? 0 : $multiplier));
 
 return $indentStr;
 };
 
 $indentStr = $getIndentStr(1, $charSpace, $indentSize);
 
 //    $indentStyle SL5net_small_v0.1
 $conf['noNewlineAtEnd'] = false;
 $conf['noNewlineAt_Start_beta']=false;
 if(strpos($arguments['indentStyle'],'SL5net_small+_NotRecommended') !== false )
 {
 $conf['noNewlineAtEnd'] = true;
 $conf['noNewlineAt_Start_beta']=true;
 }else {
 if(strpos($arguments['indentStyle'], 'SL5net_small') !== false) {
 $arguments['indentStyle'] = 'SL5net_small';
 }
 
 $conf['noNewlineAtEnd'] = ($arguments['indentStyle'] == 'SL5net_small') ? true : false;
 $conf['noNewlineAt_Start_beta'] = ($arguments['indentStyle'] == 'SL5net_small_v0.2') ? true : false;
 $conf['noNewlineAtStart'] = false;
 }
 if($conf['noNewlineAt_Start_beta'] || $conf['noNewlineAtStart']) {
 # todo: thats not performing. thats a global replace.
 $preg = '(\bif\s*\([^\n\r)]+\))\R';
 $file_content = preg_replace('/'.$preg.'/', "$1", $file_content); # \R matches \r and \n
 }
 
 
 
 if($conf['noNewlineAtStart']) {
 $file_content = preg_replace('/^\s*\}\s*else(\s+if\s*\([^\n\r]+\)\s*)?\s*\{+/smi', "} " . '' . "else $1 {", $file_content);
 } // dirty BugFix .. need temporary newline that script later works correct
 else {
 $file_content = preg_replace('/^\s*\}\s*else(\s+if\s*\([^\n\r]+\)\s*)?\s*\{+/smi', "} " . $newline . '' . "else $1 {", $file_content);
 } // dirty BugFix .. need temporary newline that script later works correct
 
 
 //    $file_content = preg_replace('/(\s*\bif\s*\([^\n\r)]+\)\s*)[\n\r]+([^{\s])/smi', "$1\n" . $newline . $indentStr . "$2", $file_content); // dirty BugFix
 $file_content = preg_replace_callback('/(\s*\bif\s*\([^\n\r)]+\)\s*)[\n\r]+([^{\s])/smi',
 function ($m) use ($newline, $indentStr, $arguments) {
 if(!isset($arguments['indentStyle'])) {
 die(':( $arguments[\'indentStyle\']');
 } # $arguments['indentStyle'] = 'free'
 
 /* if ( next )
 Check
 */
 //          if(preg_match('/\n$/',$m[1]) ) {
 //              return '*' . $m[1] . '#' . $indentStr . $m[2];
 //          }
 //          if(strpos($m[2], "\n") !== false) {
 //              return ':' . $m[1] . '#' . $indentStr . $m[2];
 //          }
 if(strpos($m[0], "\n") !== false) {
 return '' . $m[1] . '' . $indentStr . $m[2];
 //              return '\\' . $m[1] . '/' . $indentStr . $m[2];
 }
 
 return '-' . $m[1] . "_\n" . $newline . '7' . $indentStr . $m[2];
 //          return strtolower($treffer[0]);
 }
 ,
 $file_content); // dirty BugFix
 
 
 $file_content = preg_replace(
 '/(\s*\belse\s*)[\n\r]+([^{\s])/smi', "$1\n" . $indentStr . "$2", $file_content); // dirty BugFix
 
 
 //    $pattern = '([\r\n](If|#if)[a-z]+[ ]*[ ]*[^\n\r{]+)[ ]*[\r\n]+[ ]*(\w)';
 # IfWinNotExist,%filename% * SciTE4AutoHotkey
 //    return $file_content;
 $pattern = '([\r\n](if|#if)([a-z]+[ ]*,|\()[ ]*[^\n\r{]+)[ ]*[\r\n]+[ ]*(\w)';
 if($conf['noNewlineAtStart']) {
 $file_content = '' . preg_replace_callback('/' . $pattern . '/is',
 function ($m) use ($newline, $indentStr) {
 $i = 456;
 
 # "$1" . $newline . '8' . $indentStr . "$4"
 return $m[1] . $newline . '' . $indentStr . $m[4];
 }
 , $file_content);
 }
 else {
 $file_content = '' . preg_replace('/' . $pattern . '/is', "$1" . $newline . '' . $indentStr . "$4", $file_content);
 }
 
 $cf = new SL5_preg_contentFinder($file_content);
 $cf->setBeginEnd_RegEx($old_open, $old_close);
 $cf->setSearchMode('dontTouchThis');
 
 
 /*
 *             $cut = call_user_func($func['open'], $cut, $deepCount + 1, $callsCount, $C->foundPos_list[0], $C->content);
 
 */
 
 //    return $file_content;
 
 
 $actual = $cf->getContent_user_func_recursive(
 
 function ($cut, $deepCount, $callsCount, $posList0, $source1) use ($conf, $arguments, $new_open_default, $new_close_default, $charSpace, $newline, $indentSize, $getIndentStr) {
 if($cut['middle'] === false) return $cut;
 //          if($cut['middle'] === false || $cut['behind'] === false) {
 //              return false;
 //          }
 //}   else if(RegExMatch(c, ":" )) {
 
 //          $charSpace = '.';
 $indentStr = $getIndentStr(1, $charSpace, $indentSize);
 
 if(!isset($posList0['begin_end'])) $posList0['begin_end'] = strlen($source1);
 
 
 $start = '' . substr($source1, $posList0['begin_begin'], $posList0['begin_end'] - $posList0['begin_begin']) . '';
 $end = '' . ltrim(substr($source1, $posList0['end_begin'], $posList0['end_end'] - $posList0['end_begin'])) . '';
 
 if(@$arguments['A_ThisLabel'] == "Alt & Up" || @$arguments['A_ThisLabel'] == "Alt & Down"
 || !@empty($arguments['renameSymbol']) && !empty($arguments['renameSymbol_To'])
 ) {
 $markerXXXXstring = "xxxxxxxx" . "xxxxxxxx";
 //              $markerXXXXstring = "xxxxxxxxxxxxxxxx";
 $strposMarker = strpos($cut['middle'], $markerXXXXstring);
 if($strposMarker !== false) {
 
 if(@$arguments['A_ThisLabel'] == "Alt & Up" || @$arguments['A_ThisLabel'] == "Alt & Down") {
 if(@$arguments['A_ThisLabel'] == "Alt & Down") {
 
 preg_match_all('/\n/', substr($cut['middle'], $strposMarker + strlen($markerXXXXstring)), $matches);
 $command = 'Down';
 }
 else {
 preg_match_all('/\n/', substr($cut['middle'], 0, $strposMarker), $matches);
 $command = 'Up';
 }
 $linesAboveMarker = count($matches[0]) + 1;
 
 //                      $fileAddress = realpath('../../SL5_phpGeneratedRunOnChanged.ahk');
 //                      $fileAddress = realpath('p.txt');
 $fileAddress = 'SL5_phpGeneratedRunOnChanged.tmpl.ahk';
 $pathinfo = pathinfo($fileAddress);
 if(!file_exists($fileAddress)) {
 die("!file_exists($fileAddress) 15-07-06_14-26");
 }
 $contents = file_get_contents($fileAddress);
 if(!$contents) {
 die('!$contents 15-07-06_14-18 \n $contents=' . $contents . '$fileAddress=' . $fileAddress);
 }
 $ahkContent =
 '
 Suspend,on
 ; Send,^z
 ; Sleep,50
 Send,{' . $command . ' ' . $linesAboveMarker . '}
 Suspend,off
 ';
 $contents = preg_replace('/<body>.*<\/body>/ism', "<body>\n" . $ahkContent . "\n;</body>", $contents);
 //                      $fileAddressSaved = realpath('../../../../../' . $fileAddress . '.ahk');
 $fileAddressSaved = '../../../../../' . preg_replace('/\..*$/', '', $fileAddress) . '.ahk';
 echo nl2br("\n$fileAddressSaved=" . $fileAddressSaved);
 file_put_contents($fileAddressSaved, $contents);
 
 }
 
 # cut out markerString
 $cut['middle'] = preg_replace('/;\s*' . $markerXXXXstring . '/', '', $cut['middle']);
 
 if(!@empty($arguments['renameSymbol'])) {
 $start = preg_replace('/\b(' . $arguments['renameSymbol'] . ')\b/', $arguments['renameSymbol_To'], $start);
 $cut['middle'] = preg_replace('/\b(' . $arguments['renameSymbol'] . ')\b/', $arguments['renameSymbol_To'], $cut['middle']);
 }
 }
 
 }
 
 //          return $cut;
 
 //          $cut['middle'] = preg_replace("/\r/", "\n" . $indentStr , $cut['middle']); // <Remember this is without \r means buggy for
 if($conf['noNewlineAtEnd']) {
 $doNoNewlineAtEnd = preg_match("/\W[}\s]*\}\R*$/ms", $cut['middle'], $m);
 if($doNoNewlineAtEnd) {
 //               $cut['middle'] = implode($indentStr, preg_split("/(\r\n|\n|\r)/m", $cut['middle']));
 $cut['middle'] = rtrim($cut['middle']) . '';
 $i = 456;
 }
 //              $doNoNewlineAtEnd = preg_match("/}\s*}\s*$/m", $cut['middle'], $m);
 }
 //          $cut['middle'] = implode($newline . '' . $indentStr, preg_split("/(\r\n|\n|\r)/m", $cut['middle']));
 $cut['middle'] = implode($newline . '' . $indentStr, preg_split("/(\R)/m", $cut['middle']));
 
 //          return $cut;
 
 if($conf['noNewlineAtStart']) {
 $preg = '\bif\s*\([^\n\r)]+\)';
 if(preg_match("/$preg/ims", $start, $m)) {
 $start = preg_replace("/\R/", '', $start); # \R matches \r and \n
 $cut['middle'] = ltrim($cut['middle']);
 }
 //                 $file_content = preg_replace_callback('/(\s*\bif\s*\([^\n\r)]+\)\s*)[\n\r]+([^{\s])/smi',
 //                   function ($m) use ($newline, $indentStr, $arguments) {
 
 $i1 = 45;
 $cut['middle'] = '' . trim($start) . '' . '' .
 $indentStr . '' . trim($cut['middle']) . '';
 $i1 = 45;
 }
 else {
 $cut['middle'] = '' . rtrim($start) . '' . $newline . '' .
 $indentStr . '' . trim($cut['middle']) . '';
 }
 //          return $cut;
 //          $cut['middle'] = '' . rtrim($start) . $n . $indentStr
 //            . trim(preg_replace('/\n/', "\n" . $indentStr, $cut['middle']));
 //          $charSpace = '.';
 
 
 //          $indentStr = $getIndentStr(0, $charSpace, $indentSize);
 if($conf['noNewlineAtEnd'] && $doNoNewlineAtEnd) {
 //              if($doNoNewlineAtEnd) {
 $cut['middle'] .= $end . '' . $cut['behind'] . '';
 //              }
 }
 else {
 $cut['middle'] .= $newline . '' . $end . '' . $cut['behind'] . '';
 }
 
 //          die('<pre>'.implode('',$cut).$end.'</pre>');
 
 
 return $cut;
 });
 //return $actual;
 
 if($conf['noNewlineAtEnd']) {
 $actual = preg_replace_callback('/(\})[\s\n\r]*(else(\s+if\s*\([^\n\r]+\)\s*)?\s*\{+)/smi',
 function ($m) {
 //      "$1$2"
 $i = 156;
 
 return $m[1] . '' . $m[2] . '';
 }
 , $actual);
 } // dirty BugFix
 # ([^\n\r]+\)
 else {
 $actual = preg_replace('/(\})[\s\n\r]*(else(\s+if\s*\([^\n\r]+\)\s*)?\s*\{+)/smi', "$1$2", $actual);
 } // dirty BugFix
 # ([^\n\r]+\)
 
 //    $pattern = '/^(\w+:)(\R(?:\N*\R)*?)(return)$/mis';
 //    $pattern = '/^(\w+:)(\h*\n)(?:.*\n)*?(return)/m';
 $label = '^[a-z][\w\d_]*:';
 $hotkey = '^.+::\h*';
 $pattern = '/' . "($label|$hotkey)(\h*\R)((?:.*\R)*?)(return\b)" . '/im';
 preg_match_all($pattern, $actual, $matches, PREG_OFFSET_CAPTURE);
 $labelsAr = $matches[1];
 //    $contentAr = preg_replace('/\n/ism', "\n" . $indentStr, $matches[3]);
 $contentAr = $matches[3];
 $returnAr = $matches[4];
 for($k = count($labelsAr); $k--; $k >= 0) {
 $new = $labelsAr[$k][0]
 . $newline . '' . $indentStr
 . rtrim(preg_replace('/\R/ism', $newline . ''
 . "" . $indentStr, $contentAr[$k][0]))
 . $newline . '' . trim($returnAr[$k][0]);
 $actual = substr($actual, 0, $labelsAr[$k][1])
 . $new
 . substr($actual, $returnAr[$k][1] + strlen($returnAr[$k][0]));
 }
 
 return $actual;
 }
 
 //test::
 //sdfsdf
 //return
 function arguments($argv) {
 $_ARG = array();
 foreach($argv as $arg) {
 if(preg_match_all('/--([^=]+)="?([^"]*)"?/', $arg, $reg)) {
 foreach($reg[1] as $k => $v) {
 $var = $reg[2][$k];
 $_ARG[$v] = $var;
 }
 
 }
 elseif(preg_match_all('/-([^=]+)="?([^"]*)"?/', $arg, $reg)) {
 $_ARG[$reg[1]] = 'true';
 }
 
 }
 
 return $_ARG;
 }
 
 |