// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // Helper for displaying names of categories. import 'package:characters/src/grapheme_clusters/constants.dart'; final categoryNames = List.filled(categoryCount, '') ..[categoryCR] = 'CR' ..[categoryControl] = 'Control' ..[categoryOther] = 'Other' ..[categoryExtend] = 'Extend' ..[categorySpacingMark] = 'SpacingMark' ..[categoryRegionalIndicator] = 'RegionalIndicator' ..[categoryPictographic] = 'Pictographic' ..[categoryLF] = 'LF' ..[categoryPrepend] = 'Prepend' ..[categoryL] = 'L' ..[categoryV] = 'V' ..[categoryT] = 'T' ..[categoryLV] = 'LV' ..[categoryLVT] = 'LVT' ..[categoryOtherIndicConsonant] = 'OtherIndicConsonant' ..[categoryZWJ] = 'ZWJ' ..[categoryExtendIndicExtend] = 'ExtendIndicExtend' ..[categoryExtendIndicLinked] = 'ExtendIndicLinked' ..[categoryEoT] = 'EoT' ..forEach((text) { if (text.isEmpty) throw StateError('Uninitialized category name'); }); final categoryShortNames = List.filled(categoryCount, '') ..[categoryCR] = 'CR' ..[categoryControl] = 'Ctl' ..[categoryOther] = 'Otr' ..[categoryExtend] = 'Ext' ..[categorySpacingMark] = 'Spc' ..[categoryRegionalIndicator] = 'Reg' ..[categoryPictographic] = 'Pic' ..[categoryLF] = 'LF' ..[categoryPrepend] = 'Pre' ..[categoryL] = 'L' ..[categoryV] = 'V' ..[categoryT] = 'T' ..[categoryLV] = 'LV' ..[categoryLVT] = 'LVT' ..[categoryOtherIndicConsonant] = 'OInC' ..[categoryZWJ] = 'ZWJ' ..[categoryExtendIndicExtend] = 'EInE' ..[categoryExtendIndicLinked] = 'EInL' ..[categoryEoT] = 'EoT' ..forEach((text) { if (text.isEmpty) throw StateError('Uninitialized category short name'); }); final List categoryLongNames = List.filled(categoryCount, '') ..[categoryOther] = 'Other' ..[categoryCR] = 'CR' ..[categoryLF] = 'LF' ..[categoryControl] = 'Control' ..[categoryExtend] = 'Extend' ..[categoryZWJ] = 'ZWJ' ..[categoryRegionalIndicator] = 'RI' ..[categoryPrepend] = 'Prepend' ..[categorySpacingMark] = 'SpacingMark' ..[categoryL] = 'L' ..[categoryV] = 'V' ..[categoryT] = 'T' ..[categoryLV] = 'LV' ..[categoryLVT] = 'LVT' ..[categoryPictographic] = 'Pictographic' ..[categoryOtherIndicConsonant] = 'Other{InCB=Consonant}' ..[categoryExtendIndicExtend] = 'Extend{InCB=Extend}' ..[categoryExtendIndicLinked] = 'Extend{InCB=Linked}' ..[categoryEoT] = 'EoT'; String stateName(int state) => _stateNames[state ~/ automatonRowLength]; final _stateNames = List.filled(stateLimit ~/ automatonRowLength, '') ..[stateSoT ~/ automatonRowLength] = 'SoT' ..[stateBreak ~/ automatonRowLength] = 'Break' ..[stateCR ~/ automatonRowLength] = 'CR' ..[stateOther ~/ automatonRowLength] = 'Other' ..[statePrepend ~/ automatonRowLength] = 'Prepend' ..[stateL ~/ automatonRowLength] = 'L' ..[stateV ~/ automatonRowLength] = 'V' ..[stateT ~/ automatonRowLength] = 'T' ..[statePictographic ~/ automatonRowLength] = 'Pictographic' ..[statePictographicZWJ ~/ automatonRowLength] = 'PictographicZWJ' ..[stateRegionalSingle ~/ automatonRowLength] = 'RegionalSingle' ..[stateSoTNoBreak ~/ automatonRowLength] = 'SoTNoBreak' ..[stateInC ~/ automatonRowLength] = 'InC' ..[stateInCL ~/ automatonRowLength] = 'InCL' ..[stateCAny ~/ automatonRowLength] = '?' ..[stateCZWJ ~/ automatonRowLength] = '?+ZWJ' ..[stateCIE ~/ automatonRowLength] = '?+IndicExtend' ..[stateCIL ~/ automatonRowLength] = '?+IndicLinked' ..[stateCIEZ ~/ automatonRowLength] = '?+IndicExtendZWJ' ..[stateCILZ ~/ automatonRowLength] = '?+IndicLinkedZWJ' ..[stateCZIE ~/ automatonRowLength] = '?+ZWJIndicExtend' ..[stateCZIL ~/ automatonRowLength] = '?+ZWJIndicLinked' ..[stateCExt ~/ automatonRowLength] = '?+Extend' ..[stateCExZ ~/ automatonRowLength] = '?+ExtendZWJ' ..[stateCReg ~/ automatonRowLength] = '?+Reg'; String stateShortName(int state) => _stateShortNames[state ~/ automatonRowLength]; final _stateShortNames = List.filled(stateLimit ~/ automatonRowLength, '') ..[stateSoT ~/ automatonRowLength] = 'SoT' ..[stateBreak ~/ automatonRowLength] = 'Brk' ..[stateCR ~/ automatonRowLength] = 'CR' ..[stateOther ~/ automatonRowLength] = 'Otr' ..[statePrepend ~/ automatonRowLength] = 'Pre' ..[stateL ~/ automatonRowLength] = 'L' ..[stateV ~/ automatonRowLength] = 'V' ..[stateT ~/ automatonRowLength] = 'T' ..[statePictographic ~/ automatonRowLength] = 'Pic' ..[statePictographicZWJ ~/ automatonRowLength] = 'PicZ' ..[stateRegionalSingle ~/ automatonRowLength] = 'Reg' ..[stateSoTNoBreak ~/ automatonRowLength] = 'SoTN' ..[stateInC ~/ automatonRowLength] = 'InC' ..[stateInCL ~/ automatonRowLength] = 'InCL' ..[stateCAny ~/ automatonRowLength] = 'CAny' ..[stateCZWJ ~/ automatonRowLength] = 'CZWJ' ..[stateCIE ~/ automatonRowLength] = 'CIE' ..[stateCIL ~/ automatonRowLength] = 'CIL' ..[stateCIEZ ~/ automatonRowLength] = 'CIEZ' ..[stateCILZ ~/ automatonRowLength] = 'CILZ' ..[stateCZIE ~/ automatonRowLength] = 'CZIE' ..[stateCZIL ~/ automatonRowLength] = 'CZIL' ..[stateCExt ~/ automatonRowLength] = 'CExt' ..[stateCExZ ~/ automatonRowLength] = 'CExZ' ..[stateCReg ~/ automatonRowLength] = 'CReg'; String backStateName(int state) => _backStateNames[state ~/ automatonRowLength]; final _backStateNames = List.filled( backStateLimit ~/ automatonRowLength, '') ..[stateEoT ~/ automatonRowLength] = 'EoT' ..[stateBreak ~/ automatonRowLength] = 'Break' ..[stateLF ~/ automatonRowLength] = 'LF' ..[stateOther ~/ automatonRowLength] = 'Other' ..[stateExtend ~/ automatonRowLength] = 'Extend' ..[stateL ~/ automatonRowLength] = 'L' ..[stateV ~/ automatonRowLength] = 'V' ..[stateT ~/ automatonRowLength] = 'T' ..[statePictographic ~/ automatonRowLength] = 'Pictographic' ..[stateRegionalOdd ~/ automatonRowLength] = 'RegionalOdd' // Known disjoint look-ahead ..[stateRegionalSingle ~/ automatonRowLength] = 'RegionalSingle' ..[stateEoTNoBreak ~/ automatonRowLength] = 'EoTNoBreak' ..[stateInC ~/ automatonRowLength] = 'InC' ..[stateRegionalEven ~/ automatonRowLength] = 'RegionalEven' ..[stateLookaheadRegionalEven ~/ automatonRowLength] = 'RegionalLookaheadEven' ..[stateLookaheadRegionalOdd ~/ automatonRowLength] = 'RegionalLookaheadOdd' ..[stateLookaheadZWJPictographic ~/ automatonRowLength] = 'ZWJPictographicLookahead' ..[stateLookaheadInC ~/ automatonRowLength] = 'InCLookahead' ..[stateLookaheadInCL ~/ automatonRowLength] = 'InCLLookahead'; String backStateShortName(int state) => _backStateShortNames[state ~/ automatonRowLength]; final _backStateShortNames = List.filled(backStateLimit ~/ automatonRowLength, '') ..[stateEoT ~/ automatonRowLength] = 'EoT' ..[stateBreak ~/ automatonRowLength] = 'Brk' ..[stateLF ~/ automatonRowLength] = 'LF' ..[stateOther ~/ automatonRowLength] = 'Otr' ..[stateExtend ~/ automatonRowLength] = 'Ext' ..[stateL ~/ automatonRowLength] = 'L' ..[stateV ~/ automatonRowLength] = 'V' ..[stateT ~/ automatonRowLength] = 'T' ..[statePictographic ~/ automatonRowLength] = 'Pic' ..[stateRegionalOdd ~/ automatonRowLength] = 'RegO' ..[stateRegionalSingle ~/ automatonRowLength] = 'Reg' ..[stateEoTNoBreak ~/ automatonRowLength] = 'EoTN' ..[stateInC ~/ automatonRowLength] = 'InC' ..[stateRegionalEven ~/ automatonRowLength] = 'RegE' ..[stateLookaheadRegionalEven ~/ automatonRowLength] = 'LARe' ..[stateLookaheadRegionalOdd ~/ automatonRowLength] = 'LARo' ..[stateLookaheadZWJPictographic ~/ automatonRowLength] = 'LAZP' ..[stateLookaheadInC ~/ automatonRowLength] = 'LAIC' ..[stateLookaheadInCL ~/ automatonRowLength] = 'LAIL';