primitive_wrapper 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e2d245c1ee0f7d46c0df391fcd4165fe22095f9
4
- data.tar.gz: b7e8d55707e1b244619154de8373a473e364278c
3
+ metadata.gz: 4c61db086f4cde65ecab2dbb325a3a2ba6b54354
4
+ data.tar.gz: 5fdce0cf8b22b2c4a25b681c4920426767cdd684
5
5
  SHA512:
6
- metadata.gz: 6d8791c319f2209cd5bc85dbca416b5471a751a316ad814370cc967e9f5e9f94dd9b2a4d7143a3a92d06ba8f973fbf97e7ef5d35943bbcdba5436b3f9a98d896
7
- data.tar.gz: 079ed7917773ad0f916afca375fbddf0285328abda5691cd44cfcaa5b0eedcc786f2158a61bf876a6e6b6b5f5fff4e0818a7c0425ae8bb5f77cda5f62b14da80
6
+ metadata.gz: fc16390601b8af96ced06a0138f1ace2f3a9256a1cd12d395015583c78efe67498e582410951fae9c4fef692340a7f6018b69b659c485328064573b350f43b96
7
+ data.tar.gz: 53077599d9802d07811b45521131757c44f120fc0cf8b4c540cb6676d29769854efa3dbf869df9c5f3c78403aa9986385cabb00a29539327de7ef778c19a9d91
data/README.md CHANGED
@@ -434,17 +434,13 @@ Below is a list of what has changed:
434
434
  # :each XRange ... redefined to work with descending sequences
435
435
  # :reverse_each XRange ... reverse version of :each
436
436
  # :re_range(ng) XRange ... creates new range converting negative start, end to positive given size==ng
437
- # ... used by XArray access operators that use descending ranges.
437
+ # used by XArray access operators that use descending ranges.
438
438
  ```
439
439
 
440
440
  #### XArray class container for Array with extensions
441
441
 
442
442
  This creates a wrapped `Array` with behavior that enhances the access operators of `Array`;
443
- additionally a few new methods were added to the wrapped version.
444
- The methods `#ssort`, `#ssort!` sort `XArray` elements using `#to_s` on each comparison.
445
- The methods `#isort`, `#isort!` sort `XArray` elements using `#inspect` on each comparison.
446
- The method `#to_xa` what added to `Array` as a more terse way of creating a wrapper on `Array`.
447
- The method `#empty!` was also added. These two aforementioned methods also get included in `XArray`.
443
+ additionally a few new methods were added to the wrapped version as well as the original `Array` class.
448
444
  `XArray` mimics the behavior of `Array` but redefines `:[]` and `:[]=` to include lists wich comprise indexes, ranges, and arrays of indexes.
449
445
  There is also behavior that defines many-to-one, one-to-many, and many-to-many operations. Note that one-to-one behavior has not changed.
450
446
  An example best explains how this works:
@@ -466,6 +462,18 @@ An example best explains how this works:
466
462
  ary[-2] = [:a, :b] # ary == [2, "c", 5, 7, "a", "b", 17, 19, :s, :s, :s, [:a, :b], [1, 2, 3]]
467
463
  ```
468
464
 
465
+ The are a few more upgrades as well as follows:
466
+
467
+ ```ruby
468
+ # :to_xa Array, XArray ... Converts Array to XArray unless already an XArray
469
+ # :include? XArray ... Updated to support a list of items all of which must be included to return true
470
+ # :include_any? XArray ... true if any of the list of itmes are included
471
+ # :delete_at XArray ... enhanced version can delete a list of indexes or ranges or arrays of indexes
472
+ # returns what was deleted in the order of the list
473
+ # :ssort, :ssort! XArray ... sorts with each element called with method :to_s
474
+ # :isort, :isort! XArray ... sorts with each element called with method :inspect
475
+ ```
476
+
469
477
  #### Customization
470
478
 
471
479
  Things should work out of the box, until they don't. This section will detail what customization is possible with what container.
@@ -563,6 +571,10 @@ This can be mostly a matter of taste, but we can choose custom names that convey
563
571
  So it is left to you to decide.
564
572
 
565
573
  ## Revision History
574
+ ### Version 1.0.1
575
+ * updated documentation to include undocumented methods
576
+ * fixed XArray `#delete_at` bugs
577
+
566
578
  ### Version 1.0.0
567
579
  * fixed wrapper inside wrapper causing stack overflow
568
580
  * Documentation updates
@@ -1050,18 +1050,38 @@ class XArray < ValueAdd
1050
1050
  end
1051
1051
  def delete_at(*index_list)
1052
1052
  return nil if index_list.empty?
1053
+ rtn = []
1053
1054
  if (index_list.count==1)
1054
1055
  if index_list.first==:all
1055
- self.empty!
1056
- end
1057
- else
1058
- list = PrimitiveWrapper::get_list(index_list,size)
1059
- rtn = []
1060
- list.sort.reverse.each do |idx|
1061
- rtn.push = @value.delete_at(idx)
1056
+ rtn = @value.dup
1057
+ @value.empty!
1058
+ return rtn
1059
+ else
1060
+ ii = index_list.first
1061
+ rtn = self[ii]
1062
+ if ii.type_of? Range
1063
+ ii = ii.to_xr
1064
+ ii.re_range!(size)
1065
+ ii.reorder!
1066
+ ii.reverse_each do |idx|
1067
+ @value.delete_at(idx)
1068
+ end
1069
+ return rtn
1070
+ end
1062
1071
  end
1063
- return rtn
1064
1072
  end
1073
+ rtn = self[*index_list]
1074
+ list = PrimitiveWrapper::get_list(index_list,size)
1075
+ list = list & list # remove duplicates
1076
+ list.sort.reverse.each do |idx|
1077
+ if idx.type_of? Range
1078
+ t_idx = idx.reorder
1079
+ else
1080
+ t_idx = idx
1081
+ end
1082
+ @value.delete_at(t_idx)
1083
+ end
1084
+ return rtn
1065
1085
  end
1066
1086
  def include?(*list) # replace with list of stuff
1067
1087
  if list.count==1
@@ -1,3 +1,3 @@
1
1
  module PrimitiveWrapper
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primitive_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Colvin