require 'hdf'

module Clearsilver

  class Hdf < Neo::Hdf
    
    def initialize
      super
      @level=0
      @cpos=""
      @position=[]
    end

    attr_reader :position, :cpos

    def push name
      @position.push(@cpos)
      @cpos+=name+"."

      if block_given?
	yield
	@cpos=@position.pop
      end
    end

    def pop
      @cpos=@position.pop
    end

    def put name, value
      value = value.to_s unless value.is_a?(String)
      self.set_value(@cpos+(name.to_s),value)
    end

    def get name
      self.get_value(@cpos+name)
    end

  end

  class Cs < Neo::Cs

  end
end