vice-editor 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a01cf6608709e265aeefad50270a35cc1f7e5f93f6209b3f399b038a5318cee
4
- data.tar.gz: '019a54fdd8e60fc7a98281a3e220f4bfae91c9d355f9374a6e58a654b3e541ad'
3
+ metadata.gz: 653e5d0a2a2e7aeb03bb3afe07a67c4396fa948975770a9656b8cd6bf65f0c4c
4
+ data.tar.gz: 48fa594f664bb81a51e131ac5e4683d5133c819605dabcf7cbbe1e9dc20cca65
5
5
  SHA512:
6
- metadata.gz: 875f6c935d98ac66be3716c388f39abf4bcd024ca4ee68e3757369b87eb71af93737fccad88da8088194a3992a09675d3d0830beede220b74d89ff71ad34331d
7
- data.tar.gz: 2407fbcaf06a7434e4556185aaeb58dddc0f7f740408296d8f33294435eb930d8d92355d0d550c06b25f6813957e386155f84a6ccb9ea5b3b25954cbf4a24ca2
6
+ metadata.gz: f27ffff49999814fb674ae93995ca40c3aad785f74aeaa51a0f8cd104e70933f4e5d174b3e0841c5e5318aff113a569bceaa3c97e59aa5d5b2db90b22fa78758
7
+ data.tar.gz: 317f800f89486660ed2c7267ddccaaeab4fd77586a991646a0f0534836043d03c58d67c78c3cdb8e78919f080d484c9c6a910313565180dbdc6defc8a6e30ac1
@@ -32,7 +32,7 @@ module Vice
32
32
  end
33
33
 
34
34
  def init_config
35
- defaults = { 'tab_width' => 4 } # defaults
35
+ defaults = DEFAULTS.clone
36
36
 
37
37
  configfile = "#{Dir.home}/.vicerc"
38
38
  user_defined = File.open(configfile) { |f| YAML.safe_load(f.read) } if File.file? configfile
@@ -79,13 +79,15 @@ module Vice
79
79
 
80
80
  def prev_buffer
81
81
  @current_buffer -= 1
82
- @current_buffer = @buffers.length - 1 if @current_buffer < 0
82
+ @current_buffer = @buffers.length - 1 if @current_buffer.negative?
83
83
  end
84
84
  end
85
85
  end
86
86
 
87
+ require_relative 'vice/constants.rb'
87
88
  require_relative 'vice/version'
88
89
  require_relative 'vice/buffer'
90
+ require_relative 'vice/keypress.rb'
89
91
  require_relative 'vice/cursor'
90
92
  require_relative 'vice/parser'
91
93
  require_relative 'vice/blitter'
@@ -72,7 +72,7 @@ class Vice::Blitter
72
72
 
73
73
  def pad(string)
74
74
  delta = Curses.cols - string.length
75
- delta.times { string += ' ' } if delta > 0
75
+ delta.times { string += ' ' } if delta.positive?
76
76
  string
77
77
  end
78
78
 
@@ -38,11 +38,11 @@ class Vice::Buffer
38
38
  def cursor_end_of_line
39
39
  # if we're out of bounds, move the cursor to the end of the line
40
40
  @cursor.col = @buffer[@cursor.line].length - 1 if @cursor.col >= @buffer[@cursor.line].length
41
- @cursor.col = 0 if @cursor.col < 0
41
+ @cursor.col = 0 if @cursor.col.negative?
42
42
  end
43
43
 
44
44
  def cursor_up
45
- @cursor.line -= 1 if @cursor.line > 0
45
+ @cursor.line -= 1 if @cursor.line.positive?
46
46
  cursor_end_of_line
47
47
  end
48
48
 
@@ -52,7 +52,7 @@ class Vice::Buffer
52
52
  end
53
53
 
54
54
  def cursor_left
55
- @cursor.col -= 1 if @cursor.col > 0
55
+ @cursor.col -= 1 if @cursor.col.positive?
56
56
  end
57
57
 
58
58
  def cursor_right
