Did you know ... Search Documentation:
Pack prolog_library_collection -- prolog/atom_ext.pl
PublicShow source

This module extends the support for handling atoms in the SWI-Prolog standard library.

 atom_capitalize(+Original:atom, +Capitalized:atom) is semidet
atom_capitalize(+Original:atom, -Capitalized:atom) is det
Succeeds if Capitalized is a copy of Original where the first character is in upper case (if applicable).

If the first character of Atom is already in upper case then Capitalized is a plain copy of Atom.

 atom_ellipsis(+Original:atom, +MaxLength:between(2,inf), +Ellipsed:atom) is semidet
atom_ellipsis(+Original:atom, +MaxLength:between(2,inf), -Ellipsed:atom) is semidet
atom_ellipsis(+Original:atom, -MaxLength:between(2,inf), -Ellipsed:atom) is nondet
Succeeds if Ellipsed is like Orginal, but has ellipsis applied in order to have MaxLength. If Original is not longer than MaxLength, Orignal and Ellipsed are the same.

For mode `(+,-,-)' the enumeration order prioritizes shorter atoms:

?- atom_ellipsis(monkey, Length, Ellipsed).
Length = 2,
Ellipsed = 'm…' ;
Length = 3,
Ellipsed = 'mo…' ;
Length = 4,
Ellipsed = 'mon…' ;
Length = 5,
Ellipsed = 'monk…' ;
Length = 6,
Ellipsed = monkey.

Can be used to display a shorter atom to human users. For example, an atom that is displayed inside a table cell.

See also
- string_ellipsis/3 provides the same functionality for strings.
 atom_postfix(+Original:atom, +Postfix:atom) is semidet
atom_postfix(+Original:atom, -Postfix:atom) is multi
 atom_postfix(+Original:atom, +Length:nonneg, +Postfix:atom) is semidet
atom_postfix(+Original:atom, +Length:nonneg, -Postfix:atom) is semidet
atom_postfix(+Original:atom, -Length:nonneg, +Postfix:atom) is semidet
atom_postfix(+Original:atom, -Length:nonneg, -Postfix:atom) is multi
Succeeds if Postfix is a postfix of Original with consisting of Length characters.

For mode `(+,-,-)' the enumeration order prioritizes longer atoms.

See also
- string_postfix/[2,3] provides the same functionality for strings.
 atom_prefix(+Original:atom, +Length:nonneg, +Prefix:atom) is semidet
atom_prefix(+Original:atom, +Length:nonneg, -Prefix:atom) is semidet
atom_prefix(+Original:atom, -Length:nonneg, +Prefix:atom) is semidet
atom_prefix(+Original:atom, -Length:nonneg, -Prefix:atom) is multi
Succeeds if Prefix is a prefix of Original consisting of Length characters.

Fails when Length is greater than the length of Original.

For mode `(+,-,-)' the enumeration order prioritizes shorter atoms.

See also
- string_prefix/[2,3] provides the same functionality for strings.
 atom_same_ci(+A:atom, +B:atom) is semidet
 atom_strip(+Original:atom, +Stripped:atom) is det
atom_strip(+Original:atom, -Stripped:atom) is det
 atom_strip(+Original:atom, +Strip:list(char), +Stripped:atom) is semidet
atom_strip(+Original:atom, +Strip:list(char), -Stripped:atom) is det
Succeeds if Stripped is a copy of Original where leading and trailing characters in Strip have been removed.

Notice that the order in which the characters in Strip are specified is significant.

The default Strip characters are space, newline and horizontal tab.

Arguments:
Strip- is a list of charaters that will be stripped from the Original atom. The default includes: horizontal tab, newline, space, NO-BREAK SPACE (0xa0).
See also
- string_strip/[2,3] provides the same functionality for strings.
 atom_terminator(+Original:atom, +Terminator:char, +Terminated:atom) is semidet
atom_terminator(+Original:atom, +Terminator:char, -Terminated:atom) is det
Succeeds if Terminated is a copy of Original which is ensured to end with the Terminator character.
 atom_truncate(+Original:atom, +MaxLength:nonneg, +Truncated:atom) is semidet
atom_truncate(+Original:atom, +MaxLength:nonneg, -Truncated:atom) is det
Hard-truncates the `Original' atom.

For example:

?- atom_truncate('This atom is too long.', 15, Truncated).
Trunaced = 'This atom is to'
See also
- Similar to atom_prefix/3, but the `Truncated' atom is the `Original' atom in case `MaxLength' exceeds the `Original' atom's length.
- Use atom_ellipse/3 in case the truncated atom will be displayed to human users.
- string_truncate/3 provides the same functionality for strings.
 sub_atom(+Atom:atom, +Subatom:atom) is semidet
sub_atom(+Atom:atom, -Subatom:atom) is nondet
Suceeds iff `Subatom' is a subatom of `Atom'.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

 atom_postfix(Arg1, Arg2, Arg3)
 atom_strip(Arg1, Arg2, Arg3)