summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2021-08-11 10:50:19 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2021-08-11 10:50:19 +0200
commit198b26c2a3f6e29c7f2232acdac57a564a2577f6 (patch)
treec9333cf1c3cfee06bdd459517b99f25736701b01 /src/core
parent9622619d457bff438cf73f842d1372b7b5464982 (diff)
...
Diffstat (limited to 'src/core')
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/generic/TextJoin.java130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/generic/TextJoin.java b/src/core/src/tonkadur/fate/v1/lang/computation/generic/TextJoin.java
new file mode 100644
index 0000000..4d10497
--- /dev/null
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/generic/TextJoin.java
@@ -0,0 +1,130 @@
+package tonkadur.fate.v1.lang.computation.generic;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import tonkadur.parser.Origin;
+import tonkadur.parser.ParsingError;
+
+import tonkadur.fate.v1.lang.type.Type;
+
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
+import tonkadur.fate.v1.lang.meta.Computation;
+import tonkadur.fate.v1.lang.meta.RecurrentChecks;
+
+import tonkadur.fate.v1.lang.computation.GenericComputation;
+
+public class TextJoin extends GenericComputation
+{
+ public static Collection<String> get_aliases ()
+ {
+ final Collection<String> aliases;
+
+ aliases = new ArrayList<String>();
+
+ aliases.add("join_text");
+ aliases.add("jointext");
+ aliases.add("joinText");
+ aliases.add("text_join");
+ aliases.add("textJoin");
+
+ return aliases;
+ }
+
+ public static GenericComputation build
+ (
+ final Origin origin,
+ final String _alias,
+ final List<Computation> call_parameters
+ )
+ throws Throwable
+ {
+ final Computation text_collection;
+ final Computation link;
+
+ if (call_parameters.size() != 2)
+ {
+ // TODO: Error.
+ System.err.println("Wrong number of params at " + origin.toString());
+
+ return null;
+ }
+
+ text_collection = call_parameters.get(0);
+ link = call_parameters.get(1);
+
+ text_collection.expect_non_string();
+ link.expect_string();
+
+ RecurrentChecks.assert_is_a_collection_of
+ (
+ origin,
+ text_collection.get_type(),
+ origin,
+ Type.TEXT
+ );
+
+ RecurrentChecks.assert_can_be_used_as
+ (
+ link,
+ Type.TEXT
+ );
+
+ return new TextJoin(origin, text_collection, link);
+ }
+
+ /***************************************************************************/
+ /**** MEMBERS **************************************************************/
+ /***************************************************************************/
+ protected final Computation text_collection;
+ protected final Computation link;
+
+ /***************************************************************************/
+ /**** PROTECTED ************************************************************/
+ /***************************************************************************/
+ /**** Constructors *********************************************************/
+ protected TextJoin
+ (
+ final Origin origin,
+ final Computation text_collection,
+ final Computation link
+ )
+ {
+ super(origin, Type.TEXT);
+
+ this.text_collection = text_collection;
+ this.link = link;
+ }
+
+ /***************************************************************************/
+ /**** PUBLIC ***************************************************************/
+ /***************************************************************************/
+
+ /**** Accessors ************************************************************/
+ public Computation get_text_collection ()
+ {
+ return text_collection;
+ }
+
+ public Computation get_link ()
+ {
+ return link;
+ }
+
+ /**** Misc. ****************************************************************/
+ @Override
+ public String toString ()
+ {
+ final StringBuilder sb = new StringBuilder();
+
+ sb.append("(TextJoin ");
+ sb.append(link.toString());
+ sb.append(" ");
+ sb.append(text_collection.toString());
+
+ sb.append(")");
+
+ return sb.toString();
+ }
+}