PROJECTS STRUCTURE AND PROCESSING ================================= From Graphic User Interface point of veiw, PROJECT has structure: [SCHEMA-PROJECT-UNIT][SOURCE-PROJECT-UNIT] PROJECT-UNIT is a file, or folder, or texts given to Compy for conversion. File AppFolder\preferences.txt keeps last used PROJECT-file-name.prj PROJECT-file-name.prj keeps name of schema-project-unit and source-project-unit. From Compi's point of view, each unit is Compi's single project, and Compi treats each unit "equally.", except that first round of first unit is considered as belonging to schema, and no events .bop, .bof, .bot, .eop, .eof, are fired. Each unit submitted to Compi in order: schema - first (if any); then source (if any). WHERE DISK-TO-DISK-PROJECT RESULT WILL BE STORED ------------------------------------------------ Compi creates folder RESULT_FILES under parent of SOURCE-PROJECT-UNIT - if SOURCE-PROJECT-UNIT is provied, of SCHEMA-PROJECT-UNIT - if SOURCE-PROJECT-UNIT is not provided. Command ..skip_project skips autoparsing tree of folders and files in source: no .bof, .eof, .bot, .eot will be fired; does not disable .bop and .eop. WHERE SCHEMA BEGINS AND ENDS ============================ By default, first-two-characters-string "\\" met by Compi denotes the beginning of schema_text and everything before \\ will be ignored. Slashes \\ are also ignored. Schema ends naturally at the end of text, or by |end macro, or by | macro; If in nest *,-schema, then macro "|" fires events .bop, .bof (if source is a folder where schema is found,) .bot, permits .eop, .eof (if applicable,) In any case, starts processing text placed after "|" in schema as this text would be usual source text; Using "|" allows put both schema and source in one file. PROJECT-UNIT ============ Processing ---------- When file (text) of PROJECT-UNIT is finished, or terminated due schema-syntax exception, then global queue is reset to empty all open streams are closed indent rebuilt; (margin for next text file) variables ARE NOT RESET AND KEEP THEIR VALUES (This may be useful to collect data common for all files.) global nest IS NOT RESET This settings will be used to start the next file in PROJECT-UNIT If Compi was called from GUI\menu\option\Go, then finished file will be automatically saved if directive to save files is not disabled. The new file parsing starts with position 1 and with output text reset to empty. Programmer can disable automatic result saving using command: ..save_file_mode.false File Tree Structure ------------------- Source for project-unit can be text from GUI screen, file, of folder. In second two cases, source unit parent folder is called "umbrella" and project = umbrella\source - project-unit umbrella\[local_path\]file - source_file_abs_path umbrella\shield\[local_path\]rfile - converted_file_abs_path shield = "RESULT_FILES" following reserved variables p_xxxx provide access to file system name xxxx: read-only: p_source - source (basic name with possible extension) p_local_path p_umbrella - absolute path to umbrella p_shield p_basic p_extension p_file = p_basic [.p_extension] p_rfile = p_rbasic [.p_rextension] p_parent = parent of file p_rparent = parent of rfile p_processed_files = list of processed files with lines: [local_path\]file LF refreshed if project restarted; read/write: p_rbasic p_rextension if project is <file>, then local_path is empty if project is a <folder>, then local_path initial value is <folder> and may grow while processing <folder>-tree deeper rfile = file or may be changed during conversion; usually, extension can be changed; folder for read and include is schema's umbrella forder for save is umbrella\shield[\local_path\] programmer can rely on that files parsed in folder first, and then if there are subfolders in this folder, then conversion enters this folders.