Class: Trav3::Options
- Inherits:
-
Object
- Object
- Trav3::Options
- Defined in:
- lib/trav3/options.rb
Overview
A url options builder class for outgoing requests.
Instance Method Summary collapse
-
#+(other) ⇒ Options
Add the values of one
Options
into another. -
#build(args = {}) ⇒ Options
Add or update url options.
-
#fetch(key) ⇒ String
Fetch the
key=value
. -
#fetch!(key, &block) ⇒ String
Fetch and remove
key=value
. -
#immutable {|Options| ... } ⇒ Object
Execute a block of code and restore original
Options
state afterwards. -
#initialize(args = {}) ⇒ Options
constructor
A new instance of Options.
-
#opts ⇒ String
url safe rendering of options for the url.
-
#remove(key) ⇒ String?
Remove key/value from options via key.
-
#reset! ⇒ Options
this purges all options.
-
#to_h ⇒ Hash
Hash of the
Options
. -
#to_s ⇒ String
url safe rendering of options for the url.
Constructor Details
#initialize(args = {}) ⇒ Options
Returns a new instance of Options
6 7 8 |
# File 'lib/trav3/options.rb', line 6 def initialize(args = {}) build(args) end |
Instance Method Details
#+(other) ⇒ Options
Add the values of one Options
into another
97 98 99 100 101 102 103 |
# File 'lib/trav3/options.rb', line 97 def +(other) raise TypeError, "Options type expected, #{other.class} given" unless other.is_a? Options update other.instance_variable_get(:@opts) self end |
#build(args = {}) ⇒ Options
Add or update url options
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/trav3/options.rb', line 24 def build(args = {}) @opts ||= [] args.each do |(key, value)| remove(key) @opts.push("#{key}=#{value}") end self end |
#fetch(key) ⇒ String
Fetch the key=value
39 40 41 42 43 44 45 46 47 |
# File 'lib/trav3/options.rb', line 39 def fetch(key) @opts.each do |item| return item if key.to_s == split.call(item).first end raise KeyError, "key not found #{key}" unless block_given? yield end |
#fetch!(key, &block) ⇒ String
Fetch and remove key=value
. Modifies Options
.
53 54 55 56 57 |
# File 'lib/trav3/options.rb', line 53 def fetch!(key, &block) result = fetch(key, &block) remove(key) result end |
#immutable {|Options| ... } ⇒ Object
Execute a block of code and restore original Options
state afterwards
61 62 63 64 65 66 |
# File 'lib/trav3/options.rb', line 61 def immutable old = @opts result = yield self @opts = old result end |
#opts ⇒ String
url safe rendering of options for the url
13 14 15 16 17 18 19 |
# File 'lib/trav3/options.rb', line 13 def opts if @opts.empty? '' else "?#{@opts.join('&')}" end end |
#remove(key) ⇒ String?
Remove key/value from options via key
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/trav3/options.rb', line 72 def remove(key) return_value = nil @opts = @opts.delete_if do |item| head, tail = split.call item return_value = tail if head == key.to_s end return_value end |
#reset! ⇒ Options
this purges all options
87 88 89 90 91 |
# File 'lib/trav3/options.rb', line 87 def reset! @opts = [] self end |
#to_h ⇒ Hash
Returns hash of the Options
111 112 113 |
# File 'lib/trav3/options.rb', line 111 def to_h @opts.map(&split).to_h end |
#to_s ⇒ String
url safe rendering of options for the url
106 107 108 |
# File 'lib/trav3/options.rb', line 106 def to_s opts end |