X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=octave_packages%2Fstatistics-1.1.3%2Fprivate%2Ftbl_delim.m;fp=octave_packages%2Fstatistics-1.1.3%2Fprivate%2Ftbl_delim.m;h=ce77a928dc883f31663baddbc03df57ad44cf8e7;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/statistics-1.1.3/private/tbl_delim.m b/octave_packages/statistics-1.1.3/private/tbl_delim.m new file mode 100644 index 0000000..ce77a92 --- /dev/null +++ b/octave_packages/statistics-1.1.3/private/tbl_delim.m @@ -0,0 +1,126 @@ +## Copyright (C) 2008 Bill Denney +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 3 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, see . + +## -*- texinfo -*- +## @deftypefn {Function File} {[@var{d}, @var{err}] = } tbl_delim (@var{d}) +## Return the delimiter for tblread or tblwrite. +## +## The delimeter, @var{d} may be any single character or +## @itemize +## @item "space" " " (default) +## @item "tab" "\t" +## @item "comma" "," +## @item "semi" ";" +## @item "bar" "|" +## @end itemize +## +## @var{err} will be empty if there is no error, and @var{d} will be NaN +## if there is an error. You MUST check the value of @var{err}. +## @seealso{tblread, tblwrite} +## @end deftypefn + +function [d, err] = tbl_delim (d) + + ## Check arguments + if nargin != 1 + print_usage (); + endif + + err = ""; + ## Format the delimiter + if ischar (d) + ## allow for escape characters + d = sprintf (d); + if numel (d) > 1 + ## allow the word forms + s.space = " "; + s.tab = "\t"; + s.comma = ","; + s.semi = ";"; + s.bar = "|"; + if ! ismember (d, fieldnames (s)) + err = ["tblread: delimiter must be either a single " ... + "character or one of\n" ... + sprintf("%s, ", fieldnames (s){:})(1:end-2)]; + d = NaN; + else + d = s.(d); + endif + endif + else + err = "delimiter must be a character"; + d = NaN; + endif + if isempty (d) + err = "the delimiter may not be empty"; + d = NaN; + endif + +endfunction + +## Tests +## The defaults +%!test +%! [d err] = tbl_delim (" "); +%! assert (d, " "); +%! assert (err, ""); +## Named delimiters +%!test +%! [d err] = tbl_delim ("space"); +%! assert (d, " "); +%! assert (err, ""); +%!test +%! [d err] = tbl_delim ("tab"); +%! assert (d, sprintf ("\t")); +%! assert (err, ""); +%!test +%! [d err] = tbl_delim ("comma"); +%! assert (d, ","); +%! assert (err, ""); +%!test +%! [d err] = tbl_delim ("semi"); +%! assert (d, ";"); +%! assert (err, ""); +%!test +%! [d err] = tbl_delim ("bar"); +%! assert (d, "|"); +%! assert (err, ""); +## An arbitrary character +%!test +%! [d err] = tbl_delim ("x"); +%! assert (d, "x"); +%! assert (err, ""); +## An arbitrary escape string +%!test +%! [d err] = tbl_delim ('\r'); +%! assert (d, sprintf ('\r')) +%! assert (err, ""); +## Errors +%!test +%! [d err] = tbl_delim ("bars"); +%! assert (isnan (d)); +%! assert (! isempty (err)); +%!test +%! [d err] = tbl_delim (""); +%! assert (isnan (d)); +%! assert (! isempty (err)); +%!test +%! [d err] = tbl_delim (5); +%! assert (isnan (d)); +%! assert (! isempty (err)); +%!test +%! [d err] = tbl_delim ({"."}); +%! assert (isnan (d)); +%! assert (! isempty (err));