Module:pra-decl/noun/documentation

Purpose
This module provides inflection tables for Prakrit for nouns, adjectives and potentially some pronouns. For pronouns, one currently uses the interface for nouns, while for adjectives one uses separate invocations for each gender. The script of the inflected forms is the one used for the stem.

Some functions are exported from this module to service the testing of noun inflection.

Normal Use
The normal way to use this module is to invoke a dialect-specific template. This invokes a dialect-specific exported function, which see for the interface. This invokes the internal function lua.

The Ardhamagadhi data table has not yet been written, and the Magadhi data table does not include the feminine declensions.

Data Modules
The data modules are for use on stems written in a slight customisation of IAST. The data modules export a Lua table indexed by the final stem vowel and gender. The same value may be used for slightly different final vowels. These values are arrays for 16 different case/number combinations, and their values are an array of endings for that combination.

A stem and an ending are combined by the following rules, implemented in function lua:
 * 1) For each '⌫' at the start of the ending, delete one character from the stem.
 * 2) Append the juncture marker 'Ⓙ' to the remains of the stem.
 * 3) Append the rest of the ending to the modified stem.
 * 4) Make adjustments at the junctures.  For the initial use of the juncture marker, this consisted of adding diaereses when abutting vowels could be confused with diphthongs.
 * 5) Remove remaining juncture markers.
 * 6) Convert the result to the appropriate script.

Note that the tables follow the Hindu identification rules for the cases, which differ from the Pali rules. Thus, while in Pali the case forms used for the ablative plural and the dative are mostly the same as for the instrumental plural and dative, in Prakrit such forms are not categorised by their functions but are rather assigned to the instrumental plural or genitive according to their forms.

Other Exported Functions
The following Lua functions are also exported by this module:
 * lua
 * lua
 * lua

Function lua
The primary purpose is to return the endings for the word and gender (lua, they are returned in return value lua. The argument lua is a table which contains the script object in field lua and should contain arguments other than the word and its gender.  The function may append other items and preprocessed data.  This table should be passed to subsequent invocations of lua.

The word lua is transliterated to the Roman script as function value lua. Special treatment is applied if it contains a trailing combining diaeresis.

This function is also used by Module:pra-decl/noun/testcases.

Function joinSuffix(frame, stem, suffixes, etc)
This function returns the contents of a cell of the declension table. It returns the wikicode for a cell of the declension table, with the inflected forms in the appropriate script.

The argument lua is a frame variable. Any frame variable will suffice. The argument lua is the Roman script stem as returned by lua. The argument lua is an array of endings, also in the Roman script.

The argument lua is a table of arguments affecting the combination of stem and suffixes. In particular, it shall contains the field lua as the script object for the script the inflected forms are to be displayed in. This argument should normally be as modified by function lua.

This function is also used by Module:pra-decl/noun/testcases.

Function show(frame, dialect)
This function coordinates the preparation of a table. It can only be called from Lua code. It should probably not be exported.

Exported variables
The variable lua is the string used to join forms listed in a cell of the declension table. It should be treated as a constant.

The variable is also used by Module:pra-decl/noun/testcases.