epitools 0.5.113 → 0.5.114

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: ac614574fc21c61b88fb73f208d16c4960c5a3165a78844a56e26c8326e7bf82
4
- data.tar.gz: 75914fb5972be2115ce1704c896f183300057ab6422be80f7dd50ab5088a152c
3
+ metadata.gz: 12639fe716d554565a2dafdf486f339a0b5a85389dd6ab751c05ccbfbd6d76c3
4
+ data.tar.gz: dc13d1ab805e37c082a14af7e4262a86d7aed06842147f1405c3cce028d0b3c8
5
5
  SHA512:
6
- metadata.gz: fd211d087deebafc7fec99003e6dfd20293cac20b9ad7db36cbd03641b1c2b4a4ddb3f1609fd236895cb596444012f5829ee27b2562271d6ca71a1696daaa205
7
- data.tar.gz: 3c5c750c2767cfc600ae78538ea6339859e8a7c50d4b4b8876efebbbbb658d8a56166e29d50f8a72e72ac12c7e7a7a64a2d179c189f1b3901bc8e26fa4370a09
6
+ metadata.gz: fd51698c2b95781babd4b7b4b741d39eac594852c2695f011c483d962d7498d6a426287e2486e158d7ff4f70d1145b385cc113a4e2fd9479404934b3f4d95faf
7
+ data.tar.gz: 2a00245d9dc98adde9e5cdee8f565c7c1875f03b1413ff24a6e8de67546220f09d437440b54f4a480338cc9fadb5bd8fb7efbb694090ef4e862138ce0389b469
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.113
1
+ 0.5.114
@@ -39,6 +39,9 @@
39
39
  # >> Colored.enable_temporarily { puts "whee!".red }
40
40
  #
41
41
 
42
+ # ANSI spec:
43
+ # https://github.com/tonyg/racket-ansi/blob/master/doc/all-escapes.txt
44
+
42
45
  require 'set'
43
46
  require 'rbconfig'
44
47
  require 'Win32/Console/ANSI' if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
@@ -6,6 +6,7 @@ class Array
6
6
  #
7
7
  alias_method :lpush, :unshift
8
8
  alias_method :lpop, :shift
9
+ alias_method :uniq_by, :uniq
9
10
 
10
11
  #
11
12
  # flatten.compact.uniq
@@ -240,10 +240,13 @@ module Enumerable
240
240
  already_seen = Set.new
241
241
 
242
242
  Enumerator::Lazy.new(self) do |yielder, value|
243
- yielder << value if already_seen.add?(value)
243
+ key = block_given? ? yield(value) : value
244
+ yielder << value if already_seen.add?(key)
244
245
  end
245
246
  end
246
247
 
248
+ alias_method :uniq_by, :uniq
249
+
247
250
  #
248
251
  # The same as "map", except that if an element is an Array or Enumerable, map is called
249
252
  # recursively on that element. (Hashes are ignored because of the complications of block
@@ -1,6 +1,20 @@
1
1
 
2
2
  class Hash
3
3
 
4
+ #
5
+ # `hash1 + hash2` merge the two hashes, returning a new hash
6
+ #
7
+ def +(other)
8
+ merge(other)
9
+ end
10
+
11
+ #
12
+ # `hash1 - hash2` removes keys from hash1 that exist in hash2, returning a new hash
13
+ #
14
+ def -(other)
15
+ dup.delete_if { |k,v| other.includes?(k) }
16
+ end
17
+
4
18
  #
5
19
  # 'true' if the Hash has no entries
6
20
  #
@@ -144,6 +144,39 @@ module URI
144
144
  to_s
145
145
  end
146
146
 
