Skip to content

Commit 7da2d0c

Browse files
committed
ok
1 parent 0d27a5d commit 7da2d0c

File tree

6 files changed

+149
-155
lines changed

6 files changed

+149
-155
lines changed

docs/syntax/applies.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,3 +383,36 @@ applies_to:
383383
---
384384
```
385385
This allows you to annotate various facets as defined in [](../migration/versioning.md)
386+
387+
## Examples
388+
389+
### Stack
390+
391+
| `applies_to` | result |
392+
|--------------------------------------------|--------------------------------------|
393+
| `` {applies_to}`stack: ` `` | {applies_to}`stack: ` |
394+
| `` {applies_to}`stack: preview` `` | {applies_to}`stack: preview` |
395+
| `` {applies_to}`stack: preview 8.18` `` | {applies_to}`stack: preview 8.18` |
396+
| `` {applies_to}`stack: preview 9.0` `` | {applies_to}`stack: preview 9.0` |
397+
| `` {applies_to}`stack: preview 9.1` `` | {applies_to}`stack: preview 9.1` |
398+
| `` {applies_to}`stack: preview 99.0` `` | {applies_to}`stack: preview 99.0` |
399+
| `` {applies_to}`stack: ga` `` | {applies_to}`stack: ga` |
400+
| `` {applies_to}`stack: ga 8.18` `` | {applies_to}`stack: ga 8.18` |
401+
| `` {applies_to}`stack: ga 9.0` `` | {applies_to}`stack: ga 9.0` |
402+
| `` {applies_to}`stack: ga 9.1` `` | {applies_to}`stack: ga 9.1` |
403+
| `` {applies_to}`stack: ga 99.0` `` | {applies_to}`stack: ga 99.0` |
404+
| `` {applies_to}`stack: beta` `` | {applies_to}`stack: beta` |
405+
| `` {applies_to}`stack: beta 8.18` `` | {applies_to}`stack: beta 8.18` |
406+
| `` {applies_to}`stack: beta 9.0` `` | {applies_to}`stack: beta 9.0` |
407+
| `` {applies_to}`stack: beta 9.1` `` | {applies_to}`stack: beta 9.1` |
408+
| `` {applies_to}`stack: beta 99.` `` | {applies_to}`stack: beta 99.0` |
409+
| `` {applies_to}`stack: deprecated` `` | {applies_to}`stack: deprecated` |
410+
| `` {applies_to}`stack: deprecated 8.18` `` | {applies_to}`stack: deprecated 8.18` |
411+
| `` {applies_to}`stack: deprecated 9.0` `` | {applies_to}`stack: deprecated 9.0` |
412+
| `` {applies_to}`stack: deprecated 9.1` `` | {applies_to}`stack: deprecated 9.1` |
413+
| `` {applies_to}`stack: deprecated 99.0` `` | {applies_to}`stack: deprecated 99.0` |
414+
| `` {applies_to}`stack: removed` `` | {applies_to}`stack: removed` |
415+
| `` {applies_to}`stack: removed 8.18` `` | {applies_to}`stack: removed 8.18` |
416+
| `` {applies_to}`stack: removed 9.0` `` | {applies_to}`stack: removed 9.0` |
417+
| `` {applies_to}`stack: removed 9.1` `` | {applies_to}`stack: removed 9.1` |
418+
| `` {applies_to}`stack: removed 99.0` `` | {applies_to}`stack: removed 99.0` |

src/Elastic.Markdown/Myst/FrontMatter/ApplicableTo.cs

Lines changed: 49 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -313,37 +313,27 @@ private static bool TryGetDeployment(Dictionary<object, object?> dictionary, Lis
313313
applicability = null;
314314
var d = new DeploymentApplicability();
315315
var assigned = false;
316-
if (TryGetApplicabilityOverTime(dictionary, "ece", diagnostics, out var ece))
317-
{
318-
d.Ece = ece;
319-
assigned = true;
320-
}
321-
322-
if (TryGetApplicabilityOverTime(dictionary, "eck", diagnostics, out var eck))
323-
{
324-
d.Eck = eck;
325-
assigned = true;
326-
}
327316

328-
if (TryGetApplicabilityOverTime(dictionary, "ess", diagnostics, out var ess))
317+
var mapping = new Dictionary<string, Action<AppliesCollection?>>
329318
{
330-
d.Ess = ess;
331-
assigned = true;
332-
}
319+
{ "ece", a => d.Ece = a },
320+
{ "eck", a => d.Eck = a },
321+
{ "ess", a => d.Ess = a },
322+
{ "self", a => d.Self = a }
323+
};
333324

334-
if (TryGetApplicabilityOverTime(dictionary, "self", diagnostics, out var self))
325+
foreach (var (key, action) in mapping)
335326
{
336-
d.Self = self;
327+
if (!TryGetApplicabilityOverTime(dictionary, key, diagnostics, out var collection))
328+
continue;
329+
action(collection);
337330
assigned = true;
338331
}
339332

340-
if (assigned)
341-
{
342-
applicability = d;
343-
return true;
344-
}
345-
346-
return false;
333+
if (!assigned)
334+
return false;
335+
applicability = d;
336+
return true;
347337
}
348338

349339
private static bool TryGetProjectApplicability(Dictionary<object, object?> dictionary,
@@ -353,21 +343,19 @@ private static bool TryGetProjectApplicability(Dictionary<object, object?> dicti
353343
applicability = null;
354344
var serverlessAvailability = new ServerlessProjectApplicability();
355345
var assigned = false;
356-
if (TryGetApplicabilityOverTime(dictionary, "elasticsearch", diagnostics, out var elasticsearch))
357-
{
358-
serverlessAvailability.Elasticsearch = elasticsearch;
359-
assigned = true;
360-
}
361346

362-
if (TryGetApplicabilityOverTime(dictionary, "observability", diagnostics, out var observability))
347+
var mapping = new Dictionary<string, Action<AppliesCollection?>>
363348
{
364-
serverlessAvailability.Observability = observability;
365-
assigned = true;
366-
}
349+
["elasticsearch"] = a => serverlessAvailability.Elasticsearch = a,
350+
["observability"] = a => serverlessAvailability.Observability = a,
351+
["security"] = a => serverlessAvailability.Security = a
352+
};
367353

368-
if (TryGetApplicabilityOverTime(dictionary, "security", diagnostics, out var security))
354+
foreach (var (key, action) in mapping)
369355
{
370-
serverlessAvailability.Security = security;
356+
if (!TryGetApplicabilityOverTime(dictionary, key, diagnostics, out var collection))
357+
continue;
358+
action(collection);
371359
assigned = true;
372360
}
373361

@@ -384,99 +372,35 @@ private static bool TryGetProductApplicability(Dictionary<object, object?> dicti
384372
applicability = null;
385373
var productAvailability = new ProductApplicability();
386374
var assigned = false;
387-
if (TryGetApplicabilityOverTime(dictionary, "ecctl", diagnostics, out var ecctl))
388-
{
389-
productAvailability.Ecctl = ecctl;
390-
assigned = true;
391-
}
392-
393-
if (TryGetApplicabilityOverTime(dictionary, "curator", diagnostics, out var curator))
394-
{
395-
productAvailability.Curator = curator;
396-
assigned = true;
397-
}
398-
399-
if (TryGetApplicabilityOverTime(dictionary, "apm_agent_dotnet", diagnostics, out var apmAgentDotnet))
400-
{
401-
productAvailability.ApmAgentDotnet = apmAgentDotnet;
402-
assigned = true;
403-
}
404-
405-
if (TryGetApplicabilityOverTime(dictionary, "apm_agent_go", diagnostics, out var apmAgentGo))
406-
{
407-
productAvailability.ApmAgentGo = apmAgentGo;
408-
assigned = true;
409-
}
410-
411-
if (TryGetApplicabilityOverTime(dictionary, "apm_agent_java", diagnostics, out var apmAgentJava))
412-
{
413-
productAvailability.ApmAgentJava = apmAgentJava;
414-
assigned = true;
415-
}
416375

417-
if (TryGetApplicabilityOverTime(dictionary, "apm_agent_node", diagnostics, out var apmAgentNode))
376+
var mapping = new Dictionary<string, Action<AppliesCollection?>>
418377
{
419-
productAvailability.ApmAgentNode = apmAgentNode;
420-
assigned = true;
421-
}
422-
423-
if (TryGetApplicabilityOverTime(dictionary, "apm_agent_python", diagnostics, out var apmAgentPython))
424-
{
425-
productAvailability.ApmAgentPython = apmAgentPython;
426-
assigned = true;
427-
}
428-
429-
if (TryGetApplicabilityOverTime(dictionary, "apm_agent_ruby", diagnostics, out var apmAgentRuby))
430-
{
431-
productAvailability.ApmAgentRuby = apmAgentRuby;
432-
assigned = true;
433-
}
434-
435-
if (TryGetApplicabilityOverTime(dictionary, "apm_agent_rum", diagnostics, out var apmAgentRum))
436-
{
437-
productAvailability.ApmAgentRum = apmAgentRum;
438-
assigned = true;
439-
}
440-
441-
if (TryGetApplicabilityOverTime(dictionary, "edot_ios", diagnostics, out var edotIos))
442-
{
443-
productAvailability.EdotIos = edotIos;
444-
assigned = true;
445-
}
446-
447-
if (TryGetApplicabilityOverTime(dictionary, "edot_android", diagnostics, out var edotAndroid))
448-
{
449-
productAvailability.EdotAndroid = edotAndroid;
450-
assigned = true;
451-
}
452-
453-
if (TryGetApplicabilityOverTime(dictionary, "edot_dotnet", diagnostics, out var edotDotnet))
454-
{
455-
productAvailability.EdotDotnet = edotDotnet;
456-
assigned = true;
457-
}
458-
459-
if (TryGetApplicabilityOverTime(dictionary, "edot_java", diagnostics, out var edotJava))
460-
{
461-
productAvailability.EdotJava = edotJava;
462-
assigned = true;
463-
}
464-
465-
if (TryGetApplicabilityOverTime(dictionary, "edot_node", diagnostics, out var edotNode))
466-
{
467-
productAvailability.EdotNode = edotNode;
468-
assigned = true;
469-
}
470-
471-
if (TryGetApplicabilityOverTime(dictionary, "edot_php", diagnostics, out var edotPhp))
472-
{
473-
productAvailability.EdotPhp = edotPhp;
474-
assigned = true;
475-
}
476-
477-
if (TryGetApplicabilityOverTime(dictionary, "edot_python", diagnostics, out var edotPython))
378+
{ "ecctl", a => productAvailability.Ecctl = a },
379+
{ "curator", a => productAvailability.Curator = a },
380+
{ "apm_agent_android", a => productAvailability.ApmAgentAndroid = a },
381+
{ "apm_agent_dotnet", a => productAvailability.ApmAgentDotnet = a },
382+
{ "apm_agent_go", a => productAvailability.ApmAgentGo = a },
383+
{ "apm_agent_ios", a => productAvailability.ApmAgentIos = a },
384+
{ "apm_agent_java", a => productAvailability.ApmAgentJava = a },
385+
{ "apm_agent_node", a => productAvailability.ApmAgentNode = a },
386+
{ "apm_agent_php", a => productAvailability.ApmAgentPhp = a },
387+
{ "apm_agent_python", a => productAvailability.ApmAgentPython = a },
388+
{ "apm_agent_ruby", a => productAvailability.ApmAgentRuby = a },
389+
{ "apm_agent_rum", a => productAvailability.ApmAgentRum = a },
390+
{ "edot_ios", a => productAvailability.EdotIos = a },
391+
{ "edot_android", a => productAvailability.EdotAndroid = a },
392+
{ "edot_dotnet", a => productAvailability.EdotDotnet = a },
393+
{ "edot_java", a => productAvailability.EdotJava = a },
394+
{ "edot_node", a => productAvailability.EdotNode = a },
395+
{ "edot_php", a => productAvailability.EdotPhp = a },
396+
{ "edot_python", a => productAvailability.EdotPython = a }
397+
};
398+
399+
foreach (var (key, action) in mapping)
478400
{
479-
productAvailability.EdotPython = edotPython;
401+
if (!TryGetApplicabilityOverTime(dictionary, key, diagnostics, out var collection))
402+
continue;
403+
action(collection);
480404
assigned = true;
481405
}
482406

tests/authoring/Applicability/AppliesToDirective.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type ``piggy back off yaml formatting`` () =
1717
serverless:
1818
security: ga 9.0.0
1919
elasticsearch: beta 9.1.0
20-
observability: discontinued 9.2.0
20+
observability: removed 9.2.0
2121
```
2222
"""
2323

@@ -30,7 +30,7 @@ serverless:
3030
Serverless=ServerlessProjectApplicability(
3131
Security=AppliesCollection.op_Explicit "ga 9.0.0",
3232
Elasticsearch=AppliesCollection.op_Explicit "beta 9.1.0",
33-
Observability=AppliesCollection.op_Explicit "discontinued 9.2.0"
33+
Observability=AppliesCollection.op_Explicit "removed 9.2.0"
3434
)
3535
))
3636

@@ -40,7 +40,7 @@ type ``plain block`` () =
4040
serverless:
4141
security: ga 9.0.0
4242
elasticsearch: beta 9.1.0
43-
observability: discontinued 9.2.0
43+
observability: removed 9.2.0
4444
apm_agent_dotnet: ga 9.0
4545
apm_agent_node: ga 10.0
4646
```
@@ -55,7 +55,7 @@ apm_agent_node: ga 10.0
5555
Serverless=ServerlessProjectApplicability(
5656
Security=AppliesCollection.op_Explicit "ga 9.0.0",
5757
Elasticsearch=AppliesCollection.op_Explicit "beta 9.1.0",
58-
Observability=AppliesCollection.op_Explicit "discontinued 9.2.0"
58+
Observability=AppliesCollection.op_Explicit "removed 9.2.0"
5959
),
6060
ProductApplicability=ProductApplicability(
6161
ApmAgentDotnet=AppliesCollection.op_Explicit "ga 9.0",

tests/authoring/Applicability/AppliesToFrontMatter.fs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ applies_to:
6060
serverless:
6161
security: ga 9.0.0
6262
elasticsearch: beta 9.1.0
63-
observability: discontinued 9.2.0
63+
observability: removed 9.2.0
6464
"""
6565
[<Fact>]
6666
let ``apply matches expected`` () =
6767
markdown |> appliesTo (ApplicableTo(
6868
Serverless=ServerlessProjectApplicability(
6969
Security=AppliesCollection.op_Explicit "ga 9.0.0",
7070
Elasticsearch=AppliesCollection.op_Explicit "beta 9.1.0",
71-
Observability=AppliesCollection.op_Explicit "discontinued 9.2.0"
71+
Observability=AppliesCollection.op_Explicit "removed 9.2.0"
7272
)
7373
))
7474

