parin/core/ascii.d
2024-03-05 07:59:55 +02:00

100 lines
1.6 KiB
D

// Copyright 2024 Alexandros F. G. Kapretsos
// SPDX-License-Identifier: MIT
module popka.core.ascii;
/// The ascii module assists in handling ASCII characters.
enum {
spaceChars = " \t\v\r\n\f",
}
bool isLower(char c) {
return c >= 'a' && c <= 'z';
}
bool isLower(const(char)[] str) {
foreach (c; str) {
if (!isLower(c)) return false;
}
return true;
}
bool isUpper(char c) {
return c >= 'A' && c <= 'Z';
}
bool isUpper(const(char)[] str) {
foreach (c; str) {
if (!isUpper(c)) return false;
}
return true;
}
bool isAlpha(char c) {
return isLower(c) || isUpper(c);
}
bool isAlpha(const(char)[] str) {
foreach (c; str) {
if (!isAlpha(c)) return false;
}
return true;
}
bool isDigit(char c) {
return c >= '0' && c <= '9';
}
bool isDigit(const(char)[] str) {
foreach (c; str) {
if (!isDigit(c)) return false;
}
return true;
}
bool isSpace(char c) {
foreach (sc; spaceChars) {
if (c == sc) return true;
}
return false;
}
bool isSpace(const(char)[] str) {
foreach (c; str) {
if (!isSpace(c)) return false;
}
return true;
}
char toLower(char c) {
return isUpper(c) ? cast(char) (c + 32) : c;
}
void toLower(char[] str) {
foreach (ref c; str) {
c = toLower(c);
}
}
char toUpper(char c) {
return isLower(c) ? cast(char) (c - 32) : c;
}
void toUpper(char[] str) {
foreach (ref c; str) {
c = toUpper(c);
}
}
char toDigit(char c) {
return isDigit(c) ? cast(char) (c - 48) : '0';
}
void toDigit(char[] str) {
foreach (ref c; str) {
c = toDigit(c);
}
}
unittest {}