github.com/ipld/go-ipld-prime@v0.21.0/adl/rot13adl/rot13logic.go (about) 1 package rot13adl 2 3 import ( 4 "strings" 5 ) 6 7 var replaceTable = []string{ 8 "A", "N", 9 "B", "O", 10 "C", "P", 11 "D", "Q", 12 "E", "R", 13 "F", "S", 14 "G", "T", 15 "H", "U", 16 "I", "V", 17 "J", "W", 18 "K", "X", 19 "L", "Y", 20 "M", "Z", 21 "N", "A", 22 "O", "B", 23 "P", "C", 24 "Q", "D", 25 "R", "E", 26 "S", "F", 27 "T", "G", 28 "U", "H", 29 "V", "I", 30 "W", "J", 31 "X", "K", 32 "Y", "L", 33 "Z", "M", 34 "a", "n", 35 "b", "o", 36 "c", "p", 37 "d", "q", 38 "e", "r", 39 "f", "s", 40 "g", "t", 41 "h", "u", 42 "i", "v", 43 "j", "w", 44 "k", "x", 45 "l", "y", 46 "m", "z", 47 "n", "a", 48 "o", "b", 49 "p", "c", 50 "q", "d", 51 "r", "e", 52 "s", "f", 53 "t", "g", 54 "u", "h", 55 "v", "i", 56 "w", "j", 57 "x", "k", 58 "y", "l", 59 "z", "m", 60 } 61 var unreplaceTable = func() []string { 62 v := make([]string, len(replaceTable)) 63 for i := 0; i < len(replaceTable); i += 2 { 64 v[i] = replaceTable[i+1] 65 v[i+1] = replaceTable[i] 66 } 67 return v 68 }() 69 70 // rotate transforms from the logical content to the raw content. 71 func rotate(s string) string { 72 return strings.NewReplacer(replaceTable...).Replace(s) 73 } 74 75 // unrotate transforms from the raw content to the logical content. 76 func unrotate(s string) string { 77 return strings.NewReplacer(unreplaceTable...).Replace(s) 78 }