@@ -0,0 +1,45 @@
1
+ module Vice
2
+ DEFAULTS = {
3
+ tab_width: 4,
4
+ keys: {
5
+ 'j' => :down,
6
+ 'k' => :up,
7
+ 'l' => :right,
8
+ 'h' => :left,
9
+
10
+ 'w' => :word,
11
+ 'W' => :word_large,
12
+ 'b' => :backword,
13
+ 'B' => :backword_large,
14
+
15
+ '$' => :endline,
16
+ '0' => :beginline,
17
+
18
+ 'i' => :insert_before,
19
+ 'a' => :insert_after,
20
+ 'I' => :insert_begin,
21
+ 'A' => :insert_end,
22
+ 'O' => :insert_before_line,
23
+ 'o' => :insert_after_line,
24
+
25
+ 'X' => :remove_before,
26
+ 'x' => :remove_after,
27
+
28
+ 'cw' => :change_word,
29
+ 'cc' => :change_line,
30
+ 'dw' => :delete_word,
31
+ 'dd' => :delete_line,
32
+
33
+ 'g' => :jump_start,
34
+ 'G' => :jump_end,
35
+
36
+ 'm' => :mark_set,
37
+ "'" => :mark_jump,
38
+
39
+ 't' => :buffer_next,
40
+ 'T' => :buffer_prev,
41
+
42
+ ';' => :mode_prompt
43
+ }
44
+ }.freeze
45
+ end
@@ -0,0 +1,146 @@
1
+ class Vice::KeyPress
2
+ def self.down(_vice, buffer)
3
+ buffer.cursor_down
4
+ end
5
+
6
+ def self.up(_vice, buffer)
7
+ buffer.cursor_up
8
+ end
9
+
10
+ def self.right(_vice, buffer)
11
+ buffer.cursor_right
12
+ end
13
+
14
+ def self.left(_vice, buffer)
15
+ buffer.cursor_left
16
+ end
17
+
18
+ def self.word(_vice, buffer)
19
+ buffer.cursor.col = Vice::Movement.w(buffer.currentline, buffer.cursor.col)
20
+ end
21
+
22
+ def self.word_large(_vice, buffer)
23
+ buffer.cursor.col = Vice::Movement.w_large(buffer.currentline, buffer.cursor.col)
24
+ end
25
+
26
+ def self.backword(_vice, buffer)
27
+ buffer.cursor.col = Vice::Movement.b(buffer.currentline, buffer.cursor.col)
28
+ end
29
+
30
+ def self.backword_large(_vice, buffer)
31
+ buffer.cursor.col = Vice::Movement.b_large(buffer.currentline, buffer.cursor.col)
32
+ end
33
+
34
+ def self.endline(_vice, buffer)
35
+ buffer.cursor.col = Vice::Movement.dollar buffer.currentline
36
+ end
37
+
38
+ def self.beginline(_vice, buffer)
39
+ buffer.cursor.col = Vice::Movement.zero
40
+ end
41
+
42
+ def self.insert_before(vice, _buffer)
43
+ vice.mode = :insert
44
+ end
45
+
46
+ def self.insert_after(vice, buffer)
47
+ buffer.cursor.col += 1 if buffer.cursor.col < buffer.cols
48
+ vice.mode = :insert
49
+ end
50
+
51
+ def self.insert_begin(vice, buffer)
52
+ buffer.cursor.col = 0
53
+ vice.mode = :insert
54
+ end
55
+
56
+ def self.insert_end(vice, buffer)
57
+ buffer.cursor.col = buffer.cols
58
+ vice.mode = :insert
59
+ end
60
+
61
+ def self.insert_before_line(vice, buffer)
62
+ buffer.newline buffer.cursor.line
63
+ buffer.cursor.col = 0
64
+ vice.mode = :insert
65
+ end
66
+
67
+ def self.insert_after_line(vice, buffer)
68
+ buffer.newline buffer.cursor.line + 1
69
+ buffer.cursor_down
70
+ vice.mode = :insert
71
+ end
72
+
73
+ def self.remove_before(_vice, _buffer)
74
+ # TODO
75
+ end
76
+
77
+ def self.remove_after(_vice, buffer)
78
+ buffer.rmchar
79
+ buffer.cursor.col -= 1 if buffer.cursor.col.positive?
80
+ end
81
+
82
+ def self.change_word(vice, buffer)
83
+ delete_word(vice, buffer)
84
+ vice.mode = :insert
85
+ end
86
+
87
+ def self.change_line(vice, buffer)
88
+ buffer.setline buffer.cursor.line, ''
89
+ buffer.cursor.col = 0
90
+ vice.mode = :insert
91
+ end
92
+
93
+ def self.delete_word(_vice, buffer)
94
+ line_edited = buffer.currentline
95
+ slice_start = buffer.cursor.col
96
+ slice_end = Vice::Movement.w(buffer.currentline, buffer.cursor.col)
97
+ amount = slice_end - buffer.cursor.col
98
+ amount += 1 if slice_end == buffer.currentline.length - 1
99
+ line_edited.slice! slice_start, amount
100
+
101
+ buffer.setline buffer.cursor.line, line_edited
102
+ end
103
+
104
+ def self.delete_line(_vice, buffer)
105
+ if buffer.lines == 1
106
+ buffer.setline 0, ''
107
+ else
108
+ buffer.rmline
109
+ end
110
+ buffer.cursor.line -= 1 if buffer.lines <= buffer.cursor.line
111
+ buffer.cursor.col = 0
112
+ end
113
+
114
+ def self.jump_start(_vice, buffer)
115
+ buffer.cursor.line = 0
116
+ buffer.cursor.col = 0
117
+ end
118
+
119
+ def self.jump_end(_vice, buffer)
120
+ buffer.cursor.line = buffer.lines - 1
121
+ buffer.cursor.col = 0
122
+ end
123
+
124
+ def self.mark_set(vice, buffer, char)
125
+ buffer.addmark char
126
+ vice.alert "added mark '" + char + "'"
127
+ end
128
+
129
+ def self.mark_jump(vice, buffer, char)
130
+ vice.alert 'mark not set' unless buffer.gotomark char
131
+ end
132
+
133
+ def self.buffer_next(vice, _buffer)
134
+ vice.next_buffer
135
+ @trail = []
136
+ end
137
+
138
+ def self.buffer_prev(vice, _buffer)
139
+ vice.prev_buffer
140
+ @trail = []
141
+ end
142
+
143
+ def self.mode_prompt(vice, _buffer)
144
+ vice.mode = :prompt
145
+ end
146
+ end
@@ -31,7 +31,9 @@ class Vice::Movement
31
31
 
