@ackomb: If I came across as critical or negative then I am sorry. I really like it when people try and I am glad to help. We both end up learning something.
Also, the posts are already moved to a new thread.

It is in Library Management now. The reason: I suspect that we might go on at length about stuff that is only peripherally related to action chains. It also makes the info easier to find.
Given your Clexa etc example I suspect that the for loop version will be easiest for you to maintain over time. It is more clear what is being changed to what. It can be slightly improved to better handle several variants going to the same result, which might be useful as the list of conditions gets longer. Example:
Code:
program:
sample_input = 'Bus, Car, Starship, Ferry, Ferry Terminal, Alien Spacecraft';
output = '';
for item in sample_input:
if '^bus$' in item then ni = 'Public Transport'
elif '^ferry|starship$'in item then ni = 'Vehicle'
else ni = item
fi;
output = output & ',' & ni
rof;
output = list_remove_duplicates(output, ',')
The template 'in' operator checks if a regex matches the value. This permits checking in one expression for several values that map to a single result.
On the other hand I can imagine using excel to generate the template replacement expressions, which could make the '==' form better.
I have in the past considered writing a 'list_map() function that would take a series of pairs: (list_of_terms_to_change, result_value). Example:
Code:
map(src_list, separator,
'ferry, boat, hydroplane', 'watercraft',
'car, auto, truck', 'vehicle',
...)
I will think about that, working out whether it adds enough value to be worth the effort.
EDIT: Another option is to supply a template interface to the existing tag mapper (Preferences / Adding books / Adding actions / Rules to filter tags). The function would take a series of lists that each define a mapper rule, then apply those rules. The benefit here is that the code exists and is maintained. The downside is that rules are a bit more complicated to express.