function run_tests() { $pseudo_code = "loop 3 sayhello sayhello"; $key = "loop n code"; $value = "for (\$i=1;\$i<=n;\$i++) { code }"; $test_map = map_translation($pseudo_code, $key, $value); var_dump($test_map); /*$pseudo_code="msg hello"; $key="msg trailing"; $value="privmsg(trailing);"; $test_map=map_translation($pseudo_code,$key,$value); var_dump($test_map);*/ }
function map_recurse(&$translations, $pseudo_code, &$map) { if (isset($translations[$pseudo_code]) == True) { $pseudo_code = $translations[$pseudo_code]; } foreach ($translations as $translation_key => $translation_value) { $sub_map = map_translation($pseudo_code, $translation_key, $translation_value); if ($sub_map === False) { continue; } foreach ($sub_map as $map_key => $map_value) { if ($map_value == "") { continue; } map_recurse($translations, $map_value, $sub_map); } array_unshift($sub_map, $translation_key, $translation_value); $map[$map_key] = $sub_map; } }