; The Statement, Receipt, and Invoice tags' values should always a be a
; relative path names. Note that we "check", but do not "assert" that the
; file name match a standard Unix-like path syntax, without spaces in the
; file name.
tag Statement
assert value =~ /[^\/].+/
check value =~ /[^\/][^ ]+(\/[^ ])+/
tag Receipt
assert value =~ /[^\/].+/
check value =~ /[^\/][^ ]+(\/[^ ])+/
tag Invoice
assert value =~ /[^\/].+/
check value =~ /[^\/][^ ]+(\/[^ ])+/
; IncomeType refers to the types of income a non-profit can receive. In this
; example, it's for the categorizations on the USA Form 990. This could be
; changed to accomodate other jurisdictions around the world.
tag IncomeType
assert value =~ /^(Donations|RBI|UBTI)$/
; Program tag must match the general format of a ledger account as an
; assertion, but we at least check known names of programs, so that warnings
; are produced if a new program never seen before is encountered.
tag Program
assert value =~ /[ A-z0-9\-]+(:[ A-z0-9\-]+)*/
check value =~ /^(Main Org:(Overhead|Direct Fundraising|Software:Internal))$/
check value =~ /^((Foo|Main Org):(Overhead|Direct Fundraising|Software:Internal|Conference.*))$/
; Entity tag is just a string, but shouldn't have spaces, just letters,
; numbers and dashes.
tag Entity
assert value =~ /[ A-z0-9\-]+(:[ A-z0-9\-]+)*/
tag TaxImplication
assert value =~ /^W2|1099|Accountant-Advises-No-1099|Bank-Transfer|Foreign-Corporation|Foreign-Individual-Contractor|Payroll|Refund|Reimbursement|Tax-Payment|USA-501c3|USA-Corporation|USA-LLC-No-1099$/