lays 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: e72ed5d8477765417dde167c2dbeac3b89f62a70
4
- data.tar.gz: 7d074dff6b535e3a80288e1de7231e0591a13e48
3
+ metadata.gz: 344ff19d7f82fb426330068e995002461d9d1923
4
+ data.tar.gz: 9844e0a80af77ef7cba68c6658ac75e259b28a8f
5
5
  SHA512:
6
- metadata.gz: 9ce367aab90f87597976dc85c4ef55650a3ed5784970a0dcbae6c22a025e0fcd4cd46b9fbac7487147da1e465bf4136c4efec406d256f4663b31790e67933548
7
- data.tar.gz: 36cd5ab70131d080ca515cc8f7cb78d706cbdac3a99710dc4eef1a8bcad4757d26cf60f8424471f460cf522c4c5e845671186b41d97697ee232fc087cf540d07
6
+ metadata.gz: 9b8587f285088249e77ab175f7151d4b8c8896e0f1c9f6864ffa03736f0b89129bf7dfb63cefb9b5498a7cad078468464eb2125e04c5506080819a46dead37f3
7
+ data.tar.gz: b54611b69960f0e711cc51090f29730f3a7b08d9a0d24b730a8bd6ad0c48bb82dce7393ddb95391d295e12e3fb26b802ad2799a1da4fa15dcab0c80dd5beeb98
data/lib/lays/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lays
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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] ||= OpenStruct.new
26
+ layers[id] ||= Layer.new
19
27
  end
20
-
28
+
21
29
  def layers
22
- @layer ||= {}
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] }.each do |_, layer|
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
- transparent = layer.transparent || " "
37
- result[i][j] = c unless c == nil || c == transparent
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].transparent = "="
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].transparent = "#"
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.3
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-21 00:00:00.000000000 Z
11
+ date: 2014-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler