mirror of
https://github.com/Kapendev/parin.git
synced 2025-04-25 20:49:57 +03:00
100 lines
1.6 KiB
D
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 {}
|