====== Flowchart Modules ====== The flowchart modules pass messages to each other, rather than images. Each message carries a directory (folder) name and a file name. This page lists what each module does. For how they work together, see [[intermediate_level:flowcharts:operation_of_flowchart_modules|Operation of Flowchart Modules]]. ^ Module ^ What it does ^ Argument ^ | start | Begins the flowchart. Passes the starting folder, with a blank file name, to the next module | directory | | ls | Begins a loop. Lists the files in the current folder that match its filter, and passes one message for each | filter | | rpt | Ends a loop that began with ls. Counts the loop down, and waits until it has finished before passing a message on | | | exec | Runs the Star attached to it, filling in its dynamic variables. See [[intermediate_level:flowcharts:arguments_for_exec|Arguments for "exec"]] | one entry per dynamic variable | | cd | Changes the folder. **child** passes "folder/file" as the new folder; **parent** passes the parent folder. The file name becomes blank | destination | | mkdir | Creates a folder, as given by its destination. If the folder already exists, nothing is done. See [[intermediate_level:flowcharts:compound_arguments|Compound Arguments]] | destination | | pause | Waits a number of seconds before passing the message on. Decimals are allowed; the default is 0, no delay | delay | | end | Ends the flowchart. It receives the "completed" messages from the other modules, so that they can finish. Every flowchart must end with it | | ===== ls filters ===== The filter cannot be empty. It can contain: * ''*'', which matches any number of characters. For example, ''*MB*IR*tif'' matches any name that contains MB, then IR, and ends with tif. * Characters in square brackets, which match any one of those characters in that position. For example, ''*MB5[359]*'' matches names that contain MB53, MB55 or MB59. ===== Conditional modules (Advanced level) ===== At the Advanced level, three more modules let a flowchart run a job only when a file exists, or only when it does not: * **if** tests whether the file exists in the current folder, and sends a "yes" or "no" message. * **yes**, placed after if, lets exec run the job only if the file exists. * **no**, placed after if, lets exec run the job only if the file does not exist.