aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/ScintillaData.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/ScintillaData.py')
-rw-r--r--scripts/ScintillaData.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/scripts/ScintillaData.py b/scripts/ScintillaData.py
index 7aeee4f62..0ac1eddfa 100644
--- a/scripts/ScintillaData.py
+++ b/scripts/ScintillaData.py
@@ -57,6 +57,31 @@ def FindModules(lexFile):
partLine = partLine + l
return modules
+def FindLexersInXcode(xCodeProject):
+ lines = FileGenerator.ReadFileAsList(xCodeProject)
+
+ uidsOfBuild = {}
+ markersPBXBuildFile = ["Begin PBXBuildFile section", "", "End PBXBuildFile section"]
+ for buildLine in lines[FileGenerator.FindSectionInList(lines, markersPBXBuildFile)]:
+ # Occurs for each file in the build. Find the UIDs used for the file.
+ #\t\t[0-9A-F]+ /* [a-zA-Z]+.cxx in sources */ = {isa = PBXBuildFile; fileRef = [0-9A-F]+ /* [a-zA-Z]+ */; };
+ pieces = buildLine.split()
+ uid1 = pieces[0]
+ filename = pieces[2].split(".")[0]
+ uid2 = pieces[12]
+ uidsOfBuild[filename] = [uid1, uid2]
+
+ lexers = {}
+ markersLexers = ["/* Lexers */ =", "children", ");"]
+ for lexerLine in lines[FileGenerator.FindSectionInList(lines, markersLexers)]:
+ #\t\t\t\t[0-9A-F]+ /* [a-zA-Z]+.cxx */,
+ uid, _, rest = lexerLine.partition("/* ")
+ uid = uid.strip()
+ lexer, _, _ = rest.partition(".")
+ lexers[lexer] = uidsOfBuild[lexer]
+
+ return lexers
+
# Properties that start with lexer. or fold. are automatically found but there are some
# older properties that don't follow this pattern so must be explicitly listed.
knownIrregularProperties = [
@@ -217,6 +242,7 @@ class ScintillaData:
self.lexerProperties = list(lexerProperties)
SortListInsensitive(self.lexerProperties)
+ self.lexersXcode = FindLexersInXcode(scintillaRoot + "cocoa/ScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj")
self.credits = FindCredits(scintillaRoot + "doc/ScintillaHistory.html")
def printWrapped(text):
@@ -229,6 +255,8 @@ if __name__=="__main__":
sci.dateModified, sci.yearModified, sci.mdyModified, sci.dmyModified, sci.myModified))
printWrapped(str(len(sci.lexFiles)) + " lexer files: " + ", ".join(sci.lexFiles))
printWrapped(str(len(sci.lexerModules)) + " lexer modules: " + ", ".join(sci.lexerModules))
+ #~ printWrapped(str(len(sci.lexersXcode)) + " Xcode lexer references: " + ", ".join(
+ #~ [lex+":"+uids[0]+","+uids[1] for lex, uids in sci.lexersXcode.items()]))
print("Lexer name to ID:")
lexNames = sorted(sci.sclexFromName.keys())
for lexName in lexNames: