changeset 9658:904874c14982 octave-forge

xmlwrite: moving from miscellaneous to IO package
author carandraug
date Tue, 13 Mar 2012 02:41:21 +0000
parents 7a49ff4b2230
children 1bc5dda26ff9
files main/io/NEWS main/io/inst/xmlwrite.m main/miscellaneous/NEWS main/miscellaneous/inst/xmlwrite.m
diffstat 4 files changed, 203 insertions(+), 203 deletions(-) [+]
line wrap: on
line diff
--- a/main/io/NEWS	Tue Mar 13 02:08:43 2012 +0000
+++ b/main/io/NEWS	Tue Mar 13 02:41:21 2012 +0000
@@ -15,7 +15,7 @@
 
 ** The following functions have been imported from the miscellaneous package:
       cell2csv    csvconcat
-      csv2cell    csvexplode
+      csv2cell    csvexplode    xmlwrite
 
 ===============================================================================
 io-1.0.17   Release Date: 2012-02-27   Release Manager: Philip Nienhuis
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main/io/inst/xmlwrite.m	Tue Mar 13 02:41:21 2012 +0000
@@ -0,0 +1,201 @@
+## Copyright (C) 2004 Laurent Mazet <mazet@crm.mot.com>
+##
+## 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 <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {@var{nb} =} xmlwrite (@var{filename}, @var{value})
+## @deftypefnx {Function File} {@var{nb} =} xmlwrite (@var{fd}, @var{value}, [@var{name}])
+##
+## Write a @var{value} into @var{filename} (@var{fd}) as a XML file.
+##
+##The number of elements (@var{nb}) or 0 is returned.
+## @end deftypefn
+
+function nb = xmlwrite (filename, value, name)
+  persistent indent = "";
+  persistent separator = "\n";
+
+  ## Check argument number
+  nb = 0;
+  if (nargin < 2) || (nargin > 3)
+    print_usage;
+  endif
+  
+  ## Get the file identificator
+  isopen = false;
+  if ischar(filename)
+
+    ## Check file name
+    sn = char (strsplit (filename, "."));
+    if !strcmp(tolower(deblank(sn(end,:))), "xml")
+      filename = [filename, ".xml"];
+    endif
+
+    ## Open file
+    fd = fopen (filename, "w");
+    if fd <= 0
+      error("error opening file \"%s\"\n", filename);
+    endif
+
+    ## XML header
+    fprintf (fd, "<?xml version=\"1.0\"?>\n");
+    fprintf (fd, "<!DOCTYPE octave SYSTEM \"octave.dtd\">\n");
+    fprintf (fd, "<octave>\n");
+    indent = "  ";
+  else
+    isopen = true;
+    fd = filename;
+  endif
+  
+  ## Store name in optional argument
+  opt = "";
+  if nargin == 3
+    opt = sprintf(" name=\"%s\"", name);
+  endif
+  
+  ## Process by type
+
+  if ischar(value) && (rows(value) <= 1)
+    ## String type
+    
+    fprintf (fd, "%s<string%s length=\"%d\">%s</string>%s",
+             indent, opt, length(value), value, separator);
+    
+  elseif ischar(value)
+    ## String array type
+    
+    fprintf (fd, "%s<array%s rows=\"%d\">\n", indent, opt, rows(value));
+    _indent = indent; indent = [indent, "  "];
+    for k=1:rows(value),
+      nb += xmlwrite (fd, deblank(value(k, :)));
+    endfor
+    indent = _indent;
+    fprintf (fd, "%s</array>\n", indent);
+    
+  elseif isscalar(value)
+    ## Scalar type
+    
+    if iscomplex(value)
+      ## Complex type
+
+      fprintf (fd, "%s<complex%s>", indent, opt);
+      _indent = indent; indent = ""; _separator = separator; separator = "";
+      nb += xmlwrite (fd, real(value));
+      nb += xmlwrite (fd, imag(value));
+      indent = _indent; separator = _separator;
+      fprintf (fd, "</complex>%s", separator);
+
+    elseif isbool(value)
+      ## Boolean type
+    
+      if value
+        fprintf (fd, "%s<scalar%s value=\"true\"/>%s", indent, opt, separator);
+      else
+        fprintf (fd, "%s<scalar%s value=\"false\"/>%s", indent, opt, separator);
+      endif
+    
+    elseif isinf(value)
+      ## Infinite type
+    
+      if value > 0
+        fprintf (fd, "%s<scalar%s value=\"inf\"/>%s",
+                 indent, opt, separator);
+      else
+        fprintf (fd, "%s<scalar%s value=\"neginf\"/>%s",
+                 indent, opt, separator);
+      endif
+    
+    elseif isnan(value)
+      ## Not-A-Number type
+      
+      fprintf (fd, "%s<scalar%s value=\"nan\"/>%s", indent, opt, separator);
+      
+    elseif isna(value)
+      ## Not-Avaliable
+      
+      fprintf (fd, "%s<scalar%s value=\"na\"/>%s", indent, opt, separator);
+      
+    else
+      sc = sprintf(sprintf("%%.%dg", save_precision), value);
+      fprintf (fd, "%s<scalar%s>%s</scalar>%s", indent, opt, sc, ...
+               separator);
+    endif
+    
+  elseif ismatrix(value) && isnumeric(value) && (length(size(value)) <= 2)
+    ## Matrix type
+    
+    fprintf (fd, "%s<matrix%s rows=\"%d\" columns=\"%d\">\n",
+             indent, opt, rows(value), columns(value));
+    _indent = indent; indent = ""; separator = "";
+    for k=1:rows(value),
+      fprintf (fd, "%s  ", _indent);
+      for l=1:columns(value)-1,
+        nb += xmlwrite (fd, value(k, l));
+        fprintf (fd, " ");
+      endfor
+      nb += xmlwrite (fd, value(k, end));
+      fprintf (fd, "\n");
+    endfor
+    indent = _indent; separator = "\n";
+    fprintf (fd, "%s</matrix>\n", indent);
+    
+  elseif isstruct(value)
+    ## Structure type
+
+    st = fieldnames(value);
+    fprintf (fd, "%s<structure%s>\n", indent, opt);
+    _indent = indent; indent = [indent, "  "];
+    for k=1:length(st),
+      eval(sprintf("nb += xmlwrite (fd, value.%s, \"%s\");", st{k}, st{k}));
+    endfor
+    indent = _indent;
+    fprintf (fd, "%s</structure>\n", indent);
+    
+  elseif iscell(value)
+    ## Cell type
+    
+    fprintf (fd, "%s<cell%s rows=\"%d\" columns=\"%d\">\n",
+             indent, opt, rows(value), columns(value));
+    _indent = indent; indent = [indent, "  "];
+    for k=1:rows(value),
+      for l=1:columns(value),
+        nb += xmlwrite (fd, value{k, l});
+      endfor
+    endfor
+    indent = _indent;
+    fprintf (fd, "%s</cell>\n", indent);
+    
+  elseif islist(value)
+    ## List type
+    
+    fprintf (fd, "%s<list%s length=\"%d\">\n", indent, opt, length(value));
+    _indent = indent; indent = [indent, "  "];
+    for k=1:length(value),
+      nb += xmlwrite (fd, value{k});
+    endfor
+    indent = _indent;
+    fprintf (fd, "%s</list>\n", indent);
+    
+  else
+    ## Unknown type
+    error("unknown type\n");
+  endif
+  nb++;
+  
+  if !isopen
+    fprintf (fd, "</octave>\n");
+    fclose(fd);
+  endif
+  
+endfunction
--- a/main/miscellaneous/NEWS	Tue Mar 13 02:08:43 2012 +0000
+++ b/main/miscellaneous/NEWS	Tue Mar 13 02:41:21 2012 +0000
@@ -20,7 +20,7 @@
  ** The following functions have been moved to the IO package:
 
       cell2csv    csvconcat
