primitive_wrapper 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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