vice-editor 0.0.3 → 0.0.5

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 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