jini 0.0.4 → 0.0.5

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: 846a3a2642216363a51a97176a2bd5a66ce8d8ab2f95fec119b8fa18cbdbc3fa
4
- data.tar.gz: 18e99fe2ed6124aefb16eae5d9ef965066f0def272ba0696c0a885761ab0902c
3
+ metadata.gz: 56cb420da40a27c8d13a9ed6824085fb8099f4a120e69582f3414881e6cc0823
4
+ data.tar.gz: 8407f3f9f2dd80f30c5c3d36813cb2b49a637abfcbab187dfd8fe5b4979d49be
5
5
  SHA512:
6
- metadata.gz: 3a5b2ffecd5bceb1f604fec039c491ea2fef6178166e98856b1ac1e80748265c80ec9d3fee74cc0aed1fcf9182062c1e280042bc6c00ba0ff6d5ebfd0c5690ba
7
- data.tar.gz: 1cc0a3cb04cf1c0d3d7008f0bd4c3bbde753ae3b0a1ae940bc53645fb1606058068080efa583e29e0fbdec1eff238d19bb49c582b3d4f8a34466058ca21b41ca
6
+ metadata.gz: 3b6a709ee67c13aa72f103eefeb2fc2205b3fda9c5d3d5d9c003842c257b22cb66f0c0a45dc337edfc080f76f9b97b6453b24181462475b9be10efd7665ad68a
7
+ data.tar.gz: '09626927033afe096ac9b836a39b0ff90e2bffb4a02651c2f6595591b35eaa80fff1799dce22e7a43559e5b9d002186619227b846e9fa1eacd52bfa4aaacdcb3'
data/.yardoc/checksums CHANGED
@@ -1 +1 @@
1
- lib/jini.rb c940835283ea1ff11567787b6e278213a1735924
1
+ lib/jini.rb aedb9ce736981483d91ff0f208df6535bd1df97d
data/.yardoc/object_types CHANGED
Binary file
Binary file
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Ivan Ivanchuk
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
- The class [`Jini`](https://www.rubydoc.info/github/l3r8yJ/jini/master/Jini) helps you build a XPATH.
1
+ # Jini
2
+ [![Gem Version](https://badge.fury.io/rb/jini.svg)](https://badge.fury.io/rb/jini)
3
+
4
+ The class [`Jini`](https://www.rubydoc.info/gems/jini/0.0.3/Jini) helps you build a XPATH.
2
5
 
3
6
  ```ruby
4
7
  require 'jini'
@@ -8,10 +11,10 @@ xpath = Jini
8
11
  .add_path('child') # addition a path node
9
12
  .add_attr('key', 'value') # addition an attribute
10
13
  .to_s # convert it to a string
11
- # -> xpath: parent/child[@key="value"]
14
+ # -> xpath: /parent/child[@key="value"]
12
15
  ```
13
16
 
14
- The full list of methods is [here](https://www.rubydoc.info/github/l3r8yJ/jini/master/Jini).
17
+ The full list of methods is [here](https://www.rubydoc.info/gems/jini/0.0.3).
15
18
 
16
19
  Install it:
17
20
 
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Thu Sep 15 19:58:11 2022 by
128
+ Generated on Thu Sep 15 22:12:56 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,13 +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(‘body’)</p>
105
+ <p>It’s a simple XPATH builder. “‘ require jini’ xpath = Jini.new(‘parent’)</p>
106
106
 
107
107
  <pre class="code ruby"><code class="ruby">.add_path(node: &#39;child&#39;)
108
- .add_path(node: &#39;child&#39;)
109
- .to_s // /body/child/child
108
+ .add_path(node: &#39;toy&#39;)
109
+ .to_s // body/child/toy
110
110
  </code></pre>
111
111
 
112
+ <p>“‘</p>
113
+
112
114
 
113
115
  </div>
114
116
  </div>
@@ -307,6 +309,30 @@
307
309
  <p>A new instance of Jini.</p>
308
310
  </div></span>
309
311
 
312
+ </li>
313
+
314
+
315
+ <li class="public ">
316
+ <span class="summary_signature">
317
+
318
+ <a href="#or-instance_method" title="#or (instance method)">#<strong>or</strong>(node) &#x21d2; Jini </a>
319
+
320
+
321
+
322
+ </span>
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+ <span class="summary_desc"><div class='inline'>
333
+ <p>Adds ‘|’ to head.</p>
334
+ </div></span>
335
+
310
336
  </li>
311
337
 
312
338
 
@@ -455,12 +481,12 @@
455
481
  <pre class="lines">
456
482
 
457
483
 
458
- 36
459
- 37
460
- 38</pre>
484
+ 38
485
+ 39
486
+ 40</pre>
461
487
  </td>
462
488
  <td>
463
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 36</span>
489
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 38</span>
464
490
 
465
491
  <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>
466
492
  <span class='ivar'>@head</span> <span class='op'>=</span> <span class='id identifier rubyid_head'>head</span>
@@ -541,12 +567,12 @@
541
567
  <pre class="lines">
542
568
 
543
569
 
544
- 81
545
- 82
546
- 83</pre>
570
+ 83
571
+ 84
572
+ 85</pre>
547
573
  </td>
548
574
  <td>
549
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 81</span>
575
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 83</span>
550
576
 
551
577
  <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>
552
578
  <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>
@@ -636,12 +662,12 @@
636
662
  <pre class="lines">
637
663
 
638
664
 
639
- 58
640
- 59
641
- 60</pre>
665
+ 60
666
+ 61
667
+ 62</pre>
642
668
  </td>
643
669
  <td>
644
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 58</span>
670
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 60</span>
645
671
 
646
672
  <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>
647
673
  <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>
@@ -715,12 +741,12 @@
715
741
  <pre class="lines">
716
742
 
717
743
 
718
- 49
719
- 50
720
- 51</pre>
744
+ 51
745
+ 52
746
+ 53</pre>
721
747
  </td>
722
748
  <td>
723
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 49</span>
749
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 51</span>
724
750
 
725
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>
726
752
  <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>
@@ -787,13 +813,13 @@
787
813
  <pre class="lines">
788
814
 
789
815
 
790
- 72
791
- 73
792
816
  74
793
- 75</pre>
817
+ 75
818
+ 76
819
+ 77</pre>
794
820
  </td>
795
821
  <td>
796
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 72</span>
822
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 74</span>
797
823
 
798
824
  <span class='kw'>def</span> <span class='id identifier rubyid_all'>all</span>
799
825
  <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>
@@ -868,12 +894,12 @@
868
894
  <pre class="lines">
869
895
 
870
896
 
871
- 65
872
- 66
873
- 67</pre>
897
+ 67
898
+ 68
899
+ 69</pre>
874
900
  </td>
875
901
  <td>
876
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 65</span>
902
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 67</span>
877
903
 
878
904
  <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>
879
905
  <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>
@@ -937,6 +963,19 @@
937
963
  <p>object</p>
938
964
  </div>
939
965
 
966
+ </li>
967
+
968
+ </ul>
969
+ <p class="tag_title">Raises:</p>
970
+ <ul class="raise">
971
+
972
+ <li>
973
+
974
+
975
+ <span class='type'>(<tt><span class='object_link'><a href="Jini/InvalidPath.html" title="Jini::InvalidPath (class)">InvalidPath</a></span></tt>)</span>
976
+
977
+
978
+
940
979
  </li>
941
980
 
942
981
  </ul>
@@ -947,19 +986,95 @@
947
986
  <pre class="lines">
948
987
 
949
988
 
950
- 89
951
- 90
952
- 91</pre>
989
+ 91
990
+ 92
991
+ 93
992
+ 94</pre>
953
993
  </td>
954
994
  <td>
955
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 89</span>
995
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 91</span>
956
996
 
957
997
  <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
+ <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>
958
999
  <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_position'>position</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
959
1000
  <span class='kw'>end</span></pre>
960
1001
  </td>
961
1002
  </tr>
962
1003
  </table>
1004
+ </div>
1005
+
1006
+ <div class="method_details ">
1007
+ <h3 class="signature " id="or-instance_method">
1008
+
1009
+ #<strong>or</strong>(node) &#x21d2; <tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+ </h3><div class="docstring">
1016
+ <div class="discussion">
1017
+
1018
+ <p>Adds ‘|’ to head</p>
1019
+
1020
+
1021
+ </div>
1022
+ </div>
1023
+ <div class="tags">
1024
+ <p class="tag_title">Parameters:</p>
1025
+ <ul class="param">
1026
+
1027
+ <li>
1028
+
1029
+ <span class='name'>node</span>
1030
+
1031
+
1032
+ <span class='type'>(<tt>String</tt>)</span>
1033
+
1034
+
1035
+
1036
+ </li>
1037
+
1038
+ </ul>
1039
+
1040
+ <p class="tag_title">Returns:</p>
1041
+ <ul class="return">
1042
+
1043
+ <li>
1044
+
1045
+
1046
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Jini (class)">Jini</a></span></tt>)</span>
1047
+
1048
+
1049
+
1050
+ &mdash;
1051
+ <div class='inline'>
1052
+ <p>with ‘|node’ on tail</p>
1053
+ </div>
1054
+
1055
+ </li>
1056
+
1057
+ </ul>
1058
+
1059
+ </div><table class="source_code">
1060
+ <tr>
1061
+ <td>
1062
+ <pre class="lines">
1063
+
1064
+
1065
+ 133
1066
+ 134
1067
+ 135</pre>
1068
+ </td>
1069
+ <td>
1070
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 133</span>
1071
+
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>
1074
+ <span class='kw'>end</span></pre>
1075
+ </td>
1076
+ </tr>
1077
+ </table>
963
1078
  </div>
964
1079
 
965
1080
  <div class="method_details ">
@@ -1026,18 +1141,18 @@
1026
1141
  <pre class="lines">
1027
1142
 
1028
1143
 
1029
- 117
1030
- 118
1031
- 119
1032
1144
  120
1033
1145
  121
1034
1146
  122
1035
1147
  123
1036
1148
  124
1037
- 125</pre>
1149
+ 125
1150
+ 126
1151
+ 127
1152
+ 128</pre>
1038
1153
  </td>
1039
1154
  <td>
1040
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 117</span>
1155
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 120</span>
1041
1156
 
1042
1157
  <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>
1043
1158
  <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>
@@ -1117,12 +1232,12 @@
1117
1232
  <pre class="lines">
1118
1233
 
1119
1234
 
1120
- 106
1121
- 107
1122
- 108</pre>
1235
+ 109
1236
+ 110
1237
+ 111</pre>
1123
1238
  </td>
1124
1239
  <td>
1125
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 106</span>
1240
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 109</span>
1126
1241
 
1127
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>
1128
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>
@@ -1176,18 +1291,18 @@
1176
1291
  <pre class="lines">
1177
1292
 
1178
1293
 
1179
- 96
1180
- 97
1181
- 98
1182
1294
  99
1183
1295
  100
1184
- 101</pre>
1296
+ 101
1297
+ 102
1298
+ 103
1299
+ 104</pre>
1185
1300
  </td>
1186
1301
  <td>
1187
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 96</span>
1302
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 99</span>
1188
1303
 
1189
1304
  <span class='kw'>def</span> <span class='id identifier rubyid_selection'>selection</span>
1190
- <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>
1305
+ <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>
1191
1306
  <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>
1192
1307
  <span class='kw'>end</span>
1193
1308
  <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>
@@ -1241,12 +1356,12 @@
1241
1356
  <pre class="lines">
1242
1357
 
1243
1358
 
1244
- 42
1245
- 43
1246
- 44</pre>
1359
+ 44
1360
+ 45
1361
+ 46</pre>
1247
1362
  </td>
1248
1363
  <td>
1249
- <pre class="code"><span class="info file"># File 'lib/jini.rb', line 42</span>
1364
+ <pre class="code"><span class="info file"># File 'lib/jini.rb', line 44</span>
1250
1365
 
1251
1366
  <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1252
1367
  <span class='ivar'>@head</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
@@ -1261,7 +1376,7 @@
1261
1376
  </div>
1262
1377
 
1263
1378
  <div id="footer">
1264
- Generated on Thu Sep 15 19:58:11 2022 by
1379
+ Generated on Thu Sep 15 22:12:56 2022 by
1265
1380
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1266
1381
  0.9.28 (ruby-3.0.0).
1267
1382
  </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 19:58:10 2022 by
115
+ Generated on Thu Sep 15 22:12:56 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
@@ -57,7 +57,10 @@
57
57
  <div class="clear"></div>
58
58
  </div>
59
59
 
60
- <div id="content"><div id='filecontents'><p>The class <a href="https://www.rubydoc.info/github/l3r8yJ/jini/master/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
60
+ <div id="content"><div id='filecontents'><h1 id="jini">Jini</h1>
61
+ <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
+ <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>
61
64
 
62
65
  <p><code>ruby
63
66
  require 'jini'
@@ -67,10 +70,10 @@ xpath = Jini
67
70
  .add_path('child') # addition a path node
68
71
  .add_attr('key', 'value') # addition an attribute
69
72
  .to_s # convert it to a string
70
- # -&gt; xpath: parent/child[@key="value"]
73
+ # -&gt; xpath: /parent/child[@key="value"]
71
74
  </code></p>
72
75
 
73
- <p>The full list of methods is <a href="https://www.rubydoc.info/github/l3r8yJ/jini/master/Jini">here</a>.</p>
76
+ <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.3">here</a>.</p>
74
77
 
75
78
  <p>Install it:</p>
76
79
 
@@ -89,7 +92,7 @@ is <em>building</em> XPATHs.</p>
89
92
  </div></div>
90
93
 
91
94
  <div id="footer">
92
- Generated on Thu Sep 15 19:58:10 2022 by
95
+ Generated on Thu Sep 15 22:12:56 2022 by
93
96
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
94
97
  0.9.28 (ruby-3.0.0).
95
98
  </div>
data/doc/index.html CHANGED
@@ -57,7 +57,10 @@
57
57
  <div class="clear"></div>
58
58
  </div>
59
59
 
60
- <div id="content"><div id='filecontents'><p>The class <a href="https://www.rubydoc.info/github/l3r8yJ/jini/master/Jini"><code>Jini</code></a> helps you build a XPATH.</p>
60
+ <div id="content"><div id='filecontents'><h1 id="jini">Jini</h1>
61
+ <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
+ <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>
61
64
 
62
65
  <p><code>ruby
63
66
  require 'jini'
@@ -67,10 +70,10 @@ xpath = Jini
67
70
  .add_path('child') # addition a path node
68
71
  .add_attr('key', 'value') # addition an attribute
69
72
  .to_s # convert it to a string
70
- # -&gt; xpath: parent/child[@key="value"]
73
+ # -&gt; xpath: /parent/child[@key="value"]
71
74
  </code></p>
72
75
 
73
- <p>The full list of methods is <a href="https://www.rubydoc.info/github/l3r8yJ/jini/master/Jini">here</a>.</p>
76
+ <p>The full list of methods is <a href="https://www.rubydoc.info/gems/jini/0.0.3">here</a>.</p>
74
77
 
75
78
  <p>Install it:</p>
76
79
 
@@ -89,7 +92,7 @@ is <em>building</em> XPATHs.</p>
89
92
  </div></div>
90
93
 
91
94
  <div id="footer">
92
- Generated on Thu Sep 15 19:58:10 2022 by
95
+ Generated on Thu Sep 15 22:12:56 2022 by
93
96
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
94
97
  0.9.28 (ruby-3.0.0).
95
98
  </div>
data/doc/method_list.html CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
  <li class="even ">
104
104
  <div class="item">
105
- <span class='object_link'><a href="Jini.html#remove_attr-instance_method" title="Jini#remove_attr (method)">#remove_attr</a></span>
105
+ <span class='object_link'><a href="Jini.html#or-instance_method" title="Jini#or (method)">#or</a></span>
106
106
  <small>Jini</small>
107
107
  </div>
108
108
  </li>
@@ -110,7 +110,7 @@
110
110
 
111
111
  <li class="odd ">
112
112
  <div class="item">
113
- <span class='object_link'><a href="Jini.html#remove_path-instance_method" title="Jini#remove_path (method)">#remove_path</a></span>
113
+ <span class='object_link'><a href="Jini.html#remove_attr-instance_method" title="Jini#remove_attr (method)">#remove_attr</a></span>
114
114
  <small>Jini</small>
115
115
  </div>
116
116
  </li>
@@ -118,13 +118,21 @@
118
118
 
119
119
  <li class="even ">
120
120
  <div class="item">
121
- <span class='object_link'><a href="Jini.html#selection-instance_method" title="Jini#selection (method)">#selection</a></span>
121
+ <span class='object_link'><a href="Jini.html#remove_path-instance_method" title="Jini#remove_path (method)">#remove_path</a></span>
122
122
  <small>Jini</small>
123
123
  </div>
124
124
  </li>
125
125
 
126
126
 
127
127
  <li class="odd ">
128
+ <div class="item">
129
+ <span class='object_link'><a href="Jini.html#selection-instance_method" title="Jini#selection (method)">#selection</a></span>
130
+ <small>Jini</small>
131
+ </div>
132
+ </li>
133
+
134
+
135
+ <li class="even ">
128
136
  <div class="item">
129
137
  <span class='object_link'><a href="Jini.html#to_s-instance_method" title="Jini#to_s (method)">#to_s</a></span>
130
138
  <small>Jini</small>
@@ -100,7 +100,7 @@
100
100
  </div>
101
101
 
102
102
  <div id="footer">
103
- Generated on Thu Sep 15 19:58:11 2022 by
103
+ Generated on Thu Sep 15 22:12:56 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.4'
8
+ s.version = '0.0.5'
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 \
data/lib/jini.rb CHANGED
@@ -23,11 +23,13 @@
23
23
  # SOFTWARE.
24
24
 
25
25
  # It's a simple XPATH builder.
26
+ # ```
26
27
  # require 'jini'
27
- # xpath = Jini.new('body')
28
+ # xpath = Jini.new('parent')
28
29
  # .add_path(node: 'child')
29
- # .add_path(node: 'child')
30
- # .to_s // /body/child/child
30
+ # .add_path(node: 'toy')
31
+ # .to_s // body/child/toy
32
+ # ```
31
33
  class Jini
32
34
  # When path not valid
33
35
  class InvalidPath < StandardError; end
@@ -87,6 +89,7 @@ class Jini
87
89
  # @param position [Integer] number
88
90
  # @return [Jini] object
89
91
  def at(position)
92
+ raise InvalidPath, 'Cant use at after selection' if @head.include? '::'
90
93
  Jini.new("#{@head}[#{position}]")
91
94
  end
92
95
 
@@ -94,7 +97,7 @@ class Jini
94
97
  # if path doesn't contain invalid symbols for selection
95
98
  # @return [Jini] selection
96
99
  def selection
97
- if @head.include?('[') || @head.include?(']') || @head.include?('@')
100
+ if @head.include?('[') || @head.include?(']') || @head.include?('@') || @head.include?('//')
98
101
  raise InvalidPath, 'Cannot select, path contains bad symbols'
99
102
  end
100
103
  Jini.new(@head.gsub('/', '::').to_s)
@@ -123,4 +126,11 @@ class Jini
123
126
  )
124
127
  )
125
128
  end
129
+
130
+ # Adds '|' to head
131
+ # @param [String] node
132
+ # @return [Jini] with '|node' on tail
133
+ def or(node)
134
+ Jini.new("#{@head}|#{node}")
135
+ end
126
136
  end
data/test/jini_test.rb CHANGED
@@ -31,17 +31,30 @@ require_relative 'test_helper'
31
31
  # Copyright:: Copyright (c) 2022-2022 Ivan Ivanchuck
32
32
  # License:: MIT
33
33
  class JiniTest < Minitest::Test
34
+ PARENT = 'parent'
35
+ CHILD = 'child'
34
36
  def test_add_path_and_at_success
35
37
  assert_equal(
36
38
  '/parent/child[1]',
37
39
  Jini.new
38
- .add_path('parent')
39
- .add_path('child')
40
+ .add_path(PARENT)
41
+ .add_path(CHILD)
40
42
  .at(1)
41
43
  .to_s
42
44
  )
43
45
  end
44
46
 
47
+ def test_remove_path
48
+ assert_equal(
49
+ 'parent/toy',
50
+ Jini.new(PARENT)
51
+ .add_path(CHILD)
52
+ .add_path('toy')
53
+ .remove_path(CHILD)
54
+ .to_s
55
+ )
56
+ end
57
+
45
58
  def test_add_attr_success
46
59
  assert_equal(
47
60
  '/node[@key="value"]',
@@ -56,8 +69,8 @@ class JiniTest < Minitest::Test
56
69
  assert_equal(
57
70
  '/parent/child/*',
58
71
  Jini.new
59
- .add_path('parent')
60
- .add_path('child')
72
+ .add_path(PARENT)
73
+ .add_path(CHILD)
61
74
  .all
62
75
  .to_s
63
76
  )
@@ -66,7 +79,7 @@ class JiniTest < Minitest::Test
66
79
  def test_all_fail
67
80
  assert_raises do
68
81
  Jini.new
69
- .add_path('parent')
82
+ .add_path(PARENT)
70
83
  .add_attr('key', 'value')
71
84
  .all
72
85
  end
@@ -89,8 +102,8 @@ class JiniTest < Minitest::Test
89
102
  '/parent/child/toy',
90
103
  Jini
91
104
  .new
92
- .add_path('parent')
93
- .add_path('child')
105
+ .add_path(PARENT)
106
+ .add_path(CHILD)
94
107
  .add_attr('age', 'teen')
95
108
  .add_path('toy')
96
109
  .add_attr('age', 'old')
@@ -98,4 +111,42 @@ class JiniTest < Minitest::Test
98
111
  .to_s
99
112
  )
100
113
  end
114
+
115
+ def test_add_all
116
+ assert_equal(
117
+ 'parent//children',
118
+ Jini.new(PARENT).add_all('children').to_s
119
+ )
120
+ end
121
+
122
+ def test_selection_success
123
+ assert_equal(
124
+ 'parent::child',
125
+ Jini.new(PARENT)
126
+ .add_path(CHILD)
127
+ .selection
128
+ .to_s
129
+ )
130
+ end
131
+
132
+ def test_selection_fail
133
+ assert_raises do
134
+ Jini.new
135
+ .add_path(PARENT)
136
+ .add_path(CHILD)
137
+ .add_attr('k', 'v')
138
+ .selection
139
+ .to_s
140
+ end
141
+ end
142
+
143
+ def test_or
144
+ assert_equal(
145
+ 'parent/child|animal',
146
+ Jini.new(PARENT)
147
+ .add_path(CHILD)
148
+ .or('animal')
149
+ .to_s
150
+ )
151
+ end
101
152
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jini
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Ivanchuck
@@ -69,6 +69,7 @@ files:
69
69
  - ".yardoc/objects/root.dat"
70
70
  - ".yardoc/proxy_types"
71
71
  - Gemfile
72
+ - LICENSE
72
73
  - README.md
73
74
  - doc/Jini.html
74
75
  - doc/Jini/InvalidPath.html