Class: Dommy::URLSearchParams
- Inherits:
-
Object
- Object
- Dommy::URLSearchParams
- Includes:
- Enumerable
- Defined in:
- lib/dommy/url.rb
Overview
‘URLSearchParams` — query-string manipulation. Constructed from a raw string (`“a=1&b=2”`), an array of `[k, v]` pairs, or a Hash. Order is preserved. Values are stringified per spec.
Instance Method Summary collapse
- #__js_call__(method, args) ⇒ Object
- #__js_get__(key) ⇒ Object
- #__replace__(query_string) ⇒ Object
- #append(name, value) ⇒ Object
- #delete(name, value = nil) ⇒ Object
- #each(&block) ⇒ Object
- #entries ⇒ Object
- #for_each(&block) ⇒ Object (also: #forEach)
- #get(name) ⇒ Object
- #get_all(name) ⇒ Object (also: #getAll)
- #has(name) ⇒ Object (also: #has?)
-
#initialize(input = "", owner: nil) ⇒ URLSearchParams
constructor
A new instance of URLSearchParams.
- #keys ⇒ Object
- #set(name, value) ⇒ Object
- #size ⇒ Object (also: #length)
- #sort ⇒ Object
- #to_s ⇒ Object
- #values ⇒ Object
Constructor Details
#initialize(input = "", owner: nil) ⇒ URLSearchParams
Returns a new instance of URLSearchParams.
311 312 313 314 |
# File 'lib/dommy/url.rb', line 311 def initialize(input = "", owner: nil) @owner = owner @pairs = parse(input) end |
Instance Method Details
#__js_call__(method, args) ⇒ Object
423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 |
# File 'lib/dommy/url.rb', line 423 def __js_call__(method, args) case method when "get" get(args[0]) when "getAll" get_all(args[0]) when "has" has(args[0]) when "set" set(args[0], args[1]) when "append" append(args[0], args[1]) when "delete" delete(args[0], args[1]) when "sort" sort when "toString" to_s when "forEach" for_each(&args[0]) when "keys" keys when "values" values when "entries" entries end end |
#__js_get__(key) ⇒ Object
416 417 418 419 420 421 |
# File 'lib/dommy/url.rb', line 416 def __js_get__(key) case key when "size", "length" size end end |
#__replace__(query_string) ⇒ Object
411 412 413 414 |
# File 'lib/dommy/url.rb', line 411 def __replace__(query_string) @pairs = parse(query_string) nil end |
#append(name, value) ⇒ Object
353 354 355 356 357 |
# File 'lib/dommy/url.rb', line 353 def append(name, value) @pairs << [name.to_s, value.to_s] notify nil end |
#delete(name, value = nil) ⇒ Object
359 360 361 362 363 364 365 366 367 368 369 370 |
# File 'lib/dommy/url.rb', line 359 def delete(name, value = nil) key = name.to_s if value.nil? @pairs.reject! { |k, _| k == key } else v = value.to_s @pairs.reject! { |k, vv| k == key && vv == v } end notify nil end |
#each(&block) ⇒ Object
384 385 386 |
# File 'lib/dommy/url.rb', line 384 def each(&block) @pairs.each(&block) end |
#entries ⇒ Object
396 397 398 |
# File 'lib/dommy/url.rb', line 396 def entries @pairs.dup end |
#for_each(&block) ⇒ Object Also known as: forEach
400 401 402 403 |
# File 'lib/dommy/url.rb', line 400 def for_each(&block) @pairs.each { |k, v| block.call(v, k, self) } nil end |
#get(name) ⇒ Object
316 317 318 319 |
# File 'lib/dommy/url.rb', line 316 def get(name) pair = @pairs.find { |k, _| k == name.to_s } pair && pair[1] end |
#get_all(name) ⇒ Object Also known as: getAll
321 322 323 |
# File 'lib/dommy/url.rb', line 321 def get_all(name) @pairs.select { |k, _| k == name.to_s }.map { |_, v| v } end |
#has(name) ⇒ Object Also known as: has?
327 328 329 |
# File 'lib/dommy/url.rb', line 327 def has(name) @pairs.any? { |k, _| k == name.to_s } end |
#keys ⇒ Object
388 389 390 |
# File 'lib/dommy/url.rb', line 388 def keys @pairs.map { |k, _| k } end |
#set(name, value) ⇒ Object
333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 |
# File 'lib/dommy/url.rb', line 333 def set(name, value) key = name.to_s first_done = false @pairs = @pairs.reject do |k, _| next false unless k == key if first_done true else first_done = true false end end @pairs.map! { |pair| pair[0] == key ? [key, value.to_s] : pair } @pairs << [key, value.to_s] unless first_done notify nil end |
#size ⇒ Object Also known as: length
378 379 380 |
# File 'lib/dommy/url.rb', line 378 def size @pairs.length end |
#sort ⇒ Object
372 373 374 375 376 |
# File 'lib/dommy/url.rb', line 372 def sort @pairs.sort_by! { |k, _| k } notify nil end |
#to_s ⇒ Object
407 408 409 |
# File 'lib/dommy/url.rb', line 407 def to_s @pairs.map { |k, v| "#{encode(k)}=#{encode(v)}" }.join("&") end |
#values ⇒ Object
392 393 394 |
# File 'lib/dommy/url.rb', line 392 def values @pairs.map { |_, v| v } end |