147
+ #
148
+ # Default user agent for the 'get' method
149
+ #
150
+ # USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
151
+
152
+ #
153
+ # Get this URI using Net::HTTP
154
+ #
155
+ def get(headers={}, redirect_limit=10)
156
+ raise "Sorry, URI can't get from #{scheme.inspect} URIs yet" unless scheme =~ /^https?$/
157
+ raise 'Too many HTTP redirections' if redirect_limit == 0
158
+
159
+ # headers['User-Agent'] ||= USER_AGENT
160
+
161
+ # response = Net::HTTP.start(host, port) do |http|
162
+ # # the_path = path.empty? ? "/" : path
163
+ # req = Net::HTTP::Get.new(self, headers)
164
+ # http.request(req)
165
+ # end
166
+
167
+ response = Net::HTTP.get_response(self)
168
+
169
+ case response
170
+ when Net::HTTPSuccess
171
+ response
172
+ when Net::HTTPRedirection
173
+ # puts "redirect: #{response['location']}"
174
+ URI(response['location']).get(headers, redirect_limit-1)
175
+ else
176
+ response.error!
177
+ end
178
+ end
179
+
147
180
  end
148
181
 
149
182
  #
@@ -156,7 +189,7 @@ module Better_URI_RFC3986_Parser # ::RFC3986_relative_ref
156
189
  subsitutions = ESCAPE_ME_PLZ.chars.map { |c| [c, CGI.escape(c)] }
157
190
  subsitutions << [" ", "%20"]
158
191
 
159
- subsitutions.each do |find, replace|
192
+ subsitutions.each do |find, replace|
160
193
  uri = uri.gsub(find, replace)
161
194
  end
162
195
 
@@ -238,6 +238,13 @@ module Kernel
238
238
  end
239
239
  alias_method :backtick_with_stderr, :run_with_stderr
240
240
 
241
+ #
242
+ # Print "self" with a linefeed at the end
243
+ #
244
+ def displayln
245
+ puts self
246
+ end
247
+
241
248
  end
242
249
 
243
250
 
@@ -653,8 +653,9 @@ class Path
653
653
  #
654
654
  # All the lines in this file, chomped.
655
655
  #
656
- def each_line(&block)
657
- open { |io| io.each_line { |line| block.call(line.chomp) } }
656
+ def each_line
657
+ return to_enum(:each_line) unless block_given?
658
+ open { |io| io.each_line { |line| yield line.chomp } }
658
659
  end
659
660
  alias_method :each, :each_line
660
661
  alias_method :lines, :each_line
@@ -300,7 +300,7 @@ describe String do
300
300
  it "wordses" do
301
301
  s = "This, is a bunch, of words."
302
302
  s.words.should == ["This", "is", "a", "bunch", "of", "words"]
303
-
303
+
304
304
  "Weird word-like things".words.should == ["Weird", "word", "like", "things"]
305
305
  end
306
306
 
@@ -664,6 +664,11 @@ describe Enumerable do
664
664
 
665
665
  it "uniqs lazily" do
666
666
  [0,0,0,1].cycle.uniq.take(2).to_a.should == [0,1]
667
+ [0,0,0,1].cycle.uniq_by(&:prime?).take(1).to_a.should == [0]
668
+ end
669
+
670
+ it "uniq_bys" do
671
+ [1,2,3,4].uniq_by(&:prime?).to_a.should == [1,2]
667
672
  end
668
673
 
669
674
  it "foldl's" do
@@ -1140,3 +1145,25 @@ describe "Anything" do
1140
1145
  end
1141
1146
 
1142
1147
  end
1148
+
1149
+
1150
+ describe URI do
1151
+
1152
+ it "paramses" do
1153
+ opts = {"q" => "hello", "p" => "whee"}
1154
+ query = opts.to_query
1155
+ query.should == "q=hello&p=whee"
1156
+
1157
+ uri = URI("http://blah.com/stuff?#{query}")
1158
+
1159
+ uri.params.should == opts
1160
+ end
1161
+
1162
+ it "gets" do
1163
+ response = URI("http://google.com/").get
1164
+ response.body.size
1165
+ (response.size > 0).should == true
1166
+ end
1167
+
1168
+ end
1169
+
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.113
4
+ version: 0.5.114
5
5
  platform: ruby
6
6
  authors:
7
7
  - epitron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-19 00:00:00.000000000 Z
11
+ date: 2018-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec