MinitScript  0.9.31 PRE-BETA
TimeMethods.cpp
Go to the documentation of this file.
1 #include <span>
2 
8 
9 using std::span;
10 
12 
14 
17 
18 void TimeMethods::registerConstants(MinitScript* minitScript) {
19 }
20 
21 void TimeMethods::registerMethods(MinitScript* minitScript) {
22  // time
23  {
24  //
25  class MethodTimeGetCurrentMillis: public MinitScript::Method {
26  private:
27  MinitScript* minitScript { nullptr };
28  public:
29  MethodTimeGetCurrentMillis(MinitScript* minitScript):
30  MinitScript::Method({}, MinitScript::TYPE_INTEGER),
31  minitScript(minitScript) {}
32  const string getMethodName() override {
33  return "time.getCurrentMillis";
34  }
35  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
36  if (arguments.size() == 0) {
37  returnValue.setValue(_Time::getCurrentMillis());
38  } else {
39  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
40  }
41  }
42  };
43  minitScript->registerMethod(new MethodTimeGetCurrentMillis(minitScript));
44  }
45  {
46  //
47  class MethodTimeGetAsString: public MinitScript::Method {
48  private:
49  MinitScript* minitScript { nullptr };
50  public:
51  MethodTimeGetAsString(MinitScript* minitScript):
53  {
54  { .type = MinitScript::TYPE_STRING, .name = "format", .optional = true, .reference = false, .nullable = false }
55  },
56  MinitScript::TYPE_STRING
57  ),
58  minitScript(minitScript) {}
59  const string getMethodName() override {
60  return "time.getAsString";
61  }
62  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
63  string format = "%Y-%m-%d %H:%M:%S";
64  if ((arguments.size() == 0 || arguments.size() == 1) &&
65  MinitScript::getStringValue(arguments, 0, format, true) == true) {
66  returnValue.setValue(_Time::getAsString(format));
67  } else {
68  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
69  }
70  }
71  };
72  minitScript->registerMethod(new MethodTimeGetAsString(minitScript));
73  }
74 }
#define MINITSCRIPT_METHODUSAGE_COMPLAIN(methodName)
Definition: MinitScript.h:59
void setValue(const Variable &variable)
Set value from given variable into variable.
Definition: MinitScript.h:1618
void registerMethod(Method *method)
Register method.
MinitScript script time methods.
Definition: TimeMethods.h:12
Time utility class.
Definition: Time.h:20
static string getAsString(const string &format="%Y-%m-%d %H:%M:%S")
Get date/time as string.
Definition: Time.h:36
static int64_t getCurrentMillis()
Retrieve current time in milliseconds.
Definition: Time.h:27