require_relative 'base'

module Whois
  module Scanners

    # Scanner for WhoisTldEe-based records.
    class WhoisTldEe < Base

      self.tokenizers += [
          :scan_available,
          :skip_head,
          :scan_section,
          :skip_empty_line,
          :scan_disclaimer,
      ]


      tokenizer :scan_available do
        if @input.skip(/^Domain not found/)
          @ast['status:available'] = true
        end
      end

      tokenizer :scan_section do
        if @input.scan(/^(Domain|Registrant|Administrative contact|Technical contact|Registrar|Name servers|DNSSEC):?\n/)
          @tmp['_section'] = @input[1]
          while scan_keyvalue
          end
          @tmp.delete('_section')
        end
      end

      tokenizer :skip_head do
        @input.skip(/^Estonia .ee Top Level Domain WHOIS server\n\n/)
      end

      tokenizer :skip_end do
        @input.skip(%r{^More information at http://internet.ee\n?})
      end

      tokenizer :scan_disclaimer do
        @input.skip_until(/^(Estonia .ee Top Level Domain WHOIS server)/m)
        @ast['field:disclaimer'] = @input[1] << @input.scan_until(/.*$/m)
      end
    end
  end
end