public override void Run(TextWriter writer, Class t) { if (t.Export) { writer.Append("export "); } writer.Append("class ").Append(t.Name).AppendLine("{"); if (t.Properties != null) { foreach (var property in t.Properties) { writer.Run(writeProperty, property).WriteLine(); } } writer.Append("}"); }
public override void Run(TextWriter writer, Method t) { writer.Run(writeAccessModifier, t.AccessModifier).Space(); if (t.Static) { writer.Static(); } else if (t.Override) { writer.Write("override "); } else if (t.Virtual) { writer.Write("virtual "); } if (t.Async) { writer.Write("async "); } writer.Run(writeType, t.ReturnType).Space(); writer.Append(t.Name).OpenParenthesis(); writer.Run(writeParams, t.Parameters); writer.CloseParenthesis(); writer.Run(writeCodeBlock, t.Body); }
public override void Run(TextWriter writer, Field field) { if (field.Modifier != AccessModifier.None) { writer.Run(writeAccessModifier, field.Modifier).Space(); } if (field.Const) { writer.Const(); } if (field.ReadOnly) { writer.ReadOnly(); } if (field.Static) { writer.Static(); } writer.Run(writeType, field.Type).Space().Append(field.Name); if (!string.IsNullOrEmpty(field.Value)) { writer.Append(" = ").Append(field.Value); } writer.Semicolon(); }
public override void Run(TextWriter writer, Parameter t) { if (t.Modifier == ParameterModifier.Out) { writer.Append("out "); } else if (t.Modifier == ParameterModifier.Ref) { writer.Append("ref "); } else if (t.Modifier == ParameterModifier.In) { writer.Append("in "); } writer.Run(writeType, t.Type).Space().Append("@").Append(t.Name); }
/// <summary> /// ユニット定義情報を<see cref="TextWriter"/>に書き出します。 /// メソッド内で<see cref="IDisposable.Dispose"/>は呼び出されません。 /// 呼び出し側で必要に応じて呼び出しを行ってください。 /// </summary> /// <param name="self">レシーバ・オブジェクト</param> /// <param name="writer">ライター・オブジェクト</param> /// <param name="options">書式化オプション</param> public static void WriteTo(this IUnit self, TextWriter writer, FormatOptions options) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } var depth = self.FullName.Fragments.Count; StringBuilder b = new StringBuilder(); writer.AppendTabs(depth - 1, options).Append("unit=") .Append(self.Attributes.UnitName).Append(',') .Append(self.Attributes.PermissionMode).Append(',') .Append(self.Attributes.Jp1UserName).Append(',') .Append(self.Attributes.ResourceGroupName).Append(';').Append(options.NewLine) .AppendTabs(depth - 1, options).Append('{').Append(options.NewLine); foreach (IParameter p in self.Parameters) { writer.AppendTabs(depth, options).Append(p.ToString()).Append(options.NewLine); } foreach (IUnit u in self.SubUnits) { u.WriteTo(writer, options); writer.Append(options.NewLine); } writer.AppendTabs(depth - 1, options).Append('}'); writer.Flush(); }
public override void Run(TextWriter writer, Class @class) { if (@class.Imports?.Count() > 0) { foreach (var item in @class.Imports) { writer.Append("using ").Append(item).AppendLine(";"); } writer.WriteLine(); } using (var scope = writer.BeginScope($"namespace {@class.Namespace}")) { scope.Writer.Run(writeAccessModifier, @class.AccessModifier); if (@class.Static) { scope.Writer.Append(" static"); } if (@class.Partial) { scope.Writer.Append(" partial"); } scope.Writer.Append(" class ").Append(@class.Name); if (@class.BaseClass != null) { scope.Writer.Append(" : ").Append(@class.BaseClass.Name); } using (var childScope = scope.Writer.BeginScope()) { if (@class.Constructors?.Count() > 0) { foreach (var constructor in @class.Constructors) { childScope.Writer.Run(writeConstructor, constructor).WriteLine(); } } if (@class.Fields?.Count() > 0) { foreach (var field in @class.Fields) { childScope.Writer.Run(writeField, field).WriteLine(); } } if (@class.Properties?.Count() > 0) { foreach (var property in @class.Properties) { childScope.Writer.Run(writeProperty, property).WriteLine(); } } if (@class.Methods?.Count() > 0) { foreach (var method in @class.Methods) { childScope.Writer.Run(writeMethod, method).WriteLine(); } } } } }
public override void Run(TextWriter writer, DotNetType type) { if (type.IsVoid && !type.IsAsync) { writer.Append("void"); } else { writer.Append(type.Name); if (type.IsGeneric) { if (type.GenericTypeArguments?.Count() > 0) { writer.OpenAngleBracket(); bool first = true; foreach (var genericType in type.GenericTypeArguments) { if (!first) { writer.Comma().Space(); } else { first = false; } writer.Run(this, genericType); } writer.CloseAngleBracket(); } else { throw new CodeGenException("Missing Generic Arguments"); } } if (type.IsArray) { writer.Append("[]"); } } }
public override void Run(TextWriter writer, Constructor constructor) { if (constructor.Static) { writer.Static(); } else { writer.Run(writeAccessModifier, constructor.AccessModifier).Space(); } writer.Append(constructor.Name).OpenParenthesis(); writer.Run(writeParams, constructor.Parameters); writer.CloseParenthesis(); if (constructor.BaseConstructor != null) { writer.Append(" : ").Append(constructor.BaseConstructor.Name).OpenParenthesis(); writer.WriteItems(constructor.Parameters, ", ", (w, item) => { w.Append("@").Append(item.Name); }); writer.CloseParenthesis(); } writer.Run(writeCodeBlock, constructor.Body); }
public static TextWriter WriteItems <T>(this TextWriter writer, IEnumerable <T> items, string delimiter, Action <TextWriter, T> action) { if (items != null) { int count = 0, total = items.Count(); foreach (var item in items) { action?.Invoke(writer, item); count++; if (count != total) { writer.Append(delimiter); } } } return(writer); }
static TextWriter AppendTabs(this TextWriter self, int count, FormatOptions options) { for (var i = 0; i < count; i++) { if (options.SoftTab) { for (var j = 0; j < options.TabSize; j++) { self.Append(' '); } } else { self.Write('\t'); } } return(self); }
/// <exception cref="System.IO.IOException"/> public void Write(TextWriter @out) { @out.Append(sb); }
public static TextWriter EscapeSql(this TextWriter writer, string content) { return(writer.Append("[").Append(content).Append("]")); }
public override void Run(TextWriter writer, Table source) { writer.Append("merge").Append(" [").Append(source.Schema).Append("].[").Append(source.Name).Append("] dst"); }
public override void Run(TextWriter writer, Expression source) { writer.Append(source.Value).Space().EscapeSql(source.Alias); }
private void SqlReplace(string sql, char paramPrefix, TextWriter builder, Func <string, string> replace) { char endChar = '\0'; int i = 0; var paramName = new StringBuilder(32); int lastWrite = 0; while (i < sql.Length) { if (endChar == '\0') { switch (sql[i]) { case '\'': endChar = '\''; break; case '"': endChar = '"'; break; case '[': endChar = ']'; break; case '-': if (i + 1 < sql.Length && sql[i + 1] == '-') { endChar = '\n'; } break; case '/': if (i + 1 < sql.Length && sql[i + 1] == '*') { endChar = '/'; } break; } if (sql[i] == paramPrefix) { builder.Append(sql.Substring(lastWrite, i - lastWrite)); i++; paramName.Length = 0; while (i < sql.Length && (Char.IsLetterOrDigit(sql[i]) || sql[i] == '_')) { paramName.Append(sql[i]); i++; } builder.Append(replace.Invoke(paramName.ToString())); lastWrite = i; i--; } } else if ((endChar == '\n' && sql[i] == '\r') || (endChar == '/' && sql[i] == '*' && i + 1 < sql.Length && sql[i + 1] == '/') || (sql[i] == endChar)) { endChar = '\0'; } i++; } if ((i - lastWrite) > 0) { builder.Append(sql.Substring(lastWrite, i - lastWrite)); } }