Vuo  2.0.0
VuoTextComparison.c
Go to the documentation of this file.
1 
10 #include "type.h"
11 
13 #ifdef VUO_COMPILER
15  "title" : "Text Comparison",
16  "description" : "Parameters for comparing two texts",
17  "keywords" : [ ],
18  "version" : "1.0.0",
19  "dependencies" : [
20  "VuoText",
21  "VuoList_VuoTextComparison",
22  ]
23  });
24 #endif
25 
32 {
33  VuoTextComparison value = { VuoTextComparison_Equals, true, "" };
34 
35  json_object *o;
36  if (json_object_object_get_ex(js, "type", &o))
37  {
38  const char *typeAsString = json_object_get_string(o);
39  if (! strcmp(typeAsString, "equals"))
40  value.type = VuoTextComparison_Equals;
41  else if (! strcmp(typeAsString, "contains"))
42  value.type = VuoTextComparison_Contains;
43  else if (! strcmp(typeAsString, "beginsWith"))
44  value.type = VuoTextComparison_BeginsWith;
45  else if (! strcmp(typeAsString, "endsWith"))
46  value.type = VuoTextComparison_EndsWith;
47  else if (! strcmp(typeAsString, "wildcard"))
48  value.type = VuoTextComparison_MatchesWildcard;
49  else if (! strcmp(typeAsString, "regex"))
50  value.type = VuoTextComparison_MatchesRegEx;
51  }
52 
53  if (json_object_object_get_ex(js, "isCaseSensitive", &o))
54  value.isCaseSensitive = json_object_get_boolean(o);
55 
56  return value;
57 }
58 
64 {
65  json_object *js = json_object_new_object();
66 
67  const char *typeAsString;
68  switch (value.type)
69  {
70  case VuoTextComparison_Equals:
71  typeAsString = "equals";
72  break;
73  case VuoTextComparison_Contains:
74  typeAsString = "contains";
75  break;
76  case VuoTextComparison_BeginsWith:
77  typeAsString = "beginsWith";
78  break;
79  case VuoTextComparison_EndsWith:
80  typeAsString = "endsWith";
81  break;
82  case VuoTextComparison_MatchesWildcard:
83  typeAsString = "wildcard";
84  break;
85  case VuoTextComparison_MatchesRegEx:
86  typeAsString = "regex";
87  break;
88  }
89  json_object_object_add(js, "type", json_object_new_string(typeAsString));
90 
91  json_object_object_add(js, "isCaseSensitive", json_object_new_boolean(value.isCaseSensitive));
92 
93  return js;
94 }
95 
96 #if 0
97 // VuoRuntimeCommunicator::mergeEnumDetails and VuoInputEditorWithEnumMenu::setUpMenuTree
98 // currently assume that types implementing a _getAllowedValues function can be stored in int64_t.
99 // Since VuoTextComparison is a struct, it topples the stack.
100 
104 VuoList_VuoTextComparison VuoTextComparison_getAllowedValues(void)
105 {
107  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_Equals, false, ""});
108  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_Equals, true, ""});
109  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_Contains, false, ""});
110  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_Contains, true, ""});
111  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_BeginsWith, false, ""});
112  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_BeginsWith, true, ""});
113  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_EndsWith, false, ""});
114  VuoListAppendValue_VuoTextComparison(l, (VuoTextComparison){VuoTextComparison_EndsWith, true, ""});
115  VuoTextComparison_MatchesWildcard…
116  VuoTextComparison_MatchesRegEx…
117  return l;
118 }
119 #endif
120 
126 {
127  const char *typeAsString;
128  switch (value.type)
129  {
130  case VuoTextComparison_Equals:
131  typeAsString = "Equals";
132  break;
133  case VuoTextComparison_Contains:
134  typeAsString = "Contains";
135  break;
136  case VuoTextComparison_BeginsWith:
137  typeAsString = "Begins with";
138  break;
139  case VuoTextComparison_EndsWith:
140  typeAsString = "Ends with";
141  break;
142  case VuoTextComparison_MatchesWildcard:
143  typeAsString = "Matches wildcard";
144  break;
145  case VuoTextComparison_MatchesRegEx:
146  typeAsString = "Matches regex";
147  break;
148  }
149 
150  const char *caseAsString = (value.isCaseSensitive ? "case-sensitive" : "not case-sensitive");
151 
152  return VuoText_format("%s (%s)", typeAsString, caseAsString);
153 }