!config
# Arara, the cool TeX automation tool
# Copyright (c) 2023, Island of TeX
# All rights reserved.
#
# This rule is part of arara.
identifier: detex
name: DeTeX
authors:
- Island of TeX
commands:
- name: The DeTeX program
 command: >
   @{
       c = getCommand('detex', references, mode, follow, math, spaces,
                      words, environments, reference.fileName);
       if (output.isEmpty()) {
         return c;
       }
       else {
           p = unsafelyExecuteSystemCommand(c);
           if (p.first == 0) {
               return writeToFile(toFile(output[0]), p.second, false);
           }
           else {
               return false;
           }
       }
   }
arguments:
- identifier: references
 flag: >
   @{
       return isTrue(parameters.references, '-c');
   }
- identifier: mode
 flag: >
   @{
       modes = [ 'latex' : '-l', 'tex' : '-t' ];
       if (modes.keySet().contains(parameters.mode)) {
           return modes.get(parameters.mode);
       }
       else {
           throwError('I was expecting either the TeX or LaTeX mode.');
       }
   }
- identifier: follow
 flag: >
   @{
       return isFalse(parameters.follow, '-n');
   }
- identifier: math
 flag: >
   @{
       return isFalse(parameters.math, '-r');
   }
- identifier: spaces
 flag: >
   @{
       return isTrue(parameters.spaces, '-s');
   }
- identifier: words
 flag: >
   @{
       return isTrue(parameters.words, '-w');
   }
- identifier: environments
 flag: >
   @{
       if (!isList(parameters.environments)) {
           throwError('I was expecting a list of environments.');
       }
       else {
           return [ '-e', String.join(',', parameters.environments) ];
       }
   }
- identifier: output
 flag: >
   @{
       return parameters.output;
   }