diff --git a/lib/localized_language_select.rb b/lib/localized_language_select.rb index 3231853..96ccdf4 100644 --- a/lib/localized_language_select.rb +++ b/lib/localized_language_select.rb @@ -65,8 +65,15 @@ module FormOptionsHelper # Language codes listed as an array of symbols in +priority_languages+ argument will be listed first # TODO : Implement pseudo-named args with a hash, not the "somebody said PHP?" multiple args sillines def localized_language_select(object, method, priority_languages = nil, options = {}, html_options = {}) - InstanceTag.new(object, method, self, options.delete(:object)). - to_localized_language_select_tag(priority_languages, options, html_options) + tag = if defined?(ActionView::Helpers::InstanceTag) && + ActionView::Helpers::InstanceTag.instance_method(:initialize).arity != 0 + + InstanceTag.new(object, method, self, options.delete(:object)) + else + LanguageSelect.new(object, method, self, options) + end + + tag.to_localized_language_select_tag(priority_languages, options, html_options) end # Return "named" select and option tags according to given arguments. @@ -93,20 +100,33 @@ def localized_language_options_for_select(selected = nil, priority_languages = n end - class InstanceTag + module ToLanguageSelectTag def to_localized_language_select_tag(priority_languages, options, html_options) html_options = html_options.stringify_keys add_default_name_and_id(html_options) value = value(object) content_tag("select", - add_options( + raw(add_options( localized_language_options_for_select(value, priority_languages, options), options, value - ), html_options + )), html_options ) end end - + + if defined?(ActionView::Helpers::InstanceTag) && + ActionView::Helpers::InstanceTag.instance_method(:initialize).arity != 0 + class InstanceTag + include ActionView::Helpers::OutputSafetyHelper + include ToLanguageSelectTag + end + else + class LanguageSelect < Tags::Base + include ActionView::Helpers::OutputSafetyHelper + include ToLanguageSelectTag + end + end + class FormBuilder def localized_language_select(method, priority_languages = nil, options = {}, html_options = {}) @template.localized_language_select(@object_name, method, priority_languages, options.merge(:object => @object), html_options) diff --git a/localized_language_select.gemspec b/localized_language_select.gemspec index a3052a5..bd4e079 100644 --- a/localized_language_select.gemspec +++ b/localized_language_select.gemspec @@ -61,14 +61,12 @@ Gem::Specification.new do |s| s.add_development_dependency(%q, ["~> 1.0.0"]) s.add_development_dependency(%q, ["~> 1.5.2"]) s.add_development_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, [">= 2.3.5"]) else s.add_dependency(%q, [">= 2.3.5"]) s.add_dependency(%q, [">= 2.3.0"]) s.add_dependency(%q, ["~> 1.0.0"]) s.add_dependency(%q, ["~> 1.5.2"]) s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 2.3.5"]) end else s.add_dependency(%q, [">= 2.3.5"]) @@ -76,7 +74,6 @@ Gem::Specification.new do |s| s.add_dependency(%q, ["~> 1.0.0"]) s.add_dependency(%q, ["~> 1.5.2"]) s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 2.3.5"]) end end