wrap_it 0.1.5 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +17 -11
- data/.rspec +2 -0
- data/Gemfile +0 -3
- data/Gemfile.rails4 +5 -0
- data/Gemfile.sinatra +5 -0
- data/README.md +138 -24
- data/Rakefile +14 -1
- data/lib/wrap_it/base.rb +47 -20
- data/lib/wrap_it/callbacks.rb +10 -5
- data/lib/wrap_it/container.rb +91 -38
- data/lib/wrap_it/enums.rb +1 -1
- data/lib/wrap_it/frameworks.rb +24 -0
- data/lib/wrap_it/helpers.rb +74 -0
- data/lib/wrap_it/module_helpers.rb +23 -0
- data/lib/wrap_it/sections.rb +81 -0
- data/lib/wrap_it/switches.rb +11 -10
- data/lib/wrap_it/text_container.rb +6 -1
- data/lib/wrap_it/version.rb +1 -1
- data/lib/wrap_it.rb +9 -63
- data/log/development.log +174 -0
- data/sections_explained.md +70 -0
- data/spec/frameworks/log/development.log +1633 -0
- data/spec/frameworks/rails_app.rb +61 -0
- data/spec/frameworks/sinatra_app.rb +32 -0
- data/spec/{rails → integration}/base_spec.rb +7 -7
- data/spec/integration/container_spec.rb +92 -0
- data/spec/integration/examples_spec.rb +54 -0
- data/spec/integration/text_container_spec.rb +13 -0
- data/spec/lib/base_spec.rb +0 -6
- data/spec/lib/container_spec.rb +1 -6
- data/spec/lib/helpers_spec.rb +26 -0
- data/spec/lib/html_class_spec.rb +2 -2
- data/spec/lib/sections_spec.rb +72 -0
- data/spec/lib/text_container_spec.rb +19 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/support/example_groups/integration_example_group.rb +72 -0
- data/spec/support/example_groups/wrap_it_example_group.rb +6 -4
- data/wrap_it.gemspec +7 -4
- metadata +49 -25
- data/spec/internal/log/test.log +0 -619
- data/spec/rails/container_spec.rb +0 -30
- data/spec/support/example_groups/rails_example_group.rb +0 -79
data/lib/wrap_it/container.rb
CHANGED
@@ -4,56 +4,97 @@ module WrapIt
|
|
4
4
|
#
|
5
5
|
# @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
|
6
6
|
#
|
7
|
+
# TODO: single_child
|
7
8
|
class Container < Base
|
8
|
-
switch :deffered_render
|
9
|
+
switch :deffered_render do |_|
|
10
|
+
# avoid changing deffered_render after any child added
|
11
|
+
if @children.is_a?(Array)
|
12
|
+
@children.empty?
|
13
|
+
else
|
14
|
+
true
|
15
|
+
end
|
16
|
+
end
|
9
17
|
|
10
|
-
|
11
|
-
|
18
|
+
attr_reader :children
|
19
|
+
attr_writer :extract_children
|
20
|
+
section :children
|
21
|
+
|
22
|
+
def extract_children?
|
23
|
+
@extract_children == true
|
12
24
|
end
|
13
25
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
args.
|
20
|
-
|
26
|
+
after_initialize do
|
27
|
+
@children = []
|
28
|
+
self.class.extract_from_options.each do |option, name|
|
29
|
+
args = options.delete(option)
|
30
|
+
next if args.nil?
|
31
|
+
args = [args] unless args.is_a?(Array)
|
32
|
+
self.deffered_render = true
|
33
|
+
send(name, *args)
|
21
34
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
35
|
+
end
|
36
|
+
|
37
|
+
#
|
38
|
+
# Defines child elements helper for creation of child items.
|
39
|
+
#
|
40
|
+
# @return [String]
|
41
|
+
def self.child(name, *args, &block)
|
42
|
+
name.is_a?(String) && name.to_sym
|
43
|
+
name.is_a?(Symbol) || fail(ArgumentError, 'Wrong child name')
|
44
|
+
child_class =
|
45
|
+
if args.first.is_a?(String) || args.first.is_a?(Class)
|
46
|
+
args.shift
|
47
|
+
else
|
48
|
+
'WrapIt::Base'
|
34
49
|
end
|
50
|
+
child_class = child_class.name if child_class.is_a?(Class)
|
51
|
+
@helpers ||= []
|
52
|
+
@helpers << name
|
53
|
+
define_method name do |*helper_args, &helper_block|
|
54
|
+
# We should clone arguments becouse if we have loop in template,
|
55
|
+
# `extract_options!` below works only for first iterration
|
56
|
+
default_args = args.clone
|
57
|
+
options = helper_args.extract_options!
|
58
|
+
options[:helper_name] = name
|
59
|
+
options.merge!(default_args.extract_options!)
|
60
|
+
helper_args += default_args + [options]
|
61
|
+
add_children(name, child_class, block, *helper_args, &helper_block)
|
35
62
|
end
|
36
63
|
end
|
37
64
|
|
38
|
-
|
65
|
+
def self.extract_from_options(*args)
|
66
|
+
return @extract_from_options || [] if args.size == 0
|
67
|
+
hash = args.extract_options!
|
68
|
+
args.size.odd? && fail(ArgumentError, 'odd arguments number')
|
69
|
+
args.each_with_index { |arg, i| i.even? && hash[arg] = args[i + 1] }
|
70
|
+
@helpers ||= []
|
71
|
+
hash.symbolize_keys!
|
72
|
+
@extract_from_options = Hash[
|
73
|
+
hash.select do |k, v|
|
74
|
+
(v.is_a?(String) || v.is_a?(Symbol)) && @helpers.include?(k)
|
75
|
+
end.map { |k, v| [k, v.to_sym] }
|
76
|
+
]
|
77
|
+
end
|
39
78
|
|
40
79
|
after_capture do
|
41
80
|
if deffered_render?
|
42
|
-
html = Hash[
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
safe = html_safe?(@content)
|
47
|
-
@content = @content
|
81
|
+
html = Hash[children.map { |c| [c.object_id, capture { c.render }] }]
|
82
|
+
unless omit_content? || extract_children?
|
83
|
+
safe = html_safe?(self[:content])
|
84
|
+
self[:content] = self[:content]
|
48
85
|
.split(CONTENT_SPLIT_REGEXP)
|
49
86
|
.reduce(empty_html) do |a, e|
|
50
87
|
match = CONTENT_REPLACE_REGEXP.match(e)
|
51
|
-
safe
|
52
|
-
|
88
|
+
safe && e = html_safe(e)
|
89
|
+
str = match.nil? ? e : html.delete(match[:obj_id].to_i(16))
|
90
|
+
a << (str || empty_html)
|
53
91
|
end
|
54
92
|
end
|
55
|
-
|
56
|
-
|
93
|
+
# finally add all elements, not captured from markup
|
94
|
+
html.each do |id, str|
|
95
|
+
obj = ObjectSpace._id2ref(id)
|
96
|
+
obj.nil? || self[obj.render_to] << str
|
97
|
+
end
|
57
98
|
end
|
58
99
|
end
|
59
100
|
|
@@ -62,21 +103,33 @@ module WrapIt
|
|
62
103
|
CONTENT_SPLIT_REGEXP = /(<!-- WrapIt::Container\(\h+\) -->)/
|
63
104
|
CONTENT_REPLACE_REGEXP = /\A<!-- WrapIt::Container\((?<obj_id>\h+)\) -->\z/
|
64
105
|
|
65
|
-
def add_children(helper_class, class_block, *args, &helper_block)
|
106
|
+
def add_children(name, helper_class, class_block, *args, &helper_block)
|
107
|
+
options = args.extract_options!
|
108
|
+
section = options.delete(:section) || :children
|
109
|
+
args << options
|
66
110
|
item = Object
|
67
111
|
.const_get(helper_class)
|
68
112
|
.new(@template, *args, &helper_block)
|
113
|
+
item.instance_variable_set(:@render_to, section)
|
114
|
+
item.instance_variable_set(:@parent, self)
|
115
|
+
item.define_singleton_method(:render_to) { @render_to }
|
116
|
+
item.define_singleton_method(:render_to=) do |value|
|
117
|
+
self.class.sections.include?(value) && @render_to = value
|
118
|
+
end
|
119
|
+
item.define_singleton_method(:parent) { @parent }
|
69
120
|
class_block.nil? || instance_exec(item, &class_block)
|
70
121
|
|
71
|
-
|
72
|
-
|
73
|
-
|
122
|
+
deffered_render? && @children << item
|
123
|
+
if !deffered_render? && (omit_content? || extract_children?)
|
124
|
+
self[section] << capture { item.render }
|
125
|
+
end
|
126
|
+
if omit_content? || extract_children?
|
74
127
|
empty_html
|
75
128
|
else
|
76
129
|
if deffered_render?
|
77
130
|
html_safe("<!-- WrapIt::Container(#{item.object_id.to_s(16)}) -->")
|
78
131
|
else
|
79
|
-
item
|
132
|
+
item.render
|
80
133
|
end
|
81
134
|
end
|
82
135
|
end
|
data/lib/wrap_it/enums.rb
CHANGED
@@ -61,7 +61,7 @@ module WrapIt
|
|
61
61
|
# This method also adds getter and setter for this enum.
|
62
62
|
#
|
63
63
|
# @param name [String, Symbol] Enum name. Converted to `Symbol`.
|
64
|
-
# @param options
|
64
|
+
# @param options [Hash] Enum options
|
65
65
|
# @options options [String, Symbol] :html_class_prefix prefix of HTML
|
66
66
|
# class that will automatically added to element if enum changes its
|
67
67
|
# value.
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#
|
2
|
+
# Framework detection methods
|
3
|
+
#
|
4
|
+
module WrapIt
|
5
|
+
def self.framework
|
6
|
+
return @framework unless @framework.nil?
|
7
|
+
gems = Gem.loaded_specs.keys
|
8
|
+
if gems.include?('rails')
|
9
|
+
@framework = :rails
|
10
|
+
elsif gems.include?('sinatra')
|
11
|
+
@framework = :sinatra
|
12
|
+
else
|
13
|
+
@framework = :unknown
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.rails?
|
18
|
+
framework == :rails
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.sinatra?
|
22
|
+
framework == :sinatra
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#
|
2
|
+
# Helper registering
|
3
|
+
#
|
4
|
+
# @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
|
5
|
+
#
|
6
|
+
module WrapIt
|
7
|
+
def self.register_module(*args)
|
8
|
+
options = args.extract_options!
|
9
|
+
options.symbolize_keys!
|
10
|
+
options = {prefix: ''}.merge(options)
|
11
|
+
mod = args.shift
|
12
|
+
mod.is_a?(Module) || mod = Module.new
|
13
|
+
mod.instance_eval do
|
14
|
+
define_singleton_method(:register, &WrapIt.register_block(options))
|
15
|
+
define_singleton_method(:unregister, &WrapIt.unregister_block(options))
|
16
|
+
end
|
17
|
+
mod
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def self.register_block(options)
|
23
|
+
# Runs in helpers module class context
|
24
|
+
proc do |*args|
|
25
|
+
class_name = args.pop
|
26
|
+
class_name.is_a?(String) || class_name.is_a?(Class) || fail(
|
27
|
+
ArgumentError,
|
28
|
+
"Last argument for #{name}.register_helper should be a class name"
|
29
|
+
)
|
30
|
+
class_name.is_a?(Class) && class_name = class_name.name
|
31
|
+
helpers = instance_methods
|
32
|
+
args.each do |helper|
|
33
|
+
!helper.is_a?(Symbol) && fail(
|
34
|
+
ArgumentError,
|
35
|
+
"First arguments for WrapIt.register" \
|
36
|
+
" should be Symbols with helper names"
|
37
|
+
)
|
38
|
+
helpers.include?(helper) && fail(
|
39
|
+
ArgumentError, "Helper #{helper} for WrapIt.register allready exists"
|
40
|
+
)
|
41
|
+
define_method(
|
42
|
+
"#{options[:prefix]}#{helper}",
|
43
|
+
WrapIt.method_block(helper, class_name)
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.unregister_block(options)
|
50
|
+
# Runs in helpers module class context
|
51
|
+
proc do |*list|
|
52
|
+
helpers = instance_methods
|
53
|
+
list.each do |helper|
|
54
|
+
helper.is_a?(String) && helper = helper.to_sym
|
55
|
+
next unless helper.is_a?(Symbol)
|
56
|
+
helper_name = "#{options[:prefix]}#{helper}"
|
57
|
+
next unless helpers.include?(helper_name)
|
58
|
+
remove_method helper_name
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.method_block(name, class_name)
|
64
|
+
# Runs in helpers module context
|
65
|
+
proc do |*args, &block|
|
66
|
+
opts = args.extract_options!
|
67
|
+
opts[:helper_name] = name
|
68
|
+
args << opts
|
69
|
+
obj = Object.const_get(class_name).new(self, *args, &block)
|
70
|
+
obj.render
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module WrapIt
|
2
|
+
module ModuleHelpers
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def placement(name)
|
9
|
+
define_method(
|
10
|
+
"#{name}_placement", &ModuleHelpers.placement_block(name)
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def placement_block(name)
|
18
|
+
proc do |hash = {before: :content}|
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module WrapIt
|
2
|
+
#
|
3
|
+
# Adds sections functionality
|
4
|
+
#
|
5
|
+
# @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
|
6
|
+
#
|
7
|
+
module Sections
|
8
|
+
extend DerivedAttributes
|
9
|
+
|
10
|
+
def self.included(base)
|
11
|
+
base == Base || fail(
|
12
|
+
TypeError,
|
13
|
+
"#{self.class.name} can be included only into WrapIt::Base"
|
14
|
+
)
|
15
|
+
base.extend ClassMethods
|
16
|
+
end
|
17
|
+
|
18
|
+
def [](name)
|
19
|
+
@section_names ||= self.class.sections
|
20
|
+
return nil unless @section_names.include?(name)
|
21
|
+
@sections ||= {}
|
22
|
+
@sections[name] ||= empty_html
|
23
|
+
end
|
24
|
+
|
25
|
+
def []=(name, value)
|
26
|
+
@section_names ||= self.class.sections
|
27
|
+
return unless @section_names.include?(name)
|
28
|
+
@sections ||= {}
|
29
|
+
@sections[name] = value
|
30
|
+
end
|
31
|
+
|
32
|
+
#
|
33
|
+
# Class methods to include
|
34
|
+
#
|
35
|
+
module ClassMethods
|
36
|
+
def sections
|
37
|
+
collect_derived(:@sections)
|
38
|
+
end
|
39
|
+
|
40
|
+
def section(*args)
|
41
|
+
@sections ||= []
|
42
|
+
args.flatten.each do |name|
|
43
|
+
name.is_a?(String) && name = name.to_sym
|
44
|
+
next unless name.is_a?(Symbol)
|
45
|
+
next if (sections + [:begin, :end]).include?(name)
|
46
|
+
@sections << name
|
47
|
+
placement << name unless placement.include?(name)
|
48
|
+
place name, before: :end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def placement
|
53
|
+
@placement ||=
|
54
|
+
if self == Base
|
55
|
+
sections.clone
|
56
|
+
else
|
57
|
+
parent = ancestors[1..-1].find { |a| a.respond_to?(:placement) }
|
58
|
+
parent.nil? ? sections.clone : parent.placement.clone
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def place(src, at, dst = nil)
|
63
|
+
if dst == nil && at.is_a?(Hash) && at.keys.size == 1
|
64
|
+
dst = at.values[0]
|
65
|
+
at = at.keys[0]
|
66
|
+
end
|
67
|
+
return unless placement.include?(src) &&
|
68
|
+
(dst == :begin || dst == :end || placement.include?(dst)) &&
|
69
|
+
(at == :before || at == :after)
|
70
|
+
item = placement.delete_at(placement.index(src))
|
71
|
+
case dst
|
72
|
+
when :begin then placement.unshift(item)
|
73
|
+
when :end then placement.push(item)
|
74
|
+
else
|
75
|
+
x = at == :before ? 0 : 1
|
76
|
+
placement.insert(placement.index(dst) + x, item)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/lib/wrap_it/switches.rb
CHANGED
@@ -21,7 +21,6 @@ module WrapIt
|
|
21
21
|
def switches_init
|
22
22
|
@switches = {}
|
23
23
|
keys = switches.keys
|
24
|
-
# keys.each { |switch| @switches[switch] = false }
|
25
24
|
@options.keys.select { |o| keys.include?(o) }.each do |switch|
|
26
25
|
send("#{switches[switch][:name]}=", @options.delete(switch) == true)
|
27
26
|
end
|
@@ -58,7 +57,7 @@ module WrapIt
|
|
58
57
|
# on or removed in other case.
|
59
58
|
#
|
60
59
|
# @param name [String, Symbol] Switch name. Converted to `Symbol`.
|
61
|
-
# @param opts
|
60
|
+
# @param opts [Hash] Switch options
|
62
61
|
# @options opts [true, String, Symbol, Array<String, Symbol>] :html_class
|
63
62
|
# HTML classes list that will automatically added to element if switch
|
64
63
|
# is on or removed from element if switch id off.
|
@@ -66,7 +65,8 @@ module WrapIt
|
|
66
65
|
# Warning! Values are not converted - pass only `Symbols` here.
|
67
66
|
# @yield [state] Runs block when switch state changed, gives it to block.
|
68
67
|
# @yieldparam state [Boolean] Whether switch is on or off.
|
69
|
-
# @yieldreturn [
|
68
|
+
# @yieldreturn [Object, FalseClass] if you return `false`, value will
|
69
|
+
# ommited.
|
70
70
|
#
|
71
71
|
# @return [void]
|
72
72
|
def switch(name, options = {}, &block)
|
@@ -102,13 +102,14 @@ module WrapIt
|
|
102
102
|
def self.setter(name, &block)
|
103
103
|
proc do |value|
|
104
104
|
opts = switches[name]
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
105
|
+
cb_return = block.nil? || instance_exec(value == true, &block)
|
106
|
+
unless cb_return == false
|
107
|
+
@switches[name] = value == true
|
108
|
+
if value == true
|
109
|
+
opts.key?(:html_class) && add_html_class(*opts[:html_class])
|
110
|
+
else
|
111
|
+
opts.key?(:html_class) && remove_html_class(*opts[:html_class])
|
112
|
+
end
|
112
113
|
end
|
113
114
|
end
|
114
115
|
end
|
@@ -9,6 +9,9 @@ module WrapIt
|
|
9
9
|
base.class_eval do
|
10
10
|
default_tag 'p', false
|
11
11
|
|
12
|
+
section :body
|
13
|
+
place :body, :before, :content
|
14
|
+
|
12
15
|
after_initialize do
|
13
16
|
@body = @arguments.extract_first!(String) || empty_html
|
14
17
|
@body += @options[:body] || @options[:text] || empty_html
|
@@ -17,9 +20,11 @@ module WrapIt
|
|
17
20
|
end
|
18
21
|
|
19
22
|
after_capture do
|
20
|
-
|
23
|
+
self[:body] = html_safe(@body) unless @body.nil?
|
21
24
|
end
|
22
25
|
end
|
23
26
|
end
|
27
|
+
|
28
|
+
attr_accessor :body
|
24
29
|
end
|
25
30
|
end
|
data/lib/wrap_it/version.rb
CHANGED
data/lib/wrap_it.rb
CHANGED
@@ -1,76 +1,22 @@
|
|
1
|
-
require 'wrap_it/
|
1
|
+
require 'wrap_it/frameworks'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
module WrapIt
|
9
|
-
#
|
10
|
-
module Helpers; end
|
11
|
-
|
12
|
-
def self.helpers(*list)
|
13
|
-
@helpers ||= {}
|
14
|
-
options = list.extract_options!
|
15
|
-
list.empty? && list = @helpers.keys
|
16
|
-
prefix = options[:prefix].blank? ? '' : "#{options[:prefix]}_"
|
17
|
-
helpers_hash = @helpers
|
18
|
-
Helpers.module_eval do
|
19
|
-
list.each do |helper|
|
20
|
-
define_method "#{prefix}#{helper}" do |*args, &block|
|
21
|
-
opts = args.extract_options!
|
22
|
-
opts[:helper_name] = helper
|
23
|
-
args.push opts
|
24
|
-
obj = Object.const_get(helpers_hash[helper]).new(self, *args, &block)
|
25
|
-
obj.render
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
Helpers
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.register(*args)
|
33
|
-
class_name = args.pop
|
34
|
-
!class_name.is_a?(String) && fail(
|
35
|
-
ArgumentError,
|
36
|
-
"Last argument for #{name}.register_helper should be a class name"
|
37
|
-
)
|
38
|
-
@helpers ||= {}
|
39
|
-
args.each do |arg|
|
40
|
-
!arg.is_a?(Symbol) && fail(
|
41
|
-
ArgumentError,
|
42
|
-
"First arguments for #{name}.register_helper" \
|
43
|
-
" should be Symbols with helper names"
|
44
|
-
)
|
45
|
-
@helpers.key?(arg) && fail(
|
46
|
-
ArgumentError,
|
47
|
-
"Helper #{arg} for #{name}.register_helper allready exists"
|
48
|
-
)
|
49
|
-
@helpers[arg] = class_name
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.unregister(*helpers)
|
54
|
-
@helpers ||= {}
|
55
|
-
helpers.each do |helper|
|
56
|
-
helper.is_a?(String) && helper = helper.to_sym
|
57
|
-
next unless helper.is_a? Symbol
|
58
|
-
@helpers.delete(helper)
|
59
|
-
end
|
60
|
-
end
|
3
|
+
if WrapIt.rails?
|
4
|
+
require 'rails'
|
5
|
+
require 'wrap_it/rails'
|
6
|
+
else
|
7
|
+
require 'wrap_it/no_rails'
|
61
8
|
end
|
62
9
|
|
10
|
+
require 'wrap_it/helpers'
|
11
|
+
|
63
12
|
require 'wrap_it/derived_attributes'
|
64
13
|
require 'wrap_it/callbacks'
|
14
|
+
require 'wrap_it/sections'
|
65
15
|
require 'wrap_it/arguments_array'
|
66
16
|
require 'wrap_it/html_class'
|
67
17
|
require 'wrap_it/html_data'
|
68
18
|
require 'wrap_it/switches'
|
69
19
|
require 'wrap_it/enums'
|
70
|
-
if defined? Rails
|
71
|
-
require 'wrap_it/rails'
|
72
|
-
else
|
73
|
-
end
|
74
20
|
require 'wrap_it/base'
|
75
21
|
require 'wrap_it/container'
|
76
22
|
require 'wrap_it/text_container'
|