@@ -106,7 +106,7 @@ applies_to:
106106
deployment:
107107
eck: ga 9.0
108108
ess: beta 9.1
109-
ece: discontinued 9.2.0
109+
ece: removed 9.2.0
110110
self: unavailable 9.3.0
111111
"""
112112
[<Fact>]
@@ -115,7 +115,7 @@ applies_to:
115115
Deployment=DeploymentApplicability(
116116
Eck=AppliesCollection.op_Explicit "ga 9.0",
117117
Ess=AppliesCollection.op_Explicit "beta 9.1",
118-
Ece=AppliesCollection.op_Explicit "discontinued 9.2.0",
118+
Ece=AppliesCollection.op_Explicit "removed 9.2.0",
119119
Self=AppliesCollection.op_Explicit "unavailable 9.3.0"
120120
)
121121
))
@@ -157,14 +157,14 @@ applies_to:
157157
type ``parses product multiple`` () =
158158
static let markdown = frontMatter """
159159
applies_to:
160-
product: preview 9.5, discontinued 9.7
160+
product: preview 9.5, removed 9.7
161161
"""
162162
[<Fact>]
163163
let ``apply matches expected`` () =
164164
markdown |> appliesTo (ApplicableTo(
165165
Product=AppliesCollection([
166166
Applicability.op_Explicit "preview 9.5";
167-
Applicability.op_Explicit "discontinued 9.7"
167+
Applicability.op_Explicit "removed 9.7"
168168
] |> Array.ofList)
169169
))
170170

@@ -173,12 +173,12 @@ type ``lenient to defining types at top level`` () =
173173
applies_to:
174174
eck: ga 9.0
175175
ess: beta 9.1
176-
ece: discontinued 9.2.0
176+
ece: removed 9.2.0
177177
self: unavailable 9.3.0
178178
security: ga 9.0.0
179179
elasticsearch: beta 9.1.0
180-
observability: discontinued 9.2.0
181-
product: preview 9.5, discontinued 9.7
180+
observability: removed 9.2.0
181+
product: preview 9.5, removed 9.7
182182
apm_agent_dotnet: ga 9.0
183183
ecctl: ga 10.0
184184
stack: ga 9.1
@@ -189,16 +189,16 @@ applies_to:
189189
Deployment=DeploymentApplicability(
190190
Eck=AppliesCollection.op_Explicit "ga 9.0",
191191
Ess=AppliesCollection.op_Explicit "beta 9.1",
192-
Ece=AppliesCollection.op_Explicit "discontinued 9.2.0",
192+
Ece=AppliesCollection.op_Explicit "removed 9.2.0",
193193
Self=AppliesCollection.op_Explicit "unavailable 9.3.0"
194194
),
195195
Serverless=ServerlessProjectApplicability(
196196
Security=AppliesCollection.op_Explicit "ga 9.0.0",
197197
Elasticsearch=AppliesCollection.op_Explicit "beta 9.1.0",
198-
Observability=AppliesCollection.op_Explicit "discontinued 9.2.0"
198+
Observability=AppliesCollection.op_Explicit "removed 9.2.0"
199199
),
200200
Stack=AppliesCollection.op_Explicit "ga 9.1.0",
201-
Product=AppliesCollection.op_Explicit "preview 9.5, discontinued 9.7",
201+
Product=AppliesCollection.op_Explicit "preview 9.5, removed 9.7",
202202
ProductApplicability=ProductApplicability(
203203
ApmAgentDotnet=AppliesCollection.op_Explicit "ga 9.0",
204204
Ecctl=AppliesCollection.op_Explicit "ga 10.0"

0 commit comments

Comments
 (0)