Sha256: e2446af94e931d953ed2fe3e6894dbafdde395e4d102f549f1de16723d7d3dc4

Contents?: true

Size: 1.54 KB

Versions: 18

Compression:

Stored size: 1.54 KB

Contents

require "numru/netcdf.rb"
require "numru/gphys/attribute.rb"
require "numru/gphys/netcdf_convention"

=begin
=class Attribute_NetCDF
A class to handle NetCDF attributes in the same way as in the 
NumRu::Attribute class.
=end

module NumRu
   class AttributeNetCDF
      def initialize( ncvar )
	 raise TypeError unless NetCDFVar===ncvar || NetCDF===ncvar
	 @nv = ncvar
	 convention = NetCDF_Conventions.find(ncvar.file)
	 extend( convention::Attribute_Mixin )
      end

      def [](name)
	  ( att = @nv.att(name) ) ? att.get : att
      end

      def []=(name, val)
	 @nv.put_att(name,val)
	 val
      end

      def copy(to=nil)
	 # deep copy (clone), or addition to "to" if given.
	 # ATTENTION!  If the destination "to" is not given, it will
	 # be an Attribute (not AttributeNetCDF), which is on memory.
	 if to == nil
	    to = NumRu::Attribute.new
	 end
	 self.each{|key, val|
	    to[key] = val
	 }
	 to
      end

      def rename(key_from, key_to)
	 att = @nv.att(key_from)
	 if att==nil; raise "attribute #{key_from} does not exist"; end
         att.name= key_to
      end

      def each
	 @nv.each_att{|att| yield(att.name, att.get)}
      end

      def each_key
	 @nv.each_att{|att| yield(att.name)}
      end

      def length
	 @nv.natts
      end

      def keys
	 @nv.att_names
      end

      def delete(key)
	 @nv.att(key).delete
      end

      def delete_if
	 each{|key,val| delete(key) if yield(key,val)}
      end

      def has_key?(key)
	 @nv.att(key) ? true : false
      end
      alias :include? :has_key?
      alias :key? :has_key?

   end
end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
gphys-1.5.6 lib/numru/gphys/attributenetcdf.rb
gphys-1.5.5 lib/numru/gphys/attributenetcdf.rb
gphys-1.5.4 lib/numru/gphys/attributenetcdf.rb
gphys-1.5.3 lib/numru/gphys/attributenetcdf.rb
gphys-1.5.2 lib/numru/gphys/attributenetcdf.rb
gphys-1.5.1 lib/numru/gphys/attributenetcdf.rb
gphys-1.5.0 lib/numru/gphys/attributenetcdf.rb
gphys-1.4.3.2 lib/numru/gphys/attributenetcdf.rb
gphys-1.4.3.1 lib/numru/gphys/attributenetcdf.rb
gphys-1.4.3 lib/numru/gphys/attributenetcdf.rb
gentooboontoo-gphys-1.3.1.1 lib/numru/gphys/attributenetcdf.rb
gentooboontoo-gphys-0.6.1.3 lib/numru/gphys/attributenetcdf.rb
gphys-1.2.2.1a lib/numru/gphys/attributenetcdf.rb
gphys-1.2.2.1 lib/numru/gphys/attributenetcdf.rb
gphys-1.2.2 lib/numru/gphys/attributenetcdf.rb
gphys-1.1.1b lib/numru/gphys/attributenetcdf.rb
gphys-1.1.1a lib/numru/gphys/attributenetcdf.rb
gphys-1.1.1 lib/numru/gphys/attributenetcdf.rb