fix sequence state
This commit is contained in:
parent
33e2961b64
commit
c75c396578
4
lib.go
4
lib.go
@ -145,6 +145,10 @@ func (w *Writer) flush() error {
|
|||||||
|
|
||||||
r := w.editor.ReleaseState(w.state)
|
r := w.editor.ReleaseState(w.state)
|
||||||
w.state = nil
|
w.state = nil
|
||||||
|
if initializer, ok := w.editor.(interface{initialize() any}); ok {
|
||||||
|
w.state = initializer.initialize()
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := w.out.Write([]byte(string(r))); err != nil {
|
if _, err := w.out.Write([]byte(string(r))); err != nil {
|
||||||
w.err = err
|
w.err = err
|
||||||
return w.err
|
return w.err
|
||||||
|
|||||||
27
sequence.go
27
sequence.go
@ -5,11 +5,7 @@ func sequenceEdit(e []Editor) func(rune, []any) ([]rune, []any) {
|
|||||||
var sr []any
|
var sr []any
|
||||||
rr := []rune{r}
|
rr := []rune{r}
|
||||||
for i, ei := range e {
|
for i, ei := range e {
|
||||||
var si any
|
si := s[i]
|
||||||
if len(s) > i {
|
|
||||||
si = s[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
rin := rr
|
rin := rr
|
||||||
rr = nil
|
rr = nil
|
||||||
for _, ri := range rin {
|
for _, ri := range rin {
|
||||||
@ -29,26 +25,11 @@ func sequenceRelease(e []Editor) func([]any) []rune {
|
|||||||
return func(s []any) []rune {
|
return func(s []any) []rune {
|
||||||
var rr []rune
|
var rr []rune
|
||||||
for i, ei := range e {
|
for i, ei := range e {
|
||||||
var r []rune
|
r := ei.ReleaseState(s[i])
|
||||||
if i < len(s) {
|
|
||||||
r = ei.ReleaseState(s[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, ri := range r {
|
for _, ri := range r {
|
||||||
var (
|
rri, ssi := sequenceEdit(e[i+1:])(ri, s[i + 1:])
|
||||||
rri []rune
|
|
||||||
ssi []any
|
|
||||||
)
|
|
||||||
|
|
||||||
if i < len(s) {
|
|
||||||
ssi = s[i:]
|
|
||||||
}
|
|
||||||
|
|
||||||
rri, ssi = sequenceEdit(e[i+1:])(ri, ssi)
|
|
||||||
rr = append(rr, rri...)
|
rr = append(rr, rri...)
|
||||||
if i < len(s) {
|
s = append(s[:i + 1], ssi...)
|
||||||
s = append(s[:i], ssi...)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user