32
32
  def self.b_real(line, start, harsh)
33
33
  # if we're already on the beginning of a word, we jump to the previous one
34
- start -= 1 if start > 0 && !whitespace(line[start], harsh) && whitespace(line[start - 1], harsh)
34
+ if start.positive? && !whitespace(line[start], harsh) && whitespace(line[start - 1], harsh)
35
+ start -= 1
36
+ end
35
37
 
36
38
  b_internal(line, start, harsh)
37
39
  end
@@ -1,10 +1,6 @@
1
1
  class Vice::Parser
2
2
  def initialize
3
- resettrail
4
- end
5
-
6
- def resettrail
7
- @trail = []
3
+ @current_command = ''
8
4
  end
9
5
 
10
6
  def parsekeypress(vice, buffer, char)
@@ -20,14 +16,18 @@ class Vice::Parser
20
16
  end
21
17
 
22
18
  def parsechar_prompt(vice, current_buffer, char)
19
+ raise 'prompt parser called from wrong mode' unless vice.mode == :prompt
20
+
23
21
  case char
24
- when 10
22
+ when 10 # enter
25
23
  Vice::Prompt.parse vice, vice.prompt, vice.buffers[current_buffer]
26
24
  vice.prompt = ''
27
25
  vice.mode = :command
28
- when 27
26
+ when 27 # escape
29
27
  vice.prompt = ''
30
28
  vice.mode = :command
29
+ when 127 # backspace
30
+ vice.prompt = vice.prompt[0..-2]
31
31
  when Integer
32
32
  vice.prompt += char if char >= 0 && char <= 10
33
33
  else
@@ -37,132 +37,35 @@ class Vice::Parser
37
37
 
