From 198b26c2a3f6e29c7f2232acdac57a564a2577f6 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Wed, 11 Aug 2021 10:50:19 +0200 Subject: ... --- .../fate/v1/lang/computation/generic/TextJoin.java | 130 +++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/core/src/tonkadur/fate/v1/lang/computation/generic/TextJoin.java 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 get_aliases () + { + final Collection aliases; + + aliases = new ArrayList(); + + 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 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(); + } +} -- cgit v1.2.3-70-g09d2