From da5e1d82be87c744bcc388b4e74a74d0f8f0c75d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 4 Sep 2011 11:12:16 +0200 Subject: [PATCH] Remove deprecated stuff and raise an exception if any of the old methods are used. Point to the wiki page with update instructions. --- lib/simple_form.rb | 98 +++++-------------------------- test/form_builder/wrapper_test.rb | 31 ---------- test/support/misc_helpers.rb | 11 ---- 3 files changed, 14 insertions(+), 126 deletions(-) diff --git a/lib/simple_form.rb b/lib/simple_form.rb index f7dbd3f8..739117b5 100644 --- a/lib/simple_form.rb +++ b/lib/simple_form.rb @@ -110,10 +110,24 @@ module SimpleForm mattr_accessor :cache_discovery @@cache_discovery = !Rails.env.development? + ## DEPRECATED METHODS + + DEPRECATED = %w(hint_tag= hint_class= error_tag= error_class= wrapper_tag= wrapper_class= wrapper_error_class= components=) + @@deprecated = false + + DEPRECATED.each do |method| + class_eval "def #{method}; @@deprecated = true; end" + end + # Default way to setup SimpleForm. Run rails generate simple_form:install # to create a fresh initializer with all configuration values. def self.setup yield self + + if @@deprecated + raise "[SIMPLE FORM] Your simple form initializer file is using an outdated configuration API. " << + "Updating to the new API is easy and fast. Check for more info here: https://github.com/plataformatec/simple_form/wiki/Upgrading-to-Simple-Form-2.0" + end end # Builds a new wrapper using SimpleForm::Wrappers::Builder. @@ -135,88 +149,4 @@ module SimpleForm b.use :hint, :tag => :span, :class => :hint b.use :error, :tag => :span, :class => :error end - - ## DEPRECATED METHODS SINCE 2.0 - - # DEPRECATED. Default tag used on hints. - mattr_accessor :hint_tag - @@hint_tag = :span - - # DEPRECATED. CSS class to add to all hint tags. - mattr_accessor :hint_class - @@hint_class = :hint - - # DEPRECATED. Default tag used on errors. - mattr_accessor :error_tag - @@error_tag = :span - - # DEPRECATED. CSS class to add to all error tags. - mattr_accessor :error_class - @@error_class = :error - - # DEPRECATED. You can wrap all inputs in a pre-defined tag. Default is a div. - mattr_accessor :wrapper_tag - @@wrapper_tag = :div - - # DEPRECATED. You can define the class to use on all wrappers. Default is input. - mattr_accessor :wrapper_class - @@wrapper_class = :input - - # DEPRECATED. You can define the class to add to the wrapper when the field has errors. Default is field_with_errors. - mattr_accessor :wrapper_error_class - @@wrapper_error_class = :field_with_errors - - # DEPRECATED. Define components using an array. - def self.components=(array) - ActiveSupport::Deprecation.warn <<-TEXT -Setting config.components= in SimpleForm is deprecated. SimpleForm 2.0 ships with a new components syntax which is more flexible and powerful. If your components were defined as: - - config.components = [ :placeholder, :maxlength, :label_input, :hint, :error ] - -They can now be defined as: - - config.components :tag => :div, :class => :input, - :error_class => :field_with_errors do |b| - b.use :placeholder - b.use :maxlength - b.use :label_input - b.use :hint, :tag => :span, :class => :hint - b.use :error, :tag => :span, :class => :error - end - -The new components syntax also allows custom wrappers: - - config.components do |b| - b.use :placeholder - b.use :maxlength - b.use :label_input - b.use :tag => :div, :class => "separator" do |ba| - ba.use :hint, :tag => :span, :class => :hint - ba.use :error, :tag => :span, :class => :error - end - end - -The following methods are also deprecated: wrapper_tag, wrapper_class, wrapper_error_class, error_tag, error_class, hint_tag and hint_class. -TEXT - - self.deprecated_components = array - end - - def self.deprecated_components=(array) #:nodoc: - self.wrapper = Wrappers::Root.new( - array.map do |item| - case item - when :error - Wrappers::Single.new(:error, :tag => SimpleForm.error_tag, :class => SimpleForm.error_class) - when :hint - Wrappers::Single.new(:hint, :tag => SimpleForm.hint_tag, :class => SimpleForm.hint_class) - else - item - end - end, - :tag => SimpleForm.wrapper_tag, - :class => SimpleForm.wrapper_class, - :error_class => SimpleForm.wrapper_error_class - ) - end end \ No newline at end of file diff --git a/test/form_builder/wrapper_test.rb b/test/form_builder/wrapper_test.rb index 895b21c4..79720708 100644 --- a/test/form_builder/wrapper_test.rb +++ b/test/form_builder/wrapper_test.rb @@ -16,37 +16,6 @@ class WrapperTest < ActionView::TestCase assert_select 'div.field_with_errors' end - test 'wrapper should support wrapping around an specific tag' do - swap! SimpleForm, :wrapper_tag => :p do - with_form_for @user, :name - assert_select 'form p label[for=user_name]' - assert_select 'form p input#user_name.string' - end - end - - test 'wrapper should add chosen error class for attribute with errors' do - swap! SimpleForm, :wrapper_error_class => "omgError" do - with_form_for @user, :name - assert_select 'div.omgError' - end - end - - test 'wrapper should add chosen wrapper class' do - swap! SimpleForm, :wrapper_class => "wrapper" do - with_form_for @user, :active - assert_select 'div.wrapper' - assert_no_select 'div.input' - - with_form_for @user, :name - assert_select 'div.wrapper' - assert_no_select 'div.input' - - with_form_for :project, :name - assert_select 'div.wrapper' - assert_no_select 'div.input' - end - end - test 'wrapper should not have disabled class by default' do with_form_for @user, :active assert_no_select 'div.disabled' diff --git a/test/support/misc_helpers.rb b/test/support/misc_helpers.rb index 213674f0..60493754 100644 --- a/test/support/misc_helpers.rb +++ b/test/support/misc_helpers.rb @@ -38,17 +38,6 @@ module MiscHelpers end end - # Temporary hack to deal with components. - # TODO: Remove this and tests that uses this once we remove components - def swap!(*args) - swap(*args) do - SimpleForm.deprecated_components = [ :placeholder, :label_input, :hint, :error ] - yield - end - ensure - SimpleForm.deprecated_components = [ :placeholder, :label_input, :hint, :error ] - end - def custom_form_for(object, *args, &block) simple_form_for(object, *(args << { :builder => CustomFormBuilder }), &block) end