Function.java 1.9 KB

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