xjson 0.0.2 → 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d30069a7d02308be08e5f01c71698903baed37be4c3de6467974e7687f059717
4
- data.tar.gz: afecc610ac0b4d48be974fc860f43a52f79b9c899f39ce434e4929661ac60b3e
3
+ metadata.gz: d9be96a65a6e811b28601eceade054a524d5c1e65f0d5afbe65186e29e3915aa
4
+ data.tar.gz: da2e88f23ded6359547730eb704855bd388c6bbd46d0cc4b6c6426de436ba68b
5
5
  SHA512:
6
- metadata.gz: c28e41c8e1d538576b93488fd79e9e9458a61a07b0846fcd6e9bf2cee00b5bbc3fcb2a2455c392979c70c21bf929513344509b487da14be2e01bcec2d7fa699b
7
- data.tar.gz: 145d79b07ca81a97aa7cbead7383691f4297f23df66224b3fdce10fec7cca41f1e0491567128c9a498c1b9e81f4ce1c5ac5141275d78ec02d44d1d48f71cbba2
6
+ metadata.gz: 5bdf536a5789d49d10c0647781e7bd4479c49d348fcbc0b456f16a6484706d8a7e21495c7083aa68af10b03d039675783d9d39f75530cd5c4fe25f2f1322f624
7
+ data.tar.gz: 2d20c7ce94ce6b301d6f10a3fce1b055f7ded592ba40efd0f4ea5c84fc5bab857002a66e93acd1ec2564e190542ce7fbd85718ff54b6b8ec4216fd41b002043b
data/CHANGELOG.rdoc CHANGED
@@ -1,6 +1,3 @@
1
1
  = Version history
2
2
 
3
- [0.0.2] Documentation update.
4
- Improved test coverage.
5
-
6
3
  [0.0.1] Initial version.
@@ -114,9 +114,9 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Sat Jul 10 11:09:29 2021 by
117
+ Generated on Thu Jul 8 19:56:40 2021 by
118
118
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
- 0.9.25 (ruby-2.7.3).
119
+ 0.9.25 (ruby-2.7.2).
120
120
  </div>
121
121
 
122
122
  </div>
@@ -114,9 +114,9 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Sat Jul 10 11:09:29 2021 by
117
+ Generated on Thu Jul 8 19:56:40 2021 by
118
118
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
- 0.9.25 (ruby-2.7.3).
119
+ 0.9.25 (ruby-2.7.2).
120
120
  </div>
121
121
 
122
122
  </div>
data/doc/Xjson.html CHANGED
@@ -134,7 +134,7 @@
134
134
  <dt id="VERSION-constant" class="">VERSION =
135
135
 
136
136
  </dt>
137
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0.2</span><span class='tstring_end'>&quot;</span></span></pre></dd>
137
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0.1</span><span class='tstring_end'>&quot;</span></span></pre></dd>
138
138
 
139
139
  </dl>
140
140
 
@@ -315,9 +315,7 @@
315
315
 
316
316
 
317
317
 
318
- <span class="summary_desc"><div class='inline'>
319
- <p>Dump JSON data as marshal.</p>
320
- </div></span>
318
+ <span class="summary_desc"><div class='inline'></div></span>
321
319
 
322
320
  </li>
323
321
 
@@ -501,9 +499,7 @@
501
499
 
502
500
 
503
501
 
504
- <span class="summary_desc"><div class='inline'>
505
- <p>Read xjson file.</p>
506
- </div></span>
502
+ <span class="summary_desc"><div class='inline'></div></span>
507
503
 
508
504
  </li>
509
505
 
@@ -569,33 +565,7 @@
569
565
 
570
566
 
571
567
 
