|
14 | 14 | "translations": [...#Translation] |
15 | 15 |
|
16 | 16 | // Version constraint: must be in major.minor format (e.g., "1.0", "2.3") |
17 | | -#Version: string |
18 | | -#Version: =~"^\\d+\\.\\d+$" | _|_("Version must be in major.minor format (e.g., '1.0' or '2.3')") |
| 17 | +#Version: =~"^\\d+\\.\\d+$" |
19 | 18 |
|
20 | | -// Valid plate formats for laboratory experiments |
21 | | -#Plateformat: 24 | 48 | 96 | 384 | _|_("Plate format must be one of: 24, 48, 96, or 384") |
| 19 | +// Valid plate formats for laboratory experiments (must be one of: 24, 48, 96, or 384) |
| 20 | +#Plateformat: 24 | 48 | 96 | 384 |
22 | 21 |
|
23 | 22 | // Common fields shared by all location types |
24 | 23 | #AnyLocation: { |
|
31 | 30 | // Whether to apply translations to extracted values (default: false) |
32 | 31 | "translate"?: bool | *false |
33 | 32 |
|
| 33 | + // Optional atomic class specification for type coercion |
| 34 | + "atomicclass"?: #Atom | [...#Atom] | *"character" |
| 35 | + |
34 | 36 | // Allow additional fields for specific location types |
35 | 37 | ... |
36 | 38 | } |
|
42 | 44 |
|
43 | 45 | // List of variables to extract, each with a name and cell reference |
44 | 46 | "variables"!: [...#Variable] |
45 | | - |
46 | | - // Optional atomic class specification for type coercion |
47 | | - "atomicclass"?: #Atom | [...#Atom] | *"character" |
48 | 47 | } |
49 | 48 |
|
50 | 49 | // Range-based location: extracts data from rectangular ranges |
|
57 | 56 |
|
58 | 57 | // List of cell ranges to extract (e.g., "A1:B10") |
59 | 58 | "ranges"!: [...#Range] |
60 | | - |
61 | | - // Optional atomic class specification for type coercion |
62 | | - "atomicclass"?: #Atom | [...#Atom] | *"character" |
63 | 59 | } |
64 | 60 |
|
65 | 61 | // A location can be either cell-based or range-based |
|
83 | 79 | "long"!: string |
84 | 80 | } |
85 | 81 |
|
86 | | -// Atomic data types for type coercion |
87 | | -#Atom: "character" | "date" | "numeric" | _|_("Atomic class must be one of: 'character', 'date', or 'numeric'") |
| 82 | +// Atomic data types for type coercion (must be one of: 'character', 'date', or 'numeric') |
| 83 | +#Atom: "character" | "date" | "numeric" |
88 | 84 |
|
89 | 85 | // Valid spreadsheet range format (e.g., "A1:B10", "C5:Z20") |
90 | | -#Range: string |
91 | | -#Range: =~"^[A-Z]+\\d+:[A-Z]+\\d+$" | _|_("Range must be in format 'A1:B10' (uppercase letters followed by numbers)") |
| 86 | +// Must be uppercase letters followed by numbers, colon, then uppercase letters followed by numbers |
| 87 | +#Range: =~"^[A-Z]+\\d+:[A-Z]+\\d+$" |
92 | 88 |
|
93 | 89 | // Valid spreadsheet cell reference (e.g., "A1", "B23", "Z99") |
94 | | -#Cell: string |
95 | | -#Cell: =~"^[A-Z]+\\d+$" | _|_("Cell reference must be in format 'A1' (uppercase letters followed by numbers)") |
| 90 | +// Must be uppercase letters followed by numbers |
| 91 | +#Cell: =~"^[A-Z]+\\d+$" |
96 | 92 |
|
97 | 93 | // Variable names cannot contain whitespace characters |
98 | | -#VariableName: string |
99 | | -#VariableName: =~"[^\\s]" | _|_("Variable names cannot contain whitespace characters") |
| 94 | +#VariableName: =~"[^\\s]" |
0 commit comments