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
- #__internal_replace__(query_string) ⇒ Object
- #__js_call__(method, args) ⇒ Object
- #__js_get__(key) ⇒ 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.
556 557 558 559 |
# File 'lib/dommy/url.rb', line 556 def initialize(input = "", owner: nil) @owner = owner @pairs = parse(input) end |
Instance Method Details
#__internal_replace__(query_string) ⇒ Object
656 657 658 659 |
# File 'lib/dommy/url.rb', line 656 def __internal_replace__(query_string) @pairs = parse(query_string) nil end |
#__js_call__(method, args) ⇒ Object
668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 |
# File 'lib/dommy/url.rb', line 668 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
661 662 663 664 665 666 |
# File 'lib/dommy/url.rb', line 661 def __js_get__(key) case key when "size", "length" size end end |
#append(name, value) ⇒ Object
598 599 600 601 602 |
# File 'lib/dommy/url.rb', line 598 def append(name, value) @pairs << [name.to_s, value.to_s] notify nil end |
#delete(name, value = nil) ⇒ Object
604 605 606 607 608 609 610 611 612 613 614 615 |
# File 'lib/dommy/url.rb', line 604 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
629 630 631 |
# File 'lib/dommy/url.rb', line 629 def each(&block) @pairs.each(&block) end |
#entries ⇒ Object
641 642 643 |
# File 'lib/dommy/url.rb', line 641 def entries @pairs.dup end |
#for_each(&block) ⇒ Object Also known as: forEach
645 646 647 648 |
# File 'lib/dommy/url.rb', line 645 def for_each(&block) @pairs.each { |k, v| block.call(v, k, self) } nil end |
#get(name) ⇒ Object
561 562 563 564 |
# File 'lib/dommy/url.rb', line 561 def get(name) pair = @pairs.find { |k, _| k == name.to_s } pair && pair[1] end |
#get_all(name) ⇒ Object Also known as: getAll
566 567 568 |
# File 'lib/dommy/url.rb', line 566 def get_all(name) @pairs.select { |k, _| k == name.to_s }.map { |_, v| v } end |
#has(name) ⇒ Object Also known as: has?
572 573 574 |
# File 'lib/dommy/url.rb', line 572 def has(name) @pairs.any? { |k, _| k == name.to_s } end |
#keys ⇒ Object
633 634 635 |
# File 'lib/dommy/url.rb', line 633 def keys @pairs.map { |k, _| k } end |
#set(name, value) ⇒ Object
578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 |
# File 'lib/dommy/url.rb', line 578 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
623 624 625 |
# File 'lib/dommy/url.rb', line 623 def size @pairs.length end |
#sort ⇒ Object
617 618 619 620 621 |
# File 'lib/dommy/url.rb', line 617 def sort @pairs.sort_by! { |k, _| k } notify nil end |
#to_s ⇒ Object
652 653 654 |
# File 'lib/dommy/url.rb', line 652 def to_s @pairs.map { |k, v| "#{encode(k)}=#{encode(v)}" }.join("&") end |
#values ⇒ Object
637 638 639 |
# File 'lib/dommy/url.rb', line 637 def values @pairs.map { |_, v| v } end |