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  }