diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..a17736d --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,5 @@ +# Mac OS Region Definitions + +This folder contains the script and region definitions for the Mac OS toolbox. + +These constants are extracted from the `Script.h` file in Universal Interfaces. diff --git a/scripts/extract.py b/scripts/extract.py new file mode 100644 index 0000000..7ba8560 --- /dev/null +++ b/scripts/extract.py @@ -0,0 +1,44 @@ +"""Extract script and region constants from Script.h.""" +import csv +import re +import sys + +from typing import List, Tuple + +Item = Tuple[str, int] + +def index_of(data: List[Item], key: str) -> int: + for i, (name, _) in enumerate(data): + if name == key: + return i + raise ValueError('missing value: {!r}'.format(key)) + +def slice(data: List[Item], first: str, last: str) -> List[Item]: + return data[index_of(data, first):index_of(data, last)+1] + +def write_csv(fname: str, data: List[Item]) -> None: + with open(fname, 'w') as fp: + w = csv.writer(fp) + w.writerow(['Name', 'Value']) + for item in data: + w.writerow(item) + +def main(argv: List[str]) -> None: + if len(argv) != 1: + print('usage: script_gen.py ', file=sys.stderr) + raise SystemExit(2) + with open(argv[0], 'rb') as fp: + data = fp.read() + scripts: List[Item] = [] + regions: List[Item] = [] + for item in re.finditer(rb'^\s*(\w+)\s*=\s*(\d+)', data, re.MULTILINE): + name, value = item.groups() + if name.startswith(b'sm'): + scripts.append((name.decode('ASCII'), int(value))) + elif name.startswith(b'ver'): + regions.append((name.decode('ASCII'), int(value))) + write_csv('script.csv', slice(scripts, 'smRoman', 'smUninterp')) + write_csv('region.csv', slice(regions, 'verUS', 'verGreenland')) + +if __name__ == '__main__': + main(sys.argv[1:]) diff --git a/scripts/region.csv b/scripts/region.csv new file mode 100644 index 0000000..c167590 --- /dev/null +++ b/scripts/region.csv @@ -0,0 +1,101 @@ +Name,Value +verUS,0 +verFrance,1 +verBritain,2 +verGermany,3 +verItaly,4 +verNetherlands,5 +verFlemish,6 +verSweden,7 +verSpain,8 +verDenmark,9 +verPortugal,10 +verFrCanada,11 +verNorway,12 +verIsrael,13 +verJapan,14 +verAustralia,15 +verArabic,16 +verFinland,17 +verFrSwiss,18 +verGrSwiss,19 +verGreece,20 +verIceland,21 +verMalta,22 +verCyprus,23 +verTurkey,24 +verYugoCroatian,25 +verNetherlandsComma,26 +verBelgiumLuxPoint,27 +verCanadaComma,28 +verCanadaPoint,29 +vervariantPortugal,30 +vervariantNorway,31 +vervariantDenmark,32 +verIndiaHindi,33 +verPakistanUrdu,34 +verTurkishModified,35 +verItalianSwiss,36 +verInternational,37 +verRomania,39 +verGreecePoly,40 +verLithuania,41 +verPoland,42 +verHungary,43 +verEstonia,44 +verLatvia,45 +verSami,46 +verFaroeIsl,47 +verIran,48 +verRussia,49 +verIreland,50 +verKorea,51 +verChina,52 +verTaiwan,53 +verThailand,54 +verScriptGeneric,55 +verCzech,56 +verSlovak,57 +verFarEastGeneric,58 +verMagyar,59 +verBengali,60 +verByeloRussian,61 +verUkraine,62 +verGreeceAlt,64 +verSerbian,65 +verSlovenian,66 +verMacedonian,67 +verCroatia,68 +verGermanReformed,70 +verBrazil,71 +verBulgaria,72 +verCatalonia,73 +verMultilingual,74 +verScottishGaelic,75 +verManxGaelic,76 +verBreton,77 +verNunavut,78 +verWelsh,79 +verIrishGaelicScript,81 +verEngCanada,82 +verBhutan,83 +verArmenian,84 +verGeorgian,85 +verSpLatinAmerica,86 +verTonga,88 +verFrenchUniversal,91 +verAustria,92 +verGujarati,94 +verPunjabi,95 +verIndiaUrdu,96 +verVietnam,97 +verFrBelgium,98 +verUzbek,99 +verSingapore,100 +verNynorsk,101 +verAfrikaans,102 +verEsperanto,103 +verMarathi,104 +verTibetan,105 +verNepal,106 +verGreenland,107 diff --git a/scripts/script.csv b/scripts/script.csv new file mode 100644 index 0000000..6d8bba7 --- /dev/null +++ b/scripts/script.csv @@ -0,0 +1,35 @@ +Name,Value +smRoman,0 +smJapanese,1 +smTradChinese,2 +smKorean,3 +smArabic,4 +smHebrew,5 +smGreek,6 +smCyrillic,7 +smRSymbol,8 +smDevanagari,9 +smGurmukhi,10 +smGujarati,11 +smOriya,12 +smBengali,13 +smTamil,14 +smTelugu,15 +smKannada,16 +smMalayalam,17 +smSinhalese,18 +smBurmese,19 +smKhmer,20 +smThai,21 +smLao,22 +smGeorgian,23 +smArmenian,24 +smSimpChinese,25 +smTibetan,26 +smMongolian,27 +smEthiopic,28 +smGeez,28 +smCentralEuroRoman,29 +smVietnamese,30 +smExtArabic,31 +smUninterp,32