Class: Dommy::FormData
- Inherits:
-
Object
- Object
- Dommy::FormData
- Includes:
- Enumerable
- Defined in:
- lib/dommy/form_data.rb
Overview
‘FormData` — collects name/value entries from an `<form>` (or programmatically), preserving insertion order. Values are stringified per spec; `File` values are passed through as-is (Dommy has no File class, so this only matters for embedders that supply their own).
Usage:
fd = Dommy::FormData.new(form)
fd.get("email") # "alice@x.test"
fd.append("tag", "ruby")
fd.entries # [["email", "..."], ["tag", "ruby"]]
Instance Method Summary collapse
- #__js_call__(method, args) ⇒ Object
- #__js_get__(key) ⇒ Object
- #append(name, value, _filename = nil) ⇒ Object
- #delete(name) ⇒ 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(form = nil) ⇒ FormData
constructor
A new instance of FormData.
- #keys ⇒ Object
- #set(name, value, _filename = nil) ⇒ Object
- #size ⇒ Object (also: #length)
- #to_s ⇒ Object
- #values ⇒ Object
Constructor Details
#initialize(form = nil) ⇒ FormData
Returns a new instance of FormData.
18 19 20 21 |
# File 'lib/dommy/form_data.rb', line 18 def initialize(form = nil) @pairs = [] collect_from(form) if form end |
Instance Method Details
#__js_call__(method, args) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/dommy/form_data.rb', line 111 def __js_call__(method, args) case method when "append" append(args[0], args[1], args[2]) when "set" set(args[0], args[1], args[2]) when "get" get(args[0]) when "getAll" get_all(args[0]) when "has" has(args[0]) when "delete" delete(args[0]) when "keys" keys when "values" values when "entries" entries when "forEach" for_each(&args[0]) end end |
#__js_get__(key) ⇒ Object
104 105 106 107 108 109 |
# File 'lib/dommy/form_data.rb', line 104 def __js_get__(key) case key when "size", "length" size end end |
#append(name, value, _filename = nil) ⇒ Object
23 24 25 26 |
# File 'lib/dommy/form_data.rb', line 23 def append(name, value, _filename = nil) @pairs << [name.to_s, stringify(value)] nil end |
#delete(name) ⇒ Object
66 67 68 69 |
# File 'lib/dommy/form_data.rb', line 66 def delete(name) @pairs.reject! { |k, _| k == name.to_s } nil end |
#each(&block) ⇒ Object
90 91 92 |
# File 'lib/dommy/form_data.rb', line 90 def each(&block) @pairs.each(&block) end |
#entries ⇒ Object
79 80 81 |
# File 'lib/dommy/form_data.rb', line 79 def entries @pairs.dup end |
#for_each(&block) ⇒ Object Also known as: forEach
83 84 85 86 |
# File 'lib/dommy/form_data.rb', line 83 def for_each(&block) @pairs.each { |k, v| block.call(v, k, self) } nil end |
#get(name) ⇒ Object
49 50 51 52 |
# File 'lib/dommy/form_data.rb', line 49 def get(name) pair = @pairs.find { |k, _| k == name.to_s } pair && pair[1] end |
#get_all(name) ⇒ Object Also known as: getAll
54 55 56 |
# File 'lib/dommy/form_data.rb', line 54 def get_all(name) @pairs.select { |k, _| k == name.to_s }.map { |_, v| v } end |
#has(name) ⇒ Object Also known as: has?
60 61 62 |
# File 'lib/dommy/form_data.rb', line 60 def has(name) @pairs.any? { |k, _| k == name.to_s } end |
#keys ⇒ Object
71 72 73 |
# File 'lib/dommy/form_data.rb', line 71 def keys @pairs.map { |k, _| k } end |
#set(name, value, _filename = nil) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/dommy/form_data.rb', line 28 def set(name, value, _filename = nil) key = name.to_s v = stringify(value) replaced = false @pairs = @pairs.flat_map do |k, existing| if k == key if replaced [] else replaced = true [[key, v]] end else [[k, existing]] end end @pairs << [key, v] unless replaced nil end |
#size ⇒ Object Also known as: length
94 95 96 |
# File 'lib/dommy/form_data.rb', line 94 def size @pairs.length end |
#to_s ⇒ Object
100 101 102 |
# File 'lib/dommy/form_data.rb', line 100 def to_s @pairs.map { |k, v| "#{k}=#{v}" }.join("&") end |
#values ⇒ Object
75 76 77 |
# File 'lib/dommy/form_data.rb', line 75 def values @pairs.map { |_, v| v } end |