38
38
  def parsechar_command(vice, current_buffer, char)
39
39
  buffer = vice.buffers[current_buffer]
40
- raise 'parsechar called from command mode' unless vice.mode == :command
40
+ raise 'command parser called from wrong mode' unless vice.mode == :command
41
41
 
42
- if @trail == ['m']
43
- buffer.addmark char
44
- vice.alert "added mark '" + char + "'"
45
- @trail = []
46
- return
47
- elsif @trail == ["'"]
48
- vice.alert 'mark not set' unless buffer.gotomark char
49
- @trail = []
42
+ if %i[mark_set mark_jump].include? @current_command
43
+ Vice::KeyPress.public_send(@current_command, vice, buffer, char)
44
+ @current_command = ''
50
45
  return
51
46
  end
52
47
 
53
- case char
54
- # movement
55
- when 'j'
56
- buffer.cursor_down
57
- when 'k'
58
- buffer.cursor_up
59
- when 'l'
60
- buffer.cursor_right
61
- when 'h'
62
- buffer.cursor_left
63
- when 'w'
64
- if !@trail.empty?
65
- if (@trail[0] == 'd' || @trail[0] == 'c') && buffer.currentline != ''
66
- line_edited = buffer.currentline
67
- slice_start = buffer.cursor.col
68
- slice_end = Vice::Movement.w(buffer.currentline, buffer.cursor.col)
69
- amount = slice_end - buffer.cursor.col
70
- amount += 1 if slice_end == buffer.currentline.length - 1
71
- line_edited.slice! slice_start, amount
72
-
73
- buffer.setline buffer.cursor.line, line_edited
74
- end
75
- vice.mode = :insert if @trail[0] == 'c'
76
- @trail = []
48
+ @current_command += char
49
+ if !vice.config[:keys][@current_command].nil?
50
+ command = vice.config[:keys][@current_command]
51
+ if %i[mark_set mark_jump].include? command
52
+ @current_command = command
77
53
  else
78
- buffer.cursor.col = Vice::Movement.w(buffer.currentline, buffer.cursor.col)
54
+ Vice::KeyPress.public_send(command, vice, buffer)
55
+ @current_command = ''
79
56
  end
80
- when 'W'
81
- buffer.cursor.col = Vice::Movement.W(buffer.currentline, buffer.cursor.col)
82
- when 'b'
83
- buffer.cursor.col = Vice::Movement.b(buffer.currentline, buffer.cursor.col)
84
- when 'B'
85
- buffer.cursor.col = Vice::Movement.B(buffer.currentline, buffer.cursor.col)
86
- when '$'
87
- buffer.cursor.col = Vice::Movement.dollar buffer.currentline
88
- when '0'
89
- buffer.cursor.col = Vice::Movement.zero
90
-
91
- # entering insert mode
92
- when 'I'
93
- buffer.cursor.col = 0
94
- vice.mode = :insert
95
- when 'i'
96
- vice.mode = :insert
97
- when 'A'
98
- buffer.cursor.col = buffer.cols
99
- vice.mode = :insert
100
- when 'a'
101
- buffer.cursor.col += 1 if buffer.cursor.col < buffer.cols
102
- vice.mode = :insert
103
- when 'O'
104
- buffer.newline buffer.cursor.line
105
- buffer.cursor.col = 0
106
- vice.mode = :insert
107
- when 'o'
108
- buffer.newline buffer.cursor.line + 1
109
- buffer.cursor_down
110
- vice.mode = :insert
111
-
112
- # etc.
113
- when 'x'
114
- buffer.rmchar
115
- buffer.cursor.col -= 1 if buffer.cursor.col > 0
116
- when 'c'
117
- if !@trail.empty? && @trail[0] == 'c'
118
- buffer.setline buffer.cursor.line, ''
119
- buffer.cursor.col = 0
120
- vice.mode = :insert
121
- @trail = []
122
- else
123
- @trail.push 'c'
124
- end
125
- when 'd'
126
- if !@trail.empty? && @trail[0] == 'd'
127
- if buffer.lines == 1
128
- buffer.setline 0, ''
129
- else
130
- buffer.rmline
131
- end
132
- buffer.cursor.line -= 1 if buffer.lines <= buffer.cursor.line
133
- buffer.cursor.col = 0
134
- @trail = []
135
- else
136
- @trail.push 'd'
137
- end
138
- when 'g'
139
- if !@trail.empty? && @trail[0] == 'g'
140
- buffer.cursor.line = 0
141
- buffer.cursor.col = 0
142
- else
143
- @trail.push 'g'
57
+ else
58
+ keep_current = false
59
+ vice.config[:keys].each do |k|
60
+ keep_current = true if k[0].start_with? @current_command
144
61
  end
