| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
| -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(); +   } +} | 


