// Faithful port of Scandroid_py_source/scanstrings.py's global constants, plus // syllables.py's module-level constant tuples. This whole `scandroidNative/` // tree is a SELF-CONTAINED re-implementation of Charles Hartman's 2005 // Scandroid: its own syllabifier, its own small stress dictionary, its own two // iambic algorithms, its own anapestic algorithm. Nothing here reads a // Calliope-derived stress grade, dependency parse, or phonological hierarchy — // scanLineNatively (engine.ts) takes only the raw line text, exactly as // Hartman's ParseLine did. It is a genuine second, independent opinion. export const STRESS = '/'; export const SLACK = 'x'; export const PROMOTED = '%'; export const SYLMARK = '#'; export const FOOTDIV = '|'; /** Iambic foot dictionary (Scandroid's footDict), verbatim. */ export const footDict: Record = { 'x/': 'iamb', 'xx': 'pyrrhic', '//': 'spondee', '/x': 'trochee', 'x/x': 'amphibrach', '//x': 'palimbacchius', 'xx/': 'anapest', '/': 'defective', '/xx': 'dactyl', '/x/': 'cretic', 'x//': 'bacchius', 'x%': '(iamb)', 'xx%': '(anapest)', '%x': '(trochee)', 'x/xx': '2nd paeon', 'xx/x': '3rd paeon', }; /** Anapestic foot dictionary (Scandroid's AnapSubs), verbatim. */ export const AnapSubs: Record = { 'xx/': 'anapest', '/x/': 'cretic', 'x//': 'bacchius', 'x/': 'iamb', 'x%': '(iamb)', 'xx%': '(anapest)', '//': 'spondee', 'xx/x': '3rd paeon', 'x/x': 'amphibrach', '///': 'molossus', '/x%': '(cretic)', '//x': 'palimbacchius', }; export const lineLengthName = [ '', '', 'DIMETER', 'TRIMETER', 'TETRAMETER', 'PENTAMETER', 'HEXAMETER', 'HEPTAMETER', 'OCTAMETER', 'NONAMETER', ]; // ─── syllables.py module constants ───────────────────────────────── export const SIBILANTS = '40xzjgsc'; export const MIDS = 'bdfgklmnpstw%0245'; export const MULTISUFFIX = ['ible', 'able']; export const STRESSSUFFIX = [ 'tion', 'sion', 'tiou', 'ciou', 'tious', 'cious', 'cion', 'gion', 'giou', 'gious', ]; export const PREFIXES = ['a', 'as', 'be', 'con', 'de', 'di', 'ex', 're', 'un', 'en'];