jini 0.0.5 → 0.0.7

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: 56cb420da40a27c8d13a9ed6824085fb8099f4a120e69582f3414881e6cc0823
4
- data.tar.gz: 8407f3f9f2dd80f30c5c3d36813cb2b49a637abfcbab187dfd8fe5b4979d49be
3
+ metadata.gz: 5c4276388f8fa9d2ff167b085b61849cb2c394f03cb4d25232f825caba82aa3c
4
+ data.tar.gz: 14d9de0e18ca0e308b836f85da637b73de42cd023f0b58d2b19f4e267361f54b
5
5
  SHA512:
6
- metadata.gz: 3b6a709ee67c13aa72f103eefeb2fc2205b3fda9c5d3d5d9c003842c257b22cb66f0c0a45dc337edfc080f76f9b97b6453b24181462475b9be10efd7665ad68a
7
- data.tar.gz: '09626927033afe096ac9b836a39b0ff90e2bffb4a02651c2f6595591b35eaa80fff1799dce22e7a43559e5b9d002186619227b846e9fa1eacd52bfa4aaacdcb3'
6
+ metadata.gz: ff5fb62653c5b87532c2deac5991db58bb1e10a8ddbdefa341c407644f50b25bff8ef50a2524db5b7b70bc7171c019826cf99d8e3615a8e4c3049fd3f68a999b
7
+ data.tar.gz: 8139e0995cc1ef62e491d7407d3a9d7e7827daebbab965e8b04896cd95028d441cfe9497ac3e1dd9a1d08094464e294c1fe1f2113c57b9e96d84d73e838ac139
data/.yardoc/checksums CHANGED
@@ -1 +1 @@
1
- lib/jini.rb aedb9ce736981483d91ff0f208df6535bd1df97d
1
+ lib/jini.rb aa45175d922be503e56fdbeaa14104ccb3dcfbb1
data/.yardoc/object_types CHANGED
Binary file
Binary file
data/README.md CHANGED
@@ -1,20 +1,22 @@
1
1
  # Jini
