vedeu 0.6.46 → 0.6.47
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 +1 -1
- data/examples/dsl_editor.rb +4 -3
- data/lib/vedeu/editor/all.rb +1 -0
- data/lib/vedeu/editor/delete.rb +65 -0
- data/lib/vedeu/editor/document.rb +4 -0
- data/lib/vedeu/editor/line.rb +2 -9
- data/lib/vedeu/editor/lines.rb +2 -9
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/editor/delete_test.rb +88 -0
- data/test/lib/vedeu/editor/document_test.rb +2 -2
- data/vedeu.gemspec +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9cde5fb2877e792b48f59abe6f024102949acc50
|
|
4
|
+
data.tar.gz: eb2865895d814e117ddcba9b4f1c33126e6e337f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5d248827101d024fed9e434ea22bcf19ebbf7e810a6d7b122b7f94c9379e6b97ca98866dcbc60af52ff4e511bbc100f438e3f6caf031a440466e2ac3fd67758b
|
|
7
|
+
data.tar.gz: b87c4f2e854d3b7ecf0a2faca524fd9fef494b79502fe358a270ef264ee223f4f58523d39f930138c92207553068009286bca535a71e7f837efa2be6445a058c
|
data/.travis.yml
CHANGED
data/examples/dsl_editor.rb
CHANGED
|
@@ -33,7 +33,7 @@ class EditorApp
|
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
# When pressing
|
|
36
|
+
# When pressing Escape in the editor view, the :_command_
|
|
37
37
|
# event will be triggered with any typed content you have provided.
|
|
38
38
|
#
|
|
39
39
|
# The :_command_ event in turn triggers the :command event. Bind to
|
|
@@ -45,7 +45,8 @@ class EditorApp
|
|
|
45
45
|
# end
|
|
46
46
|
#
|
|
47
47
|
Vedeu.keymap :editor_view do
|
|
48
|
-
key(:
|
|
48
|
+
key(:escape) { Vedeu.trigger(:_editor_execute_, :editor_view) }
|
|
49
|
+
key(:enter) { Vedeu.trigger(:_editor_insert_line_, :editor_view) }
|
|
49
50
|
key(:insert) do
|
|
50
51
|
Vedeu.log(type: :debug,
|
|
51
52
|
message: "Commands: #{Vedeu.all_commands.inspect}")
|
|
@@ -67,7 +68,7 @@ class EditorApp
|
|
|
67
68
|
view(:help_view) do
|
|
68
69
|
lines do
|
|
69
70
|
line 'Type into the editor dialog above,'
|
|
70
|
-
line 'and press
|
|
71
|
+
line 'and press Escape. This will trigger the'
|
|
71
72
|
line ':command event with the contents of '
|
|
72
73
|
line 'the view.'
|
|
73
74
|
|
data/lib/vedeu/editor/all.rb
CHANGED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module Vedeu
|
|
2
|
+
|
|
3
|
+
module Editor
|
|
4
|
+
|
|
5
|
+
# Manipulate the lines of an Vedeu::Editor::Document.
|
|
6
|
+
#
|
|
7
|
+
class Delete
|
|
8
|
+
|
|
9
|
+
# @param (see #initialize)
|
|
10
|
+
# @return [Vedeu::Editor::Line|Vedeu::Editor::Lines]
|
|
11
|
+
def self.from(collection, index = nil, size = 0)
|
|
12
|
+
new(collection, index, size).delete
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Returns a new instance of Vedeu::Editor::Delete.
|
|
16
|
+
#
|
|
17
|
+
# @param collection [Vedeu::Editor::Line|Vedeu::Editor::Lines]
|
|
18
|
+
# @param index [Fixnum]
|
|
19
|
+
# @param size [Fixnum]
|
|
20
|
+
# @return [Vedeu::Editor::Delete]
|
|
21
|
+
def initialize(collection, index = nil, size = 0)
|
|
22
|
+
@collection = collection
|
|
23
|
+
@index = index
|
|
24
|
+
@size = size
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @return [Vedeu::Editor::Line|Vedeu::Editor::Lines]
|
|
28
|
+
def delete
|
|
29
|
+
return collection.dup.tap { |c| c.slice!(index) } if index
|
|
30
|
+
|
|
31
|
+
if collection.is_a?(Array)
|
|
32
|
+
collection.dup.tap(&:pop)
|
|
33
|
+
|
|
34
|
+
elsif collection.is_a?(String)
|
|
35
|
+
collection.chop
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
protected
|
|
41
|
+
|
|
42
|
+
# @!attribute [r] collection
|
|
43
|
+
# @return [Vedeu::Editor::Line|Vedeu::Editor::Lines]
|
|
44
|
+
attr_reader :collection
|
|
45
|
+
|
|
46
|
+
# @!attribute [r] size
|
|
47
|
+
# @return [Fixnum]
|
|
48
|
+
attr_reader :size
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
# @return [Fixnum]
|
|
53
|
+
def index
|
|
54
|
+
return nil unless @index
|
|
55
|
+
|
|
56
|
+
@index = 0 if @index < 0
|
|
57
|
+
@index = size - 1 if @index > size
|
|
58
|
+
@index
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end # Delete
|
|
62
|
+
|
|
63
|
+
end # Editor
|
|
64
|
+
|
|
65
|
+
end # Vedeu
|
data/lib/vedeu/editor/line.rb
CHANGED
|
@@ -68,15 +68,8 @@ module Vedeu
|
|
|
68
68
|
def delete_character(index = nil)
|
|
69
69
|
return self if line.empty? || (index && index < 0)
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
else
|
|
75
|
-
line.chop
|
|
76
|
-
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
Vedeu::Editor::Line.coerce(new_line)
|
|
71
|
+
Vedeu::Editor::Line.coerce(Vedeu::Editor::Delete
|
|
72
|
+
.from(line, index, size))
|
|
80
73
|
end
|
|
81
74
|
|
|
82
75
|
# Returns a boolean indicating whether there are characters on
|
data/lib/vedeu/editor/lines.rb
CHANGED
|
@@ -73,15 +73,8 @@ module Vedeu
|
|
|
73
73
|
def delete_line(index = nil)
|
|
74
74
|
return self if lines.empty? || (index && index < 0)
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
else
|
|
80
|
-
lines.dup.tap(&:pop)
|
|
81
|
-
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
Vedeu::Editor::Lines.coerce(new_lines)
|
|
76
|
+
Vedeu::Editor::Lines.coerce(Vedeu::Editor::Delete
|
|
77
|
+
.from(lines, index, size))
|
|
85
78
|
end
|
|
86
79
|
|
|
87
80
|
# Provides iteration over the collection.
|
data/lib/vedeu/version.rb
CHANGED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Vedeu
|
|
4
|
+
|
|
5
|
+
module Editor
|
|
6
|
+
|
|
7
|
+
describe Delete do
|
|
8
|
+
|
|
9
|
+
let(:described) { Vedeu::Editor::Delete }
|
|
10
|
+
let(:instance) { described.new(collection, index, size) }
|
|
11
|
+
let(:collection) {}
|
|
12
|
+
let(:index) {}
|
|
13
|
+
let(:size) {}
|
|
14
|
+
|
|
15
|
+
describe '#initialize' do
|
|
16
|
+
it { instance.must_be_instance_of(described) }
|
|
17
|
+
it { instance.instance_variable_get('@collection').must_equal(collection) }
|
|
18
|
+
it { instance.instance_variable_get('@index').must_equal(index) }
|
|
19
|
+
it { instance.instance_variable_get('@size').must_equal(size) }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe '.from' do
|
|
23
|
+
subject { described.from(collection, index, size) }
|
|
24
|
+
|
|
25
|
+
context 'when the collection is a String' do
|
|
26
|
+
let(:collection) { 'Some text' }
|
|
27
|
+
|
|
28
|
+
context 'when an index is given' do
|
|
29
|
+
let(:index) { 2 }
|
|
30
|
+
let(:size) { collection.size }
|
|
31
|
+
|
|
32
|
+
it { subject.must_equal('Soe text') }
|
|
33
|
+
|
|
34
|
+
context 'when the index > size' do
|
|
35
|
+
let(:index) { size + 3 }
|
|
36
|
+
|
|
37
|
+
it { subject.must_equal('Some tex') }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context 'when the index < 0' do
|
|
41
|
+
let(:index) { -3 }
|
|
42
|
+
|
|
43
|
+
it { subject.must_equal('ome text') }
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context 'when an index is not given' do
|
|
48
|
+
it { subject.must_equal('Some tex') }
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context 'when the collection is an Array' do
|
|
53
|
+
let(:collection) { [:hydrogen, :helium, :lithium, :beryllium] }
|
|
54
|
+
|
|
55
|
+
context 'when an index is given' do
|
|
56
|
+
let(:index) { 2 }
|
|
57
|
+
let(:size) { collection.size }
|
|
58
|
+
|
|
59
|
+
it { subject.must_equal([:hydrogen, :helium, :beryllium]) }
|
|
60
|
+
|
|
61
|
+
context 'when the index > size' do
|
|
62
|
+
let(:index) { size + 3 }
|
|
63
|
+
|
|
64
|
+
it { subject.must_equal([:hydrogen, :helium, :lithium]) }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context 'when the index < 0' do
|
|
68
|
+
let(:index) { -3 }
|
|
69
|
+
|
|
70
|
+
it { subject.must_equal([:helium, :lithium, :beryllium]) }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context 'when an index is not given' do
|
|
75
|
+
it { subject.must_equal([:hydrogen, :helium, :lithium]) }
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe '#delete' do
|
|
81
|
+
it { instance.must_respond_to(:delete) }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end # Delete
|
|
85
|
+
|
|
86
|
+
end # Editor
|
|
87
|
+
|
|
88
|
+
end # Vedeu
|
|
@@ -78,10 +78,10 @@ module Vedeu
|
|
|
78
78
|
describe '#delete_character' do
|
|
79
79
|
subject { instance.delete_character }
|
|
80
80
|
|
|
81
|
-
it { subject.must_be_instance_of(Vedeu::Editor::
|
|
81
|
+
it { subject.must_be_instance_of(Vedeu::Editor::Document) }
|
|
82
82
|
|
|
83
83
|
context 'when on the first column of the first row' do
|
|
84
|
-
it { subject.must_be_instance_of(Vedeu::Editor::
|
|
84
|
+
it { subject.must_be_instance_of(Vedeu::Editor::Document) }
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
context 'when on the first column of not the first row' do
|
data/vedeu.gemspec
CHANGED
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
spec.add_development_dependency 'guard-minitest', '2.4.4'
|
|
25
25
|
spec.add_development_dependency 'guard-rubocop', '1.2.0'
|
|
26
26
|
spec.add_development_dependency 'minitest', '5.8.2'
|
|
27
|
-
spec.add_development_dependency 'minitest-reporters', '1.1.
|
|
27
|
+
spec.add_development_dependency 'minitest-reporters', '1.1.5'
|
|
28
28
|
spec.add_development_dependency 'mocha', '1.1.0'
|
|
29
29
|
spec.add_development_dependency 'pry', '0.10.3'
|
|
30
30
|
spec.add_development_dependency 'rubocop', '0.34.2'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vedeu
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.47
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gavin Laking
|
|
@@ -72,14 +72,14 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - '='
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 1.1.
|
|
75
|
+
version: 1.1.5
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - '='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 1.1.
|
|
82
|
+
version: 1.1.5
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: mocha
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -383,6 +383,7 @@ files:
|
|
|
383
383
|
- lib/vedeu/editor/capture.rb
|
|
384
384
|
- lib/vedeu/editor/cropper.rb
|
|
385
385
|
- lib/vedeu/editor/cursor.rb
|
|
386
|
+
- lib/vedeu/editor/delete.rb
|
|
386
387
|
- lib/vedeu/editor/document.rb
|
|
387
388
|
- lib/vedeu/editor/editor.rb
|
|
388
389
|
- lib/vedeu/editor/insert.rb
|
|
@@ -560,6 +561,7 @@ files:
|
|
|
560
561
|
- test/lib/vedeu/editor/capture_test.rb
|
|
561
562
|
- test/lib/vedeu/editor/cropper_test.rb
|
|
562
563
|
- test/lib/vedeu/editor/cursor_test.rb
|
|
564
|
+
- test/lib/vedeu/editor/delete_test.rb
|
|
563
565
|
- test/lib/vedeu/editor/document_test.rb
|
|
564
566
|
- test/lib/vedeu/editor/editor_test.rb
|
|
565
567
|
- test/lib/vedeu/editor/insert_test.rb
|
|
@@ -762,6 +764,7 @@ test_files:
|
|
|
762
764
|
- test/lib/vedeu/editor/capture_test.rb
|
|
763
765
|
- test/lib/vedeu/editor/cropper_test.rb
|
|
764
766
|
- test/lib/vedeu/editor/cursor_test.rb
|
|
767
|
+
- test/lib/vedeu/editor/delete_test.rb
|
|
765
768
|
- test/lib/vedeu/editor/document_test.rb
|
|
766
769
|
- test/lib/vedeu/editor/editor_test.rb
|
|
767
770
|
- test/lib/vedeu/editor/insert_test.rb
|