4.4 KiB
language = es
title_i18n = python_mapper_title_manual_technitian
title_text = Técnico - Manual - PythonMapper
Manual tećnico
El sistema se basa únicamente en una librería Python la cual ha de ser ejecutada tras establecer la configuración del o los proyectos que queramos mapear. Una vez está ejecutado con dicha configuración, ésta creará un objeto PythonMapper.Project para gestionar los proyectos individualmente. El hilo de procesos que gestiona dicho proyecto es único y colgarán de éste un sistema de eventos similares a los Intervalos de JavaScript, el cual gestionará tiempos de espera, de carga y procesamiento en monohilo para evitar un consumo de recursos excesivo y permitir la convivencia de dicho proceso en entornos con más procesos dentro del ecosistema Software donde se aloje.
La configuración que se extrae para gestionar los valores de los objetos PythonMapper.Project serán sacados principalmente del diccionario dado para cada proyecto individualmente, y se complementará a partir de la clase estática PythonMapper.Settings, la cual contiene la configuración por defecto para todo el proyecto.
Por otro lado, tenemos un sistema de gestión de memoria anidada mediante la clase objeto PythonMapper.SearchData, contiene los datos necesarios para la gestión de cada una de las librerías del proyecto qeu se esté trabajando, ordenando sus recursos por niveles de dependencias y de contenidos.
Finalmente, el proyecto hace uso de la clase objeto PythonMapper.ClassData que contiene toda la información de cada uno de los niveles de clase de una librería, siendo el nivel 0 el Root de la propia librería y los siguientes niveles las clases, incluyendo las clases anidadas. También contiene los elementos estáticos, variables de objeto y métodos. Cada una de las clases anidadas estará compuesta por otro objeto PythonMapper.ClassData anidado sobre el anterior para establecer orden de dependencias.
Para poder gestionar de una forma óptima dicho contenido, todo se moverá sobre un objeto de la clase PythonMapper, el cual cargarálos proyectos y los asignará a objetos de tipo PythonMapper.Project gestionados a partir de un único hilo que funciona como un Intervalo JavaScript para gestionar los tiempos mediante simulaciones de Wait con tiempos no definidos para su trabajo tanto en la configuración como con la capacidad de poderse cerrar prácticamente instáneamente la aplicación, con una gestión de cola o de semáforo sobre un único hilo rápido.
Para hacer más efectivo el proceso, éste cacheará todos los archivos que ha de mapear, donde detectará si cada archivo fue alterado o no, donde si lo fue, éste se procesará y creará dará orden a actualizar el archivo de mapeado una vez termine de procesar todos los archivos.
El proceso de los archivos, para simplificar los patrones regulares y las estructuras de búsqueda, se formatearán mediante claves que identifican las anidaciones, mediante el método estático PythonMapper.Project.unclean_data. Tras dicho paso se Matchearán los patrones que identifican las clases, las variables tanto estáticas como de objeto, y los métodos, y se ignorarán los elementos privados y/o repetidos, quedándose sólo los elementos ocultos o públicos en su primera aparición. La gestión de los Matcheos se hace a partir de una estructura While True que gestiona el contenido hasta que éste sea finalizado.
Todos estos resultados se almacenan en la estructura anidada de tipo PythonMapper.ClassData para su posterior gestión. Cada vez que se detecta un fragmento a almacenar en dicha estructura, éste se le limpiará el formato mediante el método estático PythonMapper.Project.clean_code, y desprovisto de las tabulaciones iniciales para ser establecidas limpiamente después, listo para ser integrado dentro del archivo Mapper. Los niveles de anidamiento de la estructura de tipo PythonMapper.ClassData determinarán la tabulación.
El orden de los elementos dentro del archivo mapeado será el dado por los archivos, aunque habrá un orden establecido para los elementos integrados en una clase donde se establece la definición de nombre de clase, luego los elementos estáticos, luego el constructor con sus correspondientes variables objeto si éste los tuviese, y finalmente los métodos del mismo, incluyendo sus modificadores.