public override ILineObject Generate(GenerationEnvironment env) { var funcName = env.GenerateActionAsActorInit(ActionName); var dir = ThisExpr.Instance.MakeIndex("direction"); if (Direction == CreateBulletDirection.Opposite) { dir = new UnOpExpr(dir, UnOpExpr.Op.Sub); } return(new SimpleBlock(new ILineObject[] { //create t new SimpleLineObject("local t = this.DefaultShotTable();"), //set parent actor new SimpleLineObject("t.flag1 = { wr = this.weakref() };"), //TODO setup t //create actor ThisExpr.Instance.MakeIndex("world2d").MakeIndex("CreateActor").Call( Position.GenerateX(ThisExpr.Instance, env), Position.GenerateY(ThisExpr.Instance, env), dir, ThisExpr.Instance.MakeIndex("u").MakeIndex("uu").MakeIndex("uuu").MakeIndex(funcName), new IdentifierExpr("t") ).Statement(), //clear actor reference (safety) new SimpleLineObject("t.flag1 = null;"), }).Statement()); }
public override ILineObject Generate(GenerationEnvironment env) { return(new SimpleBlock(new ILineObject[] { ThisExpr.Instance.MakeIndex("game").MakeIndex("timeStop").Assign(new ConstNumberExpr(Time)).Statement(), ThisExpr.Instance.MakeIndex("Set_MonoColor").Call().Statement(), }).Statement()); }
public override ILineObject Generate(GenerationEnvironment env) { var funcName = env.GenerateActionAsActorInit(Action); return(ThisExpr.Instance.MakeIndex("hitEffect").Assign( ThisExpr.Instance.MakeIndex("u").MakeIndex("uu").MakeIndex("uuu").MakeIndex(funcName)).Statement()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { Write("\r\n<html>\r\n<body>\r\n<h1>Course</h2>\r\n<table>\r\n "); #line 11 "E:\Git\TestProject\T4Demo3\RuntimeTextTemplate.tt" foreach (string item in Items) { #line default #line hidden Write(" <tr><td>"); #line 13 "E:\Git\TestProject\T4Demo3\RuntimeTextTemplate.tt" Write(ToStringHelper.ToStringWithCulture(Content(item))); #line default #line hidden Write(" </td></tr>\r\n "); #line 14 "E:\Git\TestProject\T4Demo3\RuntimeTextTemplate.tt" } #line default #line hidden Write(" </table>\r\n </body>\r\n </html>\r\n\r\n"); return(GenerationEnvironment.ToString()); }
public void Save() { var dir = Path.Combine(_model.RootPath, _model.Project.Code, $"src/UI/{_model.Project.WebUIDicName}/src/api/components"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (_model.Project.ClassList != null && _model.Project.ClassList.Any()) { foreach (var classModel in _model.Project.ClassList) { _class = classModel; //清空 GenerationEnvironment.Clear(); var content = TransformText(); var filePath = Path.Combine(dir, $"{_class.Name.FirstCharToLower()}.js"); File.WriteAllText(filePath, content); } } }
public void Save() { if (_model.Project.ClassList != null && _model.Project.ClassList.Any()) { foreach (var classModel in _model.Project.ClassList) { _class = classModel; var dir = Path.Combine(_model.RootPath, _model.Project.Code, "src/Library/Domain", _class.Name, "Models"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } _propertyList = classModel.ModelPropertyList .Where(m => m.ModelType == ModelType.Query).ToList(); //清空 GenerationEnvironment.Clear(); var content = TransformText(); var filePath = Path.Combine(dir, $"{_class.Name}QueryModel.cs"); File.WriteAllText(filePath, content); } } }
/// <summary> /// Write text directly into the generated output /// </summary> /// <param name="textToAppend"></param> public void Write(string textToAppend) { if (string.IsNullOrEmpty(textToAppend)) { return; } if (GenerationEnvironment.Length == 0 || endsWithNewline) { GenerationEnvironment.Append(currentIndentField); endsWithNewline = false; } if (textToAppend.EndsWith(Environment.NewLine, StringComparison.CurrentCulture)) { endsWithNewline = true; } if (currentIndentField.Length == 0) { GenerationEnvironment.Append(textToAppend); return; } textToAppend = textToAppend.Replace(Environment.NewLine, Environment.NewLine + currentIndentField); if (endsWithNewline) { GenerationEnvironment.Append(textToAppend, 0, textToAppend.Length - currentIndentField.Length); } else { GenerationEnvironment.Append(textToAppend); } }
public async Task <string> GenerateAsync(DnfClient client, Func <JProperty, bool> filter) { var objects = await RetrieveSObjectsAsync(client) .ConfigureAwait(false); GenerationEnvironment.Append(@"using DotNetForce; using DotNetForce.Schema; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace ").Append(SchemaNamespace).Append(@" {"); GenerateSchema(objects); foreach (var prop in objects.Properties().Where(p => filter?.Invoke(p) != false)) { // await WriteJsonAsync(prop.Name, prop.Value).ConfigureAwait(false); GenerateObject(prop.Name, prop.Value); } GenerationEnvironment.Append(@" }"); return(GenerationEnvironment.ToString()); }
public override ILineObject Generate(GenerationEnvironment env) { var ret = new SimpleBlock(new ILineObject[] { _ClearLabel.Generate(env), _InitCount.Generate(env), _SetMotion.Generate(env), _AdjustDirection.Generate(env), }).Statement(); if (AutoCancel) { if (IsInAir) { ret = new SimpleBlock(new ILineObject[] { ret, _SitCancel.Generate(env), }).Statement(); } else { ret = new SimpleBlock(new ILineObject[] { ret, _FallCancel.Generate(env), }).Statement(); } } return(ret); }
public virtual string TransformText() { GenerationEnvironment = null; Write("\r\nList<ProdLogger> loggers = new List<ProdLogger>();\r\nloggers.Add(example);\r\nPro" + "dWindow window = new ProdWindow(\""); #line 8 "C:\Documents and Settings\PRP9434\My Documents\Projects\produi\ProdUISystem\ProdCodeGenerator\csProdHeader.tt" Write(ToStringHelper.ToStringWithCulture(WindowName)); #line default #line hidden Write("\");\r\n"); #line 9 "C:\Documents and Settings\PRP9434\My Documents\Projects\produi\ProdUISystem\ProdCodeGenerator\csProdHeader.tt" Write(ToStringHelper.ToStringWithCulture(ControlType)); #line default #line hidden Write(" ctrl = new "); #line 9 "C:\Documents and Settings\PRP9434\My Documents\Projects\produi\ProdUISystem\ProdCodeGenerator\csProdHeader.tt" Write(ToStringHelper.ToStringWithCulture(ControlType)); #line default #line hidden Write("(window,\""); #line 9 "C:\Documents and Settings\PRP9434\My Documents\Projects\produi\ProdUISystem\ProdCodeGenerator\csProdHeader.tt" Write(ToStringHelper.ToStringWithCulture(ControlName)); #line default #line hidden Write("\");"); return(GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { Write("#include \"Uniforms.hlsl\"\r\n#include \"Samplers.hlsl\"\r\n#include \"Transform.hlsl\"\r\n\r\n" + "void VS(float4 iPos : POSITION,\r\n #ifdef DIFFMAP\r\n float2 iTexCoord : " + "TEXCOORD0,\r\n #endif\r\n #ifdef VERTEXCOLOR\r\n float4 iColor : COLOR0,\r" + "\n #endif\r\n #ifdef SKINNED\r\n float4 iBlendWeights : BLENDWEIGHT,\r\n " + " int4 iBlendIndices : BLENDINDICES,\r\n #endif\r\n #ifdef INSTANCED\r\n " + " float4x3 iModelInstance : TEXCOORD4,\r\n #endif\r\n #if defined(BILLBOARD)" + " || defined(DIRBILLBOARD)\r\n float2 iSize : TEXCOORD1,\r\n #endif\r\n #i" + "f defined(DIRBILLBOARD) || defined(TRAILBONE)\r\n float3 iNormal : NORMAL,\r" + "\n #endif\r\n #if defined(TRAILFACECAM) || defined(TRAILBONE)\r\n float4" + " iTangent : TANGENT,\r\n #endif\r\n #ifdef DIFFMAP\r\n out float2 oTexCoo" + "rd : TEXCOORD0,\r\n #endif\r\n #ifdef VERTEXCOLOR\r\n out float4 oColor :" + " COLOR0,\r\n #endif\r\n #if defined(D3D11) && defined(CLIPPLANE)\r\n out " + "float oClip : SV_CLIPDISTANCE0,\r\n #endif\r\n out float4 oPos : OUTPOSITION)\r" + "\n{\r\n float4x3 modelMatrix = iModelMatrix;\r\n float3 worldPos = GetWorldPos(" + "modelMatrix);\r\n oPos = GetClipPos(worldPos);\r\n\r\n #if defined(D3D11) && def" + "ined(CLIPPLANE)\r\n oClip = dot(oPos, cClipPlane);\r\n #endif\r\n\r\n #ifde" + "f VERTEXCOLOR\r\n oColor = iColor;\r\n #endif\r\n #ifdef DIFFMAP\r\n " + " oTexCoord = iTexCoord;\r\n #endif\r\n}\r\n\r\nvoid PS(\r\n #if defined(DIFFMAP) || " + "defined(ALPHAMAP)\r\n float2 iTexCoord : TEXCOORD0,\r\n #endif\r\n #ifdef" + " VERTEXCOLOR\r\n float4 iColor : COLOR0,\r\n #endif\r\n #if defined(D3D11" + ") && defined(CLIPPLANE)\r\n float iClip : SV_CLIPDISTANCE0,\r\n #endif\r\n " + " out float4 oColor : OUTCOLOR0)\r\n{\r\n float4 diffColor = cMatDiffColor;\r\n\r\n " + " #ifdef VERTEXCOLOR\r\n diffColor *= iColor;\r\n #endif\r\n\r\n #if (!defi" + "ned(DIFFMAP)) && (!defined(ALPHAMAP))\r\n oColor = diffColor;\r\n #endif\r\n" + " #ifdef DIFFMAP\r\n float4 diffInput = Sample2D(DiffMap, iTexCoord);\r\n " + " #ifdef ALPHAMASK\r\n if (diffInput.a < 0.5)\r\n disc" + "ard;\r\n #endif\r\n oColor = diffColor * diffInput;\r\n #endif\r\n #" + "ifdef ALPHAMAP\r\n float alphaInput = Sample2D(DiffMap, iTexCoord).a;\r\n " + " oColor = float4(diffColor.rgb, diffColor.a * alphaInput);\r\n #endif\r\n}\r\n"); return(GenerationEnvironment.ToString()); }
public void Write(string textToAppend) { // clear new lines Regex lineEndings = new Regex(@"\r\n|\n|\r"); textToAppend = lineEndings.Replace(textToAppend, Environment.NewLine + _currentIndent); // indent new line if (_endWithNewLine) { GenerationEnvironment.Append(_currentIndent); } if (textToAppend.EndsWith(Environment.NewLine + _currentIndent)) { textToAppend = textToAppend.Substring(0, textToAppend.Length - _currentIndent.Length); _endWithNewLine = true; } else { _endWithNewLine = false; } GenerationEnvironment.Append(textToAppend); }
public void Save() { var dir = Path.Combine(_model.RootPath, _model.Project.Code, "src/Library/Infrastructure/Repositories/SqlServer"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (_model.Project.ClassList != null && _model.Project.ClassList.Any()) { foreach (var classModel in _model.Project.ClassList) { _class = classModel; //清空 GenerationEnvironment.Clear(); var content = TransformText(); var filePath = Path.Combine(dir, $"{_class.Name}Repository.cs"); File.WriteAllText(filePath, content); } } }
public void Write(string textToAppend) { // 消除混乱的换行然后顺便在换行处插入缩进 Regex lineEndings = new Regex(@"\r\n|\n|\r"); textToAppend = lineEndings.Replace(textToAppend, Environment.NewLine + _currentIndent); // 从新行开始插入的时候先插入缩进 if (_endWithNewLine) { GenerationEnvironment.Append(_currentIndent); } if (textToAppend.EndsWith(Environment.NewLine + _currentIndent)) { textToAppend = textToAppend.Substring(0, textToAppend.Length - _currentIndent.Length); _endWithNewLine = true; } else { _endWithNewLine = false; } GenerationEnvironment.Append(textToAppend); }
public override ILineObject Generate(GenerationEnvironment env) { List <ILineObject> ret = new List <ILineObject>(); if (CheckInstance != null && CheckInstance.Length != 0) { ret.Add(new ControlBlock(ControlBlockType.If, new BiOpExpr(ActorVariableHelper.GenerateGet(CheckInstance), ThisExpr.Instance.MakeIndex("name"), BiOpExpr.Op.NotEqual), new ILineObject[] { ThisExpr.Instance.MakeIndex("Release").Call().Statement(), }).Statement()); } var ownerActor = new IdentifierExpr("ownerActor"); var x = Position.GenerateX(ownerActor, env); var y = Position.GenerateY(ownerActor, env); var setRotation = ThisExpr.Instance.MakeIndex("rz").Assign(ownerActor.MakeIndex("rz")).Statement(); ret.AddRange(new ILineObject[] { new LocalVarStatement("ownerActor", ActorVariableHelper.GenerateGet("SYS_parent").MakeIndex("wr")), new ControlBlock(ControlBlockType.If, "ownerActor != null", new ILineObject[] { ThisExpr.Instance.MakeIndex("x").Assign(x).Statement(), ThisExpr.Instance.MakeIndex("y").Assign(y).Statement(), IgnoreRotation ? new SimpleLineObject("") : setRotation, }).Statement(), new ControlBlock(ControlBlockType.Else, new ILineObject[] { ThisExpr.Instance.MakeIndex("Release").Call().Statement(), }).Statement(), }); return(new SimpleBlock(ret).Statement()); }
public void GenerateSchema(JObject objects) { GenerationEnvironment.Append(@" public class " + SchemaName + @" { private static " + SchemaName + @" _Instance { get; set; } public static " + SchemaName + @" Instance { get { if (_Instance == null) { _Instance = new " + SchemaName + @"(); } return _Instance; } } public static T Of<T>(Func<" + SchemaName + @", T> func) { return func(Instance); } public static void Of<T>(Func<" + SchemaName + @", T> func, Action<T> action) { action(func(Instance)); } public static TOut Of<T, TOut>(Func<" + SchemaName + @", T> func, Func<T, TOut> getter) { return getter(func(Instance)); } "); foreach (var objName in objects.Properties().Select(p => p.Name)) { GenerationEnvironment.Append(@" public Sf" ).Append(objName).Append(@" ").Append(objName).Append(@" { get { return new Sf").Append(objName).Append(@"(); } } "); } GenerationEnvironment.Append(@" } "); //await GenerateFileAsync("" + SchemaName + @".cs").ConfigureAwait(false); }
public override Expression Generate(GenerationEnvironment env) { BiOpExpr.Op opr; switch (Operator) { case CompareOperator.Equal: opr = BiOpExpr.Op.Equal; break; case CompareOperator.Greater: opr = BiOpExpr.Op.Greater; break; case CompareOperator.GreaterOrEqual: opr = BiOpExpr.Op.GreaterOrEqual; break; case CompareOperator.NotEqual: opr = BiOpExpr.Op.NotEqual; break; default: return(new ConstNumberExpr(0)); } return(new BiOpExpr(Left.Generate(env), Right.Generate(env), opr)); }
public void Save() { var dir = Path.Combine(_model.RootPath, "src/Web/Controllers"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (_model.Module.ClassList != null && _model.Module.ClassList.Any()) { foreach (var classModel in _model.Module.ClassList) { _class = classModel; //清空 GenerationEnvironment.Clear(); var content = TransformText(); var filePath = Path.Combine(dir, $"{_class.Name}Controller.cs"); File.WriteAllText(filePath, content); } } }
/// <summary> /// Writes the namespace (if it has one) and the class and all braces. This function /// will then call WriteNamespaceContent for stuff in that scope and WriteClassContent() /// for everything contained in that scope. /// </summary> public virtual void WriteClassOutline() { this.Write("//------------------------------------------------------------------------------\r" + "\n// <auto-generated>\r\n// "); this.Write(this.ToStringHelper.ToStringWithCulture(Path.GetFileName(m_SaveLocation))); this.Write("\r\n// This code was generated by ScriptForge. To rebuild the code go to \r\n// Proje" + "ct Settings ->Script Forge and on that window hit generate all. Any\r\n// changes " + "made to this script will be overwritten. \r\n// Asset Hash: "); this.Write(this.ToStringHelper.ToStringWithCulture(m_AssetHash)); this.Write("\r\n// </auto-generated>\r\n//-------------------------------------------------------" + "-----------------------\r\n"); bool hasNamespace = !string.IsNullOrEmpty(m_Namespace); if (hasNamespace) { Write("namespace "); WriteLine(m_Namespace); WriteLine("{"); PushIndent(m_Indent); } WriteNamespaceContent(); WriteEnumContent(); { // Start class Write("public "); if (m_IsStaticClass) { Write("static "); } if (m_IsPartialClass) { Write("partial "); } Write("class "); WriteLine(m_ClassName); WriteLine("{"); PushIndent(m_Indent); WriteEnumContent(); WriteClassContent(); WriteHelperFunctions(); PopIndent(); Write("}"); } // End Class if (hasNamespace) { PopIndent(); GenerationEnvironment.AppendLine(); Write("}"); } }
public override Expression Generate(GenerationEnvironment env) { var count = ThisExpr.Instance.MakeIndex("count"); return(new BiOpExpr( new BiOpExpr(count, Divisor.Generate(env), BiOpExpr.Op.Mod), Mod.Generate(env), BiOpExpr.Op.Equal)); }
public void WriteLines(IEnumerable <string> strings) { foreach (var s in strings) { GenerationEnvironment.Append(currentIndent); GenerationEnvironment.AppendLine(s); } }
private void SaveOutput(String filename) { /* "this" refers to the T4 TextTransformation instance that's producing the output. * See https://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TextTemplating.TextTransformation.aspx. */ Directory.CreateDirectory(Path.GetDirectoryName(filename)); File.Delete(filename); File.WriteAllText(filename, this.GenerationEnvironment.ToString()); GenerationEnvironment.Clear(); }
protected void Write(string textToAppend) { if (string.IsNullOrEmpty(textToAppend)) { return; } GenerationEnvironment.Append(textToAppend); }
public override ILineObject Generate(GenerationEnvironment env) { var ret = ThisExpr.Instance.MakeIndex("SetMotion").Call( ThisExpr.Instance.MakeIndex("motion"), new BiOpExpr(ThisExpr.Instance.MakeIndex("keyTake"), new ConstNumberExpr(1), BiOpExpr.Op.Add) ).Statement(); return(SetMotionEffectHelper.Generate(env, ret)); }
public override ILineObject Generate(GenerationEnvironment env) { var id = env.GetActionID(Animation); var segment = new BiOpExpr(ThisExpr.Instance.MakeIndex("rand").Call(), new ConstNumberExpr(SegmentCount), BiOpExpr.Op.Mod); var ret = ThisExpr.Instance.MakeIndex("SetMotion").Call(new ConstNumberExpr(id), segment).Statement(); return(SetMotionEffectHelper.Generate(env, ret)); }
private void SaveGeneratedCodeAsFile(string fileName) { string dir = Path.GetDirectoryName(Host.TemplateFile); string outputFilePath = Path.Combine(dir, fileName); File.WriteAllText(outputFilePath, GenerationEnvironment.ToString()); GenerationEnvironment.Clear(); }
/// <summary> /// Validates and then performs the variable replacements in the given template /// </summary> /// <returns>Evaluated template</returns> public string Print() { if (!Validate()) { return(null); } GenerationEnvironment.Clear(); return(TransformText()); }
public override Expression Generate(GenerationEnvironment env) { var level = (int)Math.Ceiling((Max - Min) / Step) + 1; return(new BiOpExpr(new ConstNumberExpr(Min), new BiOpExpr( new BiOpExpr(ThisExpr.Instance.MakeIndex("rand").Call(), new ConstNumberExpr(level), BiOpExpr.Op.Mod), new ConstNumberExpr(Step), BiOpExpr.Op.Multiply), BiOpExpr.Op.Add)); }
public string Generate(string nameSpace, string className) { Namespace = nameSpace; ClassName = className; Effects = _GenerateEffectsDictionary(); GenerationEnvironment.Clear(); return(TransformText()); }
protected void BlankLine(ref bool first) { if (first) { first = false; } else { GenerationEnvironment.AppendLine(); } }