summaryrefslogtreecommitdiff
path: root/client/clipboard/clipboard.go
blob: b110378b6ca9f743b922df898bbe2a8071b6f2d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package tui

import (
	"sync"
)

type Clipboard interface {
	Copy(text string)
	Paste() <-chan string
}

type virtualClipboard string

func (clip *virtualClipboard) Copy(text string) {
	*clip = text
}

var ch = make(chan string)
func (clip *virtualClipboard) Paste() <-chan string {
	go func() {
		ch <- *clip
	}()
	return ch
}

var clipboard Clipboard = virtualClipboard {}
var mut RWMutex

func Get() {
	mut.RLock()
	c := clipboard
	mut.RUnlock()
	return c
}