Example #1
0
 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();
         }
     }
 }
Example #2
0
 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);
 }
Example #4
0
 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());
 }
Example #5
0
 /**
  * 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();
 }
Example #7
0
 /**
  * @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());
             }
         }
     }
 }
Example #8
0
 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);
     }
 }
Example #9
0
 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);
     }
 }