aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2013-07-01 18:45:48 +1000
committerNeil <nyamatongwe@gmail.com>2013-07-01 18:45:48 +1000
commita2c6733805465aaf113b26c45609166c2254903c (patch)
treeb2d642d69f7e94bdddec28346b09faad7f26ebe8 /scripts
parent1d40ac150c3b4151afceedf173c3082cf0a8fa94 (diff)
downloadscintilla-mirror-a2c6733805465aaf113b26c45609166c2254903c.tar.gz
Added CharacterCategory.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/GenerateCharacterCategory.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/scripts/GenerateCharacterCategory.py b/scripts/GenerateCharacterCategory.py
new file mode 100644
index 000000000..6e3ffd3ba
--- /dev/null
+++ b/scripts/GenerateCharacterCategory.py
@@ -0,0 +1,35 @@
+# Script to generate CharacterCategory.cxx from Python's Unicode data
+# Should be run rarely when a Python with a new version of Unicode data is available.
+# Should not be run with old versions of Python.
+
+import codecs, os, platform, sys, unicodedata
+
+from FileGenerator import Regenerate
+
+def findCategories(filename):
+ with codecs.open(filename, "r", "UTF-8") as infile:
+ lines = [x.strip() for x in infile.readlines() if "\tcc" in x]
+ values = "".join(lines).replace(" ","").split(",")
+ print(values)
+ return [v[2:] for v in values]
+
+def updateCharacterCategory(filename):
+ values = ["// Created with Python %s, Unicode %s" % (
+ platform.python_version(), unicodedata.unidata_version)]
+ category = unicodedata.category(chr(0))
+ startRange = 0
+ for ch in range(sys.maxunicode):
+ uch = chr(ch)
+ if unicodedata.category(uch) != category:
+ value = startRange * 32 + categories.index(category)
+ values.append("%d," % value)
+ category = unicodedata.category(uch)
+ startRange = ch
+ value = startRange * 32 + categories.index(category)
+ values.append("%d," % value)
+
+ Regenerate(filename, "//", values)
+
+categories = findCategories("../lexlib/CharacterCategory.h")
+
+updateCharacterCategory("../lexlib/CharacterCategory.cxx")