Adding "a" or "an" before a word (in English)

We recently received the following question from a user and wanted to share our answer with the rest of the ClauseBase Community:

Is there a possibility to automatically insert the correct version of the undefined article (“a” or “an”) in English, if that word is not known in advance?

Answer:

ClauseBase’s regular conjugation mechanism automatically switches “a” to “an” depending on the defined term (conceptlabel) that follows it. For example, if you have a concept (defined term) “contract”, then the output of “#-contract” would be “a contract” or “an agreement”, depending on the conceptlabel that was chosen.

However, in your case I suspect that this conjugation mechanism will not be useful, because you want the “a”/”an” to switch depending on the content of some text-based datafield that gets filled in by the end-user. For such situations, However, you can use a special function called @a-or-an.

For example, if you use

.... @a-or-an(#issuer^company-domicile) company ...

then the contents of the datafield #issuer^company-domicile will be preceded by “a” or “an”, depending on the content. E.g., if the end-user would happen to have entered “Illinois”, then the output would be “an Illinois company”, while if he/she would have entered “New York” it would be “a New York company”. The algorithm is actually quite clever and accounts for many different exceptions.