Skip to content

Commit 357ba8b

Browse files
authored
Merge pull request #13 from QuickWrite/develop
Version `0.2.3-alpha`
2 parents fdca48a + 3dee503 commit 357ba8b

34 files changed

+169
-125
lines changed

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
distribution: adopt
6262

6363
- name: Build with Maven
64-
run: mvn --batch-mode --update-snapshots verify
64+
run: mvn -B package --file pom.xml
6565

6666
- name: Perform CodeQL Analysis
6767
uses: github/codeql-action/analyze@v2

.github/workflows/maven-deploy.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ jobs:
1616
server-id: cloudsmith
1717
server-username: MAVEN_USERNAME
1818
server-password: MAVEN_PASSWORD
19+
- name: Build with Maven
20+
run: mvn -B package --file pom.xml
1921
- name: Publish package
20-
run: mvn --batch-mode deploy
22+
run: mvn deploy
2123
env:
2224
MAVEN_USERNAME: ${{ secrets.CLOUDSMITH_USERNAME }}
2325
MAVEN_PASSWORD: ${{ secrets.CLOUDSMITH_TOKEN }}

.github/workflows/maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
java-version: '16'
2727
distribution: adopt
2828
- name: Build with Maven
29-
run: mvn --batch-mode --update-snapshots verify
29+
run: mvn -B package --file pom.xml
3030
- name: Create necessary directories
3131
run: mkdir staging && cp target/*.jar staging
3232
- name: Upload artifact

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>net.quickwrite</groupId>
88
<artifactId>fluent4j</artifactId>
9-
<version>0.2.2-alpha</version>
9+
<version>0.2.3-alpha</version>
1010
<build>
1111
<plugins>
1212
<plugin>

src/main/java/net/quickwrite/fluent4j/ast/FluentBase.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,15 @@ public String getIdentifier() {
8989
}
9090

9191
@Override
92-
public CharSequence getResult(final AccessorBundle bundle) {
92+
public CharSequence getResult(final AccessorBundle bundle, final int recursionDepth) {
9393
if (this.fluentElements.size() == 1) {
94-
return this.fluentElements.get(0).getResult(bundle);
94+
return this.fluentElements.get(0).getResult(bundle, recursionDepth - 1);
9595
}
9696

9797
final StringBuilder builder = new StringBuilder();
9898

9999
for (final FluentElement element : this.fluentElements) {
100-
builder.append(element.getResult(bundle));
100+
builder.append(element.getResult(bundle, recursionDepth - 1));
101101
}
102102

103103
return builder;

src/main/java/net/quickwrite/fluent4j/ast/FluentElement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ public interface FluentElement {
4242
* it has been called from.
4343
*
4444
* @param bundle The bundle that is getting passed down
45+
* @param recursionDepth The amount of recursive calls that can still be made
4546
* @return The {@link CharSequence} value of the argument with the parameters
4647
*/
47-
CharSequence getResult(final AccessorBundle bundle);
48+
CharSequence getResult(final AccessorBundle bundle, final int recursionDepth);
4849
}

src/main/java/net/quickwrite/fluent4j/ast/FluentTextElement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public String stringValue() {
8282
}
8383

