Skip to content

Commit

Permalink
WIP: Implemented custom styled node building
Browse files Browse the repository at this point in the history
  • Loading branch information
elamaunt committed Jul 15, 2021
1 parent 44086ed commit 48bba4b
Show file tree
Hide file tree
Showing 33 changed files with 1,373 additions and 591 deletions.
63 changes: 63 additions & 0 deletions src/GDShrapt.Reader.Tests/BuildingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,68 @@ public void CustomStyleTest()

AssertHelper.CompareCodeStrings(codeToCompare, code);
}

[TestMethod]
public void CustomStyleTest2()
{
var declaration = GD.Declaration.Class(
GD.List.Atributes(
GD.Atribute.Tool(),
GD.Syntax.NewLine,
GD.Atribute.ClassName("Generated"),
GD.Syntax.NewLine,
GD.Atribute.Extends("Node2D")),

GD.Syntax.NewLine,
GD.Syntax.NewLine,

GD.Declaration.Variable(
GD.Keyword.Const,
GD.Syntax.OneSpace,
GD.Syntax.Identifier("my_constant"),
GD.Syntax.OneSpace,
GD.Syntax.Assign,
GD.Syntax.OneSpace,
GD.Syntax.String("Hello World")),

GD.Syntax.NewLine,
GD.Syntax.NewLine,

GD.Declaration.Variable(
GD.Keyword.Onready,
GD.Syntax.OneSpace,
GD.Keyword.Var,
GD.Syntax.OneSpace,
GD.Syntax.Identifier("parameter"),
GD.Syntax.OneSpace,
GD.Syntax.Assign,
GD.Syntax.OneSpace,
GD.Expression.True()),

GD.Syntax.NewLine,
GD.Syntax.NewLine,

GD.Declaration.Method(
GD.Keyword.Func,
GD.Syntax.OneSpace,
GD.Syntax.Identifier("_start"),
GD.Syntax.OpenBracket,
GD.Syntax.CloseBracket,
GD.Syntax.Colon,

GD.Syntax.NewLine,
GD.Syntax.Intendation(1),
GD.Expression.Call(
GD.Expression.Identifier("print"),
GD.Syntax.OpenBracket,
GD.List.Expressions(GD.Expression.String("Hello world")),
GD.Syntax.CloseBracket)));

var code = declaration.ToString();

var codeToCompare = "tool\nclass_name Generated\nextends Node2D\n\nconst my_constant = \"Hello World\"\n\nonready var parameter = true\n\nfunc _start():\n\tprint(\"Hello world\")";

AssertHelper.CompareCodeStrings(codeToCompare, code);
}
}
}
9 changes: 9 additions & 0 deletions src/GDShrapt.Reader/Basics/GDNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@ public abstract class GDNode : GDSyntaxToken,
{
public abstract GDTokensForm Form { get; }

/// <summary>
/// Sets new tokens for the node's form. Tokens may be null
/// </summary>
public GDSyntaxToken[] FormTokensSetter
{
set => Form.SetFormUnsafe(value);
}


public IEnumerable<GDSyntaxToken> Tokens => Form.Direct();
public IEnumerable<GDSyntaxToken> TokensReversed => Form.Reversed();
public IEnumerable<GDNode> Nodes => Tokens.OfType<GDNode>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,27 @@ public static T AddClassNameAtribute<T>(this T receiver, string name)
return receiver;
}

public static T AddClassNameAtribute<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDClassNameAtribute>
{
receiver.HandleReceivedToken(GD.Atribute.ClassName(unsafeTokens));
return receiver;
}

public static T AddExtendsAtribute<T>(this T receiver, string baseTypeName)
where T : ITokenReceiver<GDExtendsAtribute>
{
receiver.HandleReceivedToken(GD.Atribute.Extends(baseTypeName));
return receiver;
}

public static T AddExtendsAtribute<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDExtendsAtribute>
{
receiver.HandleReceivedToken(GD.Atribute.Extends(unsafeTokens));
return receiver;
}

