Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
        ///-------------------------------------------------------------------------------------------------
        /// <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();
            }
        }
Ejemplo n.º 3
0
        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();
        }