public static void WriteImport(CodeTextBuilder code, ImportDirective import) { code.Write("import "); if (import.AsDefault != null) { code.Write(import.AsDefault.Name); } else if (import.AsNamespace != null) { code.Write($"* as {import.AsNamespace.Name}"); } else if (import.AsTuple != null) { JavaScriptExpressionWriter.WriteTuple(code, import.AsTuple); } if (import.From != null) { code.Write($" from '{import.From.GetModulePath()}'"); } else if (import.What != null) { code.Write($"'{import.What.GetModulePath()}'"); } code.WriteLine(";"); }
public static void WriteClass(CodeTextBuilder code, TypeMember type) { code.WriteLine($"class {type.Name} {{"); code.Indent(1); type.Members.ForEach((member, index) => { if (index > 0) { code.WriteLine(); } JavaScriptMemberWriter.WriteMember(code, member); }); code.Indent(-1); code.WriteLine("}"); }
private void WriteMembers(ModuleMember module) { foreach (var member in module.Members) { _code.WriteLine(); JavaScriptMemberWriter.WriteMember(_code, member); } }
public static void WriteStatementLine(CodeTextBuilder code, AbstractStatement statement) { WriteStatement(code, statement); if (!(statement is BlockStatement)) { code.WriteLine(";"); } }
public static void WriteFunction(CodeTextBuilder code, MethodMember method) { WriteModifiers(code, method); code.Write(method.Name.GetSealedOrCased( CasingStyle.Camel, sealOrigin: IdentifierName.OriginKind.Generator, sealLanguage: LanguageInfo.Entries.JavaScript())); WriteParameters(code, method.Signature); WriteBody(code, method.Body); code.WriteLine(); }
private static void WriteIf(CodeTextBuilder code, IfStatement statement) { code.Write("if ("); JavaScriptExpressionWriter.WriteExpression(code, statement.Condition); code.WriteLine(") "); WriteBlockInsideBraces(code, statement.ThenBlock); if (statement.ElseBlock != null) { WriteBlockInsideBraces(code, statement.ElseBlock); } }
private static void WriteBody(CodeTextBuilder code, BlockStatement body) { code.WriteLine("{"); code.Indent(1); foreach (var statement in body.Statements) { JavaScriptStatementWriter.WriteStatementLine(code, statement); } code.Indent(-1); code.Write("}"); }
public void WriteModule(ModuleMember module, bool privateScope = false) { _code = new CodeTextBuilder(_output.TextOptions); WriteImports(module); if (privateScope) { _code.WriteLine("(function() {"); _code.Indent(1); } WriteMembers(module); WriteGlobalBlock(module); if (privateScope) { _code.Indent(-1); _code.WriteLine("}());"); } _output.AddSourceFile(module.FolderPath, $"{module.Name.ToString(CasingStyle.Kebab)}.js", _code.ToString()); }
private static void WriteRawCode(CodeTextBuilder code, RawCodeStatement raw) { code.WriteLine(raw.Code); }