changeset 12265:0eff975477c3 octave-forge

New file, gets file type & OOo file FilterName string
author prnienhuis
date Wed, 01 Jan 2014 21:22:03 +0000
parents 5c320f10edb7
children aaa69cc3fe13
files main/io/inst/private/__get_ftype__.m
diffstat 1 files changed, 88 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main/io/inst/private/__get_ftype__.m	Wed Jan 01 21:22:03 2014 +0000
@@ -0,0 +1,88 @@
+## Copyright (C) 2014 Philip Nienhuis
+## 
+## 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{ftype} =} __get_ftype__ (@var{fname})
+## Get file type index from a file name, based on the file extension.
+##
+## Supported file type indices:
+##  1 = .xls      (BIFF8, also BIFF5)
+##  2 = .xlsx     (OOXML)
+##  3 = .ods      (ODS 1.2)
+##  4 = .sxc      (old OpenOffice.org format)
+##  5 = .gnumeric (Gnumeric XML)
+##  6 = .csv      (Comma Separated Values)
+##  7 = .uof      (Unified Office Format)
+##  8 = .fods     (ODS Flat XML)
+##  9 = .dbf      (Dbase)
+## 10 = .dif      (Digital InterchangeFormat)
+##
+## @var{ftype} is set to 0 (zero) for any other file type.
+## @var{ftype} is set to empty for file names without extension.
+##
+## @end deftypefn
+
+## Author: Philip Nienhuis <prnienhuis at users.sf.net>
+## Created: 2014-01-01
+
+function [ftype, filtnam] = __get_ftype__ (fname)
+
+  persistent filtnams;
+  filtnams = {"MS Excel 97",                        ## .xls
+              "Calc MS Excel 2007 XML",             ## .xlsx
+              "calc8",                              ## .ods
+              "StarOffice XML (Calc)",              ## .sxc
+              "---gnumeric---",                     ## .gnumeric
+              "Text CSV",                           ## .csv
+              "UOF spreadsheet",                    ## .uos
+              "OpenDocument Spreadsheet Flat XML",  ## .fods
+              "dBase",                              ## .dbf
+              "DIF"};                               ## .dif
+  
+  [~, ~, ext] = fileparts (fname);
+  if (! isempty (ext))
+    switch ext
+      case ".xls"                       ## Regular (binary) BIFF
+        ftype = 1;
+      case {".xlsx", ".xlsm", ".xlsb"}  ## Zipped XML / OOXML. Catches xlsx, xlsb, xlsm
+        ftype = 2;
+      case ".ods"                       ## ODS 1.2 (Excel 2007+ & OOo/LO can read ODS)
+        ftype = 3;
+      case ".sxc"                       ## old OpenOffice.org 1.0 Calc
+        ftype = 4;
+      case ".gnumeric"                  ## Zipped XML / gnumeric
+        ftype = 5;
+      case ".csv"                       ## csv. Detected for xlsread afficionados
+        ftype = 6;
+      case ".uof"                       ## Unified Office Format
+        ftype = 7;
+      case ".fods"                      ## ODS Flat HTML
+        ftype = 8;
+      case ".dbf"                       ## Dbase
+        ftype = 9;
+      case ".dif"                       ## Digital Interchange Format
+        ftype = 10;
+      otherwise                         ## Any other type = non-supported 
+        ftype = 0;
+    endswitch
+  else
+    ftype = '';
+  endif
+
+  if (ftype > 0)
+    filtnam = filtnams{ftype};
+  endif
+
+endfunction