lib/rspreadsheet/tools.rb in rspreadsheet-0.0.5 vs lib/rspreadsheet/tools.rb in rspreadsheet-0.0.6

- old
+ new

@@ -18,15 +18,89 @@ colname=colname.rjust(3,'@') col = (colname[-1].ord-64)+(colname[-2].ord-64)*26+(colname[-3].ord-64)*26*26 row = rowname.to_i return [row,col] end - - # this object represents array which can contain repeated values - # inspired valuely by http://www-users.cs.umn.edu/~saad/software/SPARSKIT/paper.ps - class SparseRepeatedArray < Array + def self.get_namespace(prefix) + ns_array = { + 'office'=>"urn:oasis:names:tc:opendocument:xmlns:office:1.0", + 'style'=>"urn:oasis:names:tc:opendocument:xmlns:style:1.0", + 'text'=>"urn:oasis:names:tc:opendocument:xmlns:text:1.0", + 'table'=>"urn:oasis:names:tc:opendocument:xmlns:table:1.0", + 'draw'=>"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", + 'fo'=>"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", + 'xlink'=>"http://www.w3.org/1999/xlink", + 'dc'=>"http://purl.org/dc/elements/1.1/", + 'meta'=>"urn:oasis:names:tc:opendocument:xmlns:meta:1.0", + 'number'=>"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", + 'presentation'=>"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", + 'svg'=>"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", + 'chart'=>"urn:oasis:names:tc:opendocument:xmlns:chart:1.0", + 'dr3d'=>"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", + 'math'=>"http://www.w3.org/1998/Math/MathML", + 'form'=>"urn:oasis:names:tc:opendocument:xmlns:form:1.0", + 'script'=>"urn:oasis:names:tc:opendocument:xmlns:script:1.0", + 'ooo'=>"http://openoffice.org/2004/office", + 'ooow'=>"http://openoffice.org/2004/writer", + 'oooc'=>"http://openoffice.org/2004/calc", + 'dom'=>"http://www.w3.org/2001/xml-events", + 'xforms'=>"http://www.w3.org/2002/xforms", + 'xsd'=>"http://www.w3.org/2001/XMLSchema", + 'xsi'=>"http://www.w3.org/2001/XMLSchema-instance", + 'rpt'=>"http://openoffice.org/2005/report", + 'of'=>"urn:oasis:names:tc:opendocument:xmlns:of:1.2", + 'xhtml'=>"http://www.w3.org/1999/xhtml", + 'grddl'=>"http://www.w3.org/2003/g/data-view#", + 'tableooo'=>"http://openoffice.org/2009/table", + 'drawooo'=>"http://openoffice.org/2010/draw", + 'calcext'=>"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0", + 'loext'=>"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", + 'field'=>"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0", + 'formx'=>"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0", + 'css3t'=>"http://www.w3.org/TR/css3-text/" + } + if @pomnode.nil? + @pomnode = LibXML::XML::Node.new('xxx') + end + if @ns.nil? then @ns={} end + if @ns[prefix].nil? + @ns[prefix] = LibXML::XML::Namespace.new(@pomnode, prefix, ns_array[prefix]) + end + return @ns[prefix] + end + # sets namespaced attribute "ns_prefix:key" in node to value. if value == delete_value then remove the attribute + def self.set_ns_attribute(node,ns_prefix,key,value,delete_value=nil) + ns = Tools.get_namespace(ns_prefix) + attr = node.attributes.get_attribute_ns(ns.href, key) - + unless value==delete_value # set attribute + if attr.nil? # create attribute if needed + attr = LibXML::XML::Attr.new(node, key,'temporarilyempty') + attr.namespaces.namespace = ns + end + attr.value = value.to_s + attr + else # remove attribute + attr.remove! unless attr.nil? + nil + end end + def self.get_ns_attribute(node,ns_prefix,key) + node.attributes.get_attribute_ns(Tools.get_namespace(ns_prefix).href,key) + end + def self.get_ns_attribute_value(node,ns_prefix,key) + Tools.get_ns_attribute(node,ns_prefix,key).andand.value + end + def self.remove_ns_attribute(node,ns_prefix,key) + node.attributes.get_attribute_ns(Tools.get_namespace(ns_prefix).href,key) + attr.remove! unless attr.nil? + end end +end + +class Range + def size + res = self.end-self.begin+1 + res>0 ? res : 0 + end end \ No newline at end of file