editor_core 0.3.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8bbf8d36bb4ce04088ab0a8343dffd83be278692e585c0d4e31999a3480d2e3a
4
- data.tar.gz: 280aa2304b7495ff16202d2c49de3c72d6b9d509f93fa8d2f1a2ffca2402eecd
3
+ metadata.gz: 29e9723ed92a39ab0c10d9b0e6c849fdf05c041886ad185e7c66c642fdec7e2f
4
+ data.tar.gz: 62c86e0365372fbda74a9d7b303cdb0d41ba0993890fcc213a569ae84692231c
5
5
  SHA512:
6
- metadata.gz: 796e196320ad8607cce128794403a764d277085461b40c24b4c61177e376816e886d52f8b66ec5b7cf2163ae9eeede6057ef3f36ad14b34af72bb262caebe6e2
7
- data.tar.gz: c905cc8eb1acb375947adc5b9d36187c8c6522d489ae97b71ae8a989fd3dfcd7093a0ed1e0759a3c351e6374404d9c0f2bc592ae7774677c3896e27ccc9da1d7
6
+ metadata.gz: 97bf696d944a8c50fc5c961e925e6604ffafb806b3e430a4d6755921d3090ef4fa2b6fdf73b520a8896fe8faddb3f2d07f1e625df6aeabe68e48fa27221e306b
7
+ data.tar.gz: 14c4caf205a01dcb4328840df72d1037db7ec780d2cb2dace5d23bfa9831310b7cdb981cf6dd223e6d47f2951d5e171f0be6f5acd97ce3f02fcfe9ce3a11f8e6
@@ -10,9 +10,11 @@ module EditorCore
10
10
 
11
11
  attr_reader :name, :created_at, :history
12
12
  attr_accessor :buffer_id
13
- attr_writer :created_at
14
13
 
15
- def initialize(id,name, lines, created_at = 0)
14
+ def created_at= t
15
+ @created_at = t
16
+ end
17
+ def initialize(id,name, lines, created_at = Time.at(0))
16
18
  @buffer_id = id # An id for this buffer unique for this session
17
19
  @name = name
18
20
  @history = History.new
@@ -20,12 +22,12 @@ module EditorCore
20
22
  @created_at = case created_at
21
23
  when Numeric
22
24
  Time.at(created_at)
23
- when Time
25
+ when Time, DateTime
24
26
  created_at
25
27
  when String
26
28
  DateTime.parse(created_at)
27
29
  else
28
- raise "Unknown time format: #{created_at}"
30
+ raise "Unknown time format: #{created_at.inspect} / #{created_at.class}"
29
31
  end
30
32
  end
31
33
 
@@ -79,7 +81,7 @@ module EditorCore
79
81
 
80
82
  def join_lines(cursor,offset=0)
81
83
  row=cursor.row+offset
82
- modify(cursor, row..row+1) {|l| l.join }
84
+ modify(cursor, row..row+1, row..row) {|l| l.join }
83
85
  end
84
86
 
85
87
  def indent(cursor, row, pos)
@@ -101,31 +103,31 @@ module EditorCore
101
103
  end
102
104
 
103
105
  def undo(old_cursor)
104
- cursor, rowrange, rows = @history.undo_snapshot
105
- store_snapshot(old_cursor,rowrange, false)
106
- cursor, rowrange, rows = @history.undo
107
- @lines[rowrange] = rows
106
+ cursor, oldrowrange, newrowrange, rows = @history.undo_snapshot
107
+ store_snapshot(old_cursor,oldrowrange, newrowrange, false)
108
+ cursor, oldrowrange, newrowrange, rows = @history.undo
109
+ @lines[newrowrange] = rows
108
110
  cursor
109
111
  end
110
112
 
111
113
  def redo
112
- cursor, rowrange, rows = @history.redo
113
- @lines[rowrange] = rows
114
+ cursor, oldrowrange, newrowrange, rows = @history.redo
115
+ @lines[oldrowrange] = rows
114
116
  cursor
115
117
  end
116
118
 
117
119
  private
118
120
 
119
- def store_snapshot(cursor, rowrange, advance = true)
120
- @history.save([cursor, rowrange, @lines[rowrange]], advance)
121
+ def store_snapshot(cursor, oldrowrange, newrowrange, advance = true)
122
+ @history.save([cursor, oldrowrange, newrowrange, @lines[oldrowrange]], advance)
121
123
  end
122
124
 
123
- def modify(cursor, rowrange)
124
- lines = @lines[rowrange].dup
125
+ def modify(cursor, oldrowrange, newrowrange = oldrowrange)
126
+ lines = @lines[oldrowrange].dup
125
127
  lines ||= ""
126
128
  new_lines = yield(lines)
127
- store_snapshot(cursor, rowrange, true)
128
- @lines[rowrange] = new_lines
129
+ store_snapshot(cursor, oldrowrange, newrowrange, true)
130
+ @lines[oldrowrange] = new_lines
129
131
  changed
130
132
  notify_observers(self)
131
133
  end
@@ -118,6 +118,20 @@ module EditorCore
118
118
  off
119
119
  end
120
120
 
121
+ def delete_next_word
122
+ start = cursor
123
+ next_word
124
+ finish = cursor
125
+ startcol = start.col
126
+ finishcol = finish.row > start.row ? -1 : finish.col-1
127
+ @cursor = start
128
+ buffer.delete(cursor, startcol, finishcol)
129
+ end
130
+
131
+ def delete_prev_word
132
+ prev_word
133
+ delete_next_word
134
+ end
121
135
 
122
136
  def beginning_of_file?
123
137
  cursor&.beginning_of_file?
@@ -1,3 +1,3 @@
1
1
  module EditorCore
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: editor_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vidar Hokstad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-28 00:00:00.000000000 Z
11
+ date: 2025-06-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  requirements: []
56
- rubygems_version: 3.1.4
56
+ rubygems_version: 3.4.10
57
57
  signing_key:
58
58
  specification_version: 4
59
59
  summary: Core model functionality for a simple editor