gdstruct 0.8.0 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f96efc7733498eb16613dbfabaed79b827ce987d
4
- data.tar.gz: 639bc923e3876452c585e585253c1d4b5ebb2dbc
2
+ SHA256:
3
+ metadata.gz: 56fe726a627b002f160a1488d9eed35ca89a34a882131ca98efdf499b0ff3936
4
+ data.tar.gz: 29c8189b56c2405b54971b2bbf019abcb1596898a65de08ba1d532c4de017fa1
5
5
  SHA512:
6
- metadata.gz: b5a43713b959ee3260c8f03e08674ab1263df96bddfc019a31bcaed6e99678577607747e45f0e44ca0a9b84a9e32e615cc05ae5d544b30c6df15ee8031370b76
7
- data.tar.gz: b603543062ed53adaadbd1866d5945a5aa3824e6fd8974e013a4fbf2b99787eb14d3cc58035fa17fc2cd502565afcbfd7c1a16b0f5c53178bd3ddfd1a5c0e65f
6
+ metadata.gz: 1894ff6484f8791c1070051445a121483b4a86117702f691ad5e1655f8fce34f49c4d5c8f6a3cfbf5c129ffe74bc1b5575f3adaee3fd25798b188aaeacaf7017
7
+ data.tar.gz: 65e3f8940dc33ac34e7185b05c064789d05e73e537e7d241ca84552ceb07a0e0e49b0890d2a3251c871b8a4c45c50ae1a0f3247cd37daeb667093968ed3b31bd
@@ -1,62 +1,377 @@
1
1
  # CHANGELOG
2
2
 