572
- <span class="summary_desc"><div class='inline'>
573
- <p>Return JSON data as string.</p>
574
- </div></span>
575
-
576
- </li>
577
-
578
-
579
- <li class="public ">
580
- <span class="summary_signature">
581
-
582
- <a href="#write_json_file-instance_method" title="#write_json_file (instance method)">#<strong>write_json_file</strong>(json_file) &#x21d2; Object </a>
583
-
584
-
585
-
586
- </span>
587
-
588
-
589
-
590
-
591
-
592
-
593
-
594
-
595
-
596
- <span class="summary_desc"><div class='inline'>
597
- <p>Write expanded json file.</p>
598
- </div></span>
568
+ <span class="summary_desc"><div class='inline'></div></span>
599
569
 
600
570
  </li>
601
571
 
@@ -871,29 +841,18 @@
871
841
 
872
842
 
873
843
 
874
- </h3><div class="docstring">
875
- <div class="discussion">
876
-
877
- <p>Dump JSON data as marshal.</p>
878
-
879
-
880
- </div>
881
- </div>
882
- <div class="tags">
883
-
884
-
885
- </div><table class="source_code">
844
+ </h3><table class="source_code">
886
845
  <tr>
887
846
  <td>
888
847
  <pre class="lines">
889
848
 
890
849
 
891
- 266
892
- 267
893
- 268</pre>
850
+ 264
851
+ 265
852
+ 266</pre>
894
853
  </td>
895
854
  <td>
896
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 266</span>
855
+ <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 264</span>
897
856
 
898
857
  <span class='kw'>def</span> <span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span> <span class='id identifier rubyid_filename'>filename</span> <span class='rparen'>)</span>
899
858
  <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span> <span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span> <span class='const'>Marshal</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span> <span class='ivar'>@data</span> <span class='rparen'>)</span> <span class='rparen'>)</span>
@@ -1165,19 +1124,19 @@
1165
1124
  <pre class="lines">
1166
1125
 
1167
1126
 
1127
+ 57
1128
+ 58
1129
+ 59
1130
+ 60
1131
+ 61
1132
+ 62
1168
1133
  63
1169
1134
  64
1170
1135
  65
1171
- 66
1172
- 67
1173
- 68
1174
- 69
1175
- 70
1176
- 71
1177
- 72</pre>
1136
+ 66</pre>
1178
1137
  </td>
1179
1138
  <td>
1180
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 63</span>
1139
+ <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 57</span>
1181
1140
 
1182
1141
  <span class='kw'>def</span> <span class='id identifier rubyid_find_in_array_of_hash'>find_in_array_of_hash</span><span class='lparen'>(</span> <span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='rparen'>)</span>
1183
1142
  <span class='id identifier rubyid_index'>index</span> <span class='op'>=</span> <span class='int'>0</span>
@@ -1220,6 +1179,12 @@
1220
1179
  <pre class="lines">
1221
1180
 
1222
1181
 
1182
+ 40
1183
+ 41
1184
+ 42
1185
+ 43
1186
+ 44
1187
+ 45
1223
1188
  46
1224
1189
  47
1225
1190
  48
@@ -1229,16 +1194,10 @@
1229
1194
  52
1230
1195
  53
1231
1196
  54
1232
- 55
1233
- 56
1234
- 57
1235
- 58
1236
- 59
1237
- 60
1238
- 61</pre>
1197
+ 55</pre>
1239
1198
  </td>
1240
1199
  <td>
1241
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 46</span>
1200
+ <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 40</span>
1242
1201
 
1243
1202
  <span class='kw'>def</span> <span class='id identifier rubyid_flatten'>flatten</span><span class='lparen'>(</span> <span class='id identifier rubyid_data'>data</span> <span class='rparen'>)</span>
1244
1203
  <span class='kw'>case</span> <span class='id identifier rubyid_data'>data</span>
@@ -1384,34 +1343,23 @@
1384
1343
 
1385
1344
 
1386
1345
 
1387
- </h3><div class="docstring">
1388
- <div class="discussion">
1389
-
1390
- <p>Read xjson file.</p>
1391
-
1392
-
1393
- </div>
1394
- </div>
1395
- <div class="tags">
1396
-
1397
-
1398
- </div><table class="source_code">
1346
+ </h3><table class="source_code">
1399
1347
  <tr>
