jini 0.0.8 → 0.1.0

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: 8dc491b839227a8d3ecf1afcea674feddc9cf1a4512325d047b6bb6cf54215a9
4
- data.tar.gz: bb54eda7497a78f4b2189f2528db6813d32a14ab77d7ea273a64b83443e68578
3
+ metadata.gz: 37fa7411c121f52743f04f08f8e7a91b2a5a88275bd36ad095a20b64c35baa15
4
+ data.tar.gz: df8e15729c3e636d084891d72de3d007dcac6c27bdf8549da0499b03673a9258
5
5
  SHA512:
6
- metadata.gz: 7869fb6e85d21e627b7c84330227b0f45d9a530e271579f37dc40c5fa8ec8fffb047a1ca0894a0ac9da2026630a816148fab93264bf65a9911cfb1794f4daf0e
7
- data.tar.gz: '0193542647b5a7539c9d2de3caa8f6fb8d29625c14c4d921fbabbc5909a2d65184aba96bdeeb156337f71c9903665ce96827a766d28fd2ea36c8efb2c824a7e0'
6
+ metadata.gz: 0bc989456746751fa359c7b02b698e92d702b1f5054e7192a6b2d57af41af708eac89d5738317072f60b09eee39e15d4ff0e0779f6c40277731ac6824f83ebd1
7
+ data.tar.gz: 6d9749d353663e76d960c24223ab7571978e8897239428d4a28da2d820d0225e51fb7c7fca03cea5920811d4404761a221eaab8657672747de2ba8c45727aca3
data/.yardoc/checksums CHANGED
@@ -1 +1 @@
1
- lib/jini.rb bfab717057651e3d062c07ed9b3c6d8d619a6936
1
+ lib/jini.rb 4989c06e96b00972b17c7373e6625e6ecc3bbb54
data/.yardoc/object_types CHANGED
Binary file
Binary file
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/jini.svg)](https://badge.fury.io/rb/jini)
4
4
 
5
- The class [`Jini`](https://www.rubydoc.info/gems/jini/0.0.7/Jini) helps you build a XPATH.
5
+ The class [`Jini`](https://www.rubydoc.info/gems/jini/0.0.9/Jini) helps you build a XPATH.
6
6
 
7
7
  ```ruby
8
8
  require 'jini'
@@ -16,7 +16,7 @@ xpath = Jini
16
16
  puts(xpath) # -> xpath: /parent[@key="value"]
17
17
  ```
18
18
 
19
- The full list of methods is [here](https://www.rubydoc.info/gems/jini/0.0.7).
19
+ The full list of methods is [here](https://www.rubydoc.info/gems/jini/0.0.9).
20
20
 
21
21
  Install it:
22
22
 
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Fri Sep 16 16:54:43 2022 by
128
+ Generated on Sun Sep 18 00:36:17 2022 by
129
129
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
130
  0.9.28 (ruby-3.0.0).
131
131
  </div>
data/doc/Jini.html CHANGED
@@ -104,11 +104,11 @@
104
104
 
105
105
  <p>It’s a simple XPATH builder.</p>
106
106
 
107
- <p>require ‘jini’ xpath = Jini.new(parent)</p>
108
-
109
- <pre class="code ruby"><code class="ruby">.add_path(node: &#39;child&#39;)
110
- .add_path(node: &#39;toy&#39;)
111
- .to_s // body/child/toy
107
+ <pre class="code ruby"><code class="ruby">requirejini
108
+ xpath = Jini.new(‘parent’)
109
+ .add_node(&#39;child&#39;)
110
+ .add_attr(&#39;toy&#39;, &#39;plane&#39;)
111
+ .to_s // parent/child[@toy=&quot;plane&quot;]
112
112
  </code></pre>
113
113
 
114
114
 
@@ -256,7 +256,7 @@
256
256
 
257
257
 
258
258
  <span class="summary_desc"><div class='inline'>
259
- <p>Addition property in tail Before: ‘../child’ After: ‘../child/property()’.</p>
259
+ <p>Addition property in tail.</p>
260
260
  </div></span>
261
261
 
262
262
  </li>
@@ -381,6 +381,30 @@
381
381
  <p>Less than.</p>
382
382
  </div></span>
383
383
 
384
+ </li>
385
+
386
+
387
+ <li class="public ">
388
+ <span class="summary_signature">
389
+
390
+ <a href="#new_attr_value-instance_method" title="#new_attr_value (instance method)">#<strong>new_attr_value</strong>(name, value) &#x21d2; Jini </a>
391
+
392
+
393
+
394
+ </span>
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+ <span class="summary_desc"><div class='inline'>
405
+ <p>Replaces <strong>all</strong> attr <strong>values</strong> by name.</p>
406
+ </div></span>
407
+
384
408
  </li>
385
409
 
386
410
 
@@ -426,7 +450,7 @@
426
450
 
427
451
 
428
452
  <span class="summary_desc"><div class='inline'>
429
- <p>Removes attr by name before: ‘/<a href="@k="v"">parent/child</a>’ after: ‘/parent/child’.</p>
453
+ <p>Removes attr by name.</p>
430
454
  </div></span>
431
455
 
432
456
  </li>
@@ -453,6 +477,30 @@
453
477
  <p>Removes node by name.</p>
454
478
  </div></span>
455
479
 
480
+ </li>
481
+
482
+
483
+ <li class="public ">
484
+ <span class="summary_signature">
485
+
486
+ <a href="#replace_node-instance_method" title="#replace_node (instance method)">#<strong>replace_node</strong>(origin, new) &#x21d2; Object </a>
487
+
488
+
489
+
490
+ </span>
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+ <span class="summary_desc"><div class='inline'>
501
+ <p>This method replaces <strong>all</strong> origins to new.</p>
502
+ </div></span>
503
+
456
504
  </li>
457
505
 
458
506
 
@@ -474,7 +522,7 @@
474
522
 
475
523
 
476
524
  <span class="summary_desc"><div class='inline'>
477
- <p>Replace all ‘/’ to ‘::’ symbols if path doesn’t contain invalid symbols for selection.</p>
525
+ <p>Replace all ‘/’ to ‘::’ symbols.</p>
478
526
  </div></span>
479
527
 
480
528
  </li>
@@ -655,12 +703,12 @@
655
703
  <pre class="lines">
656
704
 
657
705
 
658
- 77
659
- 78
660
- 79</pre>
706
+ 92
707
+ 93
708
+ 94</pre>
661
709
  </td>
662
710
  <td>
663
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 77</span>
711
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 92</span>
664
712
 
665
713
  <span class='kw'>def</span> <span class='id identifier rubyid_add_attr'>add_attr</span><span class='lparen'>(</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>
666
714
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='ivar'>@head</span><span class='embexpr_end'>}</span><span class='tstring_content'>[@</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>=\&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot;]</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
@@ -682,7 +730,7 @@
682
730
  </h3><div class="docstring">
683
731
  <div class="discussion">
684
732
 
685
- <p>Adds ‘@value’ to tail</p>
733
+ <p>Adds ‘@value’ to tail.</p>
686
734
 
687
735
 
688
736
  </div>
@@ -734,12 +782,12 @@
734
782
  <pre class="lines">
735
783
 
736
784
 
737
- 84
738
- 85
739
- 86</pre>
785
+ 99
786
+ 100
787
+ 101</pre>
740
788
  </td>
741
789
  <td>
742
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 84</span>
790
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 99</span>
743
791
 
744
792
  <span class='kw'>def</span> <span class='id identifier rubyid_add_attrs'>add_attrs</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
745
793
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='ivar'>@head</span><span class='embexpr_end'>}</span><span class='tstring_content'>@</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
@@ -813,12 +861,12 @@
813
861
  <pre class="lines">
814
862
 
815
863
 
816
- 59
817
- 60
818
- 61</pre>
864
+ 55
865
+ 56
866
+ 57</pre>
819
867
  </td>
820
868
  <td>
821
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 59</span>
869
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 55</span>
822
870
 
823
871
  <span class='kw'>def</span> <span class='id identifier rubyid_add_node'>add_node</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span>
824
872
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='ivar'>@head</span><span class='embexpr_end'>}</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_node'>node</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
@@ -892,12 +940,12 @@
892
940
  <pre class="lines">
893
941
 
894
942
 
895
- 101
896
- 102
897
- 103</pre>
943
+ 144
944
+ 145
945
+ 146</pre>
898
946
  </td>
899
947
  <td>
900
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 101</span>
948
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 144</span>
901
949
 
902
950
  <span class='kw'>def</span> <span class='id identifier rubyid_add_nodes'>add_nodes</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span>
903
951
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='ivar'>@head</span><span class='embexpr_end'>}</span><span class='tstring_content'>//</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_node'>node</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
@@ -919,7 +967,7 @@
919
967
  </h3><div class="docstring">
920
968
  <div class="discussion">
921
969
 
922
- <p>Addition property in tail Before: ‘../child’ After: ‘../child/property()’</p>
970
+ <p>Addition property in tail. Before: ‘../child’ After: ‘../child/property()’</p>
923
971
 
924
972
 
925
973
  </div>
@@ -966,12 +1014,12 @@
966
1014
  <pre class="lines">
967
1015
 
968
1016
 
969
- 68
970
- 69
971
- 70</pre>
1017
+ 83
1018
+ 84
1019
+ 85</pre>
972
1020
  </td>
973
1021
  <td>
974
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 68</span>
1022
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 83</span>
975
1023
 
976
1024
  <span class='kw'>def</span> <span class='id identifier rubyid_add_property'>add_property</span><span class='lparen'>(</span><span class='id identifier rubyid_property'>property</span><span class='rparen'>)</span>
977
1025
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_add_node'>add_node</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_property'>property</span><span class='embexpr_end'>}</span><span class='tstring_content'>()</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
@@ -1043,13 +1091,13 @@
1043
1091
  <pre class="lines">
1044
1092
 
1045
1093
 
1046
- 92
1047
- 93
1048
- 94
1049
- 95</pre>
1094
+ 135
1095
+ 136
1096
+ 137
1097
+ 138</pre>
1050
1098
  </td>
1051
1099
  <td>
1052
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 92</span>
1100
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 135</span>
1053
1101
 
1054
1102
  <span class='kw'>def</span> <span class='id identifier rubyid_all'>all</span>
1055
1103
  <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Jini/InvalidPath.html" title="Jini::InvalidPath (class)">InvalidPath</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>You cannot add all tag after attr!</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='ivar'>@head</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_eql?'>eql?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>]</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
@@ -1142,13 +1190,13 @@
1142
1190
  <pre class="lines">
1143
1191
 
1144
1192
 
1145
- 110
1146
- 111
1147
- 112
1148
- 113</pre>
1193
+ 153
1194
+ 154
1195
+ 155
1196
+ 156</pre>
1149
1197
  </td>
1150
1198
  <td>
1151
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 110</span>
1199
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 153</span>
1152
1200
 
1153
1201
  <span class='kw'>def</span> <span class='id identifier rubyid_at'>at</span><span class='lparen'>(</span><span class='id identifier rubyid_position'>position</span><span class='rparen'>)</span>
1154
1202
  <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Jini/InvalidPath.html" title="Jini::InvalidPath (class)">InvalidPath</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Cant use at after selection</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>::</span><span class='tstring_end'>&#39;</span></span>
@@ -1229,12 +1277,12 @@
1229
1277
  <pre class="lines">
1230
1278
 
1231
1279
 
1232
- 170
1233
- 171
1234
- 172</pre>
1280
+ 189
1281
+ 190
1282
+ 191</pre>
1235
1283
  </td>
1236
1284
  <td>
1237
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 170</span>
1285
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 189</span>
1238
1286
 
1239
1287
  <span class='kw'>def</span> <span class='id identifier rubyid_gt'>gt</span><span class='lparen'>(</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>
1240
1288
  <span class='id identifier rubyid_action_between'>action_between</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&#39;</span></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>
@@ -1314,12 +1362,12 @@
1314
1362
  <pre class="lines">
1315
1363
 
1316
1364
 
1317
- 161
1318
- 162
1319
- 163</pre>
1365
+ 180
1366
+ 181
1367
+ 182</pre>
1320
1368
  </td>
1321
1369
  <td>
1322
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 161</span>
1370
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 180</span>
1323
1371
 
1324
1372
  <span class='kw'>def</span> <span class='id identifier rubyid_lt'>lt</span><span class='lparen'>(</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>
1325
1373
  <span class='id identifier rubyid_action_between'>action_between</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&#39;</span></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>
@@ -1327,6 +1375,109 @@
1327
1375
  </td>
1328
1376
  </tr>
1329
1377
  </table>
1378
+ </div>
1379
+
1380
+ <div class="method_details ">
1381
+ <h3 class="signature " id="new_attr_value-instance_method">
1382
+
1383
+ #<strong>new_attr_value</strong>(name, value) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1384
+
1385
+
1386
+
1387
+
1388
+
1389
+ </h3><div class="docstring">
1390
+ <div class="discussion">
1391
+
1392
+ <p>Replaces <strong>all</strong> attr <strong>values</strong> by name. Before: ‘[@id=“some value”]’ After:</p>
1393
+ <dl class="rdoc-list label-list"><dt>@id=“new value”
1394
+ <dd></dd></dl>
1395
+
1396
+
1397
+ </div>
1398
+ </div>
1399
+ <div class="tags">
1400
+ <p class="tag_title">Parameters:</p>
1401
+ <ul class="param">
1402
+
1403
+ <li>
1404
+
1405
+ <span class='name'>name</span>
1406
+
1407
+
1408
+ <span class='type'>(<tt>String</tt>)</span>
1409
+
1410
+
1411
+
1412
+ &mdash;
1413
+ <div class='inline'>
1414
+ <p>of attr</p>
1415
+ </div>
1416
+
1417
+ </li>
1418
+
1419
+ <li>
1420
+
1421
+ <span class='name'>value</span>
1422
+
1423
+
1424
+ <span class='type'>(<tt>String</tt>)</span>
1425
+
1426
+
1427
+
1428
+ &mdash;
1429
+ <div class='inline'>
1430
+ <p>upd value</p>
1431
+ </div>
1432
+
1433
+ </li>
1434
+
1435
+ </ul>
1436
+
1437
+ <p class="tag_title">Returns:</p>
1438
+ <ul class="return">
1439
+
1440
+ <li>
1441
+
1442
+
1443
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>)</span>
1444
+
1445
+
1446
+
1447
+ &mdash;
1448
+ <div class='inline'>
1449
+ <p>updated</p>
1450
+ </div>
1451
+
1452
+ </li>
1453
+
1454
+ </ul>
1455
+
1456
+ </div><table class="source_code">
1457
+ <tr>
1458
+ <td>
1459
+ <pre class="lines">
1460
+
1461
+
1462
+ 124
1463
+ 125
1464
+ 126
1465
+ 127
1466
+ 128
1467
+ 129</pre>
1468
+ </td>
1469
+ <td>
1470
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 124</span>
1471
+
1472
+ <span class='kw'>def</span> <span class='id identifier rubyid_new_attr_value'>new_attr_value</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
1473
+ <span class='id identifier rubyid_n_rex'>n_rex</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(\[@?</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>=&quot;[^&quot;]+&quot;(\[\]+|\]))</span><span class='regexp_end'>/</span></span>
1474
+ <span class='id identifier rubyid_attr'>attr</span> <span class='op'>=</span> <span class='ivar'>@head</span><span class='lbracket'>[</span><span class='id identifier rubyid_n_rex'>n_rex</span><span class='rbracket'>]</span>
1475
+ <span class='id identifier rubyid_attr'>attr</span><span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>&quot;(.*?)&quot;</span><span class='regexp_end'>/</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot;</span><span class='tstring_end'>&quot;</span></span>
1476
+ <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='id identifier rubyid_n_rex'>n_rex</span><span class='comma'>,</span> <span class='id identifier rubyid_attr'>attr</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_attr'>attr</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1477
+ <span class='kw'>end</span></pre>
1478
+ </td>
1479
+ </tr>
1480
+ </table>
1330
1481
  </div>
1331
1482
 
1332
1483
  <div class="method_details ">
@@ -1409,12 +1560,12 @@
1409
1560
  <pre class="lines">
1410
1561
 
1411
1562
 
1412
- 152
1413
- 153
1414
- 154</pre>
1563
+ 171
1564
+ 172
1565
+ 173</pre>
1415
1566
  </td>
1416
1567
  <td>
1417
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 152</span>
1568
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 171</span>
1418
1569
 
1419
1570
  <span class='kw'>def</span> <span class='kw'>or</span><span class='lparen'>(</span><span class='id identifier rubyid_alpha'>alpha</span><span class='comma'>,</span> <span class='id identifier rubyid_beta'>beta</span><span class='rparen'>)</span>
1420
1571
  <span class='id identifier rubyid_action_between'>action_between</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>|</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_alpha'>alpha</span><span class='comma'>,</span> <span class='id identifier rubyid_beta'>beta</span><span class='rparen'>)</span>
@@ -1436,7 +1587,7 @@
1436
1587
  </h3><div class="docstring">
1437
1588
  <div class="discussion">
1438
1589
 
1439
- <p>Removes attr by name before: ‘/<a href="@k="v"">parent/child</a>’ after: ‘/parent/child’</p>
1590
+ <p>Removes attr by name. before: ‘/parent/child [@k=“v”]’ after: ‘/parent/child’</p>
1440
1591
 
1441
1592
 
1442
1593
  </div>
@@ -1488,18 +1639,18 @@
1488
1639
  <pre class="lines">
1489
1640
 
1490
1641
 
1491
- 142
1492
- 143
1493
- 144
1494
- 145
1495
- 146</pre>
1642
+ 110
1643
+ 111
1644
+ 112
1645
+ 113
1646
+ 114</pre>
1496
1647
  </td>
1497
1648
  <td>
1498
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 142</span>
1649
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 110</span>
1499
1650
 
1500
1651
  <span class='kw'>def</span> <span class='id identifier rubyid_remove_attr'>remove_attr</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
1501
1652
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span>
1502
- <span class='id identifier rubyid_purge'>purge</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(\[@?</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>=&quot;[^&quot;]+&quot;(\[\]+|\]))</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
1653
+ <span class='id identifier rubyid_purge_head'>purge_head</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(\[@?</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>=&quot;[^&quot;]+&quot;(\[\]+|\]))</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
1503
1654
  <span class='rparen'>)</span>
1504
1655
  <span class='kw'>end</span></pre>
1505
1656
  </td>
@@ -1571,18 +1722,101 @@
1571
1722
  <pre class="lines">
1572
1723
 
1573
1724
 
1574
- 129
1575
- 130
1576
- 131
1577
- 132
1578
- 133</pre>
1725
+ 62
1726
+ 63
1727
+ 64</pre>
1579
1728
  </td>
1580
1729
  <td>
1581
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 129</span>
1730
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 62</span>
1582
1731
 
1583
1732
  <span class='kw'>def</span> <span class='id identifier rubyid_remove_node'>remove_node</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span>
1733
+ <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_purge_head'>purge_head</span><span class='lparen'>(</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_node'>node</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1734
+ <span class='kw'>end</span></pre>
1735
+ </td>
1736
+ </tr>
1737
+ </table>
1738
+ </div>
1739
+
1740
+ <div class="method_details ">
1741
+ <h3 class="signature " id="replace_node-instance_method">
1742
+
1743
+ #<strong>replace_node</strong>(origin, new) &#x21d2; <tt>Object</tt>
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+ </h3><div class="docstring">
1750
+ <div class="discussion">
1751
+
1752
+ <p>This method replaces <strong>all</strong> origins to new</p>
1753
+
1754
+
1755
+ </div>
1756
+ </div>
1757
+ <div class="tags">
1758
+ <p class="tag_title">Parameters:</p>
1759
+ <ul class="param">
1760
+
1761
+ <li>
1762
+
1763
+ <span class='name'>origin</span>
1764
+
1765
+
1766
+ <span class='type'>(<tt>String</tt>)</span>
1767
+
1768
+
1769
+
1770
+ &mdash;
1771
+ <div class='inline'>
1772
+ <p>node</p>
1773
+ </div>
1774
+
1775
+ </li>
1776
+
1777
+ <li>
1778
+
1779
+ <span class='name'>new</span>
1780
+
1781
+
1782
+ <span class='type'>(<tt>String</tt>)</span>
1783
+
1784
+
1785
+
1786
+ &mdash;
1787
+ <div class='inline'>
1788
+ <p>node</p>
1789
+ </div>
1790
+
1791
+ </li>
1792
+
1793
+ </ul>
1794
+
1795
+
1796
+ </div><table class="source_code">
1797
+ <tr>
1798
+ <td>
1799
+ <pre class="lines">
1800
+
1801
+
1802
+ 69
1803
+ 70
1804
+ 71
1805
+ 72
1806
+ 73
1807
+ 74
1808
+ 75
1809
+ 76</pre>
1810
+ </td>
1811
+ <td>
1812
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 69</span>
1813
+
1814
+ <span class='kw'>def</span> <span class='id identifier rubyid_replace_node'>replace_node</span><span class='lparen'>(</span><span class='id identifier rubyid_origin'>origin</span><span class='comma'>,</span> <span class='id identifier rubyid_new'>new</span><span class='rparen'>)</span>
1584
1815
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span>
1585
- <span class='id identifier rubyid_purge'>purge</span><span class='lparen'>(</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_node'>node</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
1816
+ <span class='ivar'>@head</span>
1817
+ <span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1818
+ <span class='period'>.</span><span class='id identifier rubyid_map!'>map!</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_node'>node</span><span class='op'>|</span> <span class='id identifier rubyid_node'>node</span><span class='period'>.</span><span class='id identifier rubyid_eql?'>eql?</span><span class='lparen'>(</span><span class='id identifier rubyid_origin'>origin</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_new'>new</span> <span class='op'>:</span> <span class='id identifier rubyid_node'>node</span> <span class='rbrace'>}</span>
1819
+ <span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1586
1820
  <span class='rparen'>)</span>
1587
1821
  <span class='kw'>end</span></pre>
1588
1822
  </td>
@@ -1602,7 +1836,7 @@
1602
1836
  </h3><div class="docstring">
1603
1837
  <div class="discussion">
1604
1838
 
1605
- <p>Replace all ‘/’ to ‘::’ symbols if path doesn’t contain invalid symbols for selection</p>
1839
+ <p>Replace all ‘/’ to ‘::’ symbols. if path doesn’t contain invalid symbols for selection</p>
1606
1840
 
1607
1841
 
1608
1842
  </div>
@@ -1652,20 +1886,16 @@
1652
1886
  <pre class="lines">
1653
1887
 
1654
1888
 
1655
- 119
1656
- 120
1657
- 121
1658
- 122
1659
- 123
1660
- 124</pre>
1889
+ 162
1890
+ 163
1891
+ 164
1892
+ 165</pre>
1661
1893
  </td>
1662
1894
  <td>
1663
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 119</span>
1895
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 162</span>
1664
1896
 
1665
1897
  <span class='kw'>def</span> <span class='id identifier rubyid_selection'>selection</span>
1666
- <span class='kw'>if</span> <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>[</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>]</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>@</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>//</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1667
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Jini/InvalidPath.html" title="Jini::InvalidPath (class)">InvalidPath</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Cannot select, path contains bad symbols</span><span class='tstring_end'>&#39;</span></span>
1668
- <span class='kw'>end</span>
1898
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Jini/InvalidPath.html" title="Jini::InvalidPath (class)">InvalidPath</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Cannot select, path contains bad symbols</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_bad_symbols?'>bad_symbols?</span> <span class='ivar'>@head</span>
1669
1899
  <span class='const'><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Jini#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>::</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
1670
1900
  <span class='kw'>end</span></pre>
1671
1901
  </td>
@@ -1739,22 +1969,14 @@
1739
1969
  47
1740
1970
  48
1741
1971
  49
1742
- 50
1743
- 51
1744
- 52
1745
- 53
1746
- 54</pre>
1972
+ 50</pre>
1747
1973
  </td>
1748
1974
  <td>
1749
1975
  <pre class="code"><span class="info file"># File 'lib/jini.rb', line 46</span>
1750
1976
 
1751
1977
  <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1752
1978
  <span class='id identifier rubyid_copy'>copy</span> <span class='op'>=</span> <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>//|/</span><span class='regexp_end'>}</span></span><span class='rparen'>)</span>
1753
- <span class='id identifier rubyid_copy'>copy</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_node'>node</span><span class='op'>|</span>
1754
- <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_node'>node</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[|]|@|=|&gt;|&lt;</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_node'>node</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1755
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Jini/InvalidPath.html" title="Jini::InvalidPath (class)">InvalidPath</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Nodes can&#39;t contain spaces: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_node'>node</span><span class='embexpr_end'>}</span><span class='tstring_content'> – contain space.</span><span class='tstring_end'>&quot;</span></span>
1756
- <span class='kw'>end</span>
1757
- <span class='kw'>end</span>
1979
+ <span class='id identifier rubyid_copy'>copy</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_method'>method</span><span class='lparen'>(</span><span class='symbol'>:space_check</span><span class='rparen'>)</span><span class='rparen'>)</span>
1758
1980
  <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
1759
1981
  <span class='kw'>end</span></pre>
1760
1982
  </td>
@@ -1767,7 +1989,7 @@
1767
1989
  </div>
1768
1990
 
1769
1991
  <div id="footer">
1770
- Generated on Fri Sep 16 16:54:43 2022 by
1992
+ Generated on Sun Sep 18 00:36:17 2022 by
1771
1993
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1772
1994
  0.9.28 (ruby-3.0.0).
1773
1995
  </div>
data/doc/_index.html CHANGED
@@ -112,7 +112,7 @@
112
112
  </div>
113
113
 
114
114
  <div id="footer">
115
- Generated on Fri Sep 16 16:54:42 2022 by
115
+ Generated on Sun Sep 18 00:36:17 2022 by
116
116
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
117
117
  0.9.28 (ruby-3.0.0).
118
118
  </div>
data/doc/file.README.html CHANGED
@@ -61,7 +61,7 @@
61
61
 
62
62
  <p><a href="https://badge.fury.io/rb/jini"><img src="https://badge.fury.io/rb/jini.svg" alt="Gem Version" /></a></p>
63
63
 
64
- <p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.7/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
64
+ <p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.9/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
65
65
 
66
66
  <p><code>ruby
67
67
  require 'jini'
@@ -75,7 +75,7 @@ xpath = Jini
75
75
  puts(xpath) # -&gt; xpath: /parent[@key="value"]
76
76
  </code></p>
77
77
 
78
- <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.7">here</a>.</p>
78
+ <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.9">here</a>.</p>
79
79
 
80
80
  <p>Install it:</p>
81
81
 
@@ -94,7 +94,7 @@ is <em>building</em> XPATHs.</p>
94
94
  </div></div>
95
95
 
96
96
  <div id="footer">
97
- Generated on Fri Sep 16 16:54:42 2022 by
97
+ Generated on Sun Sep 18 00:36:17 2022 by
98
98
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
99
99
  0.9.28 (ruby-3.0.0).
100
100
  </div>
data/doc/index.html CHANGED
@@ -61,7 +61,7 @@
61
61
 
62
62
  <p><a href="https://badge.fury.io/rb/jini"><img src="https://badge.fury.io/rb/jini.svg" alt="Gem Version" /></a></p>
63
63
 
64
- <p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.7/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
64
+ <p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.9/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
65
65
 
66
66
  <p><code>ruby
67
67
  require 'jini'
@@ -75,7 +75,7 @@ xpath = Jini
75
75
  puts(xpath) # -&gt; xpath: /parent[@key="value"]
76
76
  </code></p>
77
77
 
78
- <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.7">here</a>.</p>
78
+ <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.9">here</a>.</p>
79
79
 
80
80
  <p>Install it:</p>
81
81
 
@@ -94,7 +94,7 @@ is <em>building</em> XPATHs.</p>
94
94
  </div></div>
95
95
 
96
96
  <div id="footer">
97
- Generated on Fri Sep 16 16:54:42 2022 by
97
+ Generated on Sun Sep 18 00:36:17 2022 by
98
98
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
99
99
  0.9.28 (ruby-3.0.0).
100
100
  </div>
data/doc/method_list.html CHANGED
@@ -126,7 +126,7 @@
126
126
 
127
127
  <li class="odd ">
128
128
  <div class="item">
129
- <span class='object_link'><a href="Jini.html#or-instance_method" title="Jini#or (method)">#or</a></span>
129
+ <span class='object_link'><a href="Jini.html#new_attr_value-instance_method" title="Jini#new_attr_value (method)">#new_attr_value</a></span>
130
130
  <small>Jini</small>
131
131
  </div>
132
132
  </li>
@@ -134,13 +134,21 @@
134
134
 
135
135
  <li class="even ">
136
136
  <div class="item">
137
- <span class='object_link'><a href="Jini.html#remove_attr-instance_method" title="Jini#remove_attr (method)">#remove_attr</a></span>
137
+ <span class='object_link'><a href="Jini.html#or-instance_method" title="Jini#or (method)">#or</a></span>
138
138
  <small>Jini</small>
139
139
  </div>
140
140
  </li>
141
141
 
142
142
 
143
143
  <li class="odd ">
144
+ <div class="item">
145
+ <span class='object_link'><a href="Jini.html#remove_attr-instance_method" title="Jini#remove_attr (method)">#remove_attr</a></span>
146
+ <small>Jini</small>
147
+ </div>
148
+ </li>
149
+
150
+
151
+ <li class="even ">
144
152
  <div class="item">
145
153
  <span class='object_link'><a href="Jini.html#remove_node-instance_method" title="Jini#remove_node (method)">#remove_node</a></span>
146
154
  <small>Jini</small>
@@ -148,6 +156,14 @@
148
156
  </li>
149
157
 
150
158
 
159
+ <li class="odd ">
160
+ <div class="item">
161
+ <span class='object_link'><a href="Jini.html#replace_node-instance_method" title="Jini#replace_node (method)">#replace_node</a></span>
162
+ <small>Jini</small>
163
+ </div>
164
+ </li>
165
+
166
+
151
167
  <li class="even ">
152
168
  <div class="item">
153
169
  <span class='object_link'><a href="Jini.html#selection-instance_method" title="Jini#selection (method)">#selection</a></span>
@@ -100,7 +100,7 @@
100
100
  </div>
101
101
 
102
102
  <div id="footer">
103
- Generated on Fri Sep 16 16:54:42 2022 by
103
+ Generated on Sun Sep 18 00:36:17 2022 by
104
104
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
105
  0.9.28 (ruby-3.0.0).
106
106
  </div>
data/jini.gemspec CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
5
5
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
6
6
  s.required_ruby_version = '>=3.0.0'
7
7
  s.name = 'jini'
8
- s.version = '0.0.8'
8
+ s.version = '0.1.0'
9
9
  s.license = 'MIT'
10
10
  s.summary = 'Simple Immutable Ruby XPATH Builder'
11
11
  s.description = 'Class Jini helps you build a XPATH and then modify its parts via a simple fluent interface.'
data/lib/jini.rb CHANGED
@@ -26,9 +26,9 @@
26
26
  #
27
27
  # require 'jini'
28
28
  # xpath = Jini.new('parent')
29
- # .add_path(node: 'child')
30
- # .add_path(node: 'toy')
31
- # .to_s // body/child/toy
29
+ # .add_node('child')
30
+ # .add_attr('toy', 'plane')
31
+ # .to_s // parent/child[@toy="plane"]
32
32
  class Jini
33
33
  # When path not valid
34
34
  class InvalidPath < StandardError; end
@@ -45,11 +45,7 @@ class Jini
45
45
  # @raise [InvalidPath] if contain spaces in simple nodes
46
46
  def to_s
47
47
  copy = @head.split(%r{//|/})
48
- copy.each do |node|
49
- if !node.match(/[|]|@|=|>|</) && node.include?(' ')
50
- raise InvalidPath, "Nodes can't contain spaces: #{node} – contain space."
51
- end
52
- end
48
+ copy.each(&method(:space_check))
53
49
  @head.to_s
54
50
  end
55
51
 
@@ -60,7 +56,26 @@ class Jini
60
56
  Jini.new("#{@head}/#{node}")
61
57
  end
62
58
 
63
- # Addition property in tail
59
+ # Removes node by name
60
+ # @param node [String] name of node for removal
61
+ # @return [Jini] without a node
62
+ def remove_node(node)
63
+ Jini.new(purge_head("/#{node}"))
64
+ end
65
+
66
+ # This method replaces *all* origins to new
67
+ # @param [String] origin node
68
+ # @param [String] new node
69
+ def replace_node(origin, new)
70
+ Jini.new(
71
+ @head
72
+ .split('/')
73
+ .map! { |node| node.eql?(origin) ? new : node }
74
+ .join('/')
75
+ )
76
+ end
77
+
78
+ # Addition property in tail.
64
79
  # Before: '../child'
65
80
  # After: '../child/property()'
66
81
  # @param property [String]
@@ -78,13 +93,41 @@ class Jini
78
93
  Jini.new("#{@head}[@#{key}=\"#{value}\"]")
79
94
  end
80
95
 
81
- # Adds '@value' to tail
96
+ # Adds '@value' to tail.
82
97
  # @param value [String] with value attr
83
98
  # @return [Jini] object
84
99
  def add_attrs(value)
85
100
  Jini.new("#{@head}@#{value}")
86
101
  end
87
102
 
103
+ # Removes attr by name.
104
+ # before:
105
+ # '/parent/child [@k="v"]'
106
+ # after:
107
+ # '/parent/child'
108
+ # @param [String] name of attr
109
+ # @return [Jini] without an attr
110
+ def remove_attr(name)
111
+ Jini.new(
112
+ purge_head(/(\[@?#{name}="[^"]+"(\[\]+|\]))/)
113
+ )
114
+ end
115
+
116
+ # Replaces *all* attr *values* by name.
117
+ # Before:
118
+ # '[@id="some value"]'
119
+ # After:
120
+ # [@id="new value"]
121
+ # @param name [String] of attr
122
+ # @param value [String] upd value
123
+ # @return [Jini] updated
124
+ def new_attr_value(name, value)
125
+ n_rex = /(\[@?#{name}="[^"]+"(\[\]+|\]))/
126
+ attr = @head[n_rex]
127
+ attr[/"(.*?)"/] = "\"#{value}\""
128
+ Jini.new(@head.gsub(n_rex, attr)) unless attr.nil?
129
+ end
130
+
88
131
  # Xpath with all elements.
89
132
  # Addition an '*' to tail of xpath
90
133
  # @return [Jini] object
@@ -112,39 +155,15 @@ class Jini
112
155
  Jini.new("#{@head}[#{position}]")
113
156
  end
114
157
 
115
- # Replace all '/' to '::' symbols
158
+ # Replace all '/' to '::' symbols.
116
159
  # if path doesn't contain invalid symbols for selection
117
160
  # @return [Jini] selection
118
161
  # @raise [InvalidPath] when path can't present with select
119
162
  def selection
120
- if @head.include?('[') || @head.include?(']') || @head.include?('@') || @head.include?('//')
121
- raise InvalidPath, 'Cannot select, path contains bad symbols'
122
- end
163
+ raise InvalidPath, 'Cannot select, path contains bad symbols' if bad_symbols? @head
123
164
  Jini.new(@head.gsub('/', '::').to_s)
124
165
  end
125
166
 
126
- # Removes node by name
127
- # @param node [String] name of node for removal
128
- # @return [Jini] without a node
129
- def remove_node(node)
130
- Jini.new(
131
- purge("/#{node}")
132
- )
133
- end
134
-
135
- # Removes attr by name
136
- # before:
137
- # '/parent/child[@k="v"]'
138
- # after:
139
- # '/parent/child'
140
- # @param [String] name of attr
141
- # @return [Jini] without an attr
142
- def remove_attr(name)
143
- Jini.new(
144
- purge(/(\[@?#{name}="[^"]+"(\[\]+|\]))/)
145
- )
146
- end
147
-
148
167
  # Adds '[alpha | beta]' in tail.
149
168
  # @param [String] alpha statement
150
169
  # @param [String] beta statement
@@ -173,13 +192,33 @@ class Jini
173
192
 
174
193
  private
175
194
 
195
+ # @param node [String] node for check
196
+ def space_check(node)
197
+ raise InvalidPath, "Nodes can't contain spaces: #{node} – contain space." if valid? node
198
+ end
199
+
200
+ # regex: '[' or ']' or '@' or '//'
201
+ # @param node [String]
202
+ # @return node [Boolean] matching regex
203
+ def bad_symbols?(node)
204
+ node.match %r{[|]|@|//}
205
+ end
206
+
207
+ # regex: '[' or ']' or '@' or '=' or '<' or '>'
208
+ # @param node [String] node for check
209
+ # @return node [Boolean] matching regex
210
+ def valid?(node)
211
+ !node.match(/[|]|@|=|>|</) && node.include?(' ')
212
+ end
213
+
176
214
  # Some action between two statements.
177
215
  def action_between(action, alpha, beta)
178
216
  Jini.new("#{@head}[#{alpha} #{action} #{beta}]")
179
217
  end
180
218
 
219
+ # Purging head from token.
181
220
  # @param [Regexp | String] token to be purged from the head
182
- def purge(token)
221
+ def purge_head(token)
183
222
  @head.gsub(token, '')
184
223
  end
185
224
  end
data/test/jini_test.rb CHANGED
@@ -223,4 +223,53 @@ class JiniTest < Minitest::Test
223
223
  .to_s
224
224
  end
225
225
  end
226
+
227
+ def test_replace_node_single
228
+ assert_equal(
229
+ 'parent/child/toy/child/kek',
230
+ Jini.new(PARENT)
231
+ .add_node(CHILD)
232
+ .add_node('toy')
233
+ .add_node(CHILD)
234
+ .add_node('nonkek')
235
+ .replace_node('nonkek', 'kek')
236
+ .to_s
237
+ )
238
+ end
239
+
240
+ def test_replace_node_multi
241
+ assert_equal(
242
+ 'parent/wife/toy/wife',
243
+ Jini.new(PARENT)
244
+ .add_node(CHILD)
245
+ .add_node('toy')
246
+ .add_node(CHILD)
247
+ .replace_node(CHILD, 'wife')
248
+ .to_s
249
+ )
250
+ end
251
+
252
+ def test_replace_node_with_attr
253
+ assert_equal(
254
+ 'parent/wife/toy[@material="plastic"]/wife',
255
+ Jini.new(PARENT)
256
+ .add_node(CHILD)
257
+ .add_node('toy')
258
+ .add_attr('material', 'plastic')
259
+ .add_node(CHILD)
260
+ .replace_node(CHILD, 'wife')
261
+ .to_s
262
+ )
263
+ end
264
+
265
+ def test_replace_attr
266
+ assert_equal(
267
+ 'parent/child[@toy="car"]',
268
+ Jini.new(PARENT)
269
+ .add_node(CHILD)
270
+ .add_attr('toy', 'plane')
271
+ .new_attr_value('toy', 'car')
272
+ .to_s
273
+ )
274
+ end
226
275
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jini
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Ivanchuck
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-16 00:00:00.000000000 Z
11
+ date: 2022-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest