module Cocoon::ViewHelpers

def link_to_add_association(*args, &block)

def link_to_add_association(*args, &block)
  if block_given?
    link_to_add_association(capture(&block), *args)
  elsif args.first.respond_to?(:object)
    association = args.second
    name = I18n.translate("cocoon.#{association}.add", default: I18n.translate('cocoon.defaults.add'))
    link_to_add_association(name, *args)
  else
    name, f, association, html_options = *args
    html_options ||= {}
    render_options   = html_options.delete(:render_options)
    render_options ||= {}
    override_partial = html_options.delete(:partial)
    wrap_object = html_options.delete(:wrap_object)
    force_non_association_create = html_options.delete(:force_non_association_create) || false
    form_parameter_name = html_options.delete(:form_name) || 'f'
    count = html_options.delete(:count).to_i
    html_options[:class] = [html_options[:class], "add_fields"].compact.join(' ')
    html_options[:'data-association'] = association.to_s.singularize
    html_options[:'data-associations'] = association.to_s.pluralize
    new_object = create_object(f, association, force_non_association_create)
    new_object = wrap_object.call(new_object) if wrap_object.respond_to?(:call)
    html_options[:'data-association-insertion-template'] = CGI.escapeHTML(render_association(association, f, new_object, form_parameter_name, render_options, override_partial).to_str).html_safe
    html_options[:'data-count'] = count if count > 0
    link_to(name, '#', html_options)
  end
end