epitools 0.5.99 → 0.5.100

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: 0cbf9aff2ad00720845a3bce7605343ff4b0a88e
4
- data.tar.gz: cb8e34cb49a1bb091d60fcfecdfdf1b5006915ac
3
+ metadata.gz: c9ab55bd4da24b0248446b9a5ce73720500595a5
4
+ data.tar.gz: 21216bbed7ed7d2d62ee5f0e4f8c3ee55bbf1a41
5
5
  SHA512:
6
- metadata.gz: 0fa9bcbf1d0275b21648d52ee0959250e517861e8b1a4b8acc9b44eba3b9e259d2ac3df83876af1736ae0ac8a564435662da7254bceb9c4f49340e611ac75e14
7
- data.tar.gz: 6e51f33d5942756afaa8b90089a5657ed252940c59b4c95f6fb92245faed39ca59ebed6187064d0f287490fbb33099b76afb67481a5980efa61ce0aa7b76beb6
6
+ metadata.gz: c1309e3223556495583e860b4c94389f6307b0cd5e8932a4af9e1eddb8dc7c3659b6884262d2076e559f9cbe466a97d7a0e1c21a85136be9f936af894a67d00c
7
+ data.tar.gz: 65f74192fa9eac491bf4e3a7a1be548fecb406190e76e250f2821215a6f1759bbfc46061deeba2c34249338d4ba608696667a8594ab089a695dcff1b9e42af14
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.99
1
+ 0.5.100
@@ -44,14 +44,11 @@ class Array
44
44
  end
45
45
 
46
46
  #
47
- # zip from the right (or reversed zip.)
48
- #
49
- # eg:
50
- # >> [5,39].rzip([:hours, :mins, :secs])
51
- # => [ [:mins, 5], [:secs, 39] ]
47
+ # see: Enumerable#rzip
52
48
  #
53
49
  def rzip(other)
54
- reverse_each.zip(other.reverse_each).reverse_each
50
+ super.to_a
51
+ # reverse_each.zip(other.reverse_each).reverse_each.to_a
55
52
  # reverse.zip(other.reverse).reverse # That's a lotta reverses!
56
53
  end
57
54
 
@@ -166,7 +163,7 @@ class Array
166
163
  # }
167
164
  #
168
165
  def histogram(n_buckets=10, options={})
169
-
166
+
170
167
  use_ranges = options[:ranges] || options[:hash]
171
168
 
172
169
  min_val = min
@@ -373,6 +373,19 @@ module Enumerable
373
373
  end
374
374
  end
375
375
 
376
+ #
377
+ # Reverse zip (aligns the ends of two arrays, and zipping them from the right-hand side)
378
+ #
379
+ # eg:
380
+ # >> [5,39].rzip([:hours, :mins, :secs])
381
+ # => [ [:mins, 5], [:secs, 39] ]
382
+ #
383
+ # Note: Like zip, it will pad the second array if it's shorter than the first
384
+ #
385
+ def rzip(other)
386
+ reverse_each.zip(other.reverse_each).reverse_each
387
+ end
388
+
376
389
  #
377
390
  # Does the opposite of #zip -- converts [ [:a, 1], [:b, 2] ] to [ [:a, :b], [1, 2] ]
378
391
  #
@@ -409,6 +422,20 @@ module Enumerable
409
422
  end
410
423
  alias_method :group_neighbors_by, :group_neighbours_by
411
424
 
425
+
426
+ #
427
+ # Converts an array of 2-element key/value pairs into a Hash, grouped by key.
428
+ # (Like to_h, but the pairs can have duplicate keys.)
429
+ #
430
+ def grouped_to_h
431
+ result = Hash.of_arrays
432
+ each {|k,v| result[k] << v }
433
+ result
434
+ end
435
+ alias_method :group_to_h, :grouped_to_h
436
+ alias_method :to_h_in_groups, :grouped_to_h
437
+ alias_method :to_h_grouped, :grouped_to_h
438
+
412
439
  #
413
440
  # Convert the array into a stable iterator (Iter) object.
414
441
  #
@@ -123,6 +123,9 @@ class Path
123
123
  ###############################################################################
124
124
 
125
125
  def initialize(newpath, hints={})
126
+ send("path=", newpath, hints)
127
+
128
+ # p hints
126
129
  if hints[:unlink_when_garbage_collected]
127
130
  backup_path = path.dup
128
131
  puts "unlinking #{backup_path} after gc!"
@@ -130,8 +133,6 @@ class Path
130
133
  File.unlink backup_path
131
134
  end
132
135
  end
133
-
134
- send("path=", newpath, hints)
135
136
  end
136
137
 
137
138
  def initialize_copy(other)
@@ -591,28 +592,6 @@ class Path
591
592
  end
592
593
  end
593
594
 
594
- def media_tags
595
- require 'taglib'
596
-
597
- tags = nil
598
-
599
- TagLib::FileRef.open(path) do |fileref|
600
- unless fileref.null?
601
- tags = fileref.tag
602
- result = {}
603
- getters = tags.class.instance_methods(false).group_by {|m| m[/^.+[^=]/] }.map { |k,vs| vs.size == 2 ? k.to_sym : nil }.compact
604
- getters.each do |getter|
605
- tags[getter] = tags.public_send(getter)
606
- end
607
- end
608
- end
609
-
610
- tags
611
- end
612
-
613
- alias_method :id3, :media_tags
614
- alias_method :id3tags, :media_tags
615
-
616
595
  #
617
596
  # Retrieve one of this file's xattrs
618
597
  #
@@ -468,7 +468,15 @@ describe Array do
468
468
  end
469
469
 
470
470
  it "rzips" do
471
- [5,39].rzip([:hours, :mins, :secs]).to_a.should == [ [5, :mins], [39, :secs] ]
471
+ in_times = [:hours, :mins, :secs]
472
+ in_tegers = [ 5, 39]
473
+ out_put = [[5, :mins], [39, :secs]]
474
+
475
+ in_tegers.rzip(in_times).should == out_put
476
+
477
+ enum = in_tegers.to_enum.rzip(in_times)
478
+ enum.is_a?(Enumerator).should == true
479
+ enum.to_a.should == [ [5, :mins], [39, :secs] ]
472
480
  end
473
481
 
474
482
  it "middles" do
@@ -614,6 +622,13 @@ describe Enumerable do
614
622
  result.should == [[1,2],[5,6,7],[10,11],[13]]
615
623
  end
616
624
 
625
+ it "grouped_to_h's" do
626
+ [[:a, 1], [:b, 2], [:a, 0]].grouped_to_h.should == {
627
+ a: [1,0],
628
+ b: [2]
629
+ }
630
+ end
631
+
617
632
  it "includes?s" do
618
633
  [:a, :b, :c].to_enum.includes?(:c).should == true
619
634
  [:a, :b, :c].to_enum.includes?(5).should == false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epitools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.99
4
+ version: 0.5.100
5
5
  platform: ruby
6
6
  authors:
7
7
  - epitron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-09 00:00:00.000000000 Z
11
+ date: 2017-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec