A filter is a combination of
When a a filter is applied, its expression is evaluated against an unit. The expression may refer to one or more properties of the unit. If the expression matches the properties of the unit, an operation will be executed. Depending on the context, the operation may be to select the unit or to rename it by applying the appropriate template from the filter.
There are no 'sanity checks' on the filter conditions, so it's entirely possible to create an expression that will never or always match.Example of a filter expression:
form(div) & size(1,5) & min(LARM,1) & none(ARM)
This expression would match any unit that:
This expression would match any unit that:
Condition | Meaning |
form(f) | Formation is f |
size(n) | Unit consists of exactly n elements. |
size(m,n) | Unit consists of m to n elements. n is ignored if it is 0. |
min(t,n) | Unit consists of at least n elements of the given type(s). |
max(t,n) | Unit consists of at most n elements of the given type(s). |
one(t) | Unit contains exactly one element of the given types(s). |
none(t) | Unit contains no elements of the given type(s). |
only(t) | Unit contains only elements of the given type(s). |
more(x,y) | Unit contains more elements of type x than y (1). |
moreeq(x,y) | Unit contains more or an equal number of elements of type x than/as y. |
most(t) | Most of the elements of the unit are of the given type(s). |
mosteq(t) | Most or an equal number of elements of the unit are of the given type. |
least(t) | Least of the elements of the unit are of the given type(s). |
leasteq(t) | Least or the an equal number of elements of the unit are of the given type(s). |
Where:
For all but the form condition there exist an equivalent conditions that do not target elements but units. These conditions can be used in higher level filters, i. e. they match to HQs which have the required subordinate units assigned. The conditions that match to units always ends on an 'f', e.g. sizef, maxf, onlyf.
Expressions can also contain operators for joining the conditions together:
Operator | Meaning |
& | Boolean "AND" |
| | Boolean "OR" |
! | Boolean "NOT" |
() | Evaluation of expressions inside parentheses takes precedence |
A filter set is simply a collection of filters. The ART evaluates the filters in the order in which they appear in the filter set. If a filter is a match, no other filters will be evaluated against the given unit. This means that if you have two filters, a more general one and a more specialized one, you must place the more specialized filter above the general one. Otherwise, the general filter will always match before the specialized filter is evaluated which that the latter would never be applied.
Similarily, higher level filters need to be placed after any lower level filters. This is necessary, because the lower level filters are used to classify units and assign the respective unique ID to them. The higher level filters can then refer to the unique IDs.
If you select an unit and use the Auto rename action, the ART will look for a matching filter in the loaded filter set. If it finds one for which an applicable template has been defined, ART will rename the unit according to this template. A template is an arbitrary string and can contain placeholders. It must not have more than one generator placeholder. The generator placeholder is processed only after all reference placeholders have been resolved. The number of reference placeholders is unlimited. All placeholders start and end with the percent character (%).
The smart generator placeholders are: Don't forget to enclose the placeholders in percent characters (e.g. %a%)!
E.g. "%o% Corps" would be expanded to "4th Corps".
When using smart generator placeholders, ART will (re)number units starting from the first numeral (1/1st/A/I). It will skip unit names that already exist and try to fill any gaps in the enumeration.
A hypotetical OOB consists of the following units:
Let us assume that the divisions match a filter with the template "%a%. Inf Division" and the corps a filter with the template "%o% Corps". If you use the auto renaming tool on all units, you will get the following results:
Reference placeholders are replaced with certain properties of the unit being renamed, its superior HQ or its theatre HQ. All reference placeholders are resolved before any generator placeholder is evaluated.
The reference placeholders are:
Placeholder | Replacement |
ta | The complete name of the parent theatre |
tex | Any part of the parent theatre's name enclosed by x. x is optional
and denotes the character enclosing the nickname (default: " ). |
twx | The word at the position indicated by x in the parent theatre's name (x: single digit)", |
tcx?y:z | If the parent theatre's name contains x, replace with y else with z (x,y,z: strings) |
sa, sex, swx, scx?y:z | As above, but reference the parent HQ's name instead. |
f | The formation type of the unit |
p | The name of the province in which the unit currently resides. |
hx | Preserve the unit's nickname and re-insert it at the position of
this placeholder. x is optional and denotes the character enclosing the
nickname. Defaults to single quote (') if not given. |
The placeholders referencing the parent unit's or parent theatre's name also accept an extra option to keep any trailing periods from the referenced string. For this, insert "!," directly before the closing '%'.
With multi-country templates, you only need to define a filter once while still be able to assign country-specific unit names when using the auto renaming actions. This also comes in handy if the OOB contains expeditionary units.
OOB (current names): HQ 'East' + 1st Reserve Corps + Infantry Division
Template applied to the division: %a. Inf Division %s2 %t'
Result: 1. Inf Division Reserve East
OOB (current names): HQ East + 2. Corps + Infantry Division
Template applied to the division: %s1%a. Inf Division %t2
Result: 2.1. Inf Division East
OOB: 1 army + 1 corps + 2 divisions
Template applied to all: %o %f
Result: 1st Army, 1st Corps, 1st Division, 2nd Division
Some unit's names may include nicknames e.g. "37th
'Buckeye' NG Division". The $h'% placeholder aims at preserving these nicknames
by (re-)inserting them at the position of the placeholder after the other
renaming steps are finished.
Let's say our filter expression matches INF divisions and is associated with the
template:
$o%. Inf. Div. %h'$
The single quote ' tells ART which character to expect around nicknames. The
placeholder marks the position where the nickname should be (re-)inserted.
Our OOB contains a few INF divisions:
1. Infanterie
'Brandenburger' Division
9. Infanterie Regiment
Applying the template above yields:
1. Inf. Div.
2. Inf. Div. 'Brandenburg'
3. Inf. Div. 'Vorwaerts'
4. Inf. Div.
Each template is associated with a country. Multiple templates, each for a different country, can be assigned to the same filter. For example, [GER] tells ART to use the template when renaming german units. If no country specific template is found, the template tagged with [***] will be used. If neither a matching country specific template nor a generic template can be found, the filter has no effect when renaming units.