8484
@Override
85-
public CharSequence getResult(AccessorBundle bundle) {
85+
public CharSequence getResult(final AccessorBundle bundle, final int recursionDepth) {
8686
return this.text;
8787
}
8888

src/main/java/net/quickwrite/fluent4j/ast/FluentVariant.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public String stringValue() {
5353
return identifier.stringValue();
5454
}
5555

56-
public CharSequence getResult(AccessorBundle bundle) {
57-
return this.content.getResult(bundle);
56+
public CharSequence getResult(final AccessorBundle bundle, final int recursionDepth) {
57+
return this.content.getResult(bundle, recursionDepth - 1);
5858
}
5959

6060
@Override

src/main/java/net/quickwrite/fluent4j/ast/placeable/AttributeReference.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.quickwrite.fluent4j.ast.placeable.base.FluentArgumentResult;
77
import net.quickwrite.fluent4j.ast.placeable.base.FluentPlaceable;
88
import net.quickwrite.fluent4j.ast.placeable.base.FluentSelectable;
9+
import net.quickwrite.fluent4j.exception.RecursionDepthReachedException;
910
import net.quickwrite.fluent4j.util.StringSlice;
1011
import net.quickwrite.fluent4j.util.args.FluentArgs;
1112
import net.quickwrite.fluent4j.util.bundle.DirectFluentBundle;
@@ -42,7 +43,7 @@ public String stringValue() {
4243
}
4344

4445
@Override
45-
public CharSequence getResult(final AccessorBundle bundle) {
46+
public CharSequence getResult(final AccessorBundle bundle, int recursionDepth) {
4647
final FluentMessage fluentMessage = this.getMessage(bundle.getBundle(), reference.stringValue());
4748
if (fluentMessage == null) {
4849
return getErrorString();
@@ -54,11 +55,11 @@ public CharSequence getResult(final AccessorBundle bundle) {
5455
return getErrorString();
5556
}
5657

57-
return attribute.getResult(bundle);
58+
return attribute.getResult(bundle, recursionDepth - 1);
5859
}
5960

6061
@Override
61-
public FluentElement getArgumentResult(final AccessorBundle bundle) {
62+
public FluentElement getArgumentResult(final AccessorBundle bundle, int recursionDepth) {
6263
final FluentMessage fluentMessage = this.getMessage(bundle.getBundle(), reference.stringValue());
6364
if (fluentMessage == null) {
6465
return this;
@@ -70,12 +71,10 @@ public FluentElement getArgumentResult(final AccessorBundle bundle) {
7071
return this;
7172
}
7273

73-
if (bundle.getAccessedStorage().alreadyAccessed(attribute)) {
74-
return this;
74+
if (recursionDepth <= 0) {
75+
throw new RecursionDepthReachedException();
7576
}
7677

77-
bundle.getAccessedStorage().addElement(attribute);
78-
7978
final List<FluentElement> elementList = attribute.getElements();
8079

8180
if (elementList.size() != 1) {

src/main/java/net/quickwrite/fluent4j/ast/placeable/FunctionReference.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,17 @@ public FunctionReference(final String functionName, final FluentArgs arguments)
2020
}
2121

2222
@Override
23-
public FluentElement getArgumentResult(final AccessorBundle bundle) {
23+
public FluentElement getArgumentResult(final AccessorBundle bundle, int recursionDepth) {
2424
try {
2525
return bundle
2626
.getBundle()
2727
.getFunction(this.functionName)
2828
.orElseThrow()
29-
.getResult(bundle, (FunctionFluentArgs) this.getArguments(bundle));
29+
.getFunctionResult(
30+
bundle,
31+
(FunctionFluentArgs) this.getArguments(bundle, recursionDepth),
32+
recursionDepth - 1
33+
);
3034
} catch (final Exception exception) {
3135
return new StringLiteral("{" + functionName + "()}");
3236
}
@@ -70,11 +74,12 @@ protected boolean check(String string) {
7074
* this function will return <code>{NUMBER()}</code>.
7175
*
7276
*
73-
* @param bundle@return The result of the function with the specific parameters
77+
* @param bundle @return The result of the function with the specific parameters
78+
* @param recursionDepth The amount of recursive calls that can be made
7479
*/
7580
@Override
76-
public CharSequence getResult(AccessorBundle bundle) {
77-
return this.getArgumentResult(bundle).getResult(bundle);
81+
public CharSequence getResult(AccessorBundle bundle, final int recursionDepth) {
82+
return this.getArgumentResult(bundle, recursionDepth - 1).getResult(bundle, recursionDepth - 1);
7883
}
7984

8085
@Override

0 commit comments

Comments
 (0)