| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-08-11 10:50:19 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-08-11 10:50:19 +0200 |
| commit | 198b26c2a3f6e29c7f2232acdac57a564a2577f6 (patch) | |
| tree | c9333cf1c3cfee06bdd459517b99f25736701b01 | |
| parent | 9622619d457bff438cf73f842d1372b7b5464982 (diff) | |
...
| -rw-r--r-- | src/core/src/tonkadur/fate/v1/lang/computation/generic/TextJoin.java | 130 |
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(); + } +} |


