当前位置: 首页>>代码示例>>C#>>正文


C# IndentedTextWriter.IndentBlock方法代码示例

本文整理汇总了C#中System.CodeDom.Compiler.IndentedTextWriter.IndentBlock方法的典型用法代码示例。如果您正苦于以下问题:C# IndentedTextWriter.IndentBlock方法的具体用法?C# IndentedTextWriter.IndentBlock怎么用?C# IndentedTextWriter.IndentBlock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.CodeDom.Compiler.IndentedTextWriter的用法示例。


在下文中一共展示了IndentedTextWriter.IndentBlock方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Write

        private static void Write(LuaTable table, IndentedTextWriter indentedTextWriter)
        {
            // Write empty tables in a single line
            if (table.Count == 0) {
                indentedTextWriter.Write("{}");
                return;
            }

            // Determine whether to use auto-indexing for numeric keys.
            // Use auto-indexing if all n keys of numeric type form the sequence 1, 2, 3 .. n
            bool useAutoIndexing = table
                .Where(pair => pair.Key is double)
                .Select((pair, index) => new { Key = (double) pair.Key, Index = index })
                .All(element => element.Key == element.Index + 1);

            // Serialize table
            indentedTextWriter.WriteLine("{");
            using (indentedTextWriter.IndentBlock()) {
                var pairs = table.ToList();
                for (int i = 0; i < pairs.Count; i++) {
                    dynamic key = pairs[i].Key;
                    dynamic value = pairs[i].Value;
                    if (value is LuaComment) {
                        // Comment. This is easy.
                        Write(value, indentedTextWriter);
                    } else {
                        // Actual entry, not a comment
                        if (useAutoIndexing && key is double) {
                            // Use auto-indexing: omit the key
                            Write(value, indentedTextWriter);
                        } else {
                            // Use key-value syntax
                            if (key is string && IsValidIdentifier(key)) {
                                // Use identifier syntax for key
                                indentedTextWriter.Write(key);
                            } else {
                                // Use bracket syntax for key
                                indentedTextWriter.Write("[");
                                Write(key, indentedTextWriter);
                                indentedTextWriter.Write("]");
                            }
                            indentedTextWriter.Write(" = ");
                            Write(value, indentedTextWriter);
                        }

                        // Figure out whether to add a comma
                        if (pairs.Skip(i + 1).Any(pair => !(pair.Value is LuaComment))) {
                            indentedTextWriter.WriteLine(",");
                        } else {
                            indentedTextWriter.WriteLine();
                        }
                    }
                }
            }
            indentedTextWriter.Write("}");
        }
开发者ID:ClaudiuC,项目名称:MoaiUtils,代码行数:56,代码来源:LuaTableWriter.cs


注:本文中的System.CodeDom.Compiler.IndentedTextWriter.IndentBlock方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。