Skip to content

Instantly share code, notes, and snippets.

@rrooij
Last active June 2, 2021 13:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rrooij/7814b4e88e20aad02b08672d79dac062 to your computer and use it in GitHub Desktop.
Save rrooij/7814b4e88e20aad02b08672d79dac062 to your computer and use it in GitHub Desktop.
SWI Prolog wrap string in newlines
% wrap_string(+String, +PadLength, -Output) is det.
wrap_string(String, PadLength, Output) :-
string_length(String, StringLength),
wrap_string_(String, 0, PadLength, StringLength, "", Output).
wrap_string_(String, PadStart, PadWidth, StrLength, Acc, Output) :-
NewPadStart is PadStart + PadWidth,
( NewPadStart < StrLength
-> sub_string(String, PadStart, PadWidth, _, SubString),
format(string(NewAcc), "~s~s~n", [Acc, SubString]),
wrap_string_(String, NewPadStart, PadWidth, StrLength, NewAcc, Output)
; sub_string(String, PadStart, _, 0, SubString),
string_concat(Acc, SubString, Output)
).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment