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.
539 540 541 542 |
# File 'lib/dommy/url.rb', line 539 def initialize(input = "", owner: nil) @owner = owner @pairs = parse(input) end |
Instance Method Details
#__js_call__(method, args) ⇒ Object
651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 |
# File 'lib/dommy/url.rb', line 651 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
644 645 646 647 648 649 |
# File 'lib/dommy/url.rb', line 644 def __js_get__(key) case key when "size", "length" size end end |
#__replace__(query_string) ⇒ Object
639 640 641 642 |
# File 'lib/dommy/url.rb', line 639 def __replace__(query_string) @pairs = parse(query_string) nil end |
#append(name, value) ⇒ Object
581 582 583 584 585 |
# File 'lib/dommy/url.rb', line 581 def append(name, value) @pairs << [name.to_s, value.to_s] notify nil end |
#delete(name, value = nil) ⇒ Object
587 588 589 590 591 592 593 594 595 596 597 598 |
# File 'lib/dommy/url.rb', line 587 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
612 613 614 |
# File 'lib/dommy/url.rb', line 612 def each(&block) @pairs.each(&block) end |
#entries ⇒ Object
624 625 626 |
# File 'lib/dommy/url.rb', line 624 def entries @pairs.dup end |
#for_each(&block) ⇒ Object Also known as: forEach
628 629 630 631 |
# File 'lib/dommy/url.rb', line 628 def for_each(&block) @pairs.each { |k, v| block.call(v, k, self) } nil end |
#get(name) ⇒ Object
544 545 546 547 |
# File 'lib/dommy/url.rb', line 544 def get(name) pair = @pairs.find { |k, _| k == name.to_s } pair && pair[1] end |
#get_all(name) ⇒ Object Also known as: getAll
549 550 551 |
# File 'lib/dommy/url.rb', line 549 def get_all(name) @pairs.select { |k, _| k == name.to_s }.map { |_, v| v } end |
#has(name) ⇒ Object Also known as: has?
555 556 557 |
# File 'lib/dommy/url.rb', line 555 def has(name) @pairs.any? { |k, _| k == name.to_s } end |
#keys ⇒ Object
616 617 618 |
# File 'lib/dommy/url.rb', line 616 def keys @pairs.map { |k, _| k } end |
#set(name, value) ⇒ Object
561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 |
# File 'lib/dommy/url.rb', line 561 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
606 607 608 |
# File 'lib/dommy/url.rb', line 606 def size @pairs.length end |
#sort ⇒ Object
600 601 602 603 604 |
# File 'lib/dommy/url.rb', line 600 def sort @pairs.sort_by! { |k, _| k } notify nil end |
#to_s ⇒ Object
635 636 637 |
# File 'lib/dommy/url.rb', line 635 def to_s @pairs.map { |k, v| "#{encode(k)}=#{encode(v)}" }.join("&") end |
#values ⇒ Object
620 621 622 |
# File 'lib/dommy/url.rb', line 620 def values @pairs.map { |_, v| v } end |