lays 0.0.3 → 0.0.4
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/lays/version.rb +1 -1
- data/lib/lays.rb +31 -6
- data/test/lays_test.rb +34 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 344ff19d7f82fb426330068e995002461d9d1923
|
4
|
+
data.tar.gz: 9844e0a80af77ef7cba68c6658ac75e259b28a8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b8587f285088249e77ab175f7151d4b8c8896e0f1c9f6864ffa03736f0b89129bf7dfb63cefb9b5498a7cad078468464eb2125e04c5506080819a46dead37f3
|
7
|
+
data.tar.gz: b54611b69960f0e711cc51090f29730f3a7b08d9a0d24b730a8bd6ad0c48bb82dce7393ddb95391d295e12e3fb26b802ad2799a1da4fa15dcab0c80dd5beeb98
|
data/lib/lays/version.rb
CHANGED
data/lib/lays.rb
CHANGED
@@ -3,6 +3,14 @@ require "ostruct"
|
|
3
3
|
|
4
4
|
module Lays
|
5
5
|
|
6
|
+
Layer = Struct.new(:content, :transparent_char) do
|
7
|
+
def initialize(attrs={})
|
8
|
+
attrs.each do |attr, val|
|
9
|
+
self.send("#{attr}=", val)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
6
14
|
def []=(layer, content)
|
7
15
|
set_layer(layer)
|
8
16
|
layers[layer].content = content
|
@@ -15,11 +23,11 @@ module Lays
|
|
15
23
|
end
|
16
24
|
|
17
25
|
def set_layer(id)
|
18
|
-
layers[id] ||=
|
26
|
+
layers[id] ||= Layer.new
|
19
27
|
end
|
20
|
-
|
28
|
+
|
21
29
|
def layers
|
22
|
-
@
|
30
|
+
@layers ||= {}
|
23
31
|
end
|
24
32
|
|
25
33
|
def to_s
|
@@ -28,16 +36,33 @@ module Lays
|
|
28
36
|
|
29
37
|
def render
|
30
38
|
result = []
|
31
|
-
layers.sort {|a, b| a[0] <=> b[0] }
|
39
|
+
lays = layers.sort {|a, b| a[0] <=> b[0] }
|
40
|
+
lays.each do |key, layer|
|
32
41
|
content = layer.content
|
33
42
|
content.split("\n").each_with_index.map do |line, i|
|
34
43
|
line.each_char.each_with_index do |c, j|
|
35
44
|
result[i] ||= []
|
36
|
-
|
37
|
-
|
45
|
+
if !transparent_char_for(layer, c)
|
46
|
+
result[i][j] = c
|
47
|
+
elsif key == lays.first.first
|
48
|
+
result[i][j] = " "
|
49
|
+
end
|
38
50
|
end
|
39
51
|
end
|
40
52
|
end
|
41
53
|
result.map {|a|a.join}.join("\n")
|
42
54
|
end
|
55
|
+
|
56
|
+
def transparent_char=(char)
|
57
|
+
@transparent_char = char
|
58
|
+
end
|
59
|
+
|
60
|
+
def transparent_char
|
61
|
+
@transparent_char ||= " "
|
62
|
+
end
|
63
|
+
|
64
|
+
def transparent_char_for(layer, char)
|
65
|
+
transparent = layer.transparent_char || transparent_char
|
66
|
+
char == transparent
|
67
|
+
end
|
43
68
|
end
|
data/test/lays_test.rb
CHANGED
@@ -98,13 +98,20 @@ test "re-rendering frames" do
|
|
98
98
|
assert_equal res, "*n*#"
|
99
99
|
end
|
100
100
|
|
101
|
+
scope do
|
102
|
+
# width and height
|
103
|
+
test "width" do
|
104
|
+
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
101
108
|
scope do
|
102
109
|
# Transparency
|
103
110
|
test "transparent char" do
|
104
111
|
frame = Frame.new
|
105
112
|
|
106
113
|
frame[6] = "0=0 0"
|
107
|
-
frame[6].
|
114
|
+
frame[6].transparent_char = "="
|
108
115
|
frame[3] = "11111"
|
109
116
|
assert_equal frame.to_s, "010 0"
|
110
117
|
end
|
@@ -112,9 +119,34 @@ scope do
|
|
112
119
|
test "setting transparent char beforehand" do
|
113
120
|
frame = Frame.new
|
114
121
|
|
115
|
-
frame[6].
|
122
|
+
frame[6].transparent_char = "#"
|
116
123
|
frame[6] = "2 # 2"
|
117
124
|
frame[3] = "11111"
|
118
125
|
assert_equal frame.to_s, "2 1 2"
|
119
126
|
end
|
127
|
+
|
128
|
+
test "setting global transparent char for frame" do
|
129
|
+
frame = Frame.new
|
130
|
+
frame.transparent_char = "$"
|
131
|
+
|
132
|
+
frame[6] = "2 $ 2"
|
133
|
+
frame[3] = "11111"
|
134
|
+
assert_equal frame.to_s, "2 1 2"
|
135
|
+
end
|
136
|
+
|
137
|
+
test "full transparency example" do
|
138
|
+
frame = Frame.new
|
139
|
+
frame.transparent_char = "$"
|
140
|
+
|
141
|
+
frame[9].transparent_char = "*"
|
142
|
+
frame[6].transparent_char = "%"
|
143
|
+
|
144
|
+
frame[9] = "3**$***3 "
|
145
|
+
frame[6] = "22%2$%%2 "
|
146
|
+
frame[3] = "11111$$1 "
|
147
|
+
frame[1] = "000000$0 "
|
148
|
+
assert_equal frame.to_s, "321$$0 3 "
|
149
|
+
|
150
|
+
end
|
151
|
+
|
120
152
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lays
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Federico Iachetti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|