Skip to content

Commit

Permalink
moar scope_for...
Browse files Browse the repository at this point in the history
  • Loading branch information
ahoward committed Dec 16, 2013
1 parent d1d753e commit 431db5d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 33 deletions.
38 changes: 11 additions & 27 deletions lib/dao/form.rb
Expand Up @@ -154,7 +154,7 @@ def element(which, *args, &block)

def form(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

action = options.delete(:action) || './'
method = options.delete(:method) || 'post'
Expand All @@ -174,7 +174,7 @@ def form(*args, &block)

def label(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

block ||=
proc do
Expand All @@ -193,7 +193,7 @@ def label(*args, &block)

def input(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

type = options.delete(:type) || :text
name = options.delete(:name) || name_for(keys)
Expand All @@ -215,7 +215,7 @@ def input(*args, &block)

def submit(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

keys.push(:submit) if keys.empty?
name = options.delete(:name) || name_for(keys)
Expand All @@ -231,7 +231,7 @@ def submit(*args, &block)

def button(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

type = options.delete(:type) || :button
name = options.delete(:name) || name_for(keys)
Expand All @@ -251,7 +251,7 @@ def button(*args, &block)

def radio_button(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

type = options.delete(:type) || :radio
name = options.delete(:name) || name_for(keys)
Expand All @@ -276,7 +276,7 @@ def radio_button(*args, &block)

def checkbox(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

type = options.delete(:type) || :checkbox
name = options.delete(:name) || name_for(keys)
Expand Down Expand Up @@ -343,7 +343,7 @@ def reset(*args)

def textarea(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

name = options.delete(:name) || name_for(keys)
id = options.delete(:id) || id_for(keys)
Expand All @@ -364,7 +364,7 @@ def textarea(*args, &block)

def select(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

name = options.delete(:name) || name_for(keys)
values = options.delete(:values) || options.delete(:options) || options.delete(:from)
Expand Down Expand Up @@ -471,7 +471,7 @@ def select(*args, &block)

def upload(*args, &block)
options = args.extract_options!.to_options!
keys = args.flatten
keys = scoped_keys_for(args)

cache_key = keys + [:cache]
file_key = keys + [:file]
Expand All @@ -497,27 +497,19 @@ def upload(*args, &block)
# html generation support methods
#
def id_for(keys)
keys = scoped_key_for(keys)

id = [name, keys.join('-')].compact.join('_')
slug_for(id)
end

def errors_on(keys)
keys = scoped_key_for(keys)

errors.get(keys)
end

def errors_on?(*keys)
keys = scoped_key_for(keys)

!errors_on(keys).blank?
end

def class_for(keys, klass = nil)
keys = scoped_key_for(keys)

klass =
if errors_on?(keys)
[klass, 'dao', 'errors'].compact.join(' ')
Expand All @@ -528,8 +520,6 @@ def class_for(keys, klass = nil)
end

def error_for(keys, klass = nil)
keys = scoped_key_for(keys)

if errors_on?(keys)
title = Array(keys).join(' ').titleize
messages = Array(errors.get(keys)).join(', ')
Expand All @@ -538,8 +528,6 @@ def error_for(keys, klass = nil)
end

def value_for(map, keys)
keys = scoped_key_for(keys)

return nil unless map.has?(keys)

value = map.get(keys)
Expand Down Expand Up @@ -581,14 +569,10 @@ def Form.key_for(*keys)
end

def key_for(*keys)
keys = scoped_key_for(keys)

Form.key_for(name, *keys)
end

def name_for(*keys)
keys = scoped_key_for(keys)

Form.name_for(name, *keys)
end

Expand All @@ -612,7 +596,7 @@ def scope(*keys, &block)
end
end

def scoped_key_for(*keys)
def scoped_keys_for(*keys)
[scope, keys].flatten.compact
end

Expand Down
14 changes: 8 additions & 6 deletions test/form_test.rb
Expand Up @@ -15,14 +15,16 @@
testing 'scope_for' do
form = new_form()

assert{
assert{ form.name_for(:bar) == 'dao[form][bar]' }
assert do
form.scope_for(:foo) do
assert{ form.name_for(:bar) == 'dao[form][foo.bar]' }
html = form.input(:bar)

scmp(
html,
'<input type="text" name="dao[form][foo.bar]" value="" class="dao" id="form_foo-bar"/>'
)
end
assert{ form.name_for(:bar) == 'dao[form][bar]' }
true
}
end
end

testing 'Form#select' do
Expand Down

0 comments on commit 431db5d

Please sign in to comment.