function generar_layout() { //El archivo original esta en formato Windows CR/LF $nombre = toba::proyecto()->get_path_php() . '/varios/line_endings/archivo_windows.php'; //Verifico que el archivo original tiene el CR assert(strrchr(file_get_contents($nombre), 13) !== false); $archivo = new toba_archivo_php($nombre); $archivo->edicion_inicio(); $codigo_actual = $archivo->contenido(); //Verifico que el codigo original no tiene CR al ser cargado en toba_archivo_php assert(strrchr($codigo_actual, 13) === false); $metodo = new toba_codigo_metodo_php('extender_objeto_js'); $metodo->set_contenido("alert('soy un alert nuevo'); \n alert(4);"); $nuevo_codigo = $archivo->codigo_agregar_metodo($codigo_actual, $metodo->get_codigo()); $archivo->insertar($nuevo_codigo); $archivo->insertar_al_final("function cargo_algo(\$id) \n { echo 'Ingrese \$id'; \n}"); //Verifico que el nuevo codigo que obtuve tampoco tiene CR antes de ser grabado assert(strrchr($archivo->contenido(), 13) === false); //Aca grabe el archivo $archivo->edicion_fin(); assert(strrchr(file_get_contents($nombre), 13) === false); assert(strrchr(file_get_contents($nombre), PHP_EOL) !== false); echo 'El test parece que funco!, revirtiendo archivo....'; $tsvn = new toba_svn(); $tsvn->revert($nombre); }
/** * Permite modificar la forma en que se grafica la pantalla, por defecto un componente sobre el otro */ function generar_layout() { $nombre = toba::proyecto()->get_path_php() . '/varios/line_endings/archivo_linux.php'; //Verifico que no tiene el CHR 13 de movida assert(strrchr(file_get_contents($nombre), 13) === false); $archivo = new toba_archivo_php($nombre); $archivo->edicion_inicio(); $codigo_actual = $archivo->contenido(); assert(strrchr($codigo_actual, 13) === false); $metodo = new toba_codigo_metodo_php('extender_objeto_js'); $metodo->set_contenido("echo \"alert('soy un alert nuevo');" . "\n" . "alert(4);\""); $nuevo_codigo = $archivo->codigo_agregar_metodo($codigo_actual, $metodo->get_codigo()); $archivo->insertar(toba_archivo_php::codigo_sacar_tags_php($nuevo_codigo)); //Verifico que el nuevo codigo que obtuve tampoco tiene CR antes de ser grabado assert(strrchr($archivo->contenido(), 13) === false); //Aca grabe el archivo $archivo->edicion_fin(); assert(strrchr(file_get_contents($nombre), 13) === false); assert(strrchr(file_get_contents($nombre), PHP_EOL) !== false); $archivo->mostrar(); echo 'El test parece que funco!, revirtiendo archivo....'; $tsvn = new toba_svn(); $tsvn->revert($nombre); }
/** * @todo: Falta implementar el reemplazo */ function generar_codigo_js($codigo_existente = '') { $nombre_metodo_php = 'extender_objeto_js'; $javascript = ''; foreach ($this->elementos_js as $elemento) { if ($javascript) { $javascript .= "\n"; } $javascript .= $elemento->get_codigo(); } if ($javascript) { if (!toba_archivo_php::codigo_tiene_metodo($codigo_existente, $nombre_metodo_php)) { //--Crea el metodo php $separador = new toba_codigo_separador_php('JAVASCRIPT', null, 'grande'); $separador->identar(1); $php = 'echo "' . "\n"; $php .= $javascript; $php .= '";'; $metodo = new toba_codigo_metodo_php('extender_objeto_js'); $metodo->set_contenido($php); $metodo->identar(1); $codigo = $separador->get_codigo() . "\n" . $metodo->get_codigo(); $this->codigo_php = toba_archivo_php::codigo_agregar_metodo($this->codigo_php, $codigo); } else { //--Agrega al metodo existente $metodo = new toba_codigo_metodo_php('extender_objeto_js'); $codigo_actual = toba_archivo_php::codigo_get_metodo($this->codigo_php, $nombre_metodo_php); //Busca el cerrado del string de javascript $pos = strrpos($codigo_actual, '";'); if ($pos !== false) { $php = toba_archivo_php::codigo_quitar_identacion(substr($codigo_actual, 0, $pos), 2); $php .= $javascript; $php .= toba_archivo_php::codigo_quitar_identacion(substr($codigo_actual, $pos), 2); $metodo->set_contenido($php); $metodo->identar(1); $this->codigo_php = toba_archivo_php::reemplazar_metodo($this->codigo_php, $nombre_metodo_php, $metodo->get_codigo()); } } } }