ascii_grid 0.1.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 +7 -0
- data/lib/ascii_grid.rb +104 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fb0f6f17868c2df090dec0927f1a4d87c11e3dcd
|
4
|
+
data.tar.gz: a15e60a06cd6ff2b05931e457d3ea9839eb76ce4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 55871bc089b2641da7f50c3073e9f33e40aa11e6e62db2e715838970236e6a5d87c3f43c2a3f795e297677a893f5e90f94e5c79b2a37cbb152c306ba1fb5f896
|
7
|
+
data.tar.gz: 40c89be87c9794f0fc34b7dbb3bfab6a8c43c1e9c5d69b843eafe3d04a5e83735947432e3797eca19bc324e1c10d4084f94bcec1f7cc2652c1ae871c14a3654a
|
data/lib/ascii_grid.rb
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
# This object contains the general size and shape of a grid. The object's methods
|
2
|
+
# can then be used to print that grid to the terminal.
|
3
|
+
class Ascii_grid
|
4
|
+
|
5
|
+
# Grid Width
|
6
|
+
attr_accessor :x_size
|
7
|
+
# Grid Height
|
8
|
+
attr_accessor :y_size
|
9
|
+
# Helps decide origin, make it exactly 1/2 of x_size to keep (0, 0) in the center
|
10
|
+
attr_accessor :x_offset
|
11
|
+
# Helps decide origin, make it exactly 1/2 of y_size to keep (0, 0) in the center
|
12
|
+
attr_accessor :y_offset
|
13
|
+
# This is what will be printed as a point, should only be one character
|
14
|
+
attr_accessor :point
|
15
|
+
# This is what will be printed as blank space in the grid, should only be one character
|
16
|
+
attr_accessor :blank_space
|
17
|
+
# Bolean value, if true the clear command will be run when the make_grid method is called
|
18
|
+
attr_accessor :clear
|
19
|
+
|
20
|
+
def initialize(x_size, y_size, x_offset, y_offset)
|
21
|
+
@x_size = x_size.to_i
|
22
|
+
@y_size = x_size.to_i
|
23
|
+
@x_offset = x_offset.to_i
|
24
|
+
@y_offset = y_offset.to_i
|
25
|
+
@point = "@"
|
26
|
+
@blank_space = "+"
|
27
|
+
@clear = false
|
28
|
+
end
|
29
|
+
|
30
|
+
# This method prints the grid to the terminal. It takes an array of x and y values that will be printed as points.
|
31
|
+
#
|
32
|
+
# Example:
|
33
|
+
# ascii_grid.make_grid(1, 2, 3, -4)
|
34
|
+
#
|
35
|
+
# This will print the points (1, 2) and (3, -4)
|
36
|
+
#
|
37
|
+
# It also returns a string with the grid that was printed.
|
38
|
+
def make_grid(*points)
|
39
|
+
self.convert_values()
|
40
|
+
printed = ""
|
41
|
+
if (@clear)
|
42
|
+
system ('clear')
|
43
|
+
end
|
44
|
+
x_points = Array.new
|
45
|
+
y_points = Array.new
|
46
|
+
# Divide points
|
47
|
+
(0..points.length - 1).each do |position|
|
48
|
+
if (position % 2 == 0)
|
49
|
+
x_points.push(points[position].to_i)
|
50
|
+
else
|
51
|
+
y_points.push(points[position].to_i)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
# Start loop
|
55
|
+
(0..@y_size.to_i).each do |current_y|
|
56
|
+
(0..@x_size.to_i).each do |current_x|
|
57
|
+
# Setup
|
58
|
+
print_fill = true
|
59
|
+
relative_x = current_x - @x_offset
|
60
|
+
relative_y = @y_offset - current_y
|
61
|
+
point_amount = x_points.length - 1
|
62
|
+
# Check point
|
63
|
+
(0..point_amount.to_i).each do |position_point|
|
64
|
+
if (x_points[position_point] == relative_x)
|
65
|
+
if (y_points[position_point] == relative_y)
|
66
|
+
printed << @point.to_s
|
67
|
+
print_fill = false
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
# Fill
|
72
|
+
if (print_fill)
|
73
|
+
if (@x_offset == current_x)
|
74
|
+
printed << "|"
|
75
|
+
elsif (@y_offset == current_y)
|
76
|
+
printed << "-"
|
77
|
+
else
|
78
|
+
printed << @blank_space.to_s
|
79
|
+
end
|
80
|
+
end
|
81
|
+
if (y_offset == current_y)
|
82
|
+
printed << "-"
|
83
|
+
else
|
84
|
+
printed << " "
|
85
|
+
end
|
86
|
+
end
|
87
|
+
printed << "\n"
|
88
|
+
end
|
89
|
+
print printed
|
90
|
+
return printed
|
91
|
+
end
|
92
|
+
|
93
|
+
# This method should convert all of the object's attributes into the correct data type.
|
94
|
+
# You shouldn't have to use this unless you are getting weird errors.
|
95
|
+
def convert_values
|
96
|
+
@x_size = @x_size.to_i
|
97
|
+
@y_size = @y_size.to_i
|
98
|
+
@x_offset = @x_offset.to_i
|
99
|
+
@y_offset = @y_offset.to_i
|
100
|
+
@point = @point.to_s
|
101
|
+
@blank_space = @blank_space.to_s
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ascii_grid
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Harim
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-04-26 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: This gem should allow you to easily create grids in the terminal and
|
14
|
+
display points in that grid
|
15
|
+
email: harimscode@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/ascii_grid.rb
|
21
|
+
homepage:
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.5.2.1
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Create a grid in the terminal
|
45
|
+
test_files: []
|