From 4737d80db459fda5d09f7c63f73000ec75acc473 Mon Sep 17 00:00:00 2001 From: Tom Bousso Date: Mon, 21 May 2018 17:59:54 -0700 Subject: [PATCH] Support namespaced xml in styles.xml Fixes #1114 h/t @tombousso --- bits/47_styxml.js | 20 ++++++++++---------- xlsx.flow.js | 20 ++++++++++---------- xlsx.js | 20 ++++++++++---------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/bits/47_styxml.js b/bits/47_styxml.js index c89e090..034d996 100644 --- a/bits/47_styxml.js +++ b/bits/47_styxml.js @@ -5,7 +5,7 @@ function parse_borders(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch (y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.4 border CT_Border */ @@ -79,7 +79,7 @@ function parse_fills(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch(y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.20 fill CT_Fill */ @@ -145,7 +145,7 @@ function parse_fonts(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch (y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.22 font CT_Font */ @@ -263,7 +263,7 @@ function parse_numFmts(t, styles, opts) { if(!m) return; for(i=0; i < m.length; ++i) { var y = parsexmltag(m[i]); - switch(y[0]) { + switch(strip_ns(y[0])) { case '': case '': case '': break; case '': case '': case '': break; /* 18.8.45 xf CT_Xf */ @@ -357,11 +357,11 @@ function write_cellXfs(cellXfs)/*:string*/ { /* 18.8 Styles CT_Stylesheet*/ var parse_sty_xml= (function make_pstyx() { -var numFmtRegex = /]*)>[\S\s]*?<\/numFmts>/; -var cellXfRegex = /]*)>[\S\s]*?<\/cellXfs>/; -var fillsRegex = /]*)>[\S\s]*?<\/fills>/; -var fontsRegex = /]*)>[\S\s]*?<\/fonts>/; -var bordersRegex = /]*)>[\S\s]*?<\/borders>/; +var numFmtRegex = /<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/; +var cellXfRegex = /<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/; +var fillsRegex = /<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/; +var fontsRegex = /<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/; +var bordersRegex = /<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/; return function parse_sty_xml(data, themes, opts) { var styles = {}; diff --git a/xlsx.flow.js b/xlsx.flow.js index 47c7f0f..b9bb8a9 100644 --- a/xlsx.flow.js +++ b/xlsx.flow.js @@ -7953,7 +7953,7 @@ function parse_borders(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch (y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.4 border CT_Border */ @@ -8027,7 +8027,7 @@ function parse_fills(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch(y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.20 fill CT_Fill */ @@ -8093,7 +8093,7 @@ function parse_fonts(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch (y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.22 font CT_Font */ @@ -8211,7 +8211,7 @@ function parse_numFmts(t, styles, opts) { if(!m) return; for(i=0; i < m.length; ++i) { var y = parsexmltag(m[i]); - switch(y[0]) { + switch(strip_ns(y[0])) { case '': case '': case '': break; case '': case '': case '': break; /* 18.8.45 xf CT_Xf */ @@ -8305,11 +8305,11 @@ function write_cellXfs(cellXfs)/*:string*/ { /* 18.8 Styles CT_Stylesheet*/ var parse_sty_xml= (function make_pstyx() { -var numFmtRegex = /]*)>[\S\s]*?<\/numFmts>/; -var cellXfRegex = /]*)>[\S\s]*?<\/cellXfs>/; -var fillsRegex = /]*)>[\S\s]*?<\/fills>/; -var fontsRegex = /]*)>[\S\s]*?<\/fonts>/; -var bordersRegex = /]*)>[\S\s]*?<\/borders>/; +var numFmtRegex = /<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/; +var cellXfRegex = /<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/; +var fillsRegex = /<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/; +var fontsRegex = /<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/; +var bordersRegex = /<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/; return function parse_sty_xml(data, themes, opts) { var styles = {}; diff --git a/xlsx.js b/xlsx.js index d5f4656..49a705c 100644 --- a/xlsx.js +++ b/xlsx.js @@ -7858,7 +7858,7 @@ function parse_borders(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch (y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.4 border CT_Border */ @@ -7932,7 +7932,7 @@ function parse_fills(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch(y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.20 fill CT_Fill */ @@ -7998,7 +7998,7 @@ function parse_fonts(t, styles, themes, opts) { var pass = false; t[0].match(tagregex).forEach(function(x) { var y = parsexmltag(x); - switch (y[0]) { + switch(strip_ns(y[0])) { case '': case '': break; /* 18.8.22 font CT_Font */ @@ -8116,7 +8116,7 @@ function parse_numFmts(t, styles, opts) { if(!m) return; for(i=0; i < m.length; ++i) { var y = parsexmltag(m[i]); - switch(y[0]) { + switch(strip_ns(y[0])) { case '': case '': case '': break; case '': case '': case '': break; /* 18.8.45 xf CT_Xf */ @@ -8210,11 +8210,11 @@ function write_cellXfs(cellXfs) { /* 18.8 Styles CT_Stylesheet*/ var parse_sty_xml= (function make_pstyx() { -var numFmtRegex = /]*)>[\S\s]*?<\/numFmts>/; -var cellXfRegex = /]*)>[\S\s]*?<\/cellXfs>/; -var fillsRegex = /]*)>[\S\s]*?<\/fills>/; -var fontsRegex = /]*)>[\S\s]*?<\/fonts>/; -var bordersRegex = /]*)>[\S\s]*?<\/borders>/; +var numFmtRegex = /<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/; +var cellXfRegex = /<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/; +var fillsRegex = /<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/; +var fontsRegex = /<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/; +var bordersRegex = /<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/; return function parse_sty_xml(data, themes, opts) { var styles = {};