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 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