function evt__lista_archivos__abrir($caso_sel) { foreach (toba_test_lista_casos::get_casos() as $caso) { if ($caso['id'] == $caso_sel['id']) { $archivo = new toba_archivo_php($caso['archivo']); $archivo->abrir(); } } }
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); }
protected function get_codigo_php() { $existente = null; if (!$this->pisar_archivo && file_exists($this->archivo_absoluto())) { $existente = toba_archivo_php::codigo_sacar_tags_php(file_get_contents($this->archivo_absoluto())); } return $this->molde_php->get_codigo($existente); }
function test_generacion_clase_archivo_con_codigo_previo() { $this->hijo = "hijo_codigo_previo"; $this->padre = "padre_hijo_codigo_previo"; $contenido = "<?php\n\t/*\n\t* \n\t*/\n\tclass clase_previa\n\t{\n\t\tfunction esta_es_una_funcion_previa()\n\t\t{\n\t\t\t//Esto trata de engañar al parser del archivo\n\t\t\t?><?php\n\t\t}\n\t}\n\n?>"; //Se crea el archivo del hijo $this->crear_archivo_hijo($contenido); //Se genera la subclase $archivo = new toba_archivo_php($this->path_hijo()); $padre = new toba_archivo_php($this->path_padre()); $clase = new toba_clase_php($this->hijo, $archivo, $this->padre, $this->path_padre()); $clase->set_meta_clase(new info_componente(array())); $clase->generar($this->generar_todo()); //Se incluyen y se verifica que funcionan correctamente $padre->incluir(); $archivo->incluir(); $clase = new ReflectionClass($this->hijo); $this->AssertEqual($this->hijo, $clase->getName()); }
/** * 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); }
function evt__abrir() { $archivo_php = new toba_archivo_php($this->get_path_archivo()); if (!$archivo_php->existe()) { throw new toba_error('Se solicito la apertura de un archivo inexistente (\'' . $archivo_php->nombre() . '\').'); } $archivo_php->abrir(); }
/** * @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()); } } } }
function ajax__existe_metodo_dt($dt, toba_ajax_respuesta $respuesta) { $subclase = toba_info_editores::get_subclase_componente($dt); if (isset($subclase) && !empty($subclase)) { $archivo = toba::instancia()->get_path_proyecto(toba_contexto_info::get_proyecto()) . '/php/' . $subclase['subclase_archivo']; $php = new toba_archivo_php($archivo); if ($php->existe() && $php->contiene_metodo('get_descripciones')) { $sql = $this->get_sql_carga_tabla($dt); $respuesta->set($sql); } else { $respuesta->set(false); } } else { $respuesta->set(false); } }
function generar_archivos_consultas() { foreach ($this->archivos_consultas as $path_relativo => $clase) { //Control para que no hayan metodos duplicados, se hace aca //porque sino se pierde el acceso al editor. El control se deberia hacer en la carga misma if (count($clase->get_indice_metodos_php()) != count(array_unique($clase->get_indice_metodos_php()))) { throw new toba_error('Existen nombres de metodos duplicados!'); } $path = $this->directorio_absoluto() . $path_relativo; $existente = null; if (file_exists($path) && is_file($path)) { $existente = toba_archivo_php::codigo_sacar_tags_php(file_get_contents($path)); } $php = $clase->generar_codigo($existente); toba_manejador_archivos::crear_archivo_con_datos($path, "<?php\n" . $php . "\n?>"); $this->registrar_elemento_creado('Archivo consultas', $this->get_proyecto(), $this->id_molde_proyecto); } }