jini 0.0.8 → 0.0.9
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 +4 -4
- data/.yardoc/checksums +1 -1
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/README.md +2 -2
- data/doc/Jini/InvalidPath.html +1 -1
- data/doc/Jini.html +186 -87
- data/doc/_index.html +1 -1
- data/doc/file.README.html +3 -3
- data/doc/index.html +3 -3
- data/doc/method_list.html +9 -1
- data/doc/top-level-namespace.html +1 -1
- data/jini.gemspec +1 -1
- data/lib/jini.rb +53 -27
- data/test/jini_test.rb +38 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ff07fd6583401569bff9987836b1fb42d7f0e2f63be76c57341bcaf8d7687ce5
|
|
4
|
+
data.tar.gz: 12936604512f8e880e9b18d48eeb5abb92d6d94fbb73847a508915bccf16ddf4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9d45fd8e0d6ea6f14aa029070ef1222359fa206a0253e23860582680208f1d4c317fa130d7c0326259b598761688a699a76b44ff37422d6dbed52ff6bb682551
|
|
7
|
+
data.tar.gz: 9137f564168c1f51d6a2ce33a92aa85cc8577492bdbf06eb76025a0acca4dbb63c7f982eb86644c4152538737989cd12a7bfa26a667161d9027771318efa0830
|
data/.yardoc/checksums
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
lib/jini.rb
|
|
1
|
+
lib/jini.rb a9106f03f3b7d09ee47b0bc5ae7bce709b21c1b5
|
data/.yardoc/object_types
CHANGED
|
Binary file
|
data/.yardoc/objects/root.dat
CHANGED
|
Binary file
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/jini)
|
|
4
4
|
|
|
5
|
-
The class [`Jini`](https://www.rubydoc.info/gems/jini/0.0.
|
|
5
|
+
The class [`Jini`](https://www.rubydoc.info/gems/jini/0.0.8/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.
|
|
19
|
+
The full list of methods is [here](https://www.rubydoc.info/gems/jini/0.0.8).
|
|
20
20
|
|
|
21
21
|
Install it:
|
|
22
22
|
|
data/doc/Jini/InvalidPath.html
CHANGED
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
</div>
|
|
126
126
|
|
|
127
127
|
<div id="footer">
|
|
128
|
-
Generated on
|
|
128
|
+
Generated on Sat Sep 17 07:51:31 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
|
@@ -106,9 +106,9 @@
|
|
|
106
106
|
|
|
107
107
|
<p>require ‘jini’ xpath = Jini.new(‘parent’)</p>
|
|
108
108
|
|
|
109
|
-
<pre class="code ruby"><code class="ruby">.
|
|
110
|
-
.
|
|
111
|
-
.to_s //
|
|
109
|
+
<pre class="code ruby"><code class="ruby">.add_node('child')
|
|
110
|
+
.add_attr('toy', 'plane')
|
|
111
|
+
.to_s // parent/child[@toy="plane"]
|
|
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
|
|
259
|
+
<p>Addition property in tail.</p>
|
|
260
260
|
</div></span>
|
|
261
261
|
|
|
262
262
|
</li>
|
|
@@ -426,7 +426,7 @@
|
|
|
426
426
|
|
|
427
427
|
|
|
428
428
|
<span class="summary_desc"><div class='inline'>
|
|
429
|
-
<p>Removes attr by name
|
|
429
|
+
<p>Removes attr by name.</p>
|
|
430
430
|
</div></span>
|
|
431
431
|
|
|
432
432
|
</li>
|
|
@@ -453,6 +453,30 @@
|
|
|
453
453
|
<p>Removes node by name.</p>
|
|
454
454
|
</div></span>
|
|
455
455
|
|
|
456
|
+
</li>
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
<li class="public ">
|
|
460
|
+
<span class="summary_signature">
|
|
461
|
+
|
|
462
|
+
<a href="#replace_node-instance_method" title="#replace_node (instance method)">#<strong>replace_node</strong>(origin, new) ⇒ Object </a>
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
</span>
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
<span class="summary_desc"><div class='inline'>
|
|
477
|
+
<p>This method replaces <strong>all</strong> origins to new.</p>
|
|
478
|
+
</div></span>
|
|
479
|
+
|
|
456
480
|
</li>
|
|
457
481
|
|
|
458
482
|
|
|
@@ -474,7 +498,7 @@
|
|
|
474
498
|
|
|
475
499
|
|
|
476
500
|
<span class="summary_desc"><div class='inline'>
|
|
477
|
-
<p>Replace all ‘/’ to ‘::’ symbols
|
|
501
|
+
<p>Replace all ‘/’ to ‘::’ symbols.</p>
|
|
478
502
|
</div></span>
|
|
479
503
|
|
|
480
504
|
</li>
|
|
@@ -655,12 +679,12 @@
|
|
|
655
679
|
<pre class="lines">
|
|
656
680
|
|
|
657
681
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
682
|
+
94
|
|
683
|
+
95
|
|
684
|
+
96</pre>
|
|
661
685
|
</td>
|
|
662
686
|
<td>
|
|
663
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
687
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 94</span>
|
|
664
688
|
|
|
665
689
|
<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
690
|
<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'>"</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'>=\"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='embexpr_end'>}</span><span class='tstring_content'>\"]</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
@@ -682,7 +706,7 @@
|
|
|
682
706
|
</h3><div class="docstring">
|
|
683
707
|
<div class="discussion">
|
|
684
708
|
|
|
685
|
-
<p>Adds ‘@value’ to tail
|
|
709
|
+
<p>Adds ‘@value’ to tail.</p>
|
|
686
710
|
|
|
687
711
|
|
|
688
712
|
</div>
|
|
@@ -734,12 +758,12 @@
|
|
|
734
758
|
<pre class="lines">
|
|
735
759
|
|
|
736
760
|
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
761
|
+
101
|
|
762
|
+
102
|
|
763
|
+
103</pre>
|
|
740
764
|
</td>
|
|
741
765
|
<td>
|
|
742
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
766
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 101</span>
|
|
743
767
|
|
|
744
768
|
<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
769
|
<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'>"</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'>"</span></span><span class='rparen'>)</span>
|
|
@@ -813,12 +837,12 @@
|
|
|
813
837
|
<pre class="lines">
|
|
814
838
|
|
|
815
839
|
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
840
|
+
55
|
|
841
|
+
56
|
|
842
|
+
57</pre>
|
|
819
843
|
</td>
|
|
820
844
|
<td>
|
|
821
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
845
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 55</span>
|
|
822
846
|
|
|
823
847
|
<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
848
|
<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'>"</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'>"</span></span><span class='rparen'>)</span>
|
|
@@ -892,12 +916,12 @@
|
|
|
892
916
|
<pre class="lines">
|
|
893
917
|
|
|
894
918
|
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
919
|
+
118
|
|
920
|
+
119
|
|
921
|
+
120</pre>
|
|
898
922
|
</td>
|
|
899
923
|
<td>
|
|
900
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
924
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 118</span>
|
|
901
925
|
|
|
902
926
|
<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
927
|
<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'>"</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'>"</span></span><span class='rparen'>)</span>
|
|
@@ -919,7 +943,7 @@
|
|
|
919
943
|
</h3><div class="docstring">
|
|
920
944
|
<div class="discussion">
|
|
921
945
|
|
|
922
|
-
<p>Addition property in tail Before: ‘../child’ After: ‘../child/property()’</p>
|
|
946
|
+
<p>Addition property in tail. Before: ‘../child’ After: ‘../child/property()’</p>
|
|
923
947
|
|
|
924
948
|
|
|
925
949
|
</div>
|
|
@@ -966,12 +990,12 @@
|
|
|
966
990
|
<pre class="lines">
|
|
967
991
|
|
|
968
992
|
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
993
|
+
85
|
|
994
|
+
86
|
|
995
|
+
87</pre>
|
|
972
996
|
</td>
|
|
973
997
|
<td>
|
|
974
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
998
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 85</span>
|
|
975
999
|
|
|
976
1000
|
<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
1001
|
<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'>"</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'>"</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 +1067,13 @@
|
|
|
1043
1067
|
<pre class="lines">
|
|
1044
1068
|
|
|
1045
1069
|
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1070
|
+
109
|
|
1071
|
+
110
|
|
1072
|
+
111
|
|
1073
|
+
112</pre>
|
|
1050
1074
|
</td>
|
|
1051
1075
|
<td>
|
|
1052
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1076
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 109</span>
|
|
1053
1077
|
|
|
1054
1078
|
<span class='kw'>def</span> <span class='id identifier rubyid_all'>all</span>
|
|
1055
1079
|
<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'>'</span><span class='tstring_content'>You cannot add all tag after attr!</span><span class='tstring_end'>'</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'>'</span><span class='tstring_content'>]</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
@@ -1142,13 +1166,13 @@
|
|
|
1142
1166
|
<pre class="lines">
|
|
1143
1167
|
|
|
1144
1168
|
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1169
|
+
127
|
|
1170
|
+
128
|
|
1171
|
+
129
|
|
1172
|
+
130</pre>
|
|
1149
1173
|
</td>
|
|
1150
1174
|
<td>
|
|
1151
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1175
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 127</span>
|
|
1152
1176
|
|
|
1153
1177
|
<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
1178
|
<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'>'</span><span class='tstring_content'>Cant use at after selection</span><span class='tstring_end'>'</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'>'</span><span class='tstring_content'>::</span><span class='tstring_end'>'</span></span>
|
|
@@ -1229,12 +1253,12 @@
|
|
|
1229
1253
|
<pre class="lines">
|
|
1230
1254
|
|
|
1231
1255
|
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1256
|
+
176
|
|
1257
|
+
177
|
|
1258
|
+
178</pre>
|
|
1235
1259
|
</td>
|
|
1236
1260
|
<td>
|
|
1237
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1261
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 176</span>
|
|
1238
1262
|
|
|
1239
1263
|
<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
1264
|
<span class='id identifier rubyid_action_between'>action_between</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>></span><span class='tstring_end'>'</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 +1338,12 @@
|
|
|
1314
1338
|
<pre class="lines">
|
|
1315
1339
|
|
|
1316
1340
|
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1341
|
+
167
|
|
1342
|
+
168
|
|
1343
|
+
169</pre>
|
|
1320
1344
|
</td>
|
|
1321
1345
|
<td>
|
|
1322
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1346
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 167</span>
|
|
1323
1347
|
|
|
1324
1348
|
<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
1349
|
<span class='id identifier rubyid_action_between'>action_between</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'><</span><span class='tstring_end'>'</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>
|
|
@@ -1409,12 +1433,12 @@
|
|
|
1409
1433
|
<pre class="lines">
|
|
1410
1434
|
|
|
1411
1435
|
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1436
|
+
158
|
|
1437
|
+
159
|
|
1438
|
+
160</pre>
|
|
1415
1439
|
</td>
|
|
1416
1440
|
<td>
|
|
1417
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1441
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 158</span>
|
|
1418
1442
|
|
|
1419
1443
|
<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
1444
|
<span class='id identifier rubyid_action_between'>action_between</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>|</span><span class='tstring_end'>'</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 +1460,7 @@
|
|
|
1436
1460
|
</h3><div class="docstring">
|
|
1437
1461
|
<div class="discussion">
|
|
1438
1462
|
|
|
1439
|
-
<p>Removes attr by name before:
|
|
1463
|
+
<p>Removes attr by name. before: ‘/parent/child [@k=“v”]’ after: ‘/parent/child’</p>
|
|
1440
1464
|
|
|
1441
1465
|
|
|
1442
1466
|
</div>
|
|
@@ -1488,18 +1512,18 @@
|
|
|
1488
1512
|
<pre class="lines">
|
|
1489
1513
|
|
|
1490
1514
|
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1515
|
+
148
|
|
1516
|
+
149
|
|
1517
|
+
150
|
|
1518
|
+
151
|
|
1519
|
+
152</pre>
|
|
1496
1520
|
</td>
|
|
1497
1521
|
<td>
|
|
1498
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1522
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 148</span>
|
|
1499
1523
|
|
|
1500
1524
|
<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
1525
|
<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
|
|
1526
|
+
<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'>="[^"]+"(\[\]+|\]))</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
|
|
1503
1527
|
<span class='rparen'>)</span>
|
|
1504
1528
|
<span class='kw'>end</span></pre>
|
|
1505
1529
|
</td>
|
|
@@ -1571,18 +1595,105 @@
|
|
|
1571
1595
|
<pre class="lines">
|
|
1572
1596
|
|
|
1573
1597
|
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1598
|
+
62
|
|
1599
|
+
63
|
|
1600
|
+
64
|
|
1601
|
+
65
|
|
1602
|
+
66</pre>
|
|
1579
1603
|
</td>
|
|
1580
1604
|
<td>
|
|
1581
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1605
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 62</span>
|
|
1582
1606
|
|
|
1583
1607
|
<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>
|
|
1584
1608
|
<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
|
|
1609
|
+
<span class='id identifier rubyid_purge_head'>purge_head</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</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'>"</span></span><span class='rparen'>)</span>
|
|
1610
|
+
<span class='rparen'>)</span>
|
|
1611
|
+
<span class='kw'>end</span></pre>
|
|
1612
|
+
</td>
|
|
1613
|
+
</tr>
|
|
1614
|
+
</table>
|
|
1615
|
+
</div>
|
|
1616
|
+
|
|
1617
|
+
<div class="method_details ">
|
|
1618
|
+
<h3 class="signature " id="replace_node-instance_method">
|
|
1619
|
+
|
|
1620
|
+
#<strong>replace_node</strong>(origin, new) ⇒ <tt>Object</tt>
|
|
1621
|
+
|
|
1622
|
+
|
|
1623
|
+
|
|
1624
|
+
|
|
1625
|
+
|
|
1626
|
+
</h3><div class="docstring">
|
|
1627
|
+
<div class="discussion">
|
|
1628
|
+
|
|
1629
|
+
<p>This method replaces <strong>all</strong> origins to new</p>
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
</div>
|
|
1633
|
+
</div>
|
|
1634
|
+
<div class="tags">
|
|
1635
|
+
<p class="tag_title">Parameters:</p>
|
|
1636
|
+
<ul class="param">
|
|
1637
|
+
|
|
1638
|
+
<li>
|
|
1639
|
+
|
|
1640
|
+
<span class='name'>origin</span>
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
<span class='type'>(<tt>String</tt>)</span>
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
—
|
|
1648
|
+
<div class='inline'>
|
|
1649
|
+
<p>node</p>
|
|
1650
|
+
</div>
|
|
1651
|
+
|
|
1652
|
+
</li>
|
|
1653
|
+
|
|
1654
|
+
<li>
|
|
1655
|
+
|
|
1656
|
+
<span class='name'>new</span>
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
<span class='type'>(<tt>String</tt>)</span>
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
—
|
|
1664
|
+
<div class='inline'>
|
|
1665
|
+
<p>node</p>
|
|
1666
|
+
</div>
|
|
1667
|
+
|
|
1668
|
+
</li>
|
|
1669
|
+
|
|
1670
|
+
</ul>
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
</div><table class="source_code">
|
|
1674
|
+
<tr>
|
|
1675
|
+
<td>
|
|
1676
|
+
<pre class="lines">
|
|
1677
|
+
|
|
1678
|
+
|
|
1679
|
+
71
|
|
1680
|
+
72
|
|
1681
|
+
73
|
|
1682
|
+
74
|
|
1683
|
+
75
|
|
1684
|
+
76
|
|
1685
|
+
77
|
|
1686
|
+
78</pre>
|
|
1687
|
+
</td>
|
|
1688
|
+
<td>
|
|
1689
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 71</span>
|
|
1690
|
+
|
|
1691
|
+
<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>
|
|
1692
|
+
<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>
|
|
1693
|
+
<span class='ivar'>@head</span>
|
|
1694
|
+
<span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
1695
|
+
<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>
|
|
1696
|
+
<span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
1586
1697
|
<span class='rparen'>)</span>
|
|
1587
1698
|
<span class='kw'>end</span></pre>
|
|
1588
1699
|
</td>
|
|
@@ -1602,7 +1713,7 @@
|
|
|
1602
1713
|
</h3><div class="docstring">
|
|
1603
1714
|
<div class="discussion">
|
|
1604
1715
|
|
|
1605
|
-
<p>Replace all ‘/’ to ‘::’ symbols if path doesn’t contain invalid symbols for selection</p>
|
|
1716
|
+
<p>Replace all ‘/’ to ‘::’ symbols. if path doesn’t contain invalid symbols for selection</p>
|
|
1606
1717
|
|
|
1607
1718
|
|
|
1608
1719
|
</div>
|
|
@@ -1652,20 +1763,16 @@
|
|
|
1652
1763
|
<pre class="lines">
|
|
1653
1764
|
|
|
1654
1765
|
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
123
|
|
1660
|
-
124</pre>
|
|
1766
|
+
136
|
|
1767
|
+
137
|
|
1768
|
+
138
|
|
1769
|
+
139</pre>
|
|
1661
1770
|
</td>
|
|
1662
1771
|
<td>
|
|
1663
|
-
<pre class="code"><span class="info file"># File 'lib/jini.rb', line
|
|
1772
|
+
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 136</span>
|
|
1664
1773
|
|
|
1665
1774
|
<span class='kw'>def</span> <span class='id identifier rubyid_selection'>selection</span>
|
|
1666
|
-
<span class='
|
|
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'>'</span><span class='tstring_content'>Cannot select, path contains bad symbols</span><span class='tstring_end'>'</span></span>
|
|
1668
|
-
<span class='kw'>end</span>
|
|
1775
|
+
<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'>'</span><span class='tstring_content'>Cannot select, path contains bad symbols</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_bad_symbols?'>bad_symbols?</span> <span class='ivar'>@head</span>
|
|
1669
1776
|
<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'>'</span><span class='tstring_content'>/</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>::</span><span class='tstring_end'>'</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
1777
|
<span class='kw'>end</span></pre>
|
|
1671
1778
|
</td>
|
|
@@ -1739,22 +1846,14 @@
|
|
|
1739
1846
|
47
|
|
1740
1847
|
48
|
|
1741
1848
|
49
|
|
1742
|
-
50
|
|
1743
|
-
51
|
|
1744
|
-
52
|
|
1745
|
-
53
|
|
1746
|
-
54</pre>
|
|
1849
|
+
50</pre>
|
|
1747
1850
|
</td>
|
|
1748
1851
|
<td>
|
|
1749
1852
|
<pre class="code"><span class="info file"># File 'lib/jini.rb', line 46</span>
|
|
1750
1853
|
|
|
1751
1854
|
<span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
|
|
1752
1855
|
<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
|
|
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'>[|]|@|=|>|<</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span> <span class='op'>&&</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'>'</span><span class='tstring_content'> </span><span class='tstring_end'>'</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'>"</span><span class='tstring_content'>Nodes can'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'>"</span></span>
|
|
1756
|
-
<span class='kw'>end</span>
|
|
1757
|
-
<span class='kw'>end</span>
|
|
1856
|
+
<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'>&</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
1857
|
<span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
1759
1858
|
<span class='kw'>end</span></pre>
|
|
1760
1859
|
</td>
|
|
@@ -1767,7 +1866,7 @@
|
|
|
1767
1866
|
</div>
|
|
1768
1867
|
|
|
1769
1868
|
<div id="footer">
|
|
1770
|
-
Generated on
|
|
1869
|
+
Generated on Sat Sep 17 07:51:31 2022 by
|
|
1771
1870
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1772
1871
|
0.9.28 (ruby-3.0.0).
|
|
1773
1872
|
</div>
|
data/doc/_index.html
CHANGED
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
</div>
|
|
113
113
|
|
|
114
114
|
<div id="footer">
|
|
115
|
-
Generated on
|
|
115
|
+
Generated on Sat Sep 17 07:51:31 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.
|
|
64
|
+
<p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.8/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) # -> 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.
|
|
78
|
+
<p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.8">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
|
|
97
|
+
Generated on Sat Sep 17 07:51:31 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.
|
|
64
|
+
<p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.8/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) # -> 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.
|
|
78
|
+
<p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.8">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
|
|
97
|
+
Generated on Sat Sep 17 07:51:31 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
|
@@ -150,13 +150,21 @@
|
|
|
150
150
|
|
|
151
151
|
<li class="even ">
|
|
152
152
|
<div class="item">
|
|
153
|
-
<span class='object_link'><a href="Jini.html#
|
|
153
|
+
<span class='object_link'><a href="Jini.html#replace_node-instance_method" title="Jini#replace_node (method)">#replace_node</a></span>
|
|
154
154
|
<small>Jini</small>
|
|
155
155
|
</div>
|
|
156
156
|
</li>
|
|
157
157
|
|
|
158
158
|
|
|
159
159
|
<li class="odd ">
|
|
160
|
+
<div class="item">
|
|
161
|
+
<span class='object_link'><a href="Jini.html#selection-instance_method" title="Jini#selection (method)">#selection</a></span>
|
|
162
|
+
<small>Jini</small>
|
|
163
|
+
</div>
|
|
164
|
+
</li>
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
<li class="even ">
|
|
160
168
|
<div class="item">
|
|
161
169
|
<span class='object_link'><a href="Jini.html#to_s-instance_method" title="Jini#to_s (method)">#to_s</a></span>
|
|
162
170
|
<small>Jini</small>
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
</div>
|
|
101
101
|
|
|
102
102
|
<div id="footer">
|
|
103
|
-
Generated on
|
|
103
|
+
Generated on Sat Sep 17 07:51:31 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
|
+
s.version = '0.0.9'
|
|
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
|
-
# .
|
|
30
|
-
# .
|
|
31
|
-
# .to_s //
|
|
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
|
|
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,28 @@ class Jini
|
|
|
60
56
|
Jini.new("#{@head}/#{node}")
|
|
61
57
|
end
|
|
62
58
|
|
|
63
|
-
#
|
|
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(
|
|
64
|
+
purge_head("/#{node}")
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# This method replaces *all* origins to new
|
|
69
|
+
# @param [String] origin node
|
|
70
|
+
# @param [String] new node
|
|
71
|
+
def replace_node(origin, new)
|
|
72
|
+
Jini.new(
|
|
73
|
+
@head
|
|
74
|
+
.split('/')
|
|
75
|
+
.map! { |node| node.eql?(origin) ? new : node }
|
|
76
|
+
.join('/')
|
|
77
|
+
)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Addition property in tail.
|
|
64
81
|
# Before: '../child'
|
|
65
82
|
# After: '../child/property()'
|
|
66
83
|
# @param property [String]
|
|
@@ -78,7 +95,7 @@ class Jini
|
|
|
78
95
|
Jini.new("#{@head}[@#{key}=\"#{value}\"]")
|
|
79
96
|
end
|
|
80
97
|
|
|
81
|
-
# Adds '@value' to tail
|
|
98
|
+
# Adds '@value' to tail.
|
|
82
99
|
# @param value [String] with value attr
|
|
83
100
|
# @return [Jini] object
|
|
84
101
|
def add_attrs(value)
|
|
@@ -112,36 +129,25 @@ class Jini
|
|
|
112
129
|
Jini.new("#{@head}[#{position}]")
|
|
113
130
|
end
|
|
114
131
|
|
|
115
|
-
# Replace all '/' to '::' symbols
|
|
132
|
+
# Replace all '/' to '::' symbols.
|
|
116
133
|
# if path doesn't contain invalid symbols for selection
|
|
117
134
|
# @return [Jini] selection
|
|
118
135
|
# @raise [InvalidPath] when path can't present with select
|
|
119
136
|
def selection
|
|
120
|
-
|
|
121
|
-
raise InvalidPath, 'Cannot select, path contains bad symbols'
|
|
122
|
-
end
|
|
137
|
+
raise InvalidPath, 'Cannot select, path contains bad symbols' if bad_symbols? @head
|
|
123
138
|
Jini.new(@head.gsub('/', '::').to_s)
|
|
124
139
|
end
|
|
125
140
|
|
|
126
|
-
# Removes
|
|
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
|
|
141
|
+
# Removes attr by name.
|
|
136
142
|
# before:
|
|
137
|
-
# '/parent/child[@k="v"]'
|
|
143
|
+
# '/parent/child [@k="v"]'
|
|
138
144
|
# after:
|
|
139
145
|
# '/parent/child'
|
|
140
146
|
# @param [String] name of attr
|
|
141
147
|
# @return [Jini] without an attr
|
|
142
148
|
def remove_attr(name)
|
|
143
149
|
Jini.new(
|
|
144
|
-
|
|
150
|
+
purge_head(/(\[@?#{name}="[^"]+"(\[\]+|\]))/)
|
|
145
151
|
)
|
|
146
152
|
end
|
|
147
153
|
|
|
@@ -173,13 +179,33 @@ class Jini
|
|
|
173
179
|
|
|
174
180
|
private
|
|
175
181
|
|
|
182
|
+
# @param node [String] node for check
|
|
183
|
+
def space_check(node)
|
|
184
|
+
raise InvalidPath, "Nodes can't contain spaces: #{node} – contain space." if valid? node
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# regex: '[' or ']' or '@' or '//'
|
|
188
|
+
# @param node [String]
|
|
189
|
+
# @return node [Boolean] matching regex
|
|
190
|
+
def bad_symbols?(node)
|
|
191
|
+
node.match %r{[|]|@|//}
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
# regex: '[' or ']' or '@' or '=' or '<' or '>'
|
|
195
|
+
# @param node [String] node for check
|
|
196
|
+
# @return node [Boolean] matching regex
|
|
197
|
+
def valid?(node)
|
|
198
|
+
!node.match(/[|]|@|=|>|</) && node.include?(' ')
|
|
199
|
+
end
|
|
200
|
+
|
|
176
201
|
# Some action between two statements.
|
|
177
202
|
def action_between(action, alpha, beta)
|
|
178
203
|
Jini.new("#{@head}[#{alpha} #{action} #{beta}]")
|
|
179
204
|
end
|
|
180
205
|
|
|
206
|
+
# Purging head from token.
|
|
181
207
|
# @param [Regexp | String] token to be purged from the head
|
|
182
|
-
def
|
|
208
|
+
def purge_head(token)
|
|
183
209
|
@head.gsub(token, '')
|
|
184
210
|
end
|
|
185
211
|
end
|
data/test/jini_test.rb
CHANGED
|
@@ -223,4 +223,42 @@ 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
|
|
226
264
|
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.
|
|
4
|
+
version: 0.0.9
|
|
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-
|
|
11
|
+
date: 2022-09-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|