lolcat 99.9.9 → 99.9.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lolcat/lol.rb +17 -6
- data/lib/lolcat/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a313766343e4d204f03d600659987b0c910dc8afd3fbc420987a01ed3f829fc6
|
4
|
+
data.tar.gz: b01cf6ef9c92806257e88ee14416e428330531a128cd7c7ec8c6e47970c5e5b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51c84d710091c29b29611c089090515cc5c26c69e33517ca894eb9f28363f794edeb324a5aa5687addca1ea9d1f94dd553b08b55cef9d9270cf269cd46abf041
|
7
|
+
data.tar.gz: 383ba55cf86ab59a187a2085df85e29d7b70cbb4c6e302680bb4e9fb17b975f214c5de6bc78882871fabc4f7df4047f5965e112539d6f7833b49055ebee656e2
|
data/lib/lolcat/lol.rb
CHANGED
@@ -27,6 +27,10 @@ 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
|
+
INCOMPLETE_UTF8 = /[\xc0-\xdf]$|[\xe0-\xef].?$|[\xf0-\xf7].?.?$/n
|
33
|
+
|
30
34
|
@paint_detected_mode = Paint.detect_mode
|
31
35
|
|
32
36
|
def self.rainbow(freq, i)
|
@@ -39,8 +43,11 @@ module Lol
|
|
39
43
|
def self.cat(fd, opts={})
|
40
44
|
print "\e[?25l" if opts[:animate]
|
41
45
|
while true do
|
46
|
+
buf = ''
|
42
47
|
begin
|
43
|
-
|
48
|
+
begin
|
49
|
+
buf += fd.sysread(4096)
|
50
|
+
end while buf.match(INCOMPLETE_ESCAPE) or (fd.external_encoding == 'UTF-8' and buf.match(INCOMPLETE_UTF8))
|
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;
|
56
|
-
system("stty
|
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(
|
74
|
-
|
75
|
-
|
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
|
|
data/lib/lolcat/version.rb
CHANGED