nineteen-eighty-two 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/colours.yml +3 -0
- data/config/messages.yml +28 -0
- data/lib/nineteen/eighty/two.rb +3 -0
- data/lib/nineteen/eighty/two/colours.rb +33 -0
- data/lib/nineteen/eighty/two/exceptions.rb +15 -0
- data/lib/nineteen/eighty/two/formatters/html_table_formatter.rb +2 -2
- data/lib/nineteen/eighty/two/formatters/json_formatter.rb +2 -2
- data/lib/nineteen/eighty/two/formatters/svg_formatter.rb +4 -7
- data/lib/nineteen/eighty/two/formatters/text_formatter.rb +5 -1
- data/lib/nineteen/eighty/two/messages.rb +43 -0
- data/lib/nineteen/eighty/two/spectrum.rb +9 -3
- data/lib/nineteen/eighty/two/templates/svg/document.eruby +1 -1
- data/lib/nineteen/eighty/two/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 966a5f8d59bfe35e4a089eb778286579a85502e1
|
4
|
+
data.tar.gz: d645dd42ca4b355dec967cb7b741f9dfb2c1d1de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b48d485b1a8b55a704aa5c31223e4ca204551db6a184caf5ea55690d0eaceab369579cb11d8cc74dde1cad5610594a400b6b7b4a653d1f23288f4afc1e3c96a4
|
7
|
+
data.tar.gz: 9cfbdb519c1cdca9adc18af672fdc22da8e0f606aff002ee7a74daa169cfc73b3ae86bdf1fa93b5ab9048752ab03e5b3b0811ef5f296505e16d7cb3fa0cb399f
|
data/config/colours.yml
ADDED
data/config/messages.yml
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
'0': OK
|
2
|
+
'1': NEXT without FOR
|
3
|
+
'2': Variable not found
|
4
|
+
'3': Subscript wrong
|
5
|
+
'4': Out of Memory
|
6
|
+
'5': Out of screen
|
7
|
+
'6': Number too big
|
8
|
+
'7': RETURN without GO SUB
|
9
|
+
'8': End of file
|
10
|
+
'9': STOP statement
|
11
|
+
A: Invalid Argument
|
12
|
+
B: Integer out of range
|
13
|
+
C: Nonsense in BASIC
|
14
|
+
D: BREAK
|
15
|
+
E: Out of DATA
|
16
|
+
F: Invalid file name
|
17
|
+
G: No room for line
|
18
|
+
H: STOP in INPUT
|
19
|
+
I: FOR without NEXT
|
20
|
+
J: Invalid I/O device
|
21
|
+
K: Invalid colour
|
22
|
+
L: BREAK into program
|
23
|
+
M: RAMTOP no good
|
24
|
+
N: Statement lost
|
25
|
+
O: Invalid stream
|
26
|
+
P: FN without DEF
|
27
|
+
Q: Parameter error
|
28
|
+
R: Tape loading error
|
data/lib/nineteen/eighty/two.rb
CHANGED
@@ -4,6 +4,9 @@ require 'erubis'
|
|
4
4
|
|
5
5
|
require 'nineteen/eighty/two/version'
|
6
6
|
require 'nineteen/eighty/two/spectrum'
|
7
|
+
require 'nineteen/eighty/two/messages'
|
8
|
+
require 'nineteen/eighty/two/colours'
|
9
|
+
require 'nineteen/eighty/two/exceptions'
|
7
10
|
|
8
11
|
require 'nineteen/eighty/two/decorators/run_length_encoder'
|
9
12
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Nineteen
|
2
|
+
module Eighty
|
3
|
+
module Two
|
4
|
+
class Colours
|
5
|
+
|
6
|
+
PRIMARIES = YAML.load_file File.join File.dirname(__FILE__), '..', '..', '..', '..', 'config', 'colours.yml'
|
7
|
+
PRIMARIES.keys.map do |p|
|
8
|
+
self.const_set p.upcase, PRIMARIES[p]
|
9
|
+
end
|
10
|
+
|
11
|
+
BLACK = 0
|
12
|
+
YELLOW = RED + GREEN
|
13
|
+
CYAN = GREEN + BLUE
|
14
|
+
MAGENTA = RED + BLUE
|
15
|
+
WHITE = RED + GREEN + BLUE
|
16
|
+
|
17
|
+
def self.[] key
|
18
|
+
hex = "%06x" % (self.const_get key.upcase)
|
19
|
+
return brighten hex if key.upcase == key
|
20
|
+
hex
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.method_missing m, *args
|
24
|
+
self[m]
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.brighten colour
|
28
|
+
colour.gsub 'b', 'f'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -4,11 +4,11 @@ module Nineteen
|
|
4
4
|
module Formats
|
5
5
|
class HTMLTable
|
6
6
|
def self.format text
|
7
|
-
lines = Spectrum[text]
|
7
|
+
lines = Spectrum[*text]
|
8
8
|
|
9
9
|
t = File.read File.open File.join Nineteen::Eighty::Two.templates_dir, 'html', 'table', 'table.eruby'
|
10
10
|
context = {
|
11
|
-
title: text,
|
11
|
+
title: text.to_s.gsub('"', ''),
|
12
12
|
blanks: blanks(lines.first),
|
13
13
|
rows: lines.map { |l| row(l) }.join("\n")
|
14
14
|
}
|
@@ -17,16 +17,13 @@ module Nineteen
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.body text
|
20
|
-
|
20
|
+
rows = []
|
21
21
|
text.each_with_index do |line, count|
|
22
|
-
rows = []
|
23
22
|
Spectrum[line].each_with_index do |line, index|
|
24
23
|
rows.push row(line, index + (count * 8))
|
25
24
|
end
|
26
|
-
s << rows.join("\n")
|
27
25
|
end
|
28
|
-
|
29
|
-
s.strip
|
26
|
+
rows.flatten
|
30
27
|
end
|
31
28
|
|
32
29
|
def self.row list, index = 0
|
@@ -42,12 +39,12 @@ module Nineteen
|
|
42
39
|
height: 1,
|
43
40
|
style: 'on'
|
44
41
|
}
|
45
|
-
cells.push Erubis::Eruby.new(t).evaluate(context)
|
42
|
+
cells.push Erubis::Eruby.new(t).evaluate(context).strip
|
46
43
|
end
|
47
44
|
x += item.width
|
48
45
|
end
|
49
46
|
|
50
|
-
cells
|
47
|
+
cells
|
51
48
|
end
|
52
49
|
|
53
50
|
def self.longest list
|
@@ -7,7 +7,11 @@ module Nineteen
|
|
7
7
|
on = options.fetch(:on, '1')
|
8
8
|
off = options.fetch(:off, '0')
|
9
9
|
|
10
|
-
Spectrum[text].map
|
10
|
+
Spectrum[*text].map do |t|
|
11
|
+
t.join
|
12
|
+
end.join("\n").
|
13
|
+
gsub('0', off).
|
14
|
+
gsub('1', on)
|
11
15
|
end
|
12
16
|
end
|
13
17
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Nineteen
|
2
|
+
module Eighty
|
3
|
+
module Two
|
4
|
+
class Messages
|
5
|
+
MESSAGES = YAML.load_file File.join File.dirname(__FILE__), '..', '..', '..', '..', 'config', 'messages.yml'
|
6
|
+
|
7
|
+
def self.[] key
|
8
|
+
key = key.to_s.upcase
|
9
|
+
raise Exceptions::SpectrumException.new "Q - #{MESSAGES['Q']}" unless MESSAGES.has_key? key
|
10
|
+
"#{key} - #{MESSAGES[key]}"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.method_missing m, *args
|
14
|
+
key = case m
|
15
|
+
when :zero
|
16
|
+
0
|
17
|
+
when :one
|
18
|
+
1
|
19
|
+
when :two
|
20
|
+
2
|
21
|
+
when :three
|
22
|
+
3
|
23
|
+
when :four
|
24
|
+
4
|
25
|
+
when :five
|
26
|
+
5
|
27
|
+
when :six
|
28
|
+
6
|
29
|
+
when :seven
|
30
|
+
7
|
31
|
+
when :eight
|
32
|
+
8
|
33
|
+
when :nine
|
34
|
+
9
|
35
|
+
else
|
36
|
+
m.to_s
|
37
|
+
end
|
38
|
+
self[key]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -3,9 +3,15 @@ module Nineteen
|
|
3
3
|
module Two
|
4
4
|
class Spectrum
|
5
5
|
CHARACTERS = YAML.load_file File.join File.dirname(__FILE__), '..', '..', '..', '..', 'config', 'characters.yml'
|
6
|
-
|
7
|
-
def self.[] text
|
8
|
-
|
6
|
+
|
7
|
+
def self.[] *text
|
8
|
+
# require "pry" ; binding.pry
|
9
|
+
a = []
|
10
|
+
text.each do |t|
|
11
|
+
a += Spectrum.linify(t.chars.map { |c| Spectrum.get(c) })
|
12
|
+
end
|
13
|
+
|
14
|
+
a
|
9
15
|
end
|
10
16
|
|
11
17
|
def self.get key
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nineteen-eighty-two
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pikesley
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erubis
|
@@ -98,12 +98,17 @@ files:
|
|
98
98
|
- bin/console
|
99
99
|
- bin/setup
|
100
100
|
- config/characters.yml
|
101
|
+
- config/colours.yml
|
102
|
+
- config/messages.yml
|
101
103
|
- lib/nineteen/eighty/two.rb
|
104
|
+
- lib/nineteen/eighty/two/colours.rb
|
102
105
|
- lib/nineteen/eighty/two/decorators/run_length_encoder.rb
|
106
|
+
- lib/nineteen/eighty/two/exceptions.rb
|
103
107
|
- lib/nineteen/eighty/two/formatters/html_table_formatter.rb
|
104
108
|
- lib/nineteen/eighty/two/formatters/json_formatter.rb
|
105
109
|
- lib/nineteen/eighty/two/formatters/svg_formatter.rb
|
106
110
|
- lib/nineteen/eighty/two/formatters/text_formatter.rb
|
111
|
+
- lib/nineteen/eighty/two/messages.rb
|
107
112
|
- lib/nineteen/eighty/two/spectrum.rb
|
108
113
|
- lib/nineteen/eighty/two/templates/html/table/cell.eruby
|
109
114
|
- lib/nineteen/eighty/two/templates/html/table/row.eruby
|