مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-11-30 21:32:30 +00:00
37 أسطر
803 B
Ruby
37 أسطر
803 B
Ruby
# frozen_string_literal: true
|
|
|
|
class QueryString
|
|
|
|
def initialize(string)
|
|
@string = string.strip + " "
|
|
end
|
|
|
|
def [](value)
|
|
hash[value.to_s]
|
|
end
|
|
|
|
delegate :empty?, to: :hash
|
|
|
|
def hash
|
|
@hash ||= @string.scan(/([a-z]+):\s*(?:(\d{2,4}-\d{2}-\d{2}\s\d{2}:\d{2})|"(.*?)"|(.*?))(\s|\z)/).each_with_object({}) do |(key, date, string_with_spaces, value), hash|
|
|
if date
|
|
actual_value = date
|
|
elsif string_with_spaces
|
|
actual_value = string_with_spaces
|
|
elsif value == "[blank]"
|
|
actual_value = nil
|
|
else
|
|
actual_value = value
|
|
end
|
|
|
|
if hash.keys.include?(key.to_s)
|
|
hash[key.to_s] = [hash[key.to_s]].flatten
|
|
hash[key.to_s] << actual_value
|
|
else
|
|
hash[key.to_s] = actual_value
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|