Class: Reline::KillRing
- Inherits:
-
Object
show all
- Defined in:
- lib/reline/kill_ring.rb
Defined Under Namespace
Modules: State
Classes: RingBuffer, RingPoint
Instance Method Summary
collapse
Constructor Details
#initialize(max = 1024) ⇒ KillRing
Returns a new instance of KillRing.
59
60
61
62
63
64
|
# File 'lib/reline/kill_ring.rb', line 59
def initialize(max = 1024)
@ring = RingBuffer.new(max)
@ring_pointer = nil
@buffer = nil
@state = State::FRESH
end
|
Instance Method Details
#append(string, before_p = false) ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/reline/kill_ring.rb', line 66
def append(string, before_p = false)
case @state
when State::FRESH, State::YANK
@ring << RingPoint.new(string)
@state = State::CONTINUED
when State::CONTINUED, State::PROCESSED
if before_p
@ring.head.str.prepend(string)
else
@ring.head.str.concat(string)
end
@state = State::CONTINUED
end
end
|
#process ⇒ Object
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/reline/kill_ring.rb', line 81
def process
case @state
when State::FRESH
when State::CONTINUED
@state = State::PROCESSED
when State::PROCESSED
@state = State::FRESH
when State::YANK
end
end
|
#yank ⇒ Object
94
95
96
97
98
99
100
101
102
|
# File 'lib/reline/kill_ring.rb', line 94
def yank
unless @ring.empty?
@state = State::YANK
@ring_pointer = @ring.head
@ring_pointer.str
else
nil
end
end
|
#yank_pop ⇒ Object
104
105
106
107
108
109
110
111
112
|
# File 'lib/reline/kill_ring.rb', line 104
def yank_pop
if @state == State::YANK
prev_yank = @ring_pointer.str
@ring_pointer = @ring_pointer.backward
[@ring_pointer.str, prev_yank]
else
nil
end
end
|