-
Notifications
You must be signed in to change notification settings - Fork 45
/
ForBlock.yaml
97 lines (97 loc) · 2.69 KB
/
ForBlock.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
title: ForBlock
'@id': stencila:ForBlock
nick: frb
extends: CodeExecutable
category: flow
description: Repeat a block content for each item in an array.
status: under-development
markdown:
derive: false
proptest: {}
required:
- variable
- content
core:
- otherwise
- iterations
properties:
variable:
'@id': stencila:variable
description: The name to give to the variable representing each item in the iterated array
type: string
strip: [code]
patch:
formats: [md, myst]
proptest:
min:
description: Generate a fixed variable name.
value: String::from("item")
low:
description: |
Generate a random string of up to 10 alphanumeric characters (and at most one underscore to avoid
a clash with Markdown emphasis).
regex: '[a-zA-Z_][a-zA-Z0-9]{0,9}'
high:
description: |
Generate a random string of up to 100 characters (excluding control characters).
regex: '[^\p{C}]{1,100}'
max:
description: Generate an arbitrary string.
strategy: String::arbitrary()
content:
'@id': stencila:content
description: The content to repeat for each item
type: array
items:
$ref: Block
strip: [code]
walk: true
patch:
formats: [md, myst]
dom:
elem: div
proptest:
min:
description: A single simple paragraph.
value: vec![p([t("For content")])]
low:
description: Generate up to four arbitrary, non-recursive, block nodes.
strategy: vec_blocks_non_recursive(4)
max:
description: Generate up to eight arbitrary, non-recursive, block nodes.
strategy: vec_blocks_non_recursive(8)
otherwise:
'@id': stencila:otherwise
description: The content to render if there are no items
type: array
items:
$ref: Block
strip: [code]
walk: true
patch:
formats: [md, myst]
dom:
elem: div
proptest:
min:
description: No otherwise clause.
value: None
low:
description: Generate up to two arbitrary, non-recursive, block nodes.
strategy: option::of(vec_blocks_non_recursive(2))
max:
description: Generate up to four arbitrary, non-recursive, block nodes.
strategy: option::of(vec_blocks_non_recursive(4))
iterations:
'@id': stencila:iterations
description: The content repeated for each iteration
$comment: |
Usually each item in `iterations` will be a `Section` with `SectionType: Iteration`
but it could be another `Block` type depending upon the implementation.
type: array
items:
$ref: Block
strip: [output]
walk: true
dom:
elem: div