145
- when 'G'
146
- buffer.cursor.line = buffer.lines - 1
147
- buffer.cursor.col = 0
148
- when 'm'
149
- @trail.push 'm' if @trail.empty?
150
- when 't'
151
- vice.next_buffer if !@trail.empty? && @trail[0] == 'g'
152
- @trail = []
153
- when 'T'
154
- vice.prev_buffer if !@trail.empty? && @trail[0] == 'g'
155
- @trail = []
156
- when ';', ':'
157
- vice.mode = :prompt
158
- when "'"
159
- @trail.push "'" if @trail.empty?
62
+ @current_command = '' unless keep_current
160
63
  end
161
64
  end
162
65
 
163
66
  def parsechar_insert(vice, current_buffer, char)
164
67
  buffer = vice.buffers[current_buffer]
165
- raise 'insertchar called from insert mode' unless vice.mode == :insert
68
+ raise 'insert parser called from wrong mode' unless vice.mode == :insert
166
69
  case char
167
70
  when 9
168
71
  buffer.insert "\t"
@@ -174,7 +77,7 @@ class Vice::Parser
174
77
  vice.mode = :command
175
78
  buffer.cursor_end_of_line
176
79
  when 127 # backspace
177
- if buffer.cursor.col > 0
80
+ if buffer.cursor.col.positive?
178
81
  buffer.cursor.col -= 1
179
82
  buffer.rmchar
180
83
  end
@@ -1,3 +1,3 @@
1
1
  module Vice
2
- VERSION = '0.0.3'.freeze
2
+ VERSION = '0.0.5'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vice-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - knarka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-18 00:00:00.000000000 Z
11
+ date: 2018-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses
@@ -33,20 +33,17 @@ extra_rdoc_files: []
33
33
  files:
34
34
  - LICENSE
35
35
  - README.md
36
- - Rakefile
37
36
  - bin/vice
38
37
  - lib/vice.rb
39
38
  - lib/vice/blitter.rb
40
39
  - lib/vice/buffer.rb
40
+ - lib/vice/constants.rb
41
41
  - lib/vice/cursor.rb
42
+ - lib/vice/keypress.rb
42
43
  - lib/vice/movement.rb
43
44
  - lib/vice/parser.rb
44
45
  - lib/vice/prompt.rb
45
46
  - lib/vice/version.rb
46
- - test/vice.rb
47
- - test/vice/buffer.rb
48
- - test/vice/movement.rb
49
- - test/vice/parser.rb
50
47
  homepage: https://github.com/knarka/vice
51
48
  licenses:
52
49
  - GPL-3.0
