landescape 0.0.1 → 0.0.2
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 +4 -4
- data/.travis.yml +3 -0
- data/README.md +2 -0
- data/lib/landescape/evaluator.rb +1 -1
- data/lib/landescape/evaluator/curses.rb +3 -5
- data/lib/landescape/tokenizer.rb +6 -6
- data/lib/landescape/version.rb +1 -1
- data/spec/evaluator_spec.rb +109 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9274da0802ff844f74114a7c4e13866b0517808f
|
4
|
+
data.tar.gz: a6fa4e42047ae8e019177914a517c622401a24c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1658939a683ca03d4008e5b1ee3237ebdb24189081e1ac6711d3d54965e02db3bc2aeeea221442583813e2729fe606e2b2d7908042da9b978aab3d41016d6cc
|
7
|
+
data.tar.gz: 43085e61f8399bccb9891994fbea7903ad7cdb51442b20372fa85ce3bb11919f8e8b97bf1ec6e36756c2e96343aa683e62271d034b82c891e2747c1790abafca
|
data/.travis.yml
ADDED
data/README.md
CHANGED
data/lib/landescape/evaluator.rb
CHANGED
@@ -30,11 +30,9 @@ module Landescape
|
|
30
30
|
return exit_attribute_mode if modes.empty?
|
31
31
|
|
32
32
|
modes.each do |mode|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
exit_attribute_mode
|
37
|
-
end
|
33
|
+
next unless attr = GRAPHICS_MODES[mode]
|
34
|
+
|
35
|
+
window.attron attr
|
38
36
|
end
|
39
37
|
end
|
40
38
|
|
data/lib/landescape/tokenizer.rb
CHANGED
@@ -49,7 +49,7 @@ module Landescape
|
|
49
49
|
def escape(token)
|
50
50
|
token << read_char
|
51
51
|
|
52
|
-
case token
|
52
|
+
case token[-1]
|
53
53
|
when /\[/
|
54
54
|
escape_code token
|
55
55
|
when /[()]/
|
@@ -68,7 +68,7 @@ module Landescape
|
|
68
68
|
def escape_code(token)
|
69
69
|
token << read_char
|
70
70
|
|
71
|
-
case token
|
71
|
+
case token[-1]
|
72
72
|
when /[\d?;<=>]/
|
73
73
|
escape_code token
|
74
74
|
when /[a-zA-Z]/
|
@@ -81,7 +81,7 @@ module Landescape
|
|
81
81
|
def escape_code_parens(token)
|
82
82
|
token << read_char
|
83
83
|
|
84
|
-
case token
|
84
|
+
case token[-1]
|
85
85
|
when /[\da-zA-Z]/
|
86
86
|
token
|
87
87
|
else
|
@@ -92,7 +92,7 @@ module Landescape
|
|
92
92
|
def escape_code_sharp(token)
|
93
93
|
token << read_char
|
94
94
|
|
95
|
-
case token
|
95
|
+
case token[-1]
|
96
96
|
when /\d/
|
97
97
|
token
|
98
98
|
else
|
@@ -103,7 +103,7 @@ module Landescape
|
|
103
103
|
def escape_code_slash(token)
|
104
104
|
token << read_char
|
105
105
|
|
106
|
-
case token
|
106
|
+
case token[-1]
|
107
107
|
when /[a-zA-Z]/
|
108
108
|
token
|
109
109
|
else
|
@@ -112,7 +112,7 @@ module Landescape
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def fallback(token)
|
115
|
-
token.chars
|
115
|
+
token.chars.to_a
|
116
116
|
end
|
117
117
|
|
118
118
|
def read_char
|
data/lib/landescape/version.rb
CHANGED
data/spec/evaluator_spec.rb
CHANGED
@@ -1,4 +1,112 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Landescape::
|
3
|
+
describe Landescape::Curses do
|
4
|
+
def evaluate(tokens, window)
|
5
|
+
evaluator = Landescape::Curses.start(array_to_result(tokens), window, non_block: true)
|
6
|
+
eval_thread = evaluator.instance_variable_get(:@eval_thread)
|
7
|
+
eval_thread.join if eval_thread.alive?
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:window) { double(:window) }
|
11
|
+
|
12
|
+
before do
|
13
|
+
window.stub(:maxy) { 20 }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#print' do
|
17
|
+
it do
|
18
|
+
window.should receive(:addstr).with 'H'
|
19
|
+
window.should receive :refresh
|
20
|
+
|
21
|
+
evaluate [[:print, 'H']], window
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#set_attributes' do
|
26
|
+
context 'supported attribute' do
|
27
|
+
it do
|
28
|
+
window.should receive(:attron).with ::Curses::A_BLINK
|
29
|
+
|
30
|
+
evaluate [[:set_attributes, 5]], window
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'not supported attribute' do
|
35
|
+
it do
|
36
|
+
window.should_not receive :attron
|
37
|
+
window.should_not receive :attroff
|
38
|
+
|
39
|
+
evaluate [[:set_attributes, 33]], window
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'empty arguments' do
|
44
|
+
it do
|
45
|
+
window.should receive :attroff
|
46
|
+
|
47
|
+
evaluate [[:set_attributes]], window
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#exit_attribute_mode' do
|
53
|
+
it do
|
54
|
+
window.should receive :attroff
|
55
|
+
|
56
|
+
evaluate [[:exit_attribute_mode]], window
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#change_scroll_region' do
|
61
|
+
it do
|
62
|
+
window.should receive(:setscrreg).with 5, 10
|
63
|
+
|
64
|
+
evaluate [[:change_scroll_region, 5, 10]], window
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#scroll_reverse' do
|
69
|
+
it do
|
70
|
+
window.should receive(:scrl).with -1
|
71
|
+
|
72
|
+
evaluate [[:scroll_reverse]], window
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#scroll_forward' do
|
77
|
+
it do
|
78
|
+
window.should receive(:scrl).with 1
|
79
|
+
|
80
|
+
evaluate [[:scroll_forward]], window
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#cursor_address' do
|
85
|
+
context 'not on bottom' do
|
86
|
+
before do
|
87
|
+
window.stub(:cury) { 1 }
|
88
|
+
window.stub(:maxy) { 21 }
|
89
|
+
end
|
90
|
+
|
91
|
+
it do
|
92
|
+
window.should receive(:setpos).with 4, 2
|
93
|
+
|
94
|
+
evaluate [[:cursor_address, 4, 2]], window
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'on bottom' do
|
99
|
+
before do
|
100
|
+
window.stub(:cury) { 20 }
|
101
|
+
window.stub(:maxy) { 21 }
|
102
|
+
end
|
103
|
+
|
104
|
+
it do
|
105
|
+
window.should receive(:scrl).with 1
|
106
|
+
window.should receive(:setpos).with 23, 2
|
107
|
+
|
108
|
+
evaluate [[:cursor_address, 23, 2]], window
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
4
112
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: landescape
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hibariya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -61,6 +61,7 @@ extra_rdoc_files: []
|
|
61
61
|
files:
|
62
62
|
- .gitignore
|
63
63
|
- .rspec
|
64
|
+
- .travis.yml
|
64
65
|
- Gemfile
|
65
66
|
- LICENSE.txt
|
66
67
|
- README.md
|
@@ -99,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
100
|
version: '0'
|
100
101
|
requirements: []
|
101
102
|
rubyforge_project:
|
102
|
-
rubygems_version: 2.
|
103
|
+
rubygems_version: 2.0.3
|
103
104
|
signing_key:
|
104
105
|
specification_version: 4
|
105
106
|
summary: Handle escape sequence
|