2
+
2
3
  [![Gem Version](https://badge.fury.io/rb/jini.svg)](https://badge.fury.io/rb/jini)
3
4
 
4
- The class [`Jini`](https://www.rubydoc.info/gems/jini/0.0.3/Jini) helps you build a XPATH.
5
+ The class [`Jini`](https://www.rubydoc.info/gems/jini/0.0.5/Jini) helps you build a XPATH.
5
6
 
6
7
  ```ruby
7
8
  require 'jini'
8
9
  xpath = Jini
9
10
  .new
10
- .add_path('parent') # addition a path node
11
- .add_path('child') # addition a path node
11
+ .add_node('parent') # addition a path node
12
+ .add_node('child') # addition a path node
12
13
  .add_attr('key', 'value') # addition an attribute
14
+ .remove_node('child') # removes attr by key
13
15
  .to_s # convert it to a string
14
- # -> xpath: /parent/child[@key="value"]
16
+ puts(xpath) # -> xpath: /parent[@key="value"]
15
17
  ```
16
18
 
17
- The full list of methods is [here](https://www.rubydoc.info/gems/jini/0.0.3).
19
+ The full list of methods is [here](https://www.rubydoc.info/gems/jini/0.0.5).
18
20
 
19
21
  Install it:
20
22
 
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Thu Sep 15 22:12:56 2022 by
128
+ Generated on Fri Sep 16 04:23:03 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
@@ -102,15 +102,15 @@
102
102
  <h2>Overview</h2><div class="docstring">
103
103
  <div class="discussion">
104
104
 
105
- <p>It’s a simple XPATH builder. “‘ require ’jini’ xpath = Jini.new(‘parent’)</p>
105
+ <p>It’s a simple XPATH builder.</p>
106
+
107
+ <p>require ‘jini’ xpath = Jini.new(‘parent’)</p>
106
108
 
107
109
  <pre class="code ruby"><code class="ruby">.add_path(node: &#39;child&#39;)
108
110
  .add_path(node: &#39;toy&#39;)
109
111
  .to_s // body/child/toy
110
112
  </code></pre>
111
113
 
112
- <p>“‘</p>
113
-
114
114
 
115
115
  </div>
116
116
  </div>
@@ -193,7 +193,7 @@
193
193
  <li class="public ">
194
194
  <span class="summary_signature">
195
195
 
196
- <a href="#add_path-instance_method" title="#add_path (instance method)">#<strong>add_path</strong>(node) &#x21d2; Jini </a>
196
+ <a href="#add_node-instance_method" title="#add_node (instance method)">#<strong>add_node</strong>(node) &#x21d2; Jini </a>
197
197
 
198
198
 
199
199
 
@@ -283,6 +283,30 @@
283
283
  <p>Access by index.</p>
284
284
  </div></span>
285
285
 
286
+ </li>
287
+
288
+
289
+ <li class="public ">
290
+ <span class="summary_signature">
291
+
292
+ <a href="#gt-instance_method" title="#gt (instance method)">#<strong>gt</strong>(key, value) &#x21d2; Jini </a>
293
+
294
+
295
+
296
+ </span>
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+ <span class="summary_desc"><div class='inline'>
307
+ <p>Greater than.</p>
308
+ </div></span>
309
+
286
310
  </li>
287
311
 
288
312
 
@@ -306,7 +330,31 @@
306
330
 
307
331
 
308
332
  <span class="summary_desc"><div class='inline'>
309
- <p>A new instance of Jini.</p>
333
+ <p>Makes new object.</p>
334
+ </div></span>
335
+
336
+ </li>
337
+
338
+
339
+ <li class="public ">
340
+ <span class="summary_signature">
341
+
342
+ <a href="#lt-instance_method" title="#lt (instance method)">#<strong>lt</strong>(key, value) &#x21d2; Jini </a>
343
+
344
+
345
+
346
+ </span>
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+ <span class="summary_desc"><div class='inline'>
357
+ <p>Less than.</p>
310
358
  </div></span>
311
359
 
312
360
  </li>
@@ -315,7 +363,7 @@
315
363
  <li class="public ">
316
364
  <span class="summary_signature">
317
365
 
318
- <a href="#or-instance_method" title="#or (instance method)">#<strong>or</strong>(node) &#x21d2; Jini </a>
366
+ <a href="#or-instance_method" title="#or (instance method)">#<strong>or</strong>(alpha, beta) &#x21d2; Jini </a>
319
367
 
320
368
 
321
369
 
@@ -363,7 +411,7 @@
363
411
  <li class="public ">
364
412
  <span class="summary_signature">
365
413
 
366
- <a href="#remove_path-instance_method" title="#remove_path (instance method)">#<strong>remove_path</strong>(node) &#x21d2; Jini </a>
414
+ <a href="#remove_node-instance_method" title="#remove_node (instance method)">#<strong>remove_node</strong>(node) &#x21d2; Jini </a>
367
415
 
368
416
 
369
417
 
@@ -450,7 +498,7 @@
450
498
  </h3><div class="docstring">
451
499
  <div class="discussion">
452
500
 
453
- <p>Returns a new instance of Jini.</p>
501
+ <p>Makes new object. By default it creates an empty path and you can ignore the head parameter.</p>
454
502
 
455
503
 
456
504
  </div>
@@ -481,12 +529,12 @@
481
529
  <pre class="lines">
482
530
 
483
531
 
484
- 38
485
532
  39
486
- 40</pre>
533
+ 40
534
+ 41</pre>
487
535
  </td>
488
536
  <td>
489
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 38</span>
537
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 39</span>
490
538
 
491
539
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_head'>head</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
492
540
  <span class='ivar'>@head</span> <span class='op'>=</span> <span class='id identifier rubyid_head'>head</span>
@@ -567,12 +615,12 @@
567
615
  <pre class="lines">
568
616
 
569
617
 
570
- 83
571
618
  84
572
- 85</pre>
619
+ 85
620
+ 86</pre>
573
621
  </td>
574
622
  <td>
575
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 83</span>
623
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 84</span>
576
624
 
577
625
  <span class='kw'>def</span> <span class='id identifier rubyid_add_all'>add_all</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span>
578
626
  <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>
@@ -662,12 +710,12 @@
662
710
  <pre class="lines">
663
711
 
664
712
 
665
- 60
666
713
  61
667
- 62</pre>
714
+ 62
715
+ 63</pre>
668
716
  </td>
669
717
  <td>
670
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 60</span>
718
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 61</span>
671
719
 
672
720
  <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>
673
721
  <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>
@@ -678,9 +726,9 @@
678
726
  </div>
679
727
 
680
728
  <div class="method_details ">
681
- <h3 class="signature " id="add_path-instance_method">
729
+ <h3 class="signature " id="add_node-instance_method">
682
730
 
683
- #<strong>add_path</strong>(node) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
731
+ #<strong>add_node</strong>(node) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
684
732
 
685
733
 
686
734
 
@@ -741,14 +789,14 @@
741
789
  <pre class="lines">
742
790
 
743
791
 
744
- 51
745
792
  52
746
- 53</pre>
793
+ 53
794
+ 54</pre>
747
795
  </td>
748
796
  <td>
749
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 51</span>
797
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 52</span>
750
798
 
751
- <span class='kw'>def</span> <span class='id identifier rubyid_add_path'>add_path</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span>
799
+ <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>
752
800
  <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>
753
801
  <span class='kw'>end</span></pre>
754
802
  </td>
@@ -813,17 +861,17 @@
813
861
  <pre class="lines">
814
862
 
815
863
 
816
- 74
817
864
  75
818
865
  76
819
- 77</pre>
866
+ 77
867
+ 78</pre>
820
868
  </td>
821
869
  <td>
822
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 74</span>
870
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 75</span>
823
871
 
824
872
  <span class='kw'>def</span> <span class='id identifier rubyid_all'>all</span>
825
873
  <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>
826
- <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_path'>add_path</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='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
874
+ <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'>&#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>
827
875
  <span class='kw'>end</span></pre>
828
876
  </td>
829
877
  </tr>
@@ -894,12 +942,12 @@
894
942
  <pre class="lines">
895
943
 
896
944
 
897
- 67
898
945
  68
899
- 69</pre>
946
+ 69
947
+ 70</pre>
900
948
  </td>
901
949
  <td>
902
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 67</span>
950
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 68</span>
903
951
 
904
952
  <span class='kw'>def</span> <span class='id identifier rubyid_all_attr'>all_attr</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
905
953
  <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>
@@ -986,13 +1034,13 @@
986
1034
  <pre class="lines">
987
1035
 
988
1036
 
989
- 91
990
1037
  92
991
1038
  93
992
- 94</pre>
1039
+ 94
1040
+ 95</pre>
993
1041
  </td>
994
1042
  <td>
995
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 91</span>
1043
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 92</span>
996
1044
 
997
1045
  <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>
998
1046
  <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>
@@ -1001,12 +1049,182 @@
1001
1049
  </td>
1002
1050
  </tr>
1003
1051
  </table>
1052
+ </div>
1053
+
1054
+ <div class="method_details ">
1055
+ <h3 class="signature " id="gt-instance_method">
1056
+
1057
+ #<strong>gt</strong>(key, value) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+ </h3><div class="docstring">
1064
+ <div class="discussion">
1065
+
1066
+ <p>Greater than. Addition ‘[node &gt; value]’ to tail</p>
1067
+
1068
+
1069
+ </div>
1070
+ </div>
1071
+ <div class="tags">
1072
+ <p class="tag_title">Parameters:</p>
1073
+ <ul class="param">
1074
+
1075
+ <li>
1076
+
1077
+ <span class='name'>key</span>
1078
+
1079
+
1080
+ <span class='type'>(<tt>String</tt>)</span>
1081
+
1082
+
1083
+
1084
+ &mdash;
1085
+ <div class='inline'>
1086
+ <p>name</p>
1087
+ </div>
1088
+
1089
+ </li>
1090
+
1091
+ <li>
1092
+
1093
+ <span class='name'>value</span>
1094
+
1095
+
1096
+ <span class='type'>(<tt>Object</tt>)</span>
1097
+
1098
+
1099
+
1100
+ </li>
1101
+
1102
+ </ul>
1103
+
1104
+ <p class="tag_title">Returns:</p>
1105
+ <ul class="return">
1106
+
1107
+ <li>
1108
+
1109
+
1110
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>)</span>
1111
+
1112
+
1113
+
1114
+ </li>
1115
+
1116
+ </ul>
1117
+
1118
+ </div><table class="source_code">
1119
+ <tr>
1120
+ <td>
1121
+ <pre class="lines">
1122
+
1123
+
1124
+ 152
1125
+ 153
1126
+ 154</pre>
1127
+ </td>
1128
+ <td>
1129
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 152</span>
1130
+
1131
+ <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>
1132
+ <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>
1133
+ <span class='kw'>end</span></pre>
1134
+ </td>
1135
+ </tr>
1136
+ </table>
1137
+ </div>
1138
+
1139
+ <div class="method_details ">
1140
+ <h3 class="signature " id="lt-instance_method">
1141
+
1142
+ #<strong>lt</strong>(key, value) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+ </h3><div class="docstring">
1149
+ <div class="discussion">
1150
+
1151
+ <p>Less than. Addition ‘[node &lt; value]’ to tail</p>
1152
+
1153
+
1154
+ </div>
1155
+ </div>
1156
+ <div class="tags">
1157
+ <p class="tag_title">Parameters:</p>
1158
+ <ul class="param">
1159
+
1160
+ <li>
1161
+
1162
+ <span class='name'>key</span>
1163
+
1164
+
1165
+ <span class='type'>(<tt>String</tt>)</span>
1166
+
1167
+
1168
+
1169
+ &mdash;
1170
+ <div class='inline'>
1171
+ <p>name</p>
1172
+ </div>
1173
+
1174
+ </li>
1175
+
1176
+ <li>
1177
+
1178
+ <span class='name'>value</span>
1179
+
1180
+
1181
+ <span class='type'>(<tt>Object</tt>)</span>
1182
+
1183
+
1184
+
1185
+ </li>
1186
+
1187
+ </ul>
1188
+
1189
+ <p class="tag_title">Returns:</p>
1190
+ <ul class="return">
1191
+
1192
+ <li>
1193
+
1194
+
1195
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>)</span>
1196
+
1197
+
1198
+
1199
+ </li>
1200
+
1201
+ </ul>
1202
+
1203
+ </div><table class="source_code">
1204
+ <tr>
1205
+ <td>
1206
+ <pre class="lines">
1207
+
1208
+
1209
+ 143
1210
+ 144
1211
+ 145</pre>
1212
+ </td>
1213
+ <td>
1214
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 143</span>
1215
+
1216
+ <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>
1217
+ <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>
1218
+ <span class='kw'>end</span></pre>
1219
+ </td>
1220
+ </tr>
1221
+ </table>
1004
1222
  </div>
1005
1223
 
1006
1224
  <div class="method_details ">
1007
1225
  <h3 class="signature " id="or-instance_method">
1008
1226
 
1009
- #<strong>or</strong>(node) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1227
+ #<strong>or</strong>(alpha, beta) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1010
1228
 
1011
1229
 
1012
1230
 
@@ -1026,13 +1244,34 @@
1026
1244
 
1027
1245
  <li>
1028
1246
 
1029
- <span class='name'>node</span>
1247
+ <span class='name'>alpha</span>
1248
+
1249
+
1250
+ <span class='type'>(<tt>String</tt>)</span>
1251
+
1252
+
1253
+
1254
+ &mdash;
1255
+ <div class='inline'>
1256
+ <p>statement</p>
1257
+ </div>
1258
+
1259
+ </li>
1260
+
1261
+ <li>
1262
+
1263
+ <span class='name'>beta</span>
1030
1264
 
1031
1265
 
1032
1266
  <span class='type'>(<tt>String</tt>)</span>
1033
1267
 
1034
1268
 
1035
1269
 
1270
+ &mdash;
1271
+ <div class='inline'>
1272
+ <p>statement</p>
1273
+ </div>
1274
+
1036
1275
  </li>
1037
1276
 
1038
1277
  </ul>
@@ -1049,7 +1288,7 @@
1049
1288
 
1050
1289
  &mdash;
1051
1290
  <div class='inline'>
1052
- <p>with ‘|node’ on tail</p>
1291
+ <p>with Jini ‘[first|second]’ on tail</p>
1053
1292
  </div>
1054
1293
 
1055
1294
  </li>
@@ -1062,15 +1301,15 @@
1062
1301
  <pre class="lines">
1063
1302
 
1064
1303
 
1065
- 133
1066
1304
  134
1067
- 135</pre>
1305
+ 135
1306
+ 136</pre>
1068
1307
  </td>
1069
1308
  <td>
1070
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 133</span>
1309
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 134</span>
1071
1310
 
1072
- <span class='kw'>def</span> <span class='kw'>or</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span>
1073
- <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>
1311
+ <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>
1312
+ <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>
1074
1313
  <span class='kw'>end</span></pre>
1075
1314
  </td>
1076
1315
  </tr>
@@ -1141,10 +1380,6 @@
1141
1380
  <pre class="lines">
1142
1381
 
1143
1382
 
1144
- 120
1145
- 121
1146
- 122
1147
- 123
1148
1383
  124
1149
1384
  125
1150
1385
  126
@@ -1152,15 +1387,11 @@
1152
1387
  128</pre>
1153
1388
  </td>
1154
1389
  <td>
1155
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 120</span>
1390
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 124</span>
1156
1391
 
1157
1392
  <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>
1158
1393
  <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>
1159
- <span class='ivar'>@head</span>
1160
- <span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span>
1161
- <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='comma'>,</span>
1162
- <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
1163
- <span class='rparen'>)</span>
1394
+ <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>
1164
1395
  <span class='rparen'>)</span>
1165
1396
  <span class='kw'>end</span></pre>
1166
1397
  </td>
@@ -1169,9 +1400,9 @@
1169
1400
  </div>
1170
1401
 
1171
1402
  <div class="method_details ">
1172
- <h3 class="signature " id="remove_path-instance_method">
1403
+ <h3 class="signature " id="remove_node-instance_method">
1173
1404
 
1174
- #<strong>remove_path</strong>(node) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1405
+ #<strong>remove_node</strong>(node) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1175
1406
 
1176
1407
 
1177
1408
 
@@ -1232,15 +1463,19 @@
1232
1463
  <pre class="lines">
1233
1464
 
1234
1465
 
1235
- 109
1236
- 110
1237
- 111</pre>
1466
+ 111
1467
+ 112
1468
+ 113
1469
+ 114
1470
+ 115</pre>
1238
1471
  </td>
1239
1472
  <td>
1240
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 109</span>
1473
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 111</span>
1241
1474
 
1242
- <span class='kw'>def</span> <span class='id identifier rubyid_remove_path'>remove_path</span><span class='lparen'>(</span><span class='id identifier rubyid_node'>node</span><span class='rparen'>)</span>
1243
- <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'>&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='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1475
+ <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>
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>
1477
+ <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>
1478
+ <span class='rparen'>)</span>
1244
1479
  <span class='kw'>end</span></pre>
1245
1480
  </td>
1246
1481
  </tr>
@@ -1283,6 +1518,24 @@
1283
1518
 
1284
1519
  </li>
1285
1520
 
1521
+ </ul>
1522
+ <p class="tag_title">Raises:</p>
1523
+ <ul class="raise">
1524
+
1525
+ <li>
1526
+
1527
+
1528
+ <span class='type'>(<tt><span class='object_link'><a href="Jini/InvalidPath.html" title="Jini::InvalidPath (class)">InvalidPath</a></span></tt>)</span>
1529
+
1530
+
1531
+
1532
+ &mdash;
1533
+ <div class='inline'>
1534
+ <p>when path can’t present with select</p>
1535
+ </div>
1536
+
1537
+ </li>
1538
+
1286
1539
  </ul>
1287
1540
 
1288
1541
  </div><table class="source_code">
@@ -1291,15 +1544,15 @@
1291
1544
  <pre class="lines">
1292
1545
 
1293
1546
 
1294
- 99
1295
- 100
1296
1547
  101
1297
1548
  102
1298
1549
  103
1299
- 104</pre>
1550
+ 104
1551
+ 105
1552
+ 106</pre>
1300
1553
  </td>
1301
1554
  <td>
1302
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 99</span>
1555
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 101</span>
1303
1556
 
1304
1557
  <span class='kw'>def</span> <span class='id identifier rubyid_selection'>selection</span>
1305
1558
  <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>
@@ -1356,12 +1609,12 @@
1356
1609
  <pre class="lines">
1357
1610
 
1358
1611
 
1359
- 44
1360
1612
  45
1361
- 46</pre>
1613
+ 46
1614
+ 47</pre>
1362
1615
  </td>
1363
1616
  <td>
1364
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 44</span>
1617
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 45</span>
1365
1618
 
1366
1619
  <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1367
1620
  <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
@@ -1376,7 +1629,7 @@
1376
1629
  </div>
1377
1630
 
1378
1631
  <div id="footer">
1379
- Generated on Thu Sep 15 22:12:56 2022 by
1632
+ Generated on Fri Sep 16 04:23:03 2022 by
1380
1633
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1381
1634
  0.9.28 (ruby-3.0.0).
1382
1635
  </div>
data/doc/_index.html CHANGED
@@ -112,7 +112,7 @@
112
112
  </div>
113
113
 
114
114
  <div id="footer">
115
- Generated on Thu Sep 15 22:12:56 2022 by
115
+ Generated on Fri Sep 16 04:23:03 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
@@ -58,22 +58,24 @@
58
58
  </div>
59
59
 
60
60
  <div id="content"><div id='filecontents'><h1 id="jini">Jini</h1>
61
+
61
62
  <p><a href="https://badge.fury.io/rb/jini"><img src="https://badge.fury.io/rb/jini.svg" alt="Gem Version" /></a></p>
62
63
 
63
- <p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.3/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.5/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
64
65
 
65
66
  <p><code>ruby
66
67
  require 'jini'
67
68
  xpath = Jini
68
69
  .new
69
- .add_path('parent') # addition a path node
70
- .add_path('child') # addition a path node
70
+ .add_node('parent') # addition a path node
71
+ .add_node('child') # addition a path node
71
72
  .add_attr('key', 'value') # addition an attribute
73
+ .remove_node('child') # removes attr by key
72
74
  .to_s # convert it to a string
73
- # -&gt; xpath: /parent/child[@key="value"]
75
+ puts(xpath) # -&gt; xpath: /parent[@key="value"]
74
76
  </code></p>
75
77
 
76
- <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.3">here</a>.</p>
78
+ <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.5">here</a>.</p>
77
79
 
78
80
  <p>Install it:</p>
79
81
 
@@ -92,7 +94,7 @@ is <em>building</em> XPATHs.</p>
92
94
  </div></div>
93
95
 
94
96
  <div id="footer">
95
- Generated on Thu Sep 15 22:12:56 2022 by
97
+ Generated on Fri Sep 16 04:23:03 2022 by
96
98
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
97
99
  0.9.28 (ruby-3.0.0).
98
100
  </div>
data/doc/index.html CHANGED
@@ -58,22 +58,24 @@
58
58
  </div>
59
59
 
60
60
  <div id="content"><div id='filecontents'><h1 id="jini">Jini</h1>
61
+
61
62
  <p><a href="https://badge.fury.io/rb/jini"><img src="https://badge.fury.io/rb/jini.svg" alt="Gem Version" /></a></p>
62
63
 
63
- <p>The class <a href="https://www.rubydoc.info/gems/jini/0.0.3/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.5/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
64
65
 
65
66
  <p><code>ruby
66
67
  require 'jini'
67
68
  xpath = Jini
68
69
  .new
69
- .add_path('parent') # addition a path node
70
- .add_path('child') # addition a path node
70
+ .add_node('parent') # addition a path node
71
+ .add_node('child') # addition a path node
71
72
  .add_attr('key', 'value') # addition an attribute
73
+ .remove_node('child') # removes attr by key
72
74
  .to_s # convert it to a string
73
- # -&gt; xpath: /parent/child[@key="value"]
75
+ puts(xpath) # -&gt; xpath: /parent[@key="value"]
74
76
  </code></p>
75
77
 
76
- <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.3">here</a>.</p>
78
+ <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.5">here</a>.</p>
77
79
 
78
80
  <p>Install it:</p>
79
81
 
@@ -92,7 +94,7 @@ is <em>building</em> XPATHs.</p>
92
94
  </div></div>
93
95
 
94
96
  <div id="footer">
95
- Generated on Thu Sep 15 22:12:56 2022 by
97
+ Generated on Fri Sep 16 04:23:03 2022 by
96
98
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
97
99
  0.9.28 (ruby-3.0.0).
98
100
  </div>
data/doc/method_list.html CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
  <li class="odd ">
64
64
  <div class="item">
65
- <span class='object_link'><a href="Jini.html#add_path-instance_method" title="Jini#add_path (method)">#add_path</a></span>
65
+ <span class='object_link'><a href="Jini.html#add_node-instance_method" title="Jini#add_node (method)">#add_node</a></span>
66
66
  <small>Jini</small>
67
67
  </div>
68
68
  </li>
@@ -93,6 +93,14 @@
93
93
 
94
94
 
95
95
  <li class="odd ">
96
+ <div class="item">
97
+ <span class='object_link'><a href="Jini.html#gt-instance_method" title="Jini#gt (method)">#gt</a></span>
98
+ <small>Jini</small>
99
+ </div>
100
+ </li>
101
+
102
+
103
+ <li class="even ">
96
104
  <div class="item">
97
105
  <span class='object_link'><a href="Jini.html#initialize-instance_method" title="Jini#initialize (method)">#initialize</a></span>
98
106
  <small>Jini</small>
@@ -100,6 +108,14 @@
100
108
  </li>
101
109
 
102
110
 
111
+ <li class="odd ">
112
+ <div class="item">
113
+ <span class='object_link'><a href="Jini.html#lt-instance_method" title="Jini#lt (method)">#lt</a></span>
114
+ <small>Jini</small>
115
+ </div>
116
+ </li>
117
+
118
+
103
119
  <li class="even ">
104
120
  <div class="item">
105
121
  <span class='object_link'><a href="Jini.html#or-instance_method" title="Jini#or (method)">#or</a></span>
@@ -118,7 +134,7 @@
118
134
 
119
135
  <li class="even ">
120
136
  <div class="item">
121
- <span class='object_link'><a href="Jini.html#remove_path-instance_method" title="Jini#remove_path (method)">#remove_path</a></span>
137
+ <span class='object_link'><a href="Jini.html#remove_node-instance_method" title="Jini#remove_node (method)">#remove_node</a></span>
122
138
  <small>Jini</small>
123
139
  </div>
124
140
  </li>
@@ -100,7 +100,7 @@
100
100
  </div>
101
101
 
102
102
  <div id="footer">
103
- Generated on Thu Sep 15 22:12:56 2022 by
103
+ Generated on Fri Sep 16 04:23:03 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,11 +5,10 @@ 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.5'
8
+ s.version = '0.0.7'
9
9
  s.license = 'MIT'
10
10
  s.summary = 'Simple Immutable Ruby XPATH Builder'
11
- s.description = 'Class Jini helps you build a XPATH and then modify its \
12
- parts via a simple fluent interface.'
11
+ s.description = 'Class Jini helps you build a XPATH and then modify its parts via a simple fluent interface.'
13
12
  s.authors = ['Ivan Ivanchuck']
14
13
  s.email = 'clicker.heroes.acg@gmail.com'
15
14
  s.homepage = 'https://github.com/l3r8yJ/jini'
data/lib/jini.rb CHANGED
@@ -23,17 +23,18 @@
23
23
  # SOFTWARE.
24
24
 
25
25
  # It's a simple XPATH builder.
26
- # ```
26
+ #
27
27
  # require 'jini'
28
28
  # xpath = Jini.new('parent')
29
29
  # .add_path(node: 'child')
30
30
  # .add_path(node: 'toy')
31
31
  # .to_s // body/child/toy
32
- # ```
33
32
  class Jini
34
33
  # When path not valid
35
34
  class InvalidPath < StandardError; end
36
35
 
36
+ # Makes new object.
37
+ # By default it creates an empty path and you can ignore the head parameter.
37
38
  # @param head [String]
38
39
  def initialize(head = '')
39
40
  @head = head
@@ -48,7 +49,7 @@ class Jini
48
49
  # Additional node for xpath.
49
50
  # @param node [String] node
50
51
  # @return [Jini] object
51
- def add_path(node)
52
+ def add_node(node)
52
53
  Jini.new("#{@head}/#{node}")
53
54
  end
54
55
 
@@ -73,7 +74,7 @@ class Jini
73
74
  # @return [Jini] object
74
75
  def all
75
76
  raise InvalidPath, 'You cannot add all tag after attr!' if @head[-1].eql?(']')
76
- Jini.new(add_path('*').to_s)
77
+ Jini.new(add_node('*').to_s)
77
78
  end
78
79
 
79
80
  # Xpath with all named elements.
@@ -96,6 +97,7 @@ class Jini
96
97
  # Replace all '/' to '::' symbols
97
98
  # if path doesn't contain invalid symbols for selection
98
99
  # @return [Jini] selection
100
+ # @raise [InvalidPath] when path can't present with select
99
101
  def selection
100
102
  if @head.include?('[') || @head.include?(']') || @head.include?('@') || @head.include?('//')
101
103
  raise InvalidPath, 'Cannot select, path contains bad symbols'
@@ -106,8 +108,10 @@ class Jini
106
108
  # Removes node by name
107
109
  # @param node [String] name of node for removal
108
110
  # @return [Jini] without a node
109
- def remove_path(node)
110
- Jini.new(@head.gsub("/#{node}", ''))
111
+ def remove_node(node)
112
+ Jini.new(
113
+ purge("/#{node}")
114
+ )
111
115
  end
112
116
 
113
117
  # Removes attr by name
@@ -119,18 +123,45 @@ class Jini
119
123
  # @return [Jini] without an attr
120
124
  def remove_attr(name)
121
125
  Jini.new(
122
- @head
123
- .gsub(
124
- /(\[@?#{name}="[^"]+"(\[\]+|\]))/,
125
- ''
126
- )
126
+ purge(/(\[@?#{name}="[^"]+"(\[\]+|\]))/)
127
127
  )
128
128
  end
129
129
 
130
130
  # Adds '|' to head
131
- # @param [String] node
132
- # @return [Jini] with '|node' on tail
133
- def or(node)
134
- Jini.new("#{@head}|#{node}")
131
+ # @param [String] alpha statement
132
+ # @param [String] beta statement
133
+ # @return [Jini] with Jini '[first|second]' on tail
134
+ def or(alpha, beta)
135
+ action_between('|', alpha, beta)
136
+ end
137
+
138
+ # Less than.
139
+ # Addition '[node < value]' to tail
140
+ # @param [String] key name
141
+ # @param [Object] value
142
+ # @return [Jini]
143
+ def lt(key, value)
144
+ action_between('<', key, value)
145
+ end
146
+
147
+ # Greater than.
148
+ # Addition '[node > value]' to tail
149
+ # @param [String] key name
150
+ # @param [Object] value
151
+ # @return [Jini]
152
+ def gt(key, value)
153
+ action_between('>', key, value)
154
+ end
155
+
156
+ private
157
+
158
+ # Some action between two statements.
159
+ def action_between(action, alpha, beta)
160
+ Jini.new("#{@head}[#{alpha} #{action} #{beta}]")
161
+ end
162
+
163
+ # @param [Regexp | String] token to be purged from the head
164
+ def purge(token)
165
+ @head.gsub(token, '')
135
166
  end
136
167
  end
data/test/jini_test.rb CHANGED
@@ -37,8 +37,8 @@ class JiniTest < Minitest::Test
37
37
  assert_equal(
38
38
  '/parent/child[1]',
39
39
  Jini.new
40
- .add_path(PARENT)
41
- .add_path(CHILD)
40
+ .add_node(PARENT)
41
+ .add_node(CHILD)
42
42
  .at(1)
43
43
  .to_s
44
44
  )
@@ -48,9 +48,9 @@ class JiniTest < Minitest::Test
48
48
  assert_equal(
49
49
  'parent/toy',
50
50
  Jini.new(PARENT)
51
- .add_path(CHILD)
52
- .add_path('toy')
53
- .remove_path(CHILD)
51
+ .add_node(CHILD)
52
+ .add_node('toy')
53
+ .remove_node(CHILD)
54
54
  .to_s
55
55
  )
56
56
  end
@@ -59,7 +59,7 @@ class JiniTest < Minitest::Test
59
59
  assert_equal(
60
60
  '/node[@key="value"]',
61
61
  Jini.new
62
- .add_path('node')
62
+ .add_node('node')
63
63
  .add_attr('key', 'value')
64
64
  .to_s
65
65
  )
@@ -69,8 +69,8 @@ class JiniTest < Minitest::Test
69
69
  assert_equal(
70
70
  '/parent/child/*',
71
71
  Jini.new
72
- .add_path(PARENT)
73
- .add_path(CHILD)
72
+ .add_node(PARENT)
73
+ .add_node(CHILD)
74
74
  .all
75
75
  .to_s
76
76
  )
@@ -79,7 +79,7 @@ class JiniTest < Minitest::Test
79
79
  def test_all_fail
80
80
  assert_raises do
81
81
  Jini.new
82
- .add_path(PARENT)
82
+ .add_node(PARENT)
83
83
  .add_attr('key', 'value')
84
84
  .all
85
85
  end
@@ -89,8 +89,8 @@ class JiniTest < Minitest::Test
89
89
  assert_equal(
90
90
  '/home/batya',
91
91
  Jini.new
92
- .add_path('home')
93
- .add_path('batya')
92
+ .add_node('home')
93
+ .add_node('batya')
94
94
  .add_attr('drunk', 'very')
95
95
  .remove_attr('drunk')
96
96
  .to_s
@@ -102,10 +102,10 @@ class JiniTest < Minitest::Test
102
102
  '/parent/child/toy',
103
103
  Jini
104
104
  .new
105
- .add_path(PARENT)
106
- .add_path(CHILD)
105
+ .add_node(PARENT)
106
+ .add_node(CHILD)
107
107
  .add_attr('age', 'teen')
108
- .add_path('toy')
108
+ .add_node('toy')
109
109
  .add_attr('age', 'old')
110
110
  .remove_attr('age')
111
111
  .to_s
@@ -123,7 +123,7 @@ class JiniTest < Minitest::Test
123
123
  assert_equal(
124
124
  'parent::child',
125
125
  Jini.new(PARENT)
126
- .add_path(CHILD)
126
+ .add_node(CHILD)
127
127
  .selection
128
128
  .to_s
129
129
  )
@@ -132,8 +132,8 @@ class JiniTest < Minitest::Test
132
132
  def test_selection_fail
133
133
  assert_raises do
134
134
  Jini.new
135
- .add_path(PARENT)
136
- .add_path(CHILD)
135
+ .add_node(PARENT)
136
+ .add_node(CHILD)
137
137
  .add_attr('k', 'v')
138
138
  .selection
139
139
  .to_s
@@ -142,10 +142,30 @@ class JiniTest < Minitest::Test
142
142
 
143
143
  def test_or
144
144
  assert_equal(
145
- 'parent/child|animal',
145
+ 'parent/child[animal | toy]',
146
146
  Jini.new(PARENT)
147
- .add_path(CHILD)
148
- .or('animal')
147
+ .add_node(CHILD)
148
+ .or('animal', 'toy')
149
+ .to_s
150
+ )
151
+ end
152
+
153
+ def test_lt
154
+ assert_equal(
155
+ 'parent/child[toys < 10]',
156
+ Jini.new(PARENT)
157
+ .add_node(CHILD)
158
+ .lt('toys', 10)
159
+ .to_s
160
+ )
161
+ end
162
+
163
+ def test_gt
164
+ assert_equal(
165
+ 'parent/child[toys > 10]',
166
+ Jini.new(PARENT)
167
+ .add_node(CHILD)
168
+ .gt('toys', 10)
149
169
  .to_s
150
170
  )
151
171
  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.5
4
+ version: 0.0.7
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-15 00:00:00.000000000 Z
11
+ date: 2022-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -52,9 +52,8 @@ dependencies:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 2.11.1
55
- description: |-
56
- Class Jini helps you build a XPATH and then modify its \
57
- parts via a simple fluent interface.
55
+ description: Class Jini helps you build a XPATH and then modify its parts via a simple
56
+ fluent interface.
58
57
  email: clicker.heroes.acg@gmail.com
59
58
  executables: []
60
59
  extensions: []