Skip to content

Commit c564ca6

Browse files
committed
guides: support verbatim variables
1 parent 9f21816 commit c564ca6

File tree

4 files changed

+42
-98
lines changed

4 files changed

+42
-98
lines changed

generators/src/main/java/com/algolia/codegen/cts/tests/ParametersWithDataType.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,16 @@ public void enhanceParameters(Map<String, Object> parameters, Map<String, Object
9595
}
9696

9797
// Give the stringified version to mustache, for js
98-
bundle.put("parameters", Json.mapper().writeValueAsString(parameters));
98+
bundle.put("parameters", toJSONWithVar(parameters));
9999
bundle.put("parametersWithDataType", parametersWithDataType);
100100
// Also provide a map version for those who know which keys to look for
101101
bundle.put("parametersWithDataTypeMap", parametersWithDataTypeMap);
102102
}
103103

104+
private String toJSONWithVar(Map<String, Object> parameters) throws JsonProcessingException {
105+
return Json.mapper().writeValueAsString(parameters).replaceAll("\"\\$var: (.*?)\"", "$1");
106+
}
107+
104108
private Map<String, Object> traverseParams(
105109
String paramName,
106110
Object param,
@@ -154,6 +158,10 @@ private Map<String, Object> traverseParams(
154158

155159
if (param == null) {
156160
handleNull(spec, testOutput);
161+
} else if (param instanceof String && ((String) param).startsWith("$var: ")) {
162+
// bypass for verbatim variables used in the guides, we don't need to do any validation
163+
testOutput.put("isVerbatim", true);
164+
testOutput.put("value", ((String) param).substring(6));
157165
} else if (spec.getIsArray()) {
158166
handleArray(paramName, param, testOutput, spec, depth);
159167
} else if (spec.getIsEnum()) {
@@ -196,6 +204,10 @@ private Map<String, Object> traverseParamsWithoutSpec(String paramName, Object p
196204

197205
if (param == null) {
198206
handleNull(null, testOutput);
207+
} else if (param instanceof String && ((String) param).startsWith("$var: ")) {
208+
// bypass for verbatim variables used in the guides, we don't need to do any validation
209+
testOutput.put("isVerbatim", true);
210+
testOutput.put("value", ((String) param).substring(6));
199211
} else if (param instanceof List) {
200212
handleArray(paramName, param, testOutput, null, depth);
201213
} else if (param instanceof Map) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import java.io.InputStream;
2+
import java.net.URI;
3+
import java.net.URL;
4+
import java.util.List;
5+
6+
{{> snippets/import}}
7+
8+
import com.fasterxml.jackson.core.type.TypeReference;
9+
import com.fasterxml.jackson.databind.JsonNode;
10+
import com.fasterxml.jackson.databind.ObjectMapper;
11+
12+
public class Main {
13+
public static void main(String[] args) throws Exception {
14+
// Fetch sample dataset
15+
URL url = new URI("https://dashboard.algolia.com/sample_datasets/movie.json").toURL();
16+
InputStream stream = url.openStream();
17+
ObjectMapper mapper = new ObjectMapper();
18+
List<JsonNode> result = mapper.readValue(stream, new TypeReference<List<JsonNode>>() {});
19+
stream.close();
20+
21+
// Connect and authenticate with your Algolia app
22+
{{> snippets/init}}
23+
24+
// Save records in Algolia index
25+
{{#dynamicSnippet}}saveObjectsMovies{{/dynamicSnippet}}
26+
client.close();
27+
}
28+
}

tests/CTS/guides/search.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@
44
"ignoreResponse": true,
55
"parameters": {
66
"indexName": "movies_index",
7-
"objects": [
8-
{
9-
"$var": "objects"
10-
}
11-
]
7+
"objects": "$var: objects"
128
}
139
}
1410
}

yarn.lock

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,6 @@ __metadata:
121121
languageName: node
122122
linkType: soft
123123

124-
"@algolia/client-abtesting@link:../../clients/algoliasearch-client-javascript/packages/client-abtesting::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
125-
version: 0.0.0-use.local
126-
resolution: "@algolia/client-abtesting@link:../../clients/algoliasearch-client-javascript/packages/client-abtesting::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
127-
languageName: node
128-
linkType: soft
129-
130124
"@algolia/client-analytics@link:../../../clients/algoliasearch-client-javascript/packages/client-analytics::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
131125
version: 0.0.0-use.local
132126
resolution: "@algolia/client-analytics@link:../../../clients/algoliasearch-client-javascript/packages/client-analytics::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -139,12 +133,6 @@ __metadata:
139133
languageName: node
140134
linkType: soft
141135

142-
"@algolia/client-analytics@link:../../clients/algoliasearch-client-javascript/packages/client-analytics::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
143-
version: 0.0.0-use.local
144-
resolution: "@algolia/client-analytics@link:../../clients/algoliasearch-client-javascript/packages/client-analytics::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
145-
languageName: node
146-
linkType: soft
147-
148136
"@algolia/client-common@link:../../../clients/algoliasearch-client-javascript/packages/client-common::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
149137
version: 0.0.0-use.local
150138
resolution: "@algolia/client-common@link:../../../clients/algoliasearch-client-javascript/packages/client-common::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -157,12 +145,6 @@ __metadata:
157145
languageName: node
158146
linkType: soft
159147

160-
"@algolia/client-common@link:../../clients/algoliasearch-client-javascript/packages/client-common::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
161-
version: 0.0.0-use.local
162-
resolution: "@algolia/client-common@link:../../clients/algoliasearch-client-javascript/packages/client-common::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
163-
languageName: node
164-
linkType: soft
165-
166148
"@algolia/client-insights@link:../../../clients/algoliasearch-client-javascript/packages/client-insights::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
167149
version: 0.0.0-use.local
168150
resolution: "@algolia/client-insights@link:../../../clients/algoliasearch-client-javascript/packages/client-insights::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -175,12 +157,6 @@ __metadata:
175157
languageName: node
176158
linkType: soft
177159

178-
"@algolia/client-insights@link:../../clients/algoliasearch-client-javascript/packages/client-insights::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
179-
version: 0.0.0-use.local
180-
resolution: "@algolia/client-insights@link:../../clients/algoliasearch-client-javascript/packages/client-insights::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
181-
languageName: node
182-
linkType: soft
183-
184160
"@algolia/client-personalization@link:../../../clients/algoliasearch-client-javascript/packages/client-personalization::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
185161
version: 0.0.0-use.local
186162
resolution: "@algolia/client-personalization@link:../../../clients/algoliasearch-client-javascript/packages/client-personalization::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -193,12 +169,6 @@ __metadata:
193169
languageName: node
194170
linkType: soft
195171

196-
"@algolia/client-personalization@link:../../clients/algoliasearch-client-javascript/packages/client-personalization::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
197-
version: 0.0.0-use.local
198-
resolution: "@algolia/client-personalization@link:../../clients/algoliasearch-client-javascript/packages/client-personalization::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
199-
languageName: node
200-
linkType: soft
201-
202172
"@algolia/client-query-suggestions@link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
203173
version: 0.0.0-use.local
204174
resolution: "@algolia/client-query-suggestions@link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -211,12 +181,6 @@ __metadata:
211181
languageName: node
212182
linkType: soft
213183

214-
"@algolia/client-query-suggestions@link:../../clients/algoliasearch-client-javascript/packages/client-query-suggestions::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
215-
version: 0.0.0-use.local
216-
resolution: "@algolia/client-query-suggestions@link:../../clients/algoliasearch-client-javascript/packages/client-query-suggestions::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
217-
languageName: node
218-
linkType: soft
219-
220184
"@algolia/client-search@link:../../../clients/algoliasearch-client-javascript/packages/client-search::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
221185
version: 0.0.0-use.local
222186
resolution: "@algolia/client-search@link:../../../clients/algoliasearch-client-javascript/packages/client-search::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -229,12 +193,6 @@ __metadata:
229193
languageName: node
230194
linkType: soft
231195

232-
"@algolia/client-search@link:../../clients/algoliasearch-client-javascript/packages/client-search::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
233-
version: 0.0.0-use.local
234-
resolution: "@algolia/client-search@link:../../clients/algoliasearch-client-javascript/packages/client-search::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
235-
languageName: node
236-
linkType: soft
237-
238196
"@algolia/ingestion@link:../../../clients/algoliasearch-client-javascript/packages/ingestion::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
239197
version: 0.0.0-use.local
240198
resolution: "@algolia/ingestion@link:../../../clients/algoliasearch-client-javascript/packages/ingestion::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -247,24 +205,12 @@ __metadata:
247205
languageName: node
248206
linkType: soft
249207

250-
"@algolia/ingestion@link:../../clients/algoliasearch-client-javascript/packages/ingestion::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
251-
version: 0.0.0-use.local
252-
resolution: "@algolia/ingestion@link:../../clients/algoliasearch-client-javascript/packages/ingestion::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
253-
languageName: node
254-
linkType: soft
255-
256208
"@algolia/monitoring@link:../../clients/algoliasearch-client-javascript/packages/monitoring::locator=javascript-guides%40workspace%3Aguides%2Fjavascript":
257209
version: 0.0.0-use.local
258210
resolution: "@algolia/monitoring@link:../../clients/algoliasearch-client-javascript/packages/monitoring::locator=javascript-guides%40workspace%3Aguides%2Fjavascript"
259211
languageName: node
260212
linkType: soft
261213

262-
"@algolia/monitoring@link:../../clients/algoliasearch-client-javascript/packages/monitoring::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
263-
version: 0.0.0-use.local
264-
resolution: "@algolia/monitoring@link:../../clients/algoliasearch-client-javascript/packages/monitoring::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
265-
languageName: node
266-
linkType: soft
267-
268214
"@algolia/recommend@link:../../../clients/algoliasearch-client-javascript/packages/recommend::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
269215
version: 0.0.0-use.local
270216
resolution: "@algolia/recommend@link:../../../clients/algoliasearch-client-javascript/packages/recommend::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -277,12 +223,6 @@ __metadata:
277223
languageName: node
278224
linkType: soft
279225

280-
"@algolia/recommend@link:../../clients/algoliasearch-client-javascript/packages/recommend::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
281-
version: 0.0.0-use.local
282-
resolution: "@algolia/recommend@link:../../clients/algoliasearch-client-javascript/packages/recommend::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
283-
languageName: node
284-
linkType: soft
285-
286226
"@algolia/requester-node-http@link:../../../clients/algoliasearch-client-javascript/packages/requester-node-http::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode":
287227
version: 0.0.0-use.local
288228
resolution: "@algolia/requester-node-http@link:../../../clients/algoliasearch-client-javascript/packages/requester-node-http::locator=javascript-playground%40workspace%3Aplayground%2Fjavascript%2Fnode"
@@ -295,12 +235,6 @@ __metadata:
295235
languageName: node
296236
linkType: soft
297237

298-
"@algolia/requester-node-http@link:../../clients/algoliasearch-client-javascript/packages/requester-node-http::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
299-
version: 0.0.0-use.local
300-
resolution: "@algolia/requester-node-http@link:../../clients/algoliasearch-client-javascript/packages/requester-node-http::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
301-
languageName: node
302-
linkType: soft
303-
304238
"@ampproject/remapping@npm:^2.2.0":
305239
version: 2.3.0
306240
resolution: "@ampproject/remapping@npm:2.3.0"
@@ -2658,12 +2592,6 @@ __metadata:
26582592
languageName: node
26592593
linkType: soft
26602594

2661-
"algoliasearch@link:../../clients/algoliasearch-client-javascript/packages/algoliasearch::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript":
2662-
version: 0.0.0-use.local
2663-
resolution: "algoliasearch@link:../../clients/algoliasearch-client-javascript/packages/algoliasearch::locator=javascript-snippets%40workspace%3Asnippets%2Fjavascript"
2664-
languageName: node
2665-
linkType: soft
2666-
26672595
"ansi-escapes@npm:^4.2.1":
26682596
version: 4.3.2
26692597
resolution: "ansi-escapes@npm:4.3.2"
@@ -6000,26 +5928,6 @@ __metadata:
60005928
languageName: unknown
60015929
linkType: soft
60025930

6003-
"javascript-snippets@workspace:snippets/javascript":
6004-
version: 0.0.0-use.local
6005-
resolution: "javascript-snippets@workspace:snippets/javascript"
6006-
dependencies:
6007-
"@algolia/client-abtesting": "link:../../clients/algoliasearch-client-javascript/packages/client-abtesting"
6008-
"@algolia/client-analytics": "link:../../clients/algoliasearch-client-javascript/packages/client-analytics"
6009-
"@algolia/client-common": "link:../../clients/algoliasearch-client-javascript/packages/client-common"
6010-
"@algolia/client-insights": "link:../../clients/algoliasearch-client-javascript/packages/client-insights"
6011-
"@algolia/client-personalization": "link:../../clients/algoliasearch-client-javascript/packages/client-personalization"
6012-
"@algolia/client-query-suggestions": "link:../../clients/algoliasearch-client-javascript/packages/client-query-suggestions"
6013-
"@algolia/client-search": "link:../../clients/algoliasearch-client-javascript/packages/client-search"
6014-
"@algolia/ingestion": "link:../../clients/algoliasearch-client-javascript/packages/ingestion"
6015-
"@algolia/monitoring": "link:../../clients/algoliasearch-client-javascript/packages/monitoring"
6016-
"@algolia/recommend": "link:../../clients/algoliasearch-client-javascript/packages/recommend"
6017-
"@algolia/requester-node-http": "link:../../clients/algoliasearch-client-javascript/packages/requester-node-http"
6018-
algoliasearch: "link:../../clients/algoliasearch-client-javascript/packages/algoliasearch"
6019-
typescript: "npm:5.6.2"
6020-
languageName: unknown
6021-
linkType: soft
6022-
60235931
"jiti@npm:^1.21.6":
60245932
version: 1.21.6
60255933
resolution: "jiti@npm:1.21.6"

0 commit comments

Comments
 (0)