private static void GenerateIntelliControls(ParsedControlList controls, string intelliFileControls) { //nome file per i controlli registrati string tmp = Path.GetTempFileName(); using (StreamWriter sw = new StreamWriter(tmp, false, new UTF8Encoding(false))) { using (JsonTextWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Newtonsoft.Json.Formatting.Indented; writer.WriteStartArray(); foreach (var c in controls) { writer.WriteStartObject(); writer.WritePropertyName(JsonConstants.DATA_TYPE); writer.WriteValue(c.Key); writer.WritePropertyName(JsonConstants.CONTROLS); writer.WriteStartArray(); foreach (var c1 in c.Value) { writer.WriteValue(c1.Name); } writer.WriteEndArray(); writer.WriteEndObject(); } writer.WriteEndArray(); } } File.Copy(tmp, intelliFileControls, true); File.Delete(tmp); }
public static int GenerateIntellisense(string path) { //salverò i file nel path di installazione string installationPath = Helper.GetInstallationPath(path); if (string.IsNullOrEmpty(installationPath)) { Diagnostic.WriteLine("Cannot find installation path"); return(-1); } //GenerateIntelliDB(path, installationPath); //cerco tutti i file con estensione *.cpp List <string> files = new List <string>(); string appsFolder = Path.Combine(installationPath, "standard\\applications"); string tbFolder = Path.Combine(installationPath, "standard\\taskbuilder"); //metto i sorgenti delle applicazioni files.AddRange(Directory.GetFiles(appsFolder, "*.h", SearchOption.AllDirectories)); files.AddRange(Directory.GetFiles(appsFolder, "*.cpp", SearchOption.AllDirectories)); //e gli interface di tb files.AddRange(Directory.GetFiles(tbFolder, "*interface.cpp", SearchOption.AllDirectories)); string intelliFileControls = Path.Combine(installationPath, JsonConstants.INTELLI_FILE_CONTROLS); string intelliFileDbts = Path.Combine(installationPath, JsonConstants.INTELLI_FILE_DBTS); string hjsonOwnerFile = Path.Combine(installationPath, JsonConstants.HJSON_DOC_OWNER); if (UpdateNeeded(files.ToArray(), new string[] { intelliFileControls, intelliFileDbts, hjsonOwnerFile })) { ParsedControlList controls = new ParsedControlList(); CppInfo info = new CppInfo(); foreach (string f in files) { CPPParser parser = new CPPParser(controls, info); Diagnostic.WriteLine("Parsing file " + f); parser.Parse(f); } GenerateIntelliControls(controls, intelliFileControls); GenerateIntelliDbts(info, intelliFileDbts); GenerateHJsonOwnerMap(info, hjsonOwnerFile, appsFolder); } return(0); }