public static T AddExtendsWithPathAtribute<T>(this T receiver, string path)
where T : ITokenReceiver<GDExtendsAtribute>
{
Expand All @@ -39,6 +53,13 @@ public static T AddVariable<T>(this T receiver, Func<GDVariableDeclaration, GDVa
return receiver;
}

public static T AddVariable<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDVariableDeclaration>
{
receiver.HandleReceivedToken(GD.Declaration.Variable(unsafeTokens));
return receiver;
}

public static T AddVariable<T>(this T receiver, string name)
where T : ITokenReceiver<GDVariableDeclaration>
{
Expand Down Expand Up @@ -142,6 +163,13 @@ public static T AddMethod<T>(this T receiver, Func<GDMethodDeclaration, GDMethod
return receiver;
}

public static T AddMethod<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDMethodDeclaration>
{
receiver.HandleReceivedToken(GD.Declaration.Method(unsafeTokens));
return receiver;
}

public static T AddMethod<T>(this T receiver, string name, params GDStatement[] statements)
where T : ITokenReceiver<GDMethodDeclaration>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,13 @@ public static T AddIfExpression<T>(this T receiver, GDExpression condition, GDEx
return receiver;
}

public static T AddIfExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDIfExpression>
{
receiver.HandleReceivedToken(GD.Expression.If(unsafeTokens));
return receiver;
}

public static T AddIfExpression<T>(this T receiver, Func<GDIfExpression, GDIfExpression> setup)
where T : ITokenReceiver<GDIfExpression>
{
Expand All @@ -67,6 +74,13 @@ public static T AddArrayExpression<T>(this T receiver, params GDExpression[] exp
return receiver;
}

public static T AddArrayExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDArrayInitializerExpression>
{
receiver.HandleReceivedToken(GD.Expression.Array(unsafeTokens));
return receiver;
}

public static T AddArrayExpression<T>(this T receiver, Func<GDArrayInitializerExpression, GDArrayInitializerExpression> setup)
where T : ITokenReceiver<GDArrayInitializerExpression>
{
Expand All @@ -81,6 +95,13 @@ public static T AddDictionaryExpression<T>(this T receiver, params GDDictionaryK
return receiver;
}

public static T AddDictionaryExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDDictionaryInitializerExpression>
{
receiver.HandleReceivedToken(GD.Expression.Dictionary(unsafeTokens));
return receiver;
}

public static T AddDictionaryExpression<T>(this T receiver, Func<GDDictionaryInitializerExpression, GDDictionaryInitializerExpression> setup)
where T : ITokenReceiver<GDDictionaryInitializerExpression>
{
Expand Down Expand Up @@ -109,6 +130,13 @@ public static T AddCallExpression<T>(this T receiver, GDExpression caller, param
return receiver;
}

public static T AddCallExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDCallExpression>
{
receiver.HandleReceivedToken(GD.Expression.Call(unsafeTokens));
return receiver;
}

public static T AddCallExpression<T>(this T receiver, Func<GDCallExpression, GDCallExpression> setup)
where T : ITokenReceiver<GDCallExpression>
{
Expand All @@ -123,6 +151,13 @@ public static T AddBracketExpression<T>(this T receiver, Func<GDBracketExpressio
return receiver;
}

public static T AddBracketExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDBracketExpression>
{
receiver.HandleReceivedToken(GD.Expression.Bracket(unsafeTokens));
return receiver;
}

public static T AddBracketExpression<T>(this T receiver, GDExpression inner)
where T : ITokenReceiver<GDBracketExpression>
{
Expand All @@ -137,6 +172,13 @@ public static T AddMemberOperatorExpression<T>(this T receiver, Func<GDMemberOpe
return receiver;
}

public static T AddMemberOperatorExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDMemberOperatorExpression>
{
receiver.HandleReceivedToken(GD.Expression.Member(unsafeTokens));
return receiver;
}

public static T AddMemberOperatorExpression<T>(this T receiver, GDExpression caller, string identifier)
where T : ITokenReceiver<GDMemberOperatorExpression>
{
Expand All @@ -158,6 +200,13 @@ public static T AddIndexerExpression<T>(this T receiver, GDExpression caller, GD
return receiver;
}

public static T AddIndexerExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDIndexerExpression>
{
receiver.HandleReceivedToken(GD.Expression.Indexer(unsafeTokens));
return receiver;
}

public static T AddIndexerExpression<T>(this T receiver, Func<GDIndexerExpression, GDIndexerExpression> setup)
where T : ITokenReceiver<GDIndexerExpression>
{
Expand Down Expand Up @@ -200,6 +249,13 @@ public static T AddReturnExpression<T>(this T receiver)
return receiver;
}

public static T AddReturnExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDReturnExpression>
{
receiver.HandleReceivedToken(GD.Expression.Return(unsafeTokens));
return receiver;
}

public static T AddReturnExpression<T>(this T receiver, Func<GDReturnExpression, GDReturnExpression> setup)
where T : ITokenReceiver<GDReturnExpression>
{
Expand All @@ -221,6 +277,13 @@ public static T AddDualOperatorExpression<T>(this T receiver, GDExpression left,
return receiver;
}

public static T AddDualOperatorExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDDualOperatorExpression>
{
receiver.HandleReceivedToken(GD.Expression.DualOperator(unsafeTokens));
return receiver;
}

public static T AddDualOperatorExpression<T>(this T receiver, Func<GDDualOperatorExpression, GDDualOperatorExpression> setup)
where T : ITokenReceiver<GDDualOperatorExpression>
{
Expand All @@ -235,7 +298,14 @@ public static T AddSingleOperatorExpression<T>(this T receiver, Func<GDSingleOpe
return receiver;
}

public static T AddSingleOperator<T>(this T receiver, GDSingleOperator @operator, GDExpression operand)
public static T AddSingleOperatorExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDSingleOperatorExpression>
{
receiver.HandleReceivedToken(GD.Expression.SingleOperator(unsafeTokens));
return receiver;
}

public static T AddSingleOperatorExpression<T>(this T receiver, GDSingleOperator @operator, GDExpression operand)
where T : ITokenReceiver<GDSingleOperatorExpression>
{
receiver.HandleReceivedToken(GD.Expression.SingleOperator(@operator, operand));
Expand All @@ -249,6 +319,13 @@ public static T AddGetNodeExpression<T>(this T receiver, Func<GDGetNodeExpressio
return receiver;
}

public static T AddGetNodeExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDGetNodeExpression>
{
receiver.HandleReceivedToken(GD.Expression.GetNode(unsafeTokens));
return receiver;
}

public static T AddGetNodeExpression<T>(this T receiver, GDPathList pathList)
where T : ITokenReceiver<GDGetNodeExpression>
{
Expand All @@ -269,6 +346,12 @@ public static T AddNodePathExpression<T>(this T receiver, string path)
receiver.HandleReceivedToken(GD.Expression.NodePath(path));
return receiver;
}
public static T AddNodePathExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDNodePathExpression>
{
receiver.HandleReceivedToken(GD.Expression.NodePath(unsafeTokens));
return receiver;
}

public static T AddNodePathExpression<T>(this T receiver, Func<GDNodePathExpression, GDNodePathExpression> setup)
where T : ITokenReceiver<GDNodePathExpression>
Expand All @@ -284,6 +367,13 @@ public static T AddMatchCaseVariableExpression<T>(this T receiver, Func<GDMatchC
return receiver;
}

public static T AddMatchCaseVariableExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDMatchCaseVariableExpression>
{
receiver.HandleReceivedToken(GD.Expression.MatchCaseVariable(unsafeTokens));
return receiver;
}

public static T AddMatchCaseVariableExpression<T>(this T receiver, string identifier)
where T : ITokenReceiver<GDMatchCaseVariableExpression>
{
Expand All @@ -298,6 +388,13 @@ public static T AddYieldExpression<T>(this T receiver, Func<GDYieldExpression, G
return receiver;
}

public static T AddYieldExpression<T>(this T receiver, params GDSyntaxToken[] unsafeTokens)
where T : ITokenReceiver<GDYieldExpression>
{
receiver.HandleReceivedToken(GD.Expression.Yield(unsafeTokens));
return receiver;
}

public static T AddYieldExpression<T>(this T receiver, params GDExpression[] parameters)
where T : ITokenReceiver<GDYieldExpression>
{
Expand Down
Loading

0 comments on commit 48bba4b

Please sign in to comment.