-      csv2cell    csvexplode
+      csv2cell    csvexplode    xmlwrite
 
  ** The function `clip' was imported from the audio package.
 
--- a/main/miscellaneous/inst/xmlwrite.m	Tue Mar 13 02:08:43 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-## Copyright (C) 2004 Laurent Mazet <mazet@crm.mot.com>
-##
-## 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 <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{nb} =} xmlwrite (@var{filename}, @var{value})
-## @deftypefnx {Function File} {@var{nb} =} xmlwrite (@var{fd}, @var{value}, [@var{name}])
-##
-## Write a @var{value} into @var{filename} (@var{fd}) as a XML file.
-##
-##The number of elements (@var{nb}) or 0 is returned.
-## @end deftypefn
-
-function nb = xmlwrite (filename, value, name)
-  persistent indent = "";
-  persistent separator = "\n";
-
-  ## Check argument number
-  nb = 0;
-  if (nargin < 2) || (nargin > 3)
-    print_usage;
-  endif
-  
-  ## Get the file identificator
-  isopen = false;
-  if ischar(filename)
-
-    ## Check file name
-    sn = char (strsplit (filename, "."));
-    if !strcmp(tolower(deblank(sn(end,:))), "xml")
-      filename = [filename, ".xml"];
-    endif
-
-    ## Open file
-    fd = fopen (filename, "w");
-    if fd <= 0
-      error("error opening file \"%s\"\n", filename);
-    endif
-
-    ## XML header
-    fprintf (fd, "<?xml version=\"1.0\"?>\n");
-    fprintf (fd, "<!DOCTYPE octave SYSTEM \"octave.dtd\">\n");
-    fprintf (fd, "<octave>\n");
-    indent = "  ";
-  else
-    isopen = true;
-    fd = filename;
-  endif
-  
-  ## Store name in optional argument
-  opt = "";
-  if nargin == 3
-    opt = sprintf(" name=\"%s\"", name);
-  endif
-  
-  ## Process by type
-
-  if ischar(value) && (rows(value) <= 1)
-    ## String type
-    
-    fprintf (fd, "%s<string%s length=\"%d\">%s</string>%s",
-             indent, opt, length(value), value, separator);
-    
-  elseif ischar(value)
-    ## String array type
-    
-    fprintf (fd, "%s<array%s rows=\"%d\">\n", indent, opt, rows(value));
-    _indent = indent; indent = [indent, "  "];
-    for k=1:rows(value),
-      nb += xmlwrite (fd, deblank(value(k, :)));
-    endfor
-    indent = _indent;
-    fprintf (fd, "%s</array>\n", indent);
-    
-  elseif isscalar(value)
-    ## Scalar type
-    
-    if iscomplex(value)
-      ## Complex type
-
-      fprintf (fd, "%s<complex%s>", indent, opt);
-      _indent = indent; indent = ""; _separator = separator; separator = "";
-      nb += xmlwrite (fd, real(value));
-      nb += xmlwrite (fd, imag(value));
-      indent = _indent; separator = _separator;
-      fprintf (fd, "</complex>%s", separator);
-
-    elseif isbool(value)
-      ## Boolean type
-    
-      if value
-        fprintf (fd, "%s<scalar%s value=\"true\"/>%s", indent, opt, separator);
-      else
-        fprintf (fd, "%s<scalar%s value=\"false\"/>%s", indent, opt, separator);
-      endif
-    
-    elseif isinf(value)
-      ## Infinite type
-    
-      if value > 0
-        fprintf (fd, "%s<scalar%s value=\"inf\"/>%s",
-                 indent, opt, separator);
-      else
-        fprintf (fd, "%s<scalar%s value=\"neginf\"/>%s",
-                 indent, opt, separator);
-      endif
-    
-    elseif isnan(value)
-      ## Not-A-Number type
-      
-      fprintf (fd, "%s<scalar%s value=\"nan\"/>%s", indent, opt, separator);
-      
-    elseif isna(value)
-      ## Not-Avaliable
-      
-      fprintf (fd, "%s<scalar%s value=\"na\"/>%s", indent, opt, separator);
-      
-    else
-      sc = sprintf(sprintf("%%.%dg", save_precision), value);
-      fprintf (fd, "%s<scalar%s>%s</scalar>%s", indent, opt, sc, ...
-               separator);
-    endif
-    
-  elseif ismatrix(value) && isnumeric(value) && (length(size(value)) <= 2)
-    ## Matrix type
-    
-    fprintf (fd, "%s<matrix%s rows=\"%d\" columns=\"%d\">\n",
-             indent, opt, rows(value), columns(value));
-    _indent = indent; indent = ""; separator = "";
-    for k=1:rows(value),
-      fprintf (fd, "%s  ", _indent);
-      for l=1:columns(value)-1,
-        nb += xmlwrite (fd, value(k, l));
-        fprintf (fd, " ");
-      endfor
-      nb += xmlwrite (fd, value(k, end));
-      fprintf (fd, "\n");
-    endfor
-    indent = _indent; separator = "\n";
-    fprintf (fd, "%s</matrix>\n", indent);
-    
-  elseif isstruct(value)
-    ## Structure type
-
-    st = fieldnames(value);
-    fprintf (fd, "%s<structure%s>\n", indent, opt);
-    _indent = indent; indent = [indent, "  "];
-    for k=1:length(st),
-      eval(sprintf("nb += xmlwrite (fd, value.%s, \"%s\");", st{k}, st{k}));
-    endfor
-    indent = _indent;
-    fprintf (fd, "%s</structure>\n", indent);
-    
-  elseif iscell(value)
-    ## Cell type
-    
-    fprintf (fd, "%s<cell%s rows=\"%d\" columns=\"%d\">\n",
-             indent, opt, rows(value), columns(value));
-    _indent = indent; indent = [indent, "  "];
-    for k=1:rows(value),
-      for l=1:columns(value),
-        nb += xmlwrite (fd, value{k, l});
-      endfor
-    endfor
-    indent = _indent;
-    fprintf (fd, "%s</cell>\n", indent);
-    
-  elseif islist(value)
-    ## List type
-    
-    fprintf (fd, "%s<list%s length=\"%d\">\n", indent, opt, length(value));
-    _indent = indent; indent = [indent, "  "];
-    for k=1:length(value),
-      nb += xmlwrite (fd, value{k});
-    endfor
-    indent = _indent;
-    fprintf (fd, "%s</list>\n", indent);
-    
-  else
-    ## Unknown type
-    error("unknown type\n");
-  endif
-  nb++;
-  
-  if !isopen
-    fprintf (fd, "</octave>\n");
-    fclose(fd);
-  endif
-  
-endfunction