@@ -0,0 +1,3189 @@
+package innovimax.mixthem.arguments;%0A%0Aimport java.util.EnumSet;%0A%0A/**%0A* %3Cp%3EThis is a detailed enumeration of rules used to mix files.%3C/p%3E%0A* %3Cp%3ESome rules may not be implemented yet.%3C.p%3E%0A* %3Cp%3E(Also used to print usage.)%3C/p%3E%0A* @author Innovimax%0A* @version 1.0%0A*/%0Apublic enum Rule %7B %0A    _1(              %221%22,               %221%22,               %22will output file1%22, true, EnumSet.noneOf(RuleParam.class)),%0A    _2(              %222%22,               %222%22,               %22will output file2%22, true, EnumSet.noneOf(RuleParam.class)),%0A    _ADD(            %22+%22,               %22add%22,             %22will output file1+file2%22, true, EnumSet.noneOf(RuleParam.class)),%0A    _ALT_LINE(       %22alt-line%22,        %22alt-line%22,        %22will output one line of each starting with first line of file1%22, true, EnumSet.noneOf(RuleParam.class)),%0A    _ALT_CHAR(       %22alt-char%22,        %22alt-char%22,        %22will output one char of each starting with first char of file1%22, true, EnumSet.noneOf(RuleParam.class)),%0A    _RANDOM_ALT_LINE(%22random-alt-line%22, %22random-alt-line%22, %22will output one line of each code randomly based on a seed for reproducability%22, false, EnumSet.of(RuleParam._SEED)),%0A    _JOIN(           %22join%22,            %22join%22,            %22will output merging of lines that have common occurrence%22, false, EnumSet.of(RuleParam._COL1, RuleParam._COL2));%0A%0A    private final String name, extension, description;%0A    private final boolean implemented;%0A    private final EnumSet%3CRuleParam%3E params;%0A%0A    private Rule(String name, String extension, String description, boolean implemented, EnumSet%3CRuleParam%3E params) %7B%0A        this.name = name;%0A        this.extension = extension;%0A        this.description = description;%0A        this.implemented = implemented;%0A        this.params = params;%0A    %7D%0A%0A    /**%0A    * Returns true if the rule is currently implemented.%0A    * @return True if the rule is currently implemented%0A    */%0A    public boolean isImplemented() %7B%0A        return this.implemented;%0A    %7D%0A%0A    /**%0A    * Returns the name of this rule on command line.%0A    * @return The name of the rule on command line%0A    */%0A    public String getName() %7B%0A        return this.name;%0A    %7D%0A%0A    /**%0A    * Returns the file extension used for outputting.%0A    * @return The file extension for the rule%0A    */ %0A    public String getExtension() %7B%0A        return this.extension;%0A    %7D%0A%0A    /**%0A    * Returns the description of this rule.%0A    * @return The description of the rule%0A    */ %0A    public String getDescription() %7B%0A        return this.description;%0A    %7D%0A%0A    /**%0A    * Returns an iterator over the additional parameters in this rule.%0A    * @param name The name of the rule in command line%0A    * @return An iterator over the additional parameters in this rule%0A    */ %0A    public Iterable%3CRuleParam%3E getParams() %7B%0A        return this.params;%0A    %7D%0A%0A    /**%0A    * Finds the Rule object correponding to a name%0A    * @param name The name of the rule in command line%0A    * @return The %7B@link Rule%7D object%0A    */    %0A    public static Rule findByName(String name) %7B%0A        for(Rule rule : values())%7B%0A            if (rule.getName().equals(name)) %7B%0A                return rule;%0A            %7D%0A        %7D%0A        return null;%0A    %7D%0A%0A%7D%0A

Relocate Rule.java