lolcat 99.9.9 → 99.9.19

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
  SHA256:
3
- metadata.gz: 5b2f2da553496da9167b641f9490b602b7c7ab20939855328e5b11ba576981ac
4
- data.tar.gz: fb4269af6402efb41734d960e7dc5645d3407e2140a1adcaf9d2346a853d3064
3
+ metadata.gz: 68967db19ea067b1adf19027786e77376bcefd55c3164e071541f5a2dca4b345
4
+ data.tar.gz: 1d3abe0fd9094344dbd21a7f10b9c6acce18c96cb7280ecd9d6d1c15a2e05c22
5
5
  SHA512:
6
- metadata.gz: 836bb75c723ea7c49f4ea1201ab2a301bedc9c61db9a4995d8e7191f15ae4792dc856144bb592dab0dcc167234a968afb997f6b1b3323384eb07f679f5c7189b
7
- data.tar.gz: 5678cebdb25b01d6115d20fbf8cfdb67a4904d1dc715671d40359ddce1ad080d9cd99f45ca062fe92eab3ed6913621ed6c67506eb625ecff31787ade038c9d74
6
+ metadata.gz: 6d8f33ff147d45bc995b34df1f5d0918f84591533b15e99139310321c09e3a44d52b1f0599ffb359cd16335cd6f1d354f27a3ac804b7266d76ecc71b8ee30b49
7
+ data.tar.gz: 97f965672e09e470de3137b5d61df8fe944acbdb36c44aaeab10b9543861c20e83029f387e21a609941298dd1c15b0f2575c0fe59b01c82a508eee773c0fe625
data/lib/lolcat/lol.rb CHANGED
@@ -27,6 +27,9 @@ require "lolcat/version"
27
27
  require 'paint'
28
28
 
29
29
  module Lol
30
+ ANSI_ESCAPE = /((?:\e(?:[ -\/]+.|[\]PX^_][^\a\e]*|\[[0-?]*.|.))*)(.?)/m
31
+ INCOMPLETE_ESCAPE = /\e(?:[ -\/]*|[\]PX^_][^\a\e]*|\[[0-?]*)$/
32
+
30
33
  @paint_detected_mode = Paint.detect_mode
31
34
 
32
35
  def self.rainbow(freq, i)
@@ -39,8 +42,12 @@ module Lol
39
42
  def self.cat(fd, opts={})
40
43
  print "\e[?25l" if opts[:animate]
41
44
  while true do
45
+ buf = ''
42
46
  begin
43
- buf = fd.sysread(65536)
47
+ begin
48
+ buf += fd.sysread(4096)
49
+ invalid_encoding = !buf.dup.force_encoding(fd.external_encoding).valid_encoding?
50
+ end while invalid_encoding or buf.match(INCOMPLETE_ESCAPE)
44
51
  rescue EOFError
45
52
  break
46
53
  end
@@ -52,8 +59,8 @@ module Lol
52
59
  end
53
60
  ensure
54
61
  if STDOUT.tty? then
55
- print "\e[m\e[?25h\e[?1;5;47;2004l"
56
- system("stty cooked -nl <&1");
62
+ print "\e[m\e[?25h\e[?1;5;2004l"
63
+ system("stty sane -istrip <&1");
57
64
  end
58
65
  end
59
66
 
@@ -70,9 +77,13 @@ module Lol
70
77
  def self.println_plain(str, defaults={}, opts={})
71
78
  opts.merge!(defaults)
72
79
  set_mode(opts[:truecolor])
73
- str.scan(/((?:\e(?:[ -\/]+.|[\]PX^_][^\a\e]*|\[[0-?]*.|.))*)(.?)/m).each_with_index do |c,i|
74
- code = rainbow(opts[:freq], opts[:os]+i/opts[:spread])
75
- print c[0], Paint[c[1], *[ (:black if opts[:invert]), code ].compact ]
80
+ str.scan(ANSI_ESCAPE).each_with_index do |c,i|
81
+ color = rainbow(opts[:freq], opts[:os]+i/opts[:spread])
82
+ if opts[:invert] then
83
+ print c[0], Paint.color(nil, color), c[1], "\e[49m"
84
+ else
85
+ print c[0], Paint.color(color), c[1], "\e[39m"
86
+ end
76
87
  end
77
88
  end
78
89
 
@@ -1,3 +1,3 @@
1
1
  module Lolcat
2
- VERSION = "99.9.9"
2
+ VERSION = "99.9.19"
3
3
  end
data/lolcat.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
 
14
14
  s.add_development_dependency "rake"
15
15
  s.add_dependency "paint", "~> 2.0.0"
16
- s.add_dependency "trollop", "~> 2.1.2"
16
+ s.add_dependency "trollop", "= 2.1.3"
17
17
  s.add_dependency "manpages", "~> 0.6.1"
18
18
 
19
19
  s.files = `git ls-files`.split("\n")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lolcat
3
3
  version: !ruby/object:Gem::Version
4
- version: 99.9.9
4
+ version: 99.9.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-08 00:00:00.000000000 Z
11
+ date: 2018-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: trollop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 2.1.2
47
+ version: 2.1.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 2.1.2
54
+ version: 2.1.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: manpages
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  version: '0'
107
107
  requirements: []
108
108
  rubyforge_project:
109
- rubygems_version: 2.7.3
109
+ rubygems_version: 2.7.6
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: Okay, no unicorns. But rainbows!!