Mercurial > hg > octave-lyh
diff src/utils.cc @ 3103:98d862e12945
[project @ 1997-11-18 10:46:30 by jwe]
author | jwe |
---|---|
date | Tue, 18 Nov 1997 10:46:57 +0000 |
parents | ca9677cdb62e |
children | f936c7f5074f |
line wrap: on
line diff
--- a/src/utils.cc +++ b/src/utils.cc @@ -321,6 +321,106 @@ return retval; } +// Replace backslash escapes in a string with the real values. + +string +do_string_escapes (const string& s) +{ + string retval; + + size_t i = 0; + size_t j = 0; + size_t len = s.length (); + + retval.resize (len); + + while (j < len) + { + if (s[j] == '\\' && j+1 < len) + { + switch (s[++j]) + { + case 'a': + retval[i] = '\a'; + break; + + case 'b': // backspace + retval[i] = '\b'; + break; + + case 'f': // formfeed + retval[i] = '\f'; + break; + + case 'n': // newline + retval[i] = '\n'; + break; + + case 'r': // carriage return + retval[i] = '\r'; + break; + + case 't': // horizontal tab + retval[i] = '\t'; + break; + + case 'v': // vertical tab + retval[i] = '\v'; + break; + + case '\\': // backslash + retval[i] = '\\'; + break; + + case '\'': // quote + retval[i] = '\''; + break; + + case '"': // double quote + retval[i] = '"'; + break; + + default: + warning ("unrecognized escape sequence `\\%c' --\ + converting to `%c'", s[j], s[j]); + retval[i] = s[j]; + break; + } + } + else + { + retval[i] = s[j]; + } + + i++; + j++; + } + + retval.resize (j); + + return retval; +} + +DEFUN (do_string_escapes, args, , + "do_string_escapes (STRING)") +{ + octave_value retval; + + int nargin = args.length (); + + if (nargin == 1) + { + if (args(0).is_string ()) + retval = do_string_escapes (args(0).string_value ()); + else + error ("do_string_escapes: argument must be a string"); + } + else + print_usage ("do_string_escapes"); + + return retval; +} + const char * undo_string_escape (char c) { @@ -384,8 +484,13 @@ int nargin = args.length (); - if (nargin == 1 && args(0).is_string ()) - retval = undo_string_escapes (args(0).string_value ()); + if (nargin == 1) + { + if (args(0).is_string ()) + retval = undo_string_escapes (args(0).string_value ()); + else + error ("undo_string_escapes: argument must be a string"); + } else print_usage ("undo_string_escapes");