Function.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package me.hammerle.snuviscript.code;
  2. import me.hammerle.snuviscript.variable.Variable;
  3. import me.hammerle.snuviscript.variable.ArrayVariable;
  4. import me.hammerle.snuviscript.variable.LocalArrayVariable;
  5. public class Function extends InputProvider
  6. {
  7. private final BasicFunction function;
  8. private final InputProvider[] input;
  9. public Function(BasicFunction function, InputProvider[] input)
  10. {
  11. this.function = function;
  12. this.input = input;
  13. }
  14. public InputProvider[] getArguments()
  15. {
  16. return input;
  17. }
  18. @Override
  19. public String toString()
  20. {
  21. StringBuilder sb = new StringBuilder(function.getName());
  22. sb.append("(");
  23. for(InputProvider in : input)
  24. {
  25. sb.append(in);
  26. sb.append(", ");
  27. }
  28. if(input.length > 0)
  29. {
  30. sb.delete(sb.length() - 2, sb.length());
  31. }
  32. sb.append(")");
  33. return sb.toString();
  34. }
  35. @Override
  36. public Object get(Script sc)
  37. {
  38. return function.execute(sc, input);
  39. }
  40. @Override
  41. public Object getArray(Script sc)
  42. {
  43. Object o = function.execute(sc, input);
  44. if(o instanceof ArrayVariable || o instanceof LocalArrayVariable)
  45. {
  46. return o;
  47. }
  48. return null;
  49. }
  50. @Override
  51. public double getDouble(Script sc)
  52. {
  53. return (double) function.execute(sc, input);
  54. }
  55. @Override
  56. public String getString(Script sc)
  57. {
  58. return String.valueOf(function.execute(sc, input));
  59. }
  60. @Override
  61. public boolean getBoolean(Script sc)
  62. {
  63. return (Boolean) function.execute(sc, input);
  64. }
  65. @Override
  66. public Variable getVariable(Script sc)
  67. {
  68. return (Variable) function.execute(sc, input);
  69. }
  70. }