Module 0x1::ascii
The ASCII module defines basic string and char newtypes in Move that verify
that characters are valid ASCII, and that strings consist of only valid ASCII characters.
- Struct
String - Struct
Char - Constants
- Function
char - Function
string - Function
try_string - Function
all_characters_printable - Function
push_char - Function
pop_char - Function
length - Function
append - Function
insert - Function
substring - Function
as_bytes - Function
into_bytes - Function
byte - Function
is_valid_char - Function
is_printable_char - Function
is_empty - Function
to_uppercase - Function
to_lowercase - Function
index_of - Function
char_to_uppercase - Function
char_to_lowercase
use 0x1::option;
use 0x1::vector;
Struct String
The String struct holds a vector of bytes that all represent
valid ASCII characters. Note that these ASCII characters may not all
be printable. To determine if a String contains only "printable"
characters you should use the all_characters_printable predicate
defined in this module.
struct String has copy, drop, store
Fields
bytes: vector<u8>
Struct Char
An ASCII character.
struct Char has copy, drop, store
Fields
byte: u8
Constants
An invalid ASCII character was encountered when creating an ASCII string.
const EInvalidASCIICharacter: u64 = 65536;
An invalid index was encountered when creating a substring.
const EInvalidIndex: u64 = 65537;
Function char
Convert a byte into a Char that is checked to make sure it is valid ASCII.
public fun char(byte: u8): ascii::Char
Implementation
public fun char(byte: u8): Char {
assert!(is_valid_char(byte), EInvalidASCIICharacter);
Char { byte }
}
Function string
Convert a vector of bytes bytes into an String. Aborts if
bytes contains non-ASCII characters.
public fun string(bytes: vector<u8>): ascii::String
Implementation
public fun string(bytes: vector<u8>): String {
let x = try_string(bytes);
assert!(x.is_some(), EInvalidASCIICharacter);
x.destroy_some()
}
Function try_string
Convert a vector of bytes bytes into an String. Returns
Some(<ascii_string>) if the bytes contains all valid ASCII
characters. Otherwise returns None.
public fun try_string(bytes: vector<u8>): option::Option<ascii::String>
Implementation
public fun try_string(bytes: vector<u8>): Option<String> {
let is_valid = bytes.all!(|byte| is_valid_char(*byte));
if (is_valid) option::some(String { bytes })
else option::none()
}
Function all_characters_printable
Returns true if all characters in string are printable characters
Returns false otherwise. Not all Strings are printable strings.
public fun all_characters_printable(string: &ascii::String): bool
Implementation
public fun all_characters_printable(string: &String): bool {
string.bytes.all!(|byte| is_printable_char(*byte))
}