ruby_figlet 0.1.0 → 0.2.0
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 +4 -4
- data/lib/figlet_interpreter.rb +44 -6
- data/lib/ruby_figlet.rb +3 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0887a9805f5a671af2b41d61472b85b981714d79'
|
4
|
+
data.tar.gz: d23cdc8114c666e61d49dc991305e45643636f96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bffb5334ba880591ad285f8412b99e6d28c960d126f62daeddb04c695ddc58532a0aef58c41a3b9bb9bc15e322969b905cadee6e80d8e9d83cd543fed52fb675
|
7
|
+
data.tar.gz: 870dfd5aefdbf7dbb7a2b70a2d35b67e13c7c820e9e3f9a440eca4df03ea43d835f54fb1086d3418d0d58e4474b6dd75f48c611859f0d60511bf0a7627c6e8d3
|
data/lib/figlet_interpreter.rb
CHANGED
@@ -5,6 +5,14 @@ class String
|
|
5
5
|
str = str.force_encoding("BINARY")
|
6
6
|
str.encode("UTF-8", invalid: :replace, undef: :replace)
|
7
7
|
end
|
8
|
+
|
9
|
+
def delete_at! n
|
10
|
+
slice! n
|
11
|
+
self
|
12
|
+
end
|
13
|
+
def delete_at n
|
14
|
+
dup.delete_at! n
|
15
|
+
end
|
8
16
|
end
|
9
17
|
|
10
18
|
module FigFont
|
@@ -35,12 +43,12 @@ module FigFont
|
|
35
43
|
@commented = meta[5].to_i
|
36
44
|
# defaults, currently not used
|
37
45
|
@print_way = 0
|
38
|
-
full_lay = 64
|
39
|
-
tag_count = 229
|
46
|
+
@full_lay = 64
|
47
|
+
@tag_count = 229
|
40
48
|
if meta.size > 6 # overide defaults
|
41
49
|
@print_way = meta[6].to_i
|
42
|
-
full_lay = meta[7].to_i
|
43
|
-
tag_count = meta[8].to_i
|
50
|
+
@full_lay = meta[7].to_i
|
51
|
+
@tag_count = meta[8].to_i
|
44
52
|
end
|
45
53
|
# we've got the information, now delete it form the `lines`
|
46
54
|
(0..@commented).each { lines.delete_at 0 } # This bugger,
|
@@ -49,7 +57,6 @@ module FigFont
|
|
49
57
|
# the first line, embarrassing how long that took.
|
50
58
|
endmark = lines[0][lines[0].length - 1]
|
51
59
|
(0..lines.size - 1).each do |i|
|
52
|
-
lines[i].gsub!(@hardblank, " ")
|
53
60
|
lines[i].gsub!(endmark, "")
|
54
61
|
end
|
55
62
|
|
@@ -75,11 +82,42 @@ module FigFont
|
|
75
82
|
lines.slice! 0..@height - 1
|
76
83
|
end
|
77
84
|
|
85
|
+
smush! char_hash, lines
|
86
|
+
char_hash.each do |key, arr|
|
87
|
+
(0..@height - 1).each { |i| char_hash[key][i] = arr[i].gsub(@hardblank, " ") }
|
88
|
+
end
|
78
89
|
return char_hash
|
79
90
|
end
|
80
91
|
|
92
|
+
private def smush hash, lines
|
93
|
+
hash.each do |letter, letter_arr|
|
94
|
+
(0..lines.min_by(&:length).length - 1).each do |over| # from 0 to the length of the shortest line in the array
|
95
|
+
same_at_index = Array.new(@height - 1, false)
|
96
|
+
(0..@height - 2).each do |down|
|
97
|
+
same_at_index[down] = true if (letter_arr[over][down] == letter_arr[over][down + 1]) && (letter_arr[over][down] == ' ' && letter_arr[over][down + 1] == ' ')
|
98
|
+
end
|
99
|
+
if same_at_index.all?
|
100
|
+
(0..@height - 1).each do |down|
|
101
|
+
hash[letter][down].delete_at! over
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end # Pre-word smushing for each letter, when there is a consective vertical line of spaces, then smush them away
|
105
|
+
end
|
106
|
+
hash
|
107
|
+
end
|
108
|
+
|
109
|
+
private def smush! hash, lines
|
110
|
+
hash.replace smush hash, lines
|
111
|
+
end
|
112
|
+
|
81
113
|
def font_data
|
82
|
-
{
|
114
|
+
{
|
115
|
+
'lookup_table': scan,
|
116
|
+
'height': @height,
|
117
|
+
'direction': @print_way,
|
118
|
+
'old_layout': @old_lay,
|
119
|
+
'full_layout': @full_lay
|
120
|
+
}
|
83
121
|
end
|
84
122
|
end
|
85
123
|
end
|
data/lib/ruby_figlet.rb
CHANGED
@@ -22,6 +22,7 @@ module RubyFiglet
|
|
22
22
|
@lookup = data[:lookup_table]
|
23
23
|
@height = data[:height]
|
24
24
|
@direction = data[:direction]
|
25
|
+
@smushing = data[:old_layout]
|
25
26
|
string = string.reverse if @direction == 1
|
26
27
|
@string = string
|
27
28
|
@font = font
|
@@ -35,14 +36,14 @@ module RubyFiglet
|
|
35
36
|
end
|
36
37
|
string << "\n"
|
37
38
|
end
|
38
|
-
lines = string.split "\n"
|
39
39
|
if @direction == 1
|
40
|
+
lines = string.split "\n"
|
40
41
|
(0..(%x[tput cols].to_i - 1) - lines[0].length).each do # Holy Moly, from 0 to (terminal width minus 1) minus length of the ascii art word.
|
41
42
|
lines.each_with_index do |line, i|
|
42
43
|
lines[i].insert 0, " "
|
43
44
|
end
|
44
45
|
end
|
45
|
-
|
46
|
+
string = lines.join "\n"
|
46
47
|
end
|
47
48
|
return string
|
48
49
|
end
|