Class: GridGenerator::Skewb::SkewbGrid
- Inherits:
-
Object
- Object
- GridGenerator::Skewb::SkewbGrid
show all
- Defined in:
- lib/grid_generator/skewb/skewb_grid.rb
Constant Summary
collapse
- COLOURS =
{
fill: "#d0d0d0",
stroke: "#404040"
}
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(x:, y:, units:, elements:) ⇒ SkewbGrid
Returns a new instance of SkewbGrid.
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 11
def initialize(x:, y:, units: , elements: )
@x, @y = x, y
@units = units
@elements = case elements
when String
FaceParser.new(elements).parse
when Array
elements
else
raise ArgumentError, "squares must be array or string"
end
end
|
Instance Attribute Details
#elements ⇒ Object
Returns the value of attribute elements.
24
25
26
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 24
def elements
@elements
end
|
#units ⇒ Object
Returns the value of attribute units.
24
25
26
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 24
def units
@units
end
|
#x ⇒ Object
Returns the value of attribute x.
24
25
26
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 24
def x
@x
end
|
#y ⇒ Object
Returns the value of attribute y.
24
25
26
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 24
def y
@y
end
|
Instance Method Details
#base_shape ⇒ Object
59
60
61
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 59
def base_shape
GridGenerator::Svg::Polygon.new(points: points, style: base_shape_style)
end
|
#base_shape_style ⇒ Object
55
56
57
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 55
def base_shape_style
GridGenerator::Svg::Style.new(fill: COLOURS[:fill], stroke: COLOURS[:stroke])
end
|
#build_element(row_num, col_num, data) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 30
def build_element(row_num, col_num, data)
if data
factory_class.new(
grid_x: x,
grid_y: y,
row_num: row_num,
col_num: col_num,
side_size: side_size,
units: units,
colour: data[:colour],
opacity: data[:opacity]
).build
else
nil
end
end
|
#element_shapes ⇒ Object
47
48
49
50
51
52
53
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 47
def element_shapes
elements.each_with_index.map do |row, row_num|
row.each_with_index.map do |col, col_num|
build_element(row_num, col_num, col)
end
end.flatten.compact
end
|
#side_size ⇒ Object
26
27
28
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 26
def side_size
elements.size - 1
end
|
#to_svg ⇒ Object
63
64
65
66
67
68
69
70
71
|
# File 'lib/grid_generator/skewb/skewb_grid.rb', line 63
def to_svg
output = base_shape.to_svg
rows.each { |row| output += row.to_svg }
columns.each { |col| output += col.to_svg }
element_shapes.each { |element| output += element.to_svg if element }
output
end
|