def cppAlias(s): if s in typeAliases: return typeAliases[s] elif Face.IsEnumeration(s): return "int" else: return s
def convertIFaceTypeToC(t): if t == "keymod": return "int " elif t == "string": return "const char *" elif t == "stringresult": return "char *" elif t == "cells": return "cell *" elif t == "textrange": return "Sci_TextRange *" elif t == "findtext": return "Sci_TextToFind *" elif t == "formatrange": return "Sci_RangeToFormat *" elif Face.IsEnumeration(t): return "int " return t + " "
def makeSig(params): p1 = makeParm(params["Param1Type"], params["Param1Name"], params["Param1Value"]) p2 = makeParm(params["Param2Type"], params["Param2Name"], params["Param2Value"]) retType = params["ReturnType"] if retType in ["void", "string", "stringresult"]: retType = "" elif Face.IsEnumeration(retType): retType = "int" if retType: retType = " → " + retType if p1 == "" and p2 == "": return retType if p1 == "": p1 = "<unused>" joiner = "" if p2 != "": joiner = ", " return "(" + p1 + joiner + p2 + ")" + retType
def ConvertEnu(t): if Face.IsEnumeration(t): return "int" else: return t
def printIFaceTableHTMLFile(faceAndIDs): out = [] f, ids, idsInOrder = faceAndIDs (constants, functions, properties) = GetScriptableInterface(f) explanations = {} for name, features in functions: featureDefineName = "SCI_" + name.upper() explanation = "" href = "" hrefEnd = "" href = "<a href='https://www.scintilla.org/ScintillaDoc.html#" + featureDefineName + "'>" hrefEnd = "</a>" if features['Param1Type'] in nonScriptableTypes or features['Param2Type'] in nonScriptableTypes: #~ print(name, features) continue parameters = "" stringresult = "" if features['Param2Type'] == "stringresult": stringresult = "string " if features['Param1Name'] and features['Param1Name'] != "length": parameters += features['Param1Type'] + " " + features['Param1Name'] else: if features['Param1Name']: parameters += ConvertEnu(features['Param1Type']) + " " + features['Param1Name'] if features['Param1Name'] == "length" and features['Param2Type'] == "string": # special case removal parameters = "" if features['Param2Name']: if parameters: parameters += ", " parameters += ConvertEnu(features['Param2Type']) + " " + features['Param2Name'] returnType = stringresult if not returnType and Face.IsEnumeration(features["ReturnType"]): returnType = "int " if not returnType and features["ReturnType"] != "void": returnType = convertStringResult(features["ReturnType"]) + " " explanation += '%seditor:%s%s%s(%s)' % ( returnType, href, name, hrefEnd, parameters ) if features["Comment"]: explanation += '<span class="comment">%s</span>' % CommentString(features) explanations[featureDefineName] = explanation for propname, property in properties: functionName = property['SetterName'] or property['GetterName'] featureDefineName = "SCI_" + functionName.upper() explanation = "" href = "<a href='https://www.scintilla.org/ScintillaDoc.html#" + featureDefineName + "'>" hrefEnd = "</a>" direction = "" if not property['SetterName']: direction = " read-only" if not property['GetterName']: direction = " write-only" indexExpression = "" if property["IndexParamType"] != "void": indexExpression = "[" + property["IndexParamType"] + " " + property["IndexParamName"] + "]" explanation += '%s editor.%s%s%s%s%s' % ( convertStringResult(property["PropertyType"]), href, propname, hrefEnd, indexExpression, direction ) if property["SetterComment"]: explanation += '<span class="comment">%s</span>' % (property["SetterComment"].replace("<", "<")) explanations[featureDefineName] = explanation lastSegment = "" for segment, featureId in idsInOrder: if featureId in explanations: if segment != lastSegment: out.append('\t<h2>' + segment + '</h2>') lastSegment = segment out.append('\t<p>' + explanations[featureId] + '</p>') out.append("") return out
def understoodType(t): return t in understoodTypes or Face.IsEnumeration(t)