lib/wrap_it/base.rb in wrap_it-0.1.4 vs lib/wrap_it/base.rb in wrap_it-0.1.5
- old
+ new
@@ -36,19 +36,24 @@
attr_reader :options
def initialize(template, *args, &block)
@template, @arguments, @block = template, args, block
self.options = @arguments.extract_options!
+
+ @helper_name = @options.delete(:helper_name)
+ @helper_name.is_a?(String) && @helper_name = @helper_name.to_sym
+
@arguments.extend ArgumentsArray
add_default_classes
+
run_callbacks :initialize do
@tag = @options.delete(:tag) ||
self.class.get_derived(:@default_tag) || 'div'
- @helper_name = @options.delete(:helper_name)
- @helper_name.is_a?(String) && @helper_name = @helper_name.to_sym
+ @tag = @tag.to_s
end
- @argument = nil
+
+ @arguments = nil
end
def omit_content?
self.class.get_derived(:@omit_content)
end
@@ -122,22 +127,26 @@
wrapper_class = args.first.is_a?(Class) ? args.shift : Base
@wrapper = wrapper_class.new(@template, *args, &block)
end
end
+ def unwrap
+ @wrapper = nil
+ end
+
protected
#
# @dsl
# Defines default tag name for element. This tag can be changed soon.
# @param name [<Symbol, String>] Tag name. Converted to `String`.
#
# @return [void]
- def self.default_tag(name)
+ def self.default_tag(name, override = true)
name.is_a?(String) || name.is_a?(Symbol) ||
fail(ArgumentError, 'Tag name should be a String or Symbol')
- @default_tag = name.to_s
+ override ? @default_tag = name.to_s : @default_tag ||= name.to_s
end
def self.omit_content
@omit_content = true
end
@@ -164,10 +173,12 @@
end
end
def do_render
# cleanup options from empty values
- @options.select! { |k, v| !v.nil? && !v.empty? }
+ @options.select! do |k, v|
+ !v.nil? && (!v.respond_to?(:empty?) || !v.empty?)
+ end
run_callbacks :render do
@content = content_tag(tag, @content, options)
end
end