card-mod-bootstrap 0.11.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/db/migrate_core_cards/20170719163733_update_bootswatch_themes_to_4_beta.rb +1 -2
- data/db/migrate_core_cards/20170726111053_add_bootstrap_mixins.rb +2 -2
- data/db/migrate_core_cards/20170726145012_select2.rb +2 -2
- data/db/migrate_core_cards/20180423160231_migrate_customized_bootstrap_skin.rb +1 -0
- data/db/migrate_core_cards/20180423170283_add_type_bootswatch_skin.rb +1 -0
- data/db/migrate_core_cards/20180425174433_delete_deprecated_skin_cards.rb +1 -0
- data/db/migrate_core_cards/20181129140917_fix_skin_images.rb +0 -1
- data/db/migrate_core_cards/data/20181108181219_migrate_classic_skins_to_bootstrap.rb +1 -0
- data/db/migrate_core_cards/lib/skin.rb +1 -1
- data/lib/card/bootstrap.rb +17 -0
- data/lib/card/bootstrap/basic_tags.rb +26 -0
- data/lib/card/bootstrap/component.rb +110 -0
- data/lib/card/bootstrap/component/carousel.rb +78 -0
- data/lib/card/bootstrap/component/form.rb +67 -0
- data/lib/card/bootstrap/component/horizontal_form.rb +65 -0
- data/lib/card/bootstrap/component/layout.rb +107 -0
- data/lib/card/bootstrap/component/panel.rb +11 -0
- data/lib/card/bootstrap/component_klass.rb +37 -0
- data/lib/card/bootstrap/component_loader.rb +30 -0
- data/lib/card/bootstrap/content.rb +42 -0
- data/lib/card/bootstrap/delegate.rb +18 -0
- data/lib/card/bootstrap/old_component.rb +108 -0
- data/lib/card/bootstrap/tag_method.rb +56 -0
- data/lib/card/bootstrapper.rb +17 -0
- data/lib/card/tab.rb +8 -1
- data/set/abstract/bootstrap_code_file.rb +0 -1
- data/set/abstract/bootswatch_theme.rb +1 -0
- data/set/abstract/bs_badge/tab_badge.haml +1 -1
- data/set/all/bootstrap/dropdown.rb +12 -4
- data/set/all/bootstrap/helper.rb +18 -11
- data/set/all/bootstrap/icon.rb +3 -1
- data/set/all/bootstrap/table.rb +1 -0
- data/set/all/bootstrap/wrapper.rb +2 -4
- data/set/self/bootstrap_core.rb +7 -8
- data/set/type/customized_bootswatch_skin.rb +11 -7
- data/set/type_plus_right/customized_bootswatch_skin/colors.rb +3 -2
- metadata +28 -27
- data/lib/bootstrap.rb +0 -16
- data/lib/bootstrap/basic_tags.rb +0 -26
- data/lib/bootstrap/component.rb +0 -139
- data/lib/bootstrap/component/carousel.rb +0 -68
- data/lib/bootstrap/component/form.rb +0 -65
- data/lib/bootstrap/component/horizontal_form.rb +0 -63
- data/lib/bootstrap/component/layout.rb +0 -95
- data/lib/bootstrap/component/panel.rb +0 -9
- data/lib/bootstrap/component_loader.rb +0 -28
- data/lib/bootstrap/content.rb +0 -40
- data/lib/bootstrap/delegate.rb +0 -16
- data/lib/bootstrap/old_component.rb +0 -103
- data/lib/bootstrap/tag_method.rb +0 -54
- data/lib/bootstrapper.rb +0 -16
@@ -57,19 +57,27 @@ format :html do
|
|
57
57
|
return unless item
|
58
58
|
|
59
59
|
if item.is_a? Array
|
60
|
-
|
60
|
+
formatted_dropdown_list_item item
|
61
61
|
else
|
62
|
-
|
62
|
+
simple_dropdown_list_item item, (active_test == active)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
def formatted_dropdown_list_item item
|
67
|
+
[dropdown_header(item.first), dropdown_array_list(item.second)]
|
68
|
+
end
|
69
|
+
|
70
|
+
def simple_dropdown_list_item item, active
|
71
|
+
"<li class='dropdown-item#{' active' if active}'>#{item}</li>"
|
72
|
+
end
|
73
|
+
|
66
74
|
def split_button_toggle
|
67
|
-
wrap_with
|
75
|
+
wrap_with :a,
|
68
76
|
href: "#",
|
69
77
|
class: "nav-link pl-0 dropdown-toggle dropdown-toggle-split",
|
70
78
|
"data-toggle" => "dropdown",
|
71
79
|
"aria-haspopup" => "true",
|
72
|
-
"aria-expanded" => "false"
|
80
|
+
"aria-expanded" => "false" do
|
73
81
|
'<span class="sr-only">Toggle Dropdown</span>'
|
74
82
|
end
|
75
83
|
end
|
data/set/all/bootstrap/helper.rb
CHANGED
@@ -23,21 +23,28 @@ format :html do
|
|
23
23
|
add_class options[:items], "list-group-item"
|
24
24
|
end
|
25
25
|
|
26
|
-
def list_tag content_or_options=nil, options={}
|
27
|
-
options = content_or_options
|
28
|
-
content = block_given? ? yield : content_or_options
|
29
|
-
content = Array(content)
|
26
|
+
def list_tag content_or_options=nil, options={}, &block
|
27
|
+
content, options = list_tag_content_and_options content_or_options, options, &block
|
30
28
|
default_item_options = options.delete(:items) || {}
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
wrap_with (options[:ordered] ? :ol : :ul), options do
|
30
|
+
list_items content, default_item_options
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def list_items content, default_item_options
|
35
|
+
content.map do |item|
|
36
|
+
i_content, i_opts = item
|
37
|
+
i_opts ||= default_item_options
|
38
|
+
wrap_with :li, i_content, i_opts
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
42
|
+
def list_tag_content_and_options content_or_options, options
|
43
|
+
options = content_or_options if block_given?
|
44
|
+
content = block_given? ? yield : content_or_options
|
45
|
+
[Array(content), options]
|
46
|
+
end
|
47
|
+
|
41
48
|
def badge_tag content, options={}
|
42
49
|
add_class options, "badge"
|
43
50
|
wrap_with :span, content, options
|
data/set/all/bootstrap/icon.rb
CHANGED
@@ -96,7 +96,9 @@ format :html do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def font_awesome_icon_tag icon, opts={}
|
99
|
-
|
99
|
+
|
100
|
+
prepend_class opts,
|
101
|
+
"fa#{'b' if opts.delete :brand} fa-#{icon_class(:font_awesome, icon)}"
|
100
102
|
wrap_with :i, "", opts
|
101
103
|
end
|
102
104
|
|
data/set/all/bootstrap/table.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
format :html do
|
2
2
|
def frame
|
3
|
-
class_up "d0-card-header"
|
3
|
+
class_up "d0-card-header", "card-header"
|
4
4
|
class_up "d0-card-body", "card-body card-text"
|
5
5
|
super
|
6
6
|
end
|
@@ -14,7 +14,5 @@ format :html do
|
|
14
14
|
super
|
15
15
|
end
|
16
16
|
|
17
|
-
def panel_state
|
18
|
-
end
|
17
|
+
def panel_state; end
|
19
18
|
end
|
20
|
-
|
data/set/self/bootstrap_core.rb
CHANGED
@@ -3,13 +3,12 @@ include_set Abstract::BootstrapCodeFile
|
|
3
3
|
def load_stylesheets
|
4
4
|
add_bs_stylesheet "variables"
|
5
5
|
add_bs_subdir "mixins"
|
6
|
-
%w[
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
%w[
|
7
|
+
print reboot type images code grid tables forms buttons transitions dropdown
|
8
|
+
button-group input-group custom-forms nav navbar card breadcrumb pagination badge
|
9
|
+
jumbotron alert progress media list-group close modal tooltip popover carousel
|
10
|
+
].each do |name|
|
11
|
+
add_bs_stylesheet name
|
12
|
+
end
|
12
13
|
add_bs_subdir "utilities"
|
13
14
|
end
|
14
|
-
|
15
|
-
|
@@ -37,13 +37,17 @@ def theme_codename
|
|
37
37
|
end
|
38
38
|
|
39
39
|
event :validate_theme_template, :validate, on: :create do
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
return unless (tname = theme_name) && (etype = theme_error_type)
|
41
|
+
|
42
|
+
errors.add :abort, t("bootstrap_#{etype}", theme_name: tname)
|
43
|
+
end
|
44
|
+
|
45
|
+
def theme_error_type
|
46
|
+
if Card.fetch_type_id(theme_card_name) != Card::BootswatchSkinID
|
47
|
+
:not_valid_theme
|
48
|
+
elsif !Dir.exist? source_dir
|
49
|
+
# puts method(:source_dir).source_location
|
50
|
+
:cannot_source_theme
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
@@ -27,11 +27,12 @@ end
|
|
27
27
|
|
28
28
|
def value_from_variables_card name
|
29
29
|
return unless (var_card = left.variables_card) && var_card.content.present?
|
30
|
+
|
30
31
|
value_from_scss name, var_card.content
|
31
32
|
end
|
32
33
|
|
33
34
|
def definition_regex name
|
34
|
-
/^(?<before>\s*\$#{name}
|
35
|
+
/^(?<before>\s*\$#{name}:\s*)(?<value>.+?)(?<after> !default;)$/
|
35
36
|
end
|
36
37
|
|
37
38
|
def default_value_from_bootstrap name
|
@@ -109,5 +110,5 @@ def replace_values group, prefix=""
|
|
109
110
|
end
|
110
111
|
|
111
112
|
def variable_values_from_params group
|
112
|
-
Env.params
|
113
|
+
Env.params[group]&.slice(*VARIABLE_NAMES[group]) || {}
|
113
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: card-mod-bootstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ethan McCutchen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-07-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: card
|
@@ -18,70 +18,70 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
21
|
+
version: 1.102.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 1.
|
28
|
+
version: 1.102.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: card-mod-edit
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - '='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.
|
35
|
+
version: 0.12.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - '='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.12.0
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: card-mod-bar_and_box
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - '='
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.
|
49
|
+
version: 0.12.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - '='
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
56
|
+
version: 0.12.0
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: card-mod-style
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - '='
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.
|
63
|
+
version: 0.12.0
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - '='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.
|
70
|
+
version: 0.12.0
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: card-mod-script
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - '='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.
|
77
|
+
version: 0.12.0
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - '='
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 0.
|
84
|
+
version: 0.12.0
|
85
85
|
description: ''
|
86
86
|
email:
|
87
87
|
- info@decko.org
|
@@ -226,20 +226,21 @@ files:
|
|
226
226
|
- file/yeti_skin_image/image-medium.png
|
227
227
|
- file/yeti_skin_image/image-original.png
|
228
228
|
- file/yeti_skin_image/image-small.png
|
229
|
-
- lib/bootstrap.rb
|
230
|
-
- lib/bootstrap/basic_tags.rb
|
231
|
-
- lib/bootstrap/component.rb
|
232
|
-
- lib/bootstrap/component/carousel.rb
|
233
|
-
- lib/bootstrap/component/form.rb
|
234
|
-
- lib/bootstrap/component/horizontal_form.rb
|
235
|
-
- lib/bootstrap/component/layout.rb
|
236
|
-
- lib/bootstrap/component/panel.rb
|
237
|
-
- lib/bootstrap/
|
238
|
-
- lib/bootstrap/
|
239
|
-
- lib/bootstrap/
|
240
|
-
- lib/bootstrap/
|
241
|
-
- lib/bootstrap/
|
242
|
-
- lib/
|
229
|
+
- lib/card/bootstrap.rb
|
230
|
+
- lib/card/bootstrap/basic_tags.rb
|
231
|
+
- lib/card/bootstrap/component.rb
|
232
|
+
- lib/card/bootstrap/component/carousel.rb
|
233
|
+
- lib/card/bootstrap/component/form.rb
|
234
|
+
- lib/card/bootstrap/component/horizontal_form.rb
|
235
|
+
- lib/card/bootstrap/component/layout.rb
|
236
|
+
- lib/card/bootstrap/component/panel.rb
|
237
|
+
- lib/card/bootstrap/component_klass.rb
|
238
|
+
- lib/card/bootstrap/component_loader.rb
|
239
|
+
- lib/card/bootstrap/content.rb
|
240
|
+
- lib/card/bootstrap/delegate.rb
|
241
|
+
- lib/card/bootstrap/old_component.rb
|
242
|
+
- lib/card/bootstrap/tag_method.rb
|
243
|
+
- lib/card/bootstrapper.rb
|
243
244
|
- lib/card/lazy_tab.rb
|
244
245
|
- lib/card/tab.rb
|
245
246
|
- lib/javascript/bootstrap_modal_decko.js
|
@@ -2993,7 +2994,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2993
2994
|
- !ruby/object:Gem::Version
|
2994
2995
|
version: '0'
|
2995
2996
|
requirements: []
|
2996
|
-
rubygems_version: 3.
|
2997
|
+
rubygems_version: 3.2.15
|
2997
2998
|
signing_key:
|
2998
2999
|
specification_version: 4
|
2999
3000
|
summary: Bootstrap
|
data/lib/bootstrap.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require "bootstrap/component_loader"
|
2
|
-
require "bootstrap/component"
|
3
|
-
|
4
|
-
class Bootstrap
|
5
|
-
include Delegate
|
6
|
-
extend ComponentLoader
|
7
|
-
load_components
|
8
|
-
|
9
|
-
def initialize context=nil
|
10
|
-
@context = context
|
11
|
-
end
|
12
|
-
|
13
|
-
def render *args, &block
|
14
|
-
instance_exec *args, &block
|
15
|
-
end
|
16
|
-
end
|
data/lib/bootstrap/basic_tags.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# require 'component'
|
2
|
-
|
3
|
-
class Bootstrap
|
4
|
-
module BasicTags
|
5
|
-
def html content
|
6
|
-
add_content String(content).html_safe
|
7
|
-
""
|
8
|
-
end
|
9
|
-
|
10
|
-
Component.def_div_method :div, nil do |opts, extra_args|
|
11
|
-
prepend_class opts, extra_args.first if extra_args.present?
|
12
|
-
opts
|
13
|
-
end
|
14
|
-
|
15
|
-
Component.def_div_method :span, nil do |opts, extra_args|
|
16
|
-
prepend_class opts, extra_args.first if extra_args.present?
|
17
|
-
opts
|
18
|
-
end
|
19
|
-
|
20
|
-
Component.def_tag_method :tag, nil, tag: :yield do |opts, extra_args|
|
21
|
-
prepend_class opts, extra_args[1] if extra_args[1].present?
|
22
|
-
opts[:tag] = extra_args[0]
|
23
|
-
opts
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/lib/bootstrap/component.rb
DELETED
@@ -1,139 +0,0 @@
|
|
1
|
-
class Bootstrap
|
2
|
-
# render components of bootstrap library
|
3
|
-
class Component
|
4
|
-
def initialize context, *args, &block
|
5
|
-
@context = context
|
6
|
-
@content = ["".html_safe]
|
7
|
-
@args = args
|
8
|
-
@child_args = []
|
9
|
-
@append = []
|
10
|
-
@wrap = []
|
11
|
-
@build_block = block
|
12
|
-
@html = Builder::XmlMarkup.new
|
13
|
-
end
|
14
|
-
|
15
|
-
class << self
|
16
|
-
def render format, *args, &block
|
17
|
-
new(format, *args, &block).render
|
18
|
-
end
|
19
|
-
|
20
|
-
# Like def_tag_method but always generates a div tag
|
21
|
-
# The tag option is not available
|
22
|
-
def def_div_method name, html_class, opts={}, &tag_block
|
23
|
-
def_tag_method name, html_class, opts.merge(tag: :div), &tag_block
|
24
|
-
end
|
25
|
-
|
26
|
-
# Defines a method that generates a html tag
|
27
|
-
# @param method_name [Symbol, String] the name of the method. If no :tag option in tag_opts is defined then the name is also the name of the tag that the method generates
|
28
|
-
# @param html_class [String] a html class that is added to tag. Use nil if you don't want a html_class
|
29
|
-
# @param tag_opts [Hash] additional argument that will be added to the tag
|
30
|
-
# @option tag_opts [Symbol, String] tag the name of the tag
|
31
|
-
# @example
|
32
|
-
# def_tag_method :link, "known-link", tag: :a, id: "uniq-link"
|
33
|
-
# link # => <a class="known-link" id="uniq-link"></a>
|
34
|
-
def def_tag_method method_name, html_class, tag_opts={}, &tag_opts_block
|
35
|
-
tag = tag_opts.delete(:tag) || method_name
|
36
|
-
return def_simple_tag_method method_name, tag, html_class, tag_opts unless block_given?
|
37
|
-
|
38
|
-
define_method method_name do |*args, &content_block|
|
39
|
-
content, opts, new_child_args = standardize_args args, &tag_opts_block
|
40
|
-
add_classes opts, html_class, tag_opts.delete(:optional_classes)
|
41
|
-
|
42
|
-
@html.tag! tag, opts do
|
43
|
-
instance_exec(&content_block)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def def_simple_tag_method method_name, tag, html_class, tag_opts={}
|
49
|
-
define_method method_name do |*args, &content_block|
|
50
|
-
@html.tag! tag, class: html_class do
|
51
|
-
instance_exec &content_block
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def render
|
58
|
-
@rendered = begin
|
59
|
-
render_content
|
60
|
-
# @content[-1]
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def prepend &block
|
65
|
-
tmp = @content.pop
|
66
|
-
instance_exec(&block)
|
67
|
-
@content << tmp
|
68
|
-
end
|
69
|
-
|
70
|
-
def insert &block
|
71
|
-
instance_exec(&block)
|
72
|
-
end
|
73
|
-
|
74
|
-
def append &block
|
75
|
-
@append[-1] << block
|
76
|
-
end
|
77
|
-
|
78
|
-
def wrap tag=nil, &block
|
79
|
-
@wrap[-1] << (block_given? ? block : tag)
|
80
|
-
end
|
81
|
-
|
82
|
-
private
|
83
|
-
|
84
|
-
def render_content
|
85
|
-
# if @build_block.arity > 0
|
86
|
-
instance_exec *@args, &@build_block
|
87
|
-
end
|
88
|
-
|
89
|
-
def generate_content content, processor, &block
|
90
|
-
content = instance_exec &block if block.present?
|
91
|
-
return content if !processor || !content.is_a?(Array)
|
92
|
-
content.each {|item| send processor, item}
|
93
|
-
""
|
94
|
-
end
|
95
|
-
|
96
|
-
def with_child_args args
|
97
|
-
@child_args << args if args.present?
|
98
|
-
yield.tap { @child_args.pop if args.present? }
|
99
|
-
end
|
100
|
-
|
101
|
-
def add_content content
|
102
|
-
@content[-1] << "\n#{content}".html_safe if content.present?
|
103
|
-
end
|
104
|
-
|
105
|
-
def standardize_args args, &block
|
106
|
-
opts = standardize_opts args
|
107
|
-
items = items_from_args args
|
108
|
-
opts, args = standardize_block_args opts, args, &block if block.present?
|
109
|
-
|
110
|
-
[items, opts, args]
|
111
|
-
end
|
112
|
-
|
113
|
-
def standardize_opts args
|
114
|
-
args.last.is_a?(Hash) ? args.pop : {}
|
115
|
-
end
|
116
|
-
|
117
|
-
def items_from_args args
|
118
|
-
((args.one? && args.last.is_a?(String)) || args.last.is_a?(Array)) && args.pop
|
119
|
-
end
|
120
|
-
|
121
|
-
def standardize_block_args opts, args, &block
|
122
|
-
instance_exec(opts, args, &block).tap do |s_opts, _s_args|
|
123
|
-
unless s_opts.is_a? Hash
|
124
|
-
raise Card::Error, "first return value of a tag block has to be a hash"
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def add_classes opts, html_class, optional_classes
|
130
|
-
prepend_class opts, html_class if html_class
|
131
|
-
Array.wrap(optional_classes).each do |k, v|
|
132
|
-
prepend_class opts, v if opts.delete k
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
include BasicTags
|
137
|
-
include Delegate
|
138
|
-
end
|
139
|
-
end
|