本文整理汇总了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("}");
}