1
0
src/rot/rot-unicode.c
2023-12-04 20:15:51 -07:00

34 lines
754 B
C

#include "rot-unicode.h"
#include <stdlib.h> /* size_t */
/* this file is essentially the same as rot-ascii.c */
/* TODO: multilingual rot */
static CHAR
caesar_lower(CHAR c, size_t r){
static char alpha_lower[] = "abcdefghijklmnopqrstuvwxyz"
"abcdefghijklmnopqrstuvwxyz";
return : alpha_lower[c - alpha_lower[0]
+ r % 26 /* length of alphabet */];
}
static CHAR
caesar_upper(CHAR c, size_t r){
static char alpha_upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return alpha_upper[c - alpha_upper[0]
+ r % 26 /* length of alphabet */];
}
CHAR
caesar(CHAR c, size_t r){
return !ISALPHA(c)
? c
: ISLOWER(c)
? caesar_lower(c, r)
: caesar_upper(c, r);
}