data/Rakefile DELETED
@@ -1,18 +0,0 @@
1
- task default: %w[run]
2
-
3
- task :run do
4
- require_relative 'lib/vice'
5
- Vice::Vice.new(nil).start
6
- end
7
-
8
- task :test do
9
- Dir.foreach('test/vice') do |test|
10
- next if ['.', '..'].include? test
11
- ruby 'test/vice/' + test
12
- end
13
- ruby 'test/vice.rb'
14
- end
15
-
16
- task :style do
17
- sh 'rubocop -c .rubocop.yml lib/ test/ Gemfile Rakefile'
18
- end
@@ -1,37 +0,0 @@
1
- require 'minitest/autorun'
2
-
3
- require_relative '../lib/vice'
4
-
5
- class TestVice < MiniTest::Test
6
- def setup
7
- @vice = Vice::Vice.new nil
8
- @vice.buffers.push Vice::Buffer.new nil
9
- @vice.buffers.push Vice::Buffer.new nil
10
- end
11
-
12
- def test_switch_tab_forward
13
- assert_equal 0, @vice.current_buffer
14
-
15
- @vice.next_buffer
16
- assert_equal 1, @vice.current_buffer
17
-
18
- @vice.next_buffer
19
- assert_equal 2, @vice.current_buffer
20
-
21
- @vice.next_buffer
22
- assert_equal 0, @vice.current_buffer
23
- end
24
-
25
- def test_switch_tab_backward
26
- assert_equal 0, @vice.current_buffer
27
-
28
- @vice.prev_buffer
29
- assert_equal 2, @vice.current_buffer
30
-
31
- @vice.prev_buffer
32
- assert_equal 1, @vice.current_buffer
33
-
34
- @vice.prev_buffer
35
- assert_equal 0, @vice.current_buffer
36
- end
37
- end
@@ -1,82 +0,0 @@
1
- require 'minitest/autorun'
2
-
3
- require_relative '../../lib/vice'
4
-
5
- class TestBuffer < MiniTest::Test
6
- def setup
7
- @buffer = Vice::Buffer.new nil
8
- end
9
-
10
- def test_create_buffer
11
- assert_equal [''], @buffer.buffer
12
- end
13
-
14
- def test_newline_valid
15
- @buffer.newline 0
16
- assert_equal ['', ''], @buffer.buffer
17
- end
18
-
19
- def test_newline_negative_index
20
- assert_raises RuntimeError do
21
- @buffer.newline -1
22
- end
23
- end
24
-
25
- def test_insert_and_insertf_valid
26
- @buffer.insert 'chunky bacon'
27
- assert_equal 'chunky bacon', @buffer.buffer[0]
28
-
29
- @buffer.insertf 0, 6, ' crispy'
30
- assert_equal 'chunky crispy bacon', @buffer.buffer[0]
31
- end
32
-
33
- def test_insertf_out_of_bounds
34
- # negative line index
35
- assert_raises RuntimeError do
36
- @buffer.insertf -1, 0, ''
37
- end
38
-
39
- # out of bounds line index
40
- assert_raises RuntimeError do
41
- @buffer.insertf 2, 0, ''
42
- end
43
-
44
- @buffer.newline 0
45
-
46
- # negative column index
47
- assert_raises RuntimeError do
48
- @buffer.insertf 0, -1, ''
49
- end
50
-
51
- # out of bounds column index
52
- assert_raises RuntimeError do
53
- @buffer.insertf 0, 2, ''
54
- end
55
- end
56
-
57
- def test_setline_valid
58
- assert_equal [''], @buffer.buffer
59
-
60
- @buffer.setline 0, 'chunky bacon'
61
- assert_equal 'chunky bacon', @buffer.buffer[0]
62
- end
63
-
64
- def test_rmlinef_valid
65
- assert_equal [''], @buffer.buffer
66
-
67
- @buffer.rmlinef 0
68
- assert_equal [], @buffer.buffer
69
- end
70
-
71
- def test_getline_valid
72
- @buffer.setline 0, 'chunky bacon'
73
- assert_equal 'chunky bacon', @buffer.getline(0)
74
- end
75
-
76
- def test_modified
77
- assert_equal false, @buffer.modified
78
-
79
- @buffer.newline 0
80
- assert_equal true, @buffer.modified
81
- end
82
- end
@@ -1,41 +0,0 @@
1
- require 'minitest/autorun'
2
-
3
- require_relative '../../lib/vice'
4
-
5
- class TestMovement < MiniTest::Test
6
- def test_w_end_of_string
7
- assert_equal Vice::Movement.w('abc', 0), 2
8
- end
9
-
10
- def test_w_some_words
11
- assert_equal Vice::Movement.w('jantje zag eens', 2), 7
12
- end
13
-
14
- def test_w_with_other_whitespace_chars
15
- assert_equal Vice::Movement.w("jantje\t\nzag eens", 2), 8
16
- end
17
-
18
- def test_b_start_of_string
19
- assert_equal Vice::Movement.b('aaaaa', 5), 0
20
- end
21
-
22
- def test_b_some_words
23
- assert_equal Vice::Movement.b('ab cd', 4), 3
24
- end
25
-
26
- def test_b_from_start_of_word
27
- assert_equal Vice::Movement.b('jantje zag eens', 11), 7
28
- end
29
-
30
- def test_w_w_large_difference
31
- string = 'aaa-bbb ccc'
32
- assert_equal Vice::Movement.w(string, 1), 4
33
- assert_equal Vice::Movement.w_large(string, 1), 8
34
- end
35
-
36
- def test_b_b_large_difference
37
- string = 'bbb-ccc'
38
- assert_equal Vice::Movement.b(string, 5), 4
39
- assert_equal Vice::Movement.b_large(string, 5), 0
40
- end
41
- end
@@ -1,81 +0,0 @@
1
- require 'minitest/autorun'
2
-
3
- require_relative '../../lib/vice'
4
-
5
- class TestParser < MiniTest::Test
6
- def setup
7
- @vice = Vice::Vice.new nil
8
- @vice.buffers.push Vice::Buffer.new nil
9
- @parser = Vice::Parser.new
10
- @buffer = 0
11
- end
12
-
13
- def test_parsechar_command_movement_up_down
14
- @vice.buffers[@buffer].newline 0
15
- assert_equal @vice.buffers[@buffer].cursor.line, 0
16
-
17
- # go down one line
18
- @parser.parsechar_command @vice, @buffer, 'j'
19
- assert_equal @vice.buffers[@buffer].cursor.line, 1
20
-
21
- # don't go down another line if no more lines exist
22
- @parser.parsechar_command @vice, @buffer, 'j'
23
- assert_equal @vice.buffers[@buffer].cursor.line, 1
24
-
25
- # go up one line
26
- @parser.parsechar_command @vice, @buffer, 'k'
27
- assert_equal @vice.buffers[@buffer].cursor.line, 0
28
-
29
- # don't go up another line if no more lines exist
30
- @parser.parsechar_command @vice, @buffer, 'k'
31
- assert_equal @vice.buffers[@buffer].cursor.line, 0
32
- end
33
-
34
- # test that we enter insert mode after pressing i
35
- def test_parsechar_command_i
36
- assert_equal @vice.mode, :command
37
-
38
- @parser.parsechar_command @vice, @buffer, 'i'
39
- assert_equal @vice.mode, :insert
40
- end
41
-
42
- # test the I command
43
- def test_parsechar_command_i_large
44
- @vice.buffers[@buffer].setline 0, 'abcdefg'
45
- @vice.buffers[@buffer].cursor.col = 4
46
-
47
- @parser.parsechar_command @vice, @buffer, 'I'
48
- assert_equal @vice.mode, :insert
49
- assert_equal @vice.buffers[@buffer].cursor.col, 0
50
- end
51
-
52
- # test inserting characters
53
- def test_insert_some_text
54
- @vice.mode = :insert
55
- @parser.parsechar_insert @vice, @buffer, 'h'
56
- @parser.parsechar_insert @vice, @buffer, 'e'
57
- @parser.parsechar_insert @vice, @buffer, 'y'
58
- assert_equal @vice.buffers[@buffer].getline(0), 'hey'
59
- end
60
-
61
- # test inserting characters in a more random place
62
- def test_parsechar_insert_in_the_middle
63
- @vice.mode = :insert
64
- @vice.buffers[@buffer].newline 0
65
- @vice.buffers[@buffer].newline 0
66
- @vice.buffers[@buffer].setline 1, 'é melhorser alegre'
67
- assert_equal @vice.buffers[@buffer].buffer, ['', 'é melhorser alegre', '']
68
-
69
- @vice.buffers[@buffer].cursor.line = 1
70
- @vice.buffers[@buffer].cursor.col = 8
71
- @parser.parsechar_insert @vice, @buffer, ' '
72
- assert_equal @vice.buffers[@buffer].getline(1), 'é melhor ser alegre'
73
- end
74
-
75
- def test_parsechar_insert_escape
76
- @vice.mode = :insert
77
-
78
- @parser.parsechar_insert @vice, @buffer, 27
79
- assert_equal @vice.mode, :command
80
- end
81
- end