3
+ ### 0.9.2 - (2020-07-31)
4
+
5
+ * __change__
6
+ the keyword literal for true is changed to @true; the old literal !true is still working, but is deprecated
7
+ the segil __@__ is more consistent with the overall GDS syntax and the leading __!__
8
+ could be confusing because in many programming languages it is used as a logical negation operator
9
+ the keyword literal for false is changed to @false; the old literal !false is still working, but is deprecated
10
+ the keyword literal for nil is changed to @nil; the old literal !nil is still working, but is deprecated
11
+
12
+ * __internal changes__
13
+ different handling of global variables and context (binding) for embedded Ruby
14
+
15
+ ### 0.9.1 - (2019-08-16)
16
+
17
+ * __feature__
18
+ new syntax style: an array element can be defined as a hash with a key and an array as a value for the key and one or more values for that array on the same line
19
+ multiple values for the array has to be separated by a vertical bar symbol (|)
20
+ that means a colon (:) a key and a comma (,) and one or more values on the same line
21
+ ~~~
22
+ valuespecs ,
23
+ : valuelist , 1 | 2 | 3
24
+
25
+ # => { valuespecs: [ { valuelist: [ 1, 2, 3 ] } ] }
26
+ ~~~
27
+ ~~~
28
+ valuespecs ,
29
+ : valuelist , 1 | 2 | 3
30
+ 4
31
+ 5
32
+
33
+ # => { valuespecs: [ { valuelist: [ 1, 2, 3, 4, 5 ] } ] }
34
+ ~~~
35
+
36
+ * __feature__
37
+ on a nested level: after a comma (,) a colon (:) can follow on the same line
38
+ that means you can create an array and as the first element of this array a hash, everything on the same line
39
+ ~~~
40
+ ,
41
+ , :
42
+
43
+ # => [ [ {} ] ]
44
+ ~~~
45
+ ~~~
46
+ ,
47
+ , :
48
+ k1
49
+ k11 v11
50
+ b
51
+ a
52
+
53
+ # => [ [ { k1: { k11: "v11" } }, "b" ], "a" ]
54
+ ~~~
55
+ additionally a key for the first key-value pair of the hash can also be on this line
56
+ ~~~
57
+ ,
58
+ , : k
59
+
60
+ # => [ [ { k: {} } ] ]
61
+ ~~~
62
+ ~~~
63
+ ,
64
+ , : k1
65
+ k11 v11
66
+ k12 v12
67
+ k2
68
+ k21 v21
69
+ a1
70
+
71
+ # => [ [ { k1: { k11: "v11", k12: "v12" }, k2: { k21: "v21" } } ], "a1" ]
72
+ ~~~
73
+ a first key-value pair of the hash can be on this line
74
+ ~~~
75
+ ,
76
+ , : k v
77
+
78
+ # => [ [ { k: "v" } ] ]
79
+ ~~~
80
+ multiple key-value pairs separated by the vertical bar symbol
81
+ ~~~
82
+ ,
83
+ , : k1 v1 | k2 v2
84
+
85
+ # => [ [ { k1: "v1", k2: "v2" } ] ]
86
+ ~~~
87
+
88
+ * __feature__
89
+ new syntax style: an array element can be defined as a hash with a key and an array as a value for the key on the same line
90
+ that means a colon (:) a key and a comma (,) on the same line
91
+ ~~~
92
+ allvalues ,
93
+ : valueset1 ,
94
+ 100
95
+
96
+ # => { allvalues: [ { valueset1: [ 100 ] } ] }
97
+ ~~~
98
+ ~~~
99
+ k ,
100
+ : k1 ,
101
+ 100
102
+ 200 | 300
103
+ : k2
104
+
105
+ # => { k: [ { k1: [ 100, 200, 300 ] }, { k2: {} } ] }
106
+ ~~~
107
+
108
+ * __feature__
109
+ on top level: after a comma (,) a colon (:) can follow on the same line
110
+ that means you can create an array and as the first element of this array a hash, everything on the same line
111
+ ~~~
112
+ , :
113
+
114
+ # => [ {} ]
115
+ ~~~
116
+ ~~~
117
+ , :
118
+ k1
119
+ k11 v11
120
+ a1
121
+
122
+ # => [ { k1: { k11: "v11" } }, "a1" ]
123
+ ~~~
124
+ additionally a key for the first key-value pair of the hash can also be on this line
125
+ ~~~
126
+ , : k
127
+
128
+ # => [ { k: {} } ]
129
+ ~~~
130
+ ~~~
131
+ , : k1
132
+ k11 v11
133
+ k12 v12
134
+ k2
135
+ k21 v21
136
+ a1
137
+
138
+ # => [ { k1: { k11: "v11", k12: "v12" }, k2: { k21: "v21" } }, "a1" ]
139
+ ~~~
140
+ a first key-value pair of the hash can be on this line
141
+ ~~~
142
+ , : k v
143
+
144
+ # => [ { k: "v" } ]
145
+ ~~~
146
+ multiple key-value pairs separated by the vertical bar symbol
147
+ ~~~
148
+ , : k1 v1 | k2 v2
149
+
150
+ # => [ { k1: "v1", k2: "v2" } ]
151
+ ~~~
152
+
153
+ * __bugfix__
154
+ definition of ruby symbols has been changed, rectified and improved
155
+ single quotes and double quotes have to be balanced or escaped with a backslash character
156
+ the following definitions are no longer valid
157
+ ~~~
158
+ :'
159
+ :"
160
+ :'"
161
+ :"'
162
+ :'''
163
+ :"""
164
+ ~~~
165
+ the following definitions are valid
166
+ ~~~
167
+ :'\''
168
+ :"\""
169
+ :'"'
170
+ :"'"
171
+ ~~~
172
+ it is now possible to define an empty symbol by
173
+ ~~~
174
+ :''
175
+ ~~~
176
+ or
177
+ ~~~
178
+ :""
179
+ ~~~
180
+
181
+ ### 0.9.0 - (2019-07-15)
182
+
183
+ * __feature__
184
+ class GDstruct::Creator
185
+ for the creation of a Ruby Hash/Array structure out of possibly several separated GDS definition strings
186
+ arbitrary combination of #include and #include_file method calls
187
+ final call of #create method
188
+ ~~~
189
+ # file: data.gdstruct
190
+ &persons persons, @schema person /*
191
+ firstname lastname yearOfBirth */
192
+ : John | McArthur | 1987
193
+ : Berry | Miller | 1976
194
+ ~~~
195
+ ~~~
196
+ # file: example.rb
197
+ require 'gdstruct'
198
+
199
+ creator = GDstruct::Creator.new
200
+
201
+ creator.include( <<-EOS )
202
+ @schema person( firstname, lastname, yearOfBirth )
203
+ EOS
204
+
205
+ creator.include_file( 'data.gdstruct' )
206
+
207
+ creator.include( <<-EOS )
208
+ all
209
+ mypersons *persons
210
+ EOS
211
+
212
+ res = creator.create
213
+
214
+ # => res = {:persons=>[{:firstname=>"John", :lastname=>"McArthur", :yearOfBirth=>1987}, {:firstname=>"Berry", :lastname=>"Miller", :yearOfBirth=>1976}],
215
+ # :all=>{:mypersons=>{:persons=>[{:firstname=>"John", :lastname=>"McArthur", :yearOfBirth=>1987}, {:firstname=>"Berry", :lastname=>"Miller", :yearOfBirth=>1976}]}}}
216
+ ~~~
217
+
218
+ * __feature__
219
+ on top level: a single key, for the definition of a subhash can now follow a colon (:) on the same line; before you had to put it on a new line
220
+ the following syntax is allowed now
221
+ ~~~
222
+ : k
223
+ ~~~
224
+ ~~~
225
+ : k1
226
+ k11 v11
227
+ ~~~
228
+ ~~~
229
+ : k1
230
+ k11 v11
231
+ k2
232
+ ~~~
233
+ ~~~
234
+ : k1
235
+ k2
236
+ ~~~
237
+
238
+ ### 0.8.2 - (2019-03-18)
239
+
240
+ * __feature__
241
+ modification for classic Ruby syntax
242
+ inside an array definition: after the last element a comma (,) is allowed
243
+ this conforms to the Ruby syntax: a trailing comma is ignored
244
+ ~~~
245
+ [ 1, 2, ]
246
+ ~~~
247
+
248
+ * __feature__
249
+ modification for classic Ruby syntax
250
+ inside a hash definition: after the last key-value pair a comma (,) is allowed
251
+ this conforms to the Ruby syntax
252
+ ~~~
253
+ { k1: 'v1', k2: 'v2', }
254
+ ~~~
255
+
256
+ * __feature__
257
+ after an array definition: a single key, for the definition of a subhash can now follow a colon (:) on the same line; before you had to put it on a new line
258
+ the following syntax is allowed now
259
+ ~~~
260
+ ,
261
+ : k
262
+ ~~~
263
+ ~~~
264
+ ,
265
+ : k1
266
+ k11 v11
267
+ ~~~
268
+ ~~~
269
+ ,
270
+ : k1
271
+ k11 v11
272
+ k2
273
+ ~~~
274
+ ~~~
275
+ ,
276
+ : k1
277
+ k2
278
+ ~~~
279
+
280
+ * __feature__
281
+ @merge can now follow a colon (:) on the same line, before you had to put it on a new line
282
+ the following syntax is allowed now
283
+ ~~~
284
+ init &init
285
+ prio 10
286
+ all,
287
+ : @merge *init
288
+ ~~~
289
+
290
+ ### 0.8.1 - (2019-02-08)
291
+
292
+ * __feature__
293
+ improving the consistency of block comments; they can appear now at the beginning of every line and every construct
294
+ now they even can appear before a colon (:) for the definition of a hash, and before a comma (,) for the definition of an array
295
+ you just need to pay attention for the proper indentation
296
+ the following syntax is allowed now
297
+ ~~~
298
+ ,
299
+ /* !!! this block comment is allowed now !!! */ ,
300
+ 1
301
+ 2
302
+ ~~~
303
+ ~~~
304
+ ,
305
+ /* !!! this block comment is allowed now */ :
306
+ k1 v1
307
+ ~~~
308
+
309
+ * __change__
310
+ internal change: improving the grammar for the GDS language - reducing the number of rule alternatives
311
+
3
312
  ### 0.8.0 - (2018-12-14)
4
313
 
5
314
  * __feature__
6
315
  string interpolation
7
316
  the values of variables are substituted into string literals
8
- string interpolation works for double-quoted strings and default strings
9
- example:
10
- $object = house
11
- setup "This is a $(object)."
12
- # => { setup: "This is a house." }
317
+ string interpolation works for double-quoted strings and default strings
318
+ example:
319
+ ~~~
320
+ $object = house
321
+ setup "This is a $(object)."
322
+ # => { setup: "This is a house." }
323
+ ~~~
13
324
 
14
325
  * __feature__
15
326
  schema definition:
16
- if there are more values listed than keys for the schema specifier are defined, then an exception is raised
17
- if there are less values listed than keys for the schema specifier are defined, then only the keys for the available values will be set
327
+ if there are more values listed than keys for the schema specifier are defined, then an exception is raised
328
+ if there are less values listed than keys for the schema specifier are defined, then only the keys for the available values will be set
18
329
 
19
330
  * __breaking change__, __bugfix__
20
331
  in array definition with schema specifier
21
- syntax change: now after colon (:) for defining a hash, there needs to be at least one space character between the colon
332
+ syntax change: now after colon (:) for defining a hash, there needs to be at least one space character between the colon
22
333
  and the next expression on the same line
23
334
 
24
335
  * __feature__
25
336
  schema specifiers can now also be defined at the time of use
26
337
  example:
27
- persons1 , @schema person(firstname,lastname,age)
28
- : Harry | Langemann | 44
29
- : Susi | Heimstett | 32
30
- persons2 , @schema person
31
- : Ludwig | Reinemann | 33
338
+ ~~~
339
+ persons1 , @schema person(firstname,lastname,age)
340
+ : Harry | Langemann | 44
341
+ : Susi | Heimstett | 32
342
+ persons2 , @schema person
343
+ : Ludwig | Reinemann | 33
344
+ ~~~
32
345
 
33
346
  * __feature__
34
347
  anonymous schema specifiers
35
348
  defined when used, defined without a name, for one-time use
36
349
  example:
37
- persons , @schema(firstname,lastname,age)
38
- : Harry | Langemann | 44
350
+ ~~~
351
+ persons , @schema(firstname,lastname,age)
352
+ : Harry | Langemann | 44
353
+ ~~~
39
354
 
40
355
  * __breaking change__
41
356
  change of the definition of a schema specifier
42
357
  before : $name(key1,key2,...)
43
- now : @schema name(key1,key2,...)
44
- this makes it different from variables
45
- change of the use of a schema specifier
358
+ now : @schema name(key1,key2,...)
359
+ this makes it different from variables
360
+ change of the use of a schema specifier
46
361
  before : , $name
47
362
  now : , @schema name
48
-
363
+
49
364
  * __breaking change__
50
365
  default strings are no longer allowed to begin with one of the following characters: ;$!@&*:,
51
366
  exception is a beginning string interpolation: $(var)
52
-
367
+
53
368
  * __feature__
54
369
  for a reference (e.g. ref)
55
370
  @merge *ref : in a hash
56
371
  @insert *ref : in an array
57
372
 
58
373
  * __feature__
59
- supporting references, definition: &ref, use: *ref
374
+ supporting references, definition: &ref, use: *ref
60
375
  if a reference is used which was not defined before, then an exception is raised
61
376
 
62
377
  * __feature__
@@ -73,7 +388,7 @@
73
388
 
74
389
  * __bugfix__
75
390
  again an error in escaping single-quoted and double-quoted strings
76
-
391
+
77
392
  ### 0.7.0 - (2018-11-09)
78
393
 
79
394
  * __feature__
@@ -88,19 +403,19 @@
88
403
  * __bugfix__
89
404
  escaping in single-quoted and double-quoted strings was not handled properly
90
405
  there also was a syntax issue
91
-
406
+
92
407
  ### 0.6.1 - (2018-10-27)
93
408
 
94
409
  * __bugfix__
95
410
  bugs in classic Ruby syntax fixed: [:a], and {a: :b} was not recognized
96
-
411
+
97
412
  * __change__
98
413
  if @env is not allowed (allow_env: false) then the result will be nil, it was "" before
99
414
  if @r is not allowed (context: not set to binding) then the result will be nil, it was "" before
100
-
415
+
101
416
  * __bugfix__
102
417
  @env: now before and after the environment variable there are space characters allowed, they will be stripped off
103
-
418
+
104
419
  * __bugfix__
105
420
  now: between the definition of a key and a value there needs to be at least one space character or a block comment
106
421
  before: for example, the definition lkmönnk was converted to { lkm: "önnk" }, now it produces a syntax error
@@ -130,11 +445,11 @@
130
445
  that means: the default structure is a hash
131
446
 
132
447
  * __breaking change__
133
- syntax change: now after colon (:) for defining a hash, there needs to be at least one space character between the colon and the key
448
+ syntax change: now after colon (:) for defining a hash, there needs to be at least one space character between the colon and the key
134
449
  (if it is on the same line)
135
450
 
136
451
  * __bugfix__
137
- if the definition ended without a newline character in some cases this produced errors
452
+ if the definition ended without a newline character in some cases this produced errors
138
453
 
139
454
  * __bugfix__
140
455
  error in single-quoted and double-quoted string:
@@ -144,7 +459,7 @@
144
459
 
145
460
  * __bugfix__
146
461
  0 and 0d0 was not recognized as an integer, it was recognized as a string ("0","0d0")
147
-
462
+
148
463
  ### 0.5.0 - (2018-09-06)
149
464
 
150
465
  * some changes and reorganization