Ejemplo n.º 1
0
 public static void Write(this SolutionFile File, SolutionProjectLanguage Language, SolutionBuilder Context, SolutionFileComment[] Comments)
 {
     if (Comments != null)
     {
         File.Region(
             delegate
         {
             foreach (var item in Comments)
             {
                 item.WriteTo(File, Language, Context);
             }
         }
             );
     }
 }
Ejemplo n.º 2
0
        public static void WriteUsingNamespaceList(this SolutionFile File, SolutionProjectLanguage Language, SolutionProjectLanguageType Type)
        {
            File.Region(
                delegate
            {
                var ul = new GetUsingNamespaces(Type).Current.ToArray();
                var ol = ul.OrderBy(k => k);

                foreach (var item in ol)
                {
                    Language.WriteUsingNamespace(File, item);
                }
            }
                );
        }
Ejemplo n.º 3
0
        public static void Write(this SolutionFile File, XElement Content, XElementFormatting Arguments)
        {
            Action <XElement> WriteXElement     = null;
            Action <XElement> WriteXElementRoot = null;


            Action PrettyPrintLine =
                delegate
            {
                File.Indent(null,
                            delegate
                {
                    File.WriteLine();
                    File.IndentStack.Invoke();
                }
                            );
            };

            WriteXElementRoot =
                e =>
            {
                File.Region(
                    delegate
                {
                    //if (e != Content)
                    //    File.IndentStack.Invoke();

                    File.Write(SolutionFileTextFragment.XMLKeyword, "<");
                    File.Write(SolutionFileTextFragment.XMLElement, Arguments.GetName(e));

                    foreach (var item in e.Attributes().ToArray())
                    {
                        File.WriteSpace();
                        File.Write(SolutionFileTextFragment.XMLAttributeName, item.Name.LocalName);
                        File.Write(SolutionFileTextFragment.XMLKeyword, "=");
                        File.Write(SolutionFileTextFragment.XMLKeyword, "'");

                        // we need to escape
                        // http://bytes.com/topic/net/answers/551321-incomplete-escaping-functionality

                        Arguments.WriteXMLAttributeValue(e, item, File);

                        File.Write(SolutionFileTextFragment.XMLKeyword, "'");
                    }

                    var IsCollapsed = Arguments.CanCollapse(e);

                    if (e.Nodes().Any())
                    {
                        IsCollapsed = false;
                    }

                    if (IsCollapsed)
                    {
                        File.Write(SolutionFileTextFragment.XMLKeyword, "/>");
                    }
                    else
                    {
                        File.Write(SolutionFileTextFragment.XMLKeyword, ">");

                        #region content

                        var IsElementOnly = !e.Nodes().Any(k => k is XText);

                        //if (IsElementOnly)
                        //{
                        //    if (e.Nodes().FirstOrDefault() is XElement)
                        //    {
                        //        PrettyPrintLine();
                        //    }
                        //}

                        var Previous = default(XNode);
                        foreach (var item in e.Nodes().ToArray())
                        {
                            // we need to escape



                            var _XElement = item as XElement;
                            if (_XElement != null)
                            {
                                if (IsElementOnly)
                                {
                                    PrettyPrintLine();
                                }

                                WriteXElement(_XElement);
                            }

                            var _XText = item as XText;
                            if (_XText != null)
                            {
                                Func <string, Action> WriteXMLText =
                                    vv =>
                                {
                                    return(delegate
                                    {
                                        File.Write(SolutionFileTextFragment.XMLText, InternalXMLExtensions.ToXMLString(vv));
                                    });
                                };

                                Action Separator =
                                    delegate
                                {
                                    File.WriteLine();
                                    File.IndentStack.Invoke();
                                };

                                if (_XText.Value == null)
                                {
                                    File.Write(SolutionFileTextFragment.XMLKeyword, "<!--");
                                    File.Write(SolutionFileTextFragment.XMLComment, "bugcheck: _XText null?");
                                    File.Write(SolutionFileTextFragment.XMLKeyword, "-->");
                                }
                                else
                                {
                                    _XText.Value
                                    .Replace("\n", Environment.NewLine)
                                    .Replace("\r" + Environment.NewLine, Environment.NewLine)
                                    .ToLines()
                                    .Select(WriteXMLText)
                                    .SelectWithSeparator(Separator).Invoke();
                                }
                            }

                            var _XComment = item as XComment;
                            if (_XComment != null)
                            {
                                File.Write(SolutionFileTextFragment.XMLKeyword, "<!--");
                                File.Write(SolutionFileTextFragment.XMLComment, _XComment.Value);
                                File.Write(SolutionFileTextFragment.XMLKeyword, "-->");
                            }

                            Previous = item;
                        }

                        if (IsElementOnly)
                        {
                            if (e.Nodes().LastOrDefault() is XElement)
                            {
                                File.WriteLine();
                                File.IndentStack.Invoke();
                            }
                        }
                        #endregion


                        File.Write(SolutionFileTextFragment.XMLKeyword, "</");
                        File.Write(SolutionFileTextFragment.XMLElement, Arguments.GetName(e));
                        File.Write(SolutionFileTextFragment.XMLKeyword, ">");
                    }

                    //if (e != Content)
                    //{
                    //    File.WriteLine();
                    //}
                }
                    );
            };

            WriteXElement =
                e =>
            {
                File.Indent(null,
                            delegate
                {
                    WriteXElementRoot(e);
                }
                            );
            };

            WriteXElementRoot(Content);
        }