# File lib/search_cop_grammar/attributes.rb, line 244
      def parse(value)
        return value .. value unless value.is_a?(::String)

        if value =~ /^[0-9]{4}$/
          ::Date.new(value.to_i).beginning_of_year .. ::Date.new(value.to_i).end_of_year
        elsif value =~ /^([0-9]{4})(\.|-|\/)([0-9]{1,2})$/
          ::Date.new($1.to_i, $3.to_i, 15).beginning_of_month .. ::Date.new($1.to_i, $3.to_i, 15).end_of_month
        elsif value =~ /^([0-9]{1,2})(\.|-|\/)([0-9]{4})$/
          ::Date.new($3.to_i, $1.to_i, 15).beginning_of_month .. ::Date.new($3.to_i, $1.to_i, 15).end_of_month
        elsif value =~ /[0-9]{4}(\.|-|\/)[0-9]{1,2}(\.|-|\/)[0-9]{1,2}/ || value =~ /[0-9]{1,2}(\.|-|\/)[0-9]{1,2}(\.|-|\/)[0-9]{4}/
          date = ::Date.parse(value)
          date .. date
        else
          raise ArgumentError
        end
      rescue ArgumentError
        raise SearchCop::IncompatibleDatatype, "Incompatible datatype for #{value}"
      end