diff options
author | Neil <nyamatongwe@gmail.com> | 2017-02-15 21:07:50 +1100 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2017-02-15 21:07:50 +1100 |
commit | 990f3dd28013b356e822fd74c1f1de578f9eff09 (patch) | |
tree | d17ff3ac064abe514784f905abac86ebc489b42a /scripts/ScintillaData.py | |
parent | 6f91daae77d449edac51aa1385e673c76b95792b (diff) | |
download | scintilla-mirror-990f3dd28013b356e822fd74c1f1de578f9eff09.tar.gz |
Automatically add new lexers to Xcode project in LexGen.py.
Diffstat (limited to 'scripts/ScintillaData.py')
-rw-r--r-- | scripts/ScintillaData.py | 28 |
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: |