LatinVerb is a library, written in Ruby, that is used to make dealing with
verb objects, and in particular Latin verbs, easier. By providing a
definitional string like:
amō amāre amāvī amatum, LatinVerb will generate
the 100+ forms and allow you to access them via method calls like
and get back
LatinVerb also has tolerances for ambiguity. Where
is considered a "full" vector that uniquely identifies one value, it is
possible to pass "incomplete" vectors such as
would return two values (
amārentur). Similarly, the person
could be dropped and the number included and three values would be returned:
PHONETICS / PHONOGRAPHICS
This library deals with some particularities of Latin verbs:
- Handling Unicode storage of characters with a long sound (macron)
- Handling of macron removal as according to the pronunciation rules of Latin (before repeated vowel, before certain consonants at end of word, etc.)
- Resolving certain vectors of specified forms: person, number, voice, mood, and tense.
Importantly, none of the values shown for the verbs are statically defined (save irregulars). Rather, each and every conjugated verb form is generated on the fly as a result of applying a heuristic transformation to the verb (i.e. "take the stem and add such-and-such ending(s) to it").
IRREGULAR / DEPONENT SUPPORT
LatinVerb also supports irregular and deponent verbs. It also handles some of the "odder" types of verb (perfect only, impersonal, present only).
This is a complete overhaul of my earlier "LatinVerb" library. The (1) iteration did not have support for deponents or irregulars, nor was its metaprogrammatic model as tight nor were various components properly modularized.
- Prof. James Burleson for teaching me Latin
- Lauren Roth for everything but most of all her patience
- Mike Perham for "meaning" idea to a TenseBlock
Steven G. Harms ([email protected])