1400
1348
  <td>
1401
1349
  <pre class="lines">
1402
1350
 
1403
1351
 
1352
+ 30
1404
1353
  31
1405
1354
  32
1406
1355
  33
1407
1356
  34
1408
1357
  35
1409
1358
  36
1410
- 37
1411
- 38</pre>
1359
+ 37</pre>
1412
1360
  </td>
1413
1361
  <td>
1414
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 31</span>
1362
+ <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 30</span>
1415
1363
 
1416
1364
  <span class='kw'>def</span> <span class='id identifier rubyid_read_json_file'>read_json_file</span><span class='lparen'>(</span> <span class='id identifier rubyid_xjson_file'>xjson_file</span> <span class='rparen'>)</span>
1417
1365
  <span class='ivar'>@cur_file</span><span class='period'>.</span><span class='id identifier rubyid_unshift'>unshift</span> <span class='id identifier rubyid_xjson_file'>xjson_file</span>
@@ -1441,6 +1389,11 @@
1441
1389
  <pre class="lines">
1442
1390
 
1443
1391
 
1392
+ 108
1393
+ 109
1394
+ 110
1395
+ 111
1396
+ 112
1444
1397
  113
1445
1398
  114
1446
1399
  115
@@ -1454,7 +1407,7 @@
1454
1407
  123</pre>
1455
1408
  </td>
1456
1409
  <td>
1457
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 113</span>
1410
+ <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 108</span>
1458
1411
 
