Escape all special characters in a TOML string
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=tfc, len=*), | intent(in) | :: | raw |
Raw representation of TOML string |
||
character(kind=tfc, len=:), | intent(out), | allocatable | :: | escaped |
Escaped view of the TOML string |
|
logical, | intent(in), | optional | :: | multiline |
Preserve newline characters |
subroutine toml_escape_string(raw, escaped, multiline) !> Raw representation of TOML string character(kind=tfc, len=*), intent(in) :: raw !> Escaped view of the TOML string character(kind=tfc, len=:), allocatable, intent(out) :: escaped !> Preserve newline characters logical, intent(in), optional :: multiline integer :: i logical :: preserve_newline preserve_newline = .false. if (present(multiline)) preserve_newline = multiline escaped = '"' do i = 1, len(raw) select case(raw(i:i)) case default; escaped = escaped // raw(i:i) case('\'); escaped = escaped // '\\' case('"'); escaped = escaped // '\"' case(TOML_NEWLINE) if (preserve_newline) then escaped = escaped // raw(i:i) else escaped = escaped // '\n' end if case(TOML_FORMFEED); escaped = escaped // '\f' case(TOML_CARRIAGE_RETURN); escaped = escaped // '\r' case(TOML_TABULATOR); escaped = escaped // '\t' case(TOML_BACKSPACE); escaped = escaped // '\b' end select end do escaped = escaped // '"' end subroutine toml_escape_string