/// <summary> /// Vérifie si un type est valide. Si le namespace n'est pas indiqué, on considère qu'il se trouve dans /// le namespace par défaut. /// </summary> /// <param name="initialTypeName">type saisie</param> /// <param name="handler">handler appelé pour créer un type non existant</param> /// <returns></returns> public static string Parse(string initialTypeName, EnsureTypeExistsHandler handler) { try { return(GetParser(initialTypeName, handler).Analyze()); } catch { Language language = LanguageCSharp.Instance(); ClrTypesHelper.GetModelNamesFromClrType(CurrentLanguage, initialTypeName); return(null); } }
///------------------------------------------------------------------------------------------------- /// <summary>Writes a C#.</summary> /// /// <remarks>Gino Canessa, 8/12/2019.</remarks> /// /// <param name="options">Options for controlling the operation.</param> ///------------------------------------------------------------------------------------------------- static void WriteCSharp(Options options, int style) { LanguageCSharp lang = new LanguageCSharp(); // **** set the style **** lang.LanguageStyle = style; // **** enable/disable polymorphic deserialization **** lang.PolymorphicDeserialization = options.LanguageCSharpPolymorphic; // **** for our filename **** string filename; // **** check for having an extension **** if (Path.HasExtension(options.OutputFile)) { filename = options.OutputFile; } else { filename = $"{options.OutputFile}{lang.GetFilenamePartForStyle}.{((ILanguangeExporter)lang).SourceFileExtension}"; } // **** **** Console.WriteLine($"Writing C# ({lang.GetStyleName}) file: {filename}"); // **** start our file **** using (StreamWriter writer = new StreamWriter(filename)) { // **** output our data **** FhirTypeManager.OutputForLang( writer, lang, options.TypesToOutput, options.OutputNamespace, options.ExcludeCodes ); writer.Flush(); } }
private void btnGenerateClass_Click(object sender, EventArgs e) { string program = string.Empty; const string carriageReturn = "\r\n"; int ndx = 1; ITokenIcerLanguage language = null; if (((string)ddlLanguage.SelectedItem).Equals("VB.NET")) { language = new LanguageVBNet(); } if (((string)ddlLanguage.SelectedItem).Equals("C#")) { language = new LanguageCSharp(); } if (((string)ddlLanguage.SelectedItem).Equals("F#")) { language = new LanguageFSharp(); } if (language != null) { string skeleton = language.GetSkeletonCode(); string commentDelimiter = language.GetCommentIdentifier(); string commentXmlDelimiter = language.GetXmlCommentIdentifier(); int partNum = 1; int ignoreSpacesStart = skeleton.IndexOf("{IgnoreSpaces", StringComparison.Ordinal); while (ignoreSpacesStart >= 0) { int ignoreSpacesEnd = skeleton.IndexOf("{/IgnoreSpaces}", ignoreSpacesStart, StringComparison.Ordinal); skeleton = !IgnoreSpaces ? skeleton.Remove(ignoreSpacesStart, ignoreSpacesEnd - ignoreSpacesStart + 15) : skeleton.Replace("{IgnoreSpaces}", "").Replace("{/IgnoreSpaces}", ""); ignoreSpacesStart = skeleton.IndexOf("{IgnoreSpaces", StringComparison.Ordinal); } skeleton = skeleton.Replace("{ClassNamePrefix}", string.IsNullOrWhiteSpace(ClassName) ? "Unnamed" : ClassName); foreach (string line in Regex.Split(skeleton, carriageReturn)) { var ndx2 = 0; var isComment = true; var isXmlComment = true; ndx2 = SkipWhiteSpace(line, ndx2); var ndx3 = 0; var ndx4 = 0; var ndx5 = ndx2; while (ndx4 < commentXmlDelimiter.Length && ndx2 < line.Length) { if (line[ndx2] == commentXmlDelimiter[ndx4]) { ndx4++; ndx2++; continue; } isXmlComment = false; break; } if (isXmlComment && ndx2 < line.Length) { if (chkXMLComments.Checked) { program = program + line + carriageReturn; continue; } } ndx2 = ndx5; while (ndx3 < commentDelimiter.Length && ndx2 < line.Length) { if (line[ndx2] == commentDelimiter[ndx3]) { ndx3++; ndx2++; continue; } isComment = false; break; } if (isComment && ndx2 < line.Length) { if (chkIncludeComments.Checked) { program = program + line + carriageReturn; } continue; } if (line.Contains(@"\$$$\")) { if (partNum == 1) { string replacement = ""; int indentWidth = language.GetIndentWidth(1); foreach (KeyValuePair <string, string> pair in _regExRules) { if (ndx != _regExRules.Count) { replacement = replacement + MakeTabs(indentWidth) + language.CreateEnum(pair.Key, ndx, false); if (chkRuleComments.Checked) { string cmt = GetRuleComment(pair.Key, language.GetCommentIdentifier()); replacement = replacement + cmt + carriageReturn; } else { replacement = replacement + carriageReturn; } } else { replacement = replacement + MakeTabs(indentWidth) + language.CreateEnum(pair.Key, ndx, true); if (chkRuleComments.Checked) { string cmt = GetRuleComment(pair.Key, language.GetCommentIdentifier()); replacement = replacement + cmt + carriageReturn; } else { replacement = replacement + carriageReturn; } } ndx++; } program = program + line.Replace(@"\$$$\", replacement); partNum++; } else if (partNum == 2) { string replacement = ""; int indentWidth = language.GetIndentWidth(2); foreach (KeyValuePair <string, string> pair in _regExRules) { replacement = replacement + MakeTabs(indentWidth) + language.AddToken(pair.Key, pair.Value) + carriageReturn; } program = program + line.Replace(@"\$$$\", replacement); partNum++; } } else { program = program + line + carriageReturn; } } } var form = new OutputForm { Output = program }; form.ShowDialog(); }