1459
1412
  <span class='kw'>def</span> <span class='id identifier rubyid_reference'>reference</span><span class='lparen'>(</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_ref_desc'>ref_desc</span> <span class='rparen'>)</span>
1460
1413
  <span class='id identifier rubyid_path'>path</span><span class='comma'>,</span> <span class='id identifier rubyid_label'>label</span> <span class='op'>=</span> <span class='id identifier rubyid_reference_handle'>reference_handle</span><span class='lparen'>(</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_ref_desc'>ref_desc</span> <span class='rparen'>)</span>
@@ -1465,8 +1418,13 @@
1465
1418
  <span class='comment'># scope = scope[ path[0] ]
1466
1419
  </span> <span class='id identifier rubyid_scope'>scope</span> <span class='op'>=</span> <span class='id identifier rubyid_path'>path</span><span class='lbracket'>[</span> <span class='id identifier rubyid_label'>label</span> <span class='rbracket'>]</span>
1467
1420
  <span class='kw'>end</span>
1468
- <span class='id identifier rubyid_scope'>scope</span>
1469
- <span class='kw'>end</span></pre>
1421
+ <span class='comment'># scope = path[ label ]
1422
+ </span> <span class='comment'># if scope.class == String
1423
+ </span> <span class='id identifier rubyid_scope'>scope</span>
1424
+ <span class='comment'># else
1425
+ </span> <span class='comment'># scope.to_s
1426
+ </span> <span class='comment'># end
1427
+ </span><span class='kw'>end</span></pre>
1470
1428
  </td>
1471
1429
  </tr>
1472
1430
  </table>
@@ -1487,6 +1445,12 @@
1487
1445
  <pre class="lines">
1488
1446
 
1489
1447
 
1448
+ 68
1449
+ 69
1450
+ 70
1451
+ 71
1452
+ 72
1453
+ 73
1490
1454
  74
1491
1455
  75
1492
1456
  76
@@ -1519,19 +1483,15 @@
1519
1483
  103
1520
1484
  104
1521
1485
  105
1522
- 106
1523
- 107
1524
- 108
1525
- 109
1526
- 110
1527
- 111</pre>
1486
+ 106</pre>
1528
1487
  </td>
1529
1488
  <td>
1530
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 74</span>
1489
+ <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 68</span>
1531
1490
 
1532
1491
  <span class='kw'>def</span> <span class='id identifier rubyid_reference_handle'>reference_handle</span><span class='lparen'>(</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='id identifier rubyid_ref_desc'>ref_desc</span> <span class='rparen'>)</span>
1533
1492
  <span class='kw'>if</span> <span class='id identifier rubyid_ref_desc'>ref_desc</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>:</span><span class='tstring_end'>&quot;</span></span>
1534
- <span class='id identifier rubyid_reference_handle'>reference_handle</span><span class='lparen'>(</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ref_desc'>ref_desc</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>
1493
+ <span class='comment'># [ data, ref_desc ]
1494
+ </span> <span class='id identifier rubyid_reference_handle'>reference_handle</span><span class='lparen'>(</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ref_desc'>ref_desc</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>
1535
1495
  <span class='kw'>else</span>
1536
1496
  <span class='comment'># Relative reference from root.
1537
1497
  </span> <span class='id identifier rubyid_path'>path</span> <span class='op'>=</span> <span class='id identifier rubyid_ref_desc'>ref_desc</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>:</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span>
@@ -1581,29 +1541,18 @@
1581
1541
 
1582
1542
 
1583
1543
 
1584
- </h3><div class="docstring">
1585
- <div class="discussion">
1586
-
1587
- <p>Return JSON data as string.</p>
1588
-
1589
-
1590
- </div>
1591
- </div>
1592
- <div class="tags">
1593
-
1594
-
1595
- </div><table class="source_code">
1544
+ </h3><table class="source_code">
1596
1545
  <tr>
1597
1546
  <td>
1598
1547
  <pre class="lines">
1599
1548
 
1600
1549
 
1550
+ 260
1601
1551
  261
1602
- 262
1603
- 263</pre>
1552
+ 262</pre>
1604
1553
  </td>
1605
1554
  <td>
1606
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 261</span>
1555
+ <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 260</span>
1607
1556
 
1608
1557
  <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1609
1558
  <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_pretty_generate'>pretty_generate</span><span class='lparen'>(</span> <span class='ivar'>@data</span> <span class='rparen'>)</span>
@@ -1611,47 +1560,6 @@
1611
1560
  </td>
1612
1561
  </tr>
1613
1562
  </table>
1614
- </div>
1615
-
1616
- <div class="method_details ">
1617
- <h3 class="signature " id="write_json_file-instance_method">
1618
-
1619
- #<strong>write_json_file</strong>(json_file) &#x21d2; <tt>Object</tt>
1620
-
1621
-
1622
-
1623
-
1624
-
1625
- </h3><div class="docstring">
1626
- <div class="discussion">
1627
-
1628
- <p>Write expanded json file.</p>
1629
-
1630
-
1631
- </div>
1632
- </div>
1633
- <div class="tags">
1634
-
1635
-
1636
- </div><table class="source_code">
1637
- <tr>
1638
- <td>
1639
- <pre class="lines">
1640
-
1641
-
1642
- 41
1643
- 42
1644
- 43</pre>
1645
- </td>
1646
- <td>
1647
- <pre class="code"><span class="info file"># File 'lib/xjson.rb', line 41</span>
1648
-
1649
- <span class='kw'>def</span> <span class='id identifier rubyid_write_json_file'>write_json_file</span><span class='lparen'>(</span> <span class='id identifier rubyid_json_file'>json_file</span> <span class='rparen'>)</span>
1650
- <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span> <span class='id identifier rubyid_json_file'>json_file</span><span class='comma'>,</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_pretty_generate'>pretty_generate</span><span class='lparen'>(</span> <span class='ivar'>@data</span> <span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>
1651
- <span class='kw'>end</span></pre>
1652
- </td>
1653
- </tr>
1654
- </table>
1655
1563
  </div>
1656
1564
 
1657
1565
  </div>
@@ -1659,9 +1567,9 @@
1659
1567
  </div>
1660
1568
 
1661
1569
  <div id="footer">
1662
- Generated on Sat Jul 10 11:09:29 2021 by
1570
+ Generated on Thu Jul 8 19:56:40 2021 by
1663
1571
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1664
- 0.9.25 (ruby-2.7.3).
1572
+ 0.9.25 (ruby-2.7.2).
1665
1573
  </div>
1666
1574
 
1667
1575
  </div>
data/doc/_index.html CHANGED
@@ -114,9 +114,9 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Sat Jul 10 11:09:29 2021 by
117
+ Generated on Thu Jul 8 19:56:40 2021 by
118
118
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
- 0.9.25 (ruby-2.7.3).
119
+ 0.9.25 (ruby-2.7.2).
120
120
  </div>
121
121
 
122
122
  </div>
@@ -59,19 +59,16 @@
59
59
 
60
60
  <div id="content"><div id='filecontents'>
61
61
  <h1 id="label-Version+history">Version history</h1>
62
- <dl class="rdoc-list label-list"><dt>0.0.2
63
- <dd>
64
- <p>Documentation update. Improved test coverage.</p>
65
- </dd><dt>0.0.1
62
+ <dl class="rdoc-list label-list"><dt>0.0.1
66
63
  <dd>
67
64
  <p>Initial version.</p>
68
65
  </dd></dl>
69
66
  </div></div>
70
67
 
71
68
  <div id="footer">
72
- Generated on Sat Jul 10 11:09:29 2021 by
69
+ Generated on Thu Jul 8 19:56:40 2021 by
73
70
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
74
- 0.9.25 (ruby-2.7.3).
71
+ 0.9.25 (ruby-2.7.2).
75
72
  </div>
76
73
 
77
74
  </div>
data/doc/file.README.html CHANGED
@@ -64,9 +64,9 @@
64
64
  </div></div>
65
65
 
66
66
  <div id="footer">
67
- Generated on Sat Jul 10 11:09:29 2021 by
67
+ Generated on Thu Jul 8 19:56:40 2021 by
68
68
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
69
- 0.9.25 (ruby-2.7.3).
69
+ 0.9.25 (ruby-2.7.2).
70
70
  </div>
71
71
 
72
72
  </div>
data/doc/index.html CHANGED
@@ -64,9 +64,9 @@
64
64
  </div></div>
65
65
 
66
66
  <div id="footer">
67
- Generated on Sat Jul 10 11:09:29 2021 by
67
+ Generated on Thu Jul 8 19:56:40 2021 by
68
68
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
69
- 0.9.25 (ruby-2.7.3).
69
+ 0.9.25 (ruby-2.7.2).
70
70
  </div>
71
71
 
72
72
  </div>
data/doc/method_list.html CHANGED
@@ -180,14 +180,6 @@
180
180
  </li>
181
181
 
182
182
 
183
- <li class="even ">
184
- <div class="item">
185
- <span class='object_link'><a href="Xjson.html#write_json_file-instance_method" title="Xjson#write_json_file (method)">#write_json_file</a></span>
186
- <small>Xjson</small>
187
- </div>
188
- </li>
189
-
190
-
191
183
 
192
184
  </ul>
193
185
  </div>
@@ -100,9 +100,9 @@
100
100
  </div>
101
101
 
102
102
  <div id="footer">
103
- Generated on Sat Jul 10 11:09:29 2021 by
103
+ Generated on Thu Jul 8 19:56:40 2021 by
104
104
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
- 0.9.25 (ruby-2.7.3).
105
+ 0.9.25 (ruby-2.7.2).
106
106
  </div>
107
107
 
108
108
  </div>
data/lib/xjson.rb CHANGED
@@ -6,7 +6,7 @@ class Xjson
6
6
  class XjsonIncludeError < RuntimeError; end
7
7
  class XjsonReferenceError < RuntimeError; end
8
8
 
9
- VERSION = "0.0.2"
9
+ VERSION = "0.0.1"
10
10
  def Xjson.version
11
11
  Xjson::VERSION
12
12
  end
@@ -27,7 +27,6 @@ class Xjson
27
27
  @data = expand( @ext_data )
28
28
  end
29
29
 
30
- # Read xjson file.
31
30
  def read_json_file( xjson_file )
32
31
  @cur_file.unshift xjson_file
33
32
  if xjson_file[0] != "<"
@@ -37,11 +36,6 @@ class Xjson
37
36
  end
38
37
  end
39
38
 
40
- # Write expanded json file.
41
- def write_json_file( json_file )
42
- File.write( json_file, JSON.pretty_generate( @data ) + "\n" )
43
- end
44
-
45
39
  # Flatten by one level within array.
46
40
  def flatten( data )
47
41
  case data
@@ -73,6 +67,7 @@ class Xjson
73
67
 
74
68
  def reference_handle( data, ref_desc )
75
69
  if ref_desc[0] != ":"
70
+ # [ data, ref_desc ]
76
71
  reference_handle( data, ":#{ref_desc}" )
77
72
  else
78
73
  # Relative reference from root.
@@ -119,7 +114,12 @@ class Xjson
119
114
  # scope = scope[ path[0] ]
120
115
  scope = path[ label ]
121
116
  end
122
- scope
117
+ # scope = path[ label ]
118
+ # if scope.class == String
119
+ scope
120
+ # else
121
+ # scope.to_s
122
+ # end
123
123
  end
124
124
 
125
125
  def override_desc( data, exp )
@@ -257,12 +257,10 @@ class Xjson
257
257
  end
258
258
  end
259
259
 
260
- # Return JSON data as string.
261
260
  def to_s
262
261
  JSON.pretty_generate( @data )
263
262
  end
264
263
 
265
- # Dump JSON data as marshal.
266
264
  def dump( filename )
267
265
  File.write( filename, Marshal.dump( @data ) )
268
266
  end
@@ -3,37 +3,53 @@
3
3
  "regressions": {
4
4
  "all": {
5
5
  "test": [
6
+ [
7
+ "t_run_1_2",
8
+ [
9
+ 1234
10
+ ]
11
+ ],
12
+ [
13
+ "t_run_1_4",
14
+ [
15
+ 1234
16
+ ]
17
+ ],
18
+ [
19
+ "t_run_2_1",
20
+ [
21
+ 1234
22
+ ]
23
+ ],
24
+ [
25
+ "t_run_2_2",
26
+ [
27
+ 1234
28
+ ]
29
+ ],
30
+ [
31
+ "t_run_7_1",
32
+ [
33
+ 1234
34
+ ]
35
+ ],
6
36
  {
7
- "name": "t_run_1_1",
8
- "dir": "test_dir"
37
+ "foobar1": "test1"
9
38
  },
10
39
  {
11
- "name": "t_run_1_2",
12
- "dir": "test_dir-1_2"
13
- },
14
- {
15
- "name": "t_run_1_3",
16
- "dir": "test_dir"
17
- },
18
- {
19
- "foobar1": "test1",
20
- "dir": "test_dir"
21
- },
22
- {
23
- "foobar2": "test2",
24
- "dir": "test_dir"
40
+ "foobar2": "test2"
25
41
  }
26
42
  ]
27
43
  }
28
44
  },
29
45
  "foobar1": "test1",
30
46
  "foobar2": "test2",
31
- "release": "210701",
47
+ "release": "201104",
32
48
  "minor": "3",
33
49
  "runroot": "prog-",
34
50
  "home": "FOOBAR",
35
51
  "dut_files": [
36
- "/release/210701/src/main.c",
52
+ "/release/201104/src/main.c",
37
53
  [
38
54
  "YES: 3"
39
55
  ],
@@ -47,4 +63,4 @@
47
63
  }
48
64
  ],
49
65
  "eof": true
50
- }
66
+ }
@@ -5,10 +5,12 @@
5
5
 
6
6
  "all": {
7
7
  "test": [
8
- { "name": "t_run_1_1" },
8
+ [ "t_run_1_2", [ 1234 ] ],
9
9
  { "@null": false },
10
- { "name": "t_run_1_2" },
11
- { "name": "t_run_1_3" },
10
+ [ "t_run_1_4", [ 1234 ] ],
11
+ [ "t_run_2_1", [ 1234 ] ],
12
+ [ "t_run_2_2", [ 1234 ] ],
13
+ [ "t_run_7_1", [ 1234 ] ],
12
14
  { "@include": "test/input/inc-arr.ext.json" }
13
15
  ]
14
16
  }
@@ -16,12 +18,11 @@
16
18
 
17
19
  "included-file": { "@include": "test/input/inc-hash.ext.json" },
18
20
 
19
- "release" : "210701",
20
- "minor" : "3",
21
- "runroot" : { "@join": [ "-", "prog", {"@self":":regressions:all:test:1:0"} ] },
22
- "home" : { "@env": "XJSON_FOOBAR" },
23
- "test-dir" : { "@base": [ ":regressions:all:test:*", [ "dir", "test_dir" ] ] },
24
- "test-dir-1_2" : { "@over": [ ":regressions:all:test:*:name:t_run_1_2:dir", "test_dir-1_2" ] },
21
+ "release" : "201104",
22
+ "minor" : "3",
23
+ "runroot" : { "@join": [ "-", "prog", {"@self":":regressions:all:test:1:0"} ] },
24
+ "home" : { "@env": "XJSON_FOOBAR" },
25
+
25
26
 
26
27
  "dut_files": [
27
28
  { "@join": [ "/", "/release", {"@self":"release"}, "src/main.c" ] },
data/test/test_xjson.rb CHANGED
@@ -15,7 +15,7 @@ class XjsonTest < Test::Unit::TestCase
15
15
  # Open file.
16
16
  json = Xjson.new( ifile )
17
17
  ofile = "test/result/test.json"
18
- json.write_json_file( ofile )
18
+ File.write( ofile, JSON.pretty_generate( json.data ) )
19
19
 
20
20
  golden_data = File.read( "test/golden/test.json" )
21
21
  design_data = File.read( ofile )
@@ -28,3 +28,17 @@ class XjsonTest < Test::Unit::TestCase
28
28
  end
29
29
 
30
30
  end
31
+
32
+ #require_relative '../lib/xjson.rb'
33
+ #require 'fileutils'
34
+ #FileUtils.mkdir_p( "test/result" )
35
+ #
36
+ #ifile = 'test/input/test.ext.json'
37
+ #
38
+ ## Open file.
39
+ #json = Xjson.new( ifile )
40
+ #ofile = "test/result/test.json"
41
+ #File.write( ofile, JSON.pretty_generate( json.data ) )
42
+ #
43
+ #golden_data = File.read( "test/golden/test.json" )
44
+ #design_data = File.read( ofile )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xjson
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: '0.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tero Isannainen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-10 00:00:00.000000000 Z
11
+ date: 2021-07-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Xjson is extension to JSON format.
14
14
  email: tero.isannainen@gmail.com
@@ -40,7 +40,6 @@ files:
40
40
  - doc/method_list.html
41
41
  - doc/top-level-namespace.html
42
42
  - lib/xjson.rb
43
- - markdown/README.md
44
43
  - test/golden/test.json
45
44
  - test/input/inc-arr.ext.json
46
45
  - test/input/inc-hash.ext.json
data/markdown/README.md DELETED
@@ -1,130 +0,0 @@
1
- # Overview
2
-
3
- Xjson is an extension to JSON format. The Xjson library processes the
4
- extensions and outputs standard JSON.
5
-
6
- Xjson (as JSON format) is compatible with standard JSON, i.e. the
7
- syntax is the same and Xjson can be processed with JSON tools. The
8
- extensions are special Xjson keywords that have semantics which the
9
- Xjson processor manages.
10
-
11
- Xjson renders JSON databases more dynamic and easy to maintain. The
12
- same could be achieved with a separate pre-processor, but Xjson
13
- provides tighter integration to JSON. This means that JSON aware text
14
- editors can be utilized and the JSON file (with extensions) looks and
15
- feels like a "normal" JSON file.
16
-
17
-
18
- # Extensions
19
-
20
- The extensions provide dynamic behaviour and modularity support.
21
-
22
- * `@eval`: Evaluate "system"/"shell" command.
23
-
24
- * `@env`: Reference an environment variable.
25
-
26
- * `@join`: Join pieces of strings with given separator.
27
-
28
- * `@flat`: Flatten the list by one level.
29
-
30
- * `@self`: Refer to existing key/value pair, i.e. support for variables.
31
-
32
- * `@over`: Overwrite existing value or create if not existing.
33
-
34
- * `@base`: Set base (default) value, if not existing.
35
-
36
- * `@null`: No operation.
37
-
38
- * `@include`: Expand another Xjson/JSON file inplace.
39
-
40
-
41
- Example:
42
-
43
- ```
44
- {
45
- "opts": [
46
- { "@eval": "/prj/sbin/list_opts" },
47
- { "@join": [ " ",
48
- "-conf_file",
49
- { "@join": [ "/",
50
- { "@self": "workdir" },
51
- "unit/data.txt" ] }
52
- ]
53
- }
54
- ],
55
- "sub-defs": { "@include": "submodule.json" }
56
- }
57
-
58
- ```
59
-
60
- Extensions are captured within a Hash with one key/value pair. The
61
- pair will be recursively processed, and hence the extensions can be
62
- nested.
63
-
64
- Value of "opts" is an array, and the extensions can be directly stored
65
- as array members.
66
-
67
- "sub-defs" gives a unique label (key) for the extension, and each key
68
- must be unique in JSON, or it will be silently overwritten and
69
- disappear.
70
-
71
- Hence depending on the context of the extension, it should be written
72
- either with or without the extension label.
73
-
74
- Extension arguments and results:
75
-
76
- ```
77
- @eval: <string> => <string>
78
- @env: <string> => <string>
79
- @join: <separator>, <list-of-strings> => <string>
80
- @flat: <array-of-atoms-or-arrays> => <array>
81
- @self: <key-reference> => <value>
82
- @over: <key-reference>, <value> => -
83
- @base: <key-reference>, <value> => -
84
- @null: false => -
85
- @include: <filename-string> => <hash>
86
-
87
- ```
88
-
89
- # Key Reference
90
-
91
- Key Reference (KR) is used to refer the items in the database
92
- itself. It can be used with `@self`, `@over`, and `@base` extensions.
93
-
94
- Key Reference is a String, where ":" is used as hierarchy
95
- separator. The string should start with ":" to designate the root, but
96
- when if a pure top-entry reference is performed, then a plain key name
97
- is accepted (e.g. just "opts", and not ":opts").
98
-
99
- Key Reference is split into path selectors with the ":" character. The
100
- path selectors are used one by one. Typically the path selector is a
101
- key and the corresponding value is selected to be used for the next
102
- path selector.
103
-
104
- However, for arrays, the path selector can be an index. The index
105
- selects the Nth item in the array.
106
-
107
- In addition to selecting keys and indexed items, there is a wildcard
108
- selector. The "*" character is used as wildcard. Wildcard behaves
109
- differently depending on its location in the Key Reference string.
110
-
111
- If wildcard is the last part of the KR, then it must correspond to an
112
- array in the hierarchy. The wildcard thus means all the members in the
113
- array. Then array members must be Hash entries, if KR is used with
114
- `@over` or `@base`. The value in this case is array of two, where
115
- first entry is key for the Hash members and second entry is the
116
- assigned value.
117
-
118
- If wildcard is used in the middle of the KR, then the next two path
119
- selectors are used as key and value matching path, and finally the
120
- third path selector is key to a value. Wildcard must correspond to an
121
- array of Hash members, and the array member that matches the key and
122
- value, will be selected. In allows travelling through the array
123
- without knowing the array index of the desired member.
124
-
125
- Example:
126
-
127
- ```
128
- "base-name": { "@base": [ ":modules:*", [ "start", "starter" ] ] },
129
- "over-name": { "@over": [ ":modules:*:name:main:stop", "stopper" ] },
130
- ```