card 1.95.3 → 1.96.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/card.rb +10 -2
- data/lib/card/migration/import.rb +1 -1
- data/lib/card/set.rb +1 -1
- data/lib/card/set/event.rb +63 -65
- data/lib/card/set/event/callbacks.rb +21 -0
- data/lib/card/set/event/delayed_event.rb +11 -16
- data/lib/card/set/event/options.rb +78 -0
- data/lib/card/set/format.rb +5 -93
- data/lib/card/set/format/abstract_format.rb +104 -0
- data/mod/Modfile +1 -0
- data/mod/basic_formats/set/all/all_csv.rb +1 -1
- data/mod/basic_formats/set/all/json.rb +61 -4
- data/mod/basic_formats/spec/set/all/json_spec.rb +51 -1
- data/mod/basic_formats/spec/shared_context/json_shared_context.rb +40 -0
- data/mod/bootstrap/lib/stylesheets/style_bootstrap_cards.scss +17 -1
- data/mod/bootstrap/set/abstract/bootswatch_theme.rb +2 -12
- data/mod/bootstrap/set/abstract/bootswatch_theme/html_views.rb +31 -0
- data/mod/bootstrap/set/type/customized_bootswatch_skin.rb +12 -0
- data/mod/bootstrap/set/type/customized_bootswatch_skin/core.haml +5 -0
- data/mod/bootstrap/set/type/customized_bootswatch_skin/html_views.rb +36 -0
- data/mod/bootstrap/set/type_plus_right/customized_bootswatch_skin/colors.rb +14 -10
- data/mod/bootstrap/set/type_plus_right/customized_bootswatch_skin/colors/_colorpicker.haml +1 -1
- data/mod/bootstrap/set/type_plus_right/customized_bootswatch_skin/colors/editor.haml +13 -9
- data/mod/core/chunk/link.rb +8 -0
- data/mod/core/set/abstract/code_file.rb +5 -0
- data/mod/core/set/all/chunk.rb +46 -24
- data/mod/core/set/all/event_conditions.rb +32 -11
- data/mod/core/set/all/export.rb +3 -5
- data/mod/core/set/all/item.rb +16 -0
- data/mod/core/set/all/name.rb +1 -0
- data/mod/core/set/all/references.rb +25 -16
- data/mod/core/set/all/rename.rb +20 -21
- data/mod/core/set/all/trash.rb +13 -4
- data/mod/core/spec/set/all/actify_spec.rb +4 -4
- data/mod/core/spec/set/all/event_conditions_spec.rb +68 -10
- data/mod/core/spec/set/all/export_spec.rb +7 -4
- data/mod/core/spec/set/all/references_spec.rb +38 -1
- data/mod/core/spec/set/all/rename_spec.rb +15 -9
- data/mod/follow/spec/set/right/followers_spec.rb +1 -1
- data/mod/follow/spec/set/right/following_spec.rb +4 -8
- data/mod/follow/spec/set/type/notification_template_spec.rb +1 -1
- data/mod/history/set/all/act_view.rb +2 -2
- data/mod/item/set/all/bar.haml +12 -0
- data/mod/item/set/all/bar.rb +77 -0
- data/mod/item/set/all/box.haml +10 -0
- data/mod/item/set/all/box.rb +8 -0
- data/mod/item/set/all/expanded_bar.haml +10 -0
- data/mod/machines/file/all_script_machine_output/file.js +30622 -66
- data/mod/machines/file/all_style_machine_output/file.css +3 -3
- data/mod/machines/file/script_html5shiv_printshiv_machine_output/file.js +1 -1
- data/mod/machines/lib/javascript/decko_slot.js.coffee +18 -13
- data/mod/machines/set/abstract/skin_box.rb +34 -0
- data/mod/machines/set/abstract/skin_box/box_bottom.haml +4 -0
- data/mod/machines/set/type/skin.rb +1 -1
- data/mod/pointer/set/abstract/01_paging.rb +49 -4
- data/mod/pointer/set/abstract/01_paging/paging_links.rb +6 -6
- data/mod/pointer/set/abstract/02_pointer/html_views.rb +10 -0
- data/mod/pointer/set/abstract/02_pointer/other_views.rb +9 -5
- data/mod/pointer/spec/set/abstract/pointer/html_views_spec.rb +4 -10
- data/mod/pointer/spec/set/abstract/pointer/other_views_spec.rb +20 -1
- data/mod/search/set/abstract/01_filter_form_helper.rb +4 -4
- data/mod/search/set/abstract/02_search_params.rb +1 -1
- data/mod/search/set/abstract/03_filter.rb +8 -0
- data/mod/search/set/abstract/search.rb +10 -0
- data/mod/settings/set/right/style.rb +13 -0
- data/mod/settings/set/right/style/editor.haml +4 -4
- data/mod/standard/set/all/path.rb +6 -0
- data/mod/standard/set/type/list.rb +3 -2
- data/mod/standard/set/type/listed_by.rb +5 -1
- data/mod/standard/spec/content/chunk/include_spec.rb +2 -2
- data/mod/standard/spec/set/all/rich_html/editing_spec.rb +4 -69
- data/mod/standard/spec/set/type/listed_by_spec.rb +2 -2
- data/mod/standard/spec/set/type/search_type_spec.rb +56 -0
- data/mod/standard/spec/set/type/set/html_views_spec.rb +5 -9
- data/mod/utility/set/abstract/bs_badge.rb +21 -0
- data/mod/utility/set/abstract/bs_badge/bs_badge.haml +5 -0
- data/mod/utility/set/abstract/bs_badge/labeled_badge.haml +5 -0
- data/mod/utility/set/abstract/bs_badge/tab_badge.haml +5 -0
- data/mod/utility/set/abstract/media.rb +27 -0
- data/mod/utility/set/abstract/media/media_snippet.haml +9 -0
- metadata +28 -10
- data/mod/machines/set/abstract/skin_thumbnail.rb +0 -28
- data/mod/machines/set/abstract/skin_thumbnail/thumbnail.haml +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a73062a82222809672762110ca1f6892dcf22cd7
|
4
|
+
data.tar.gz: 5315e20f640bd0efa37e00c3f2551b18a2856160
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03f59ad4c0428b43d47e2c81c202e630293000057e53648a702fff25401e2791d497895fe17e71ca9600b5a4d7c5182da361ef19aa9fbe0b75595be7566cc9b1
|
7
|
+
data.tar.gz: f9c7550d1c9ea23c1f3447bcc2c1611afe434d4bd92e778410827fc07aeb73ab2b89cf0ac3091e14905d267454fec508c14166e06ec8fda8de7fb98630b2e66b
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/card.rb
CHANGED
@@ -141,11 +141,19 @@ class Card < ApplicationRecord
|
|
141
141
|
:silent_change, # and this probably too
|
142
142
|
# :remove_rule_stash,
|
143
143
|
:last_action_id_before_edit,
|
144
|
-
:only_storage_phase,
|
144
|
+
:only_storage_phase, # used to save subcards
|
145
145
|
:changed_attributes,
|
146
|
-
:
|
146
|
+
:skip, # skip event(s) for all cards in act
|
147
|
+
:skip_in_action, # skip event for just this card
|
148
|
+
:trigger, # trigger event(s) for all cards in act
|
149
|
+
:trigger_in_action # trigger event for just this card
|
147
150
|
)
|
148
151
|
|
152
|
+
alias_method :skip_event, :skip
|
153
|
+
alias_method :skip_event_in_action, :skip_in_action
|
154
|
+
alias_method :trigger_event, :trigger
|
155
|
+
alias_method :trigger_event_in_action, :trigger_in_action
|
156
|
+
|
149
157
|
def serializable_attributes
|
150
158
|
self.class.serializable_attributes + set_specific.keys
|
151
159
|
end
|
data/lib/card/set.rb
CHANGED
data/lib/card/set/event.rb
CHANGED
@@ -8,99 +8,97 @@ class Card
|
|
8
8
|
# * __integration__ deals with any ramifications of those changes
|
9
9
|
#
|
10
10
|
#
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
Card.define_callbacks event
|
17
|
-
define_event event, opts, &final
|
18
|
-
set_event_callbacks event, opts
|
11
|
+
class Event
|
12
|
+
module Api
|
13
|
+
def event event, stage_or_opts={}, opts={}, &final
|
14
|
+
Event.new(event, stage_or_opts, opts, self, &final).register
|
15
|
+
end
|
19
16
|
end
|
20
17
|
|
21
|
-
|
18
|
+
CONDITION_OPTIONS = {
|
19
|
+
on: %i[create update delete save read],
|
20
|
+
changed: %i[name content db_content type type_id codename key],
|
21
|
+
skip: :allowed,
|
22
|
+
trigger: :required, # the event is only executed if triggered explicitly with
|
23
|
+
# trigger: [event_name]
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
CONDITIONS = ::Set.new(%i[on changed when skip trigger]).freeze
|
22
27
|
|
23
|
-
|
28
|
+
include DelayedEvent
|
29
|
+
include Options
|
30
|
+
include Callbacks
|
24
31
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
32
|
+
attr_reader :set_module, :opts
|
33
|
+
|
34
|
+
def initialize event, stage_or_opts, opts, set_module, &final
|
35
|
+
@event = event
|
36
|
+
@set_module = set_module
|
37
|
+
@opts = event_opts stage_or_opts, opts
|
38
|
+
@event_block = final
|
30
39
|
end
|
31
40
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
opts
|
41
|
+
def register
|
42
|
+
validate_conditions
|
43
|
+
Card.define_callbacks @event
|
44
|
+
define_event
|
45
|
+
set_event_callbacks
|
39
46
|
end
|
40
47
|
|
41
|
-
|
42
|
-
|
48
|
+
# @return the name of the event
|
49
|
+
def name
|
50
|
+
@event
|
43
51
|
end
|
44
52
|
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
53
|
+
def block
|
54
|
+
@event_block
|
55
|
+
end
|
56
|
+
|
57
|
+
# the name for the method that only executes the code
|
58
|
+
# defined in the event
|
59
|
+
def simple_method_name
|
60
|
+
"#{@event}_without_callbacks"
|
51
61
|
end
|
52
62
|
|
53
|
-
|
54
|
-
|
55
|
-
|
63
|
+
# the name for the method that adds the event to
|
64
|
+
# the delayed job queue
|
65
|
+
def delaying_method_name
|
66
|
+
"#{@event}_with_delay"
|
56
67
|
end
|
57
68
|
|
69
|
+
private
|
70
|
+
|
58
71
|
# EVENT DEFINITION
|
59
72
|
|
60
|
-
def define_event
|
61
|
-
|
62
|
-
|
63
|
-
define_event_method event, simple_method_name, opts
|
73
|
+
def define_event
|
74
|
+
define_simple_method
|
75
|
+
define_event_method
|
64
76
|
end
|
65
77
|
|
66
|
-
def define_simple_method
|
67
|
-
|
68
|
-
define_method
|
78
|
+
def define_simple_method
|
79
|
+
@set_module.class_exec(self) do |event|
|
80
|
+
define_method event.simple_method_name, &event.block
|
69
81
|
end
|
70
82
|
end
|
71
83
|
|
72
|
-
def define_event_method
|
73
|
-
event_type
|
74
|
-
|
84
|
+
def define_event_method
|
85
|
+
send "define_#{event_type}_event_method"
|
86
|
+
end
|
87
|
+
|
88
|
+
def event_type
|
89
|
+
with_delay?(@opts) ? :delayed : :standard
|
75
90
|
end
|
76
91
|
|
77
|
-
def define_standard_event_method
|
78
|
-
|
79
|
-
define_method
|
80
|
-
log_event_call
|
81
|
-
run_callbacks
|
92
|
+
def define_standard_event_method method_name=simple_method_name
|
93
|
+
@set_module.class_exec(@event) do |event_name|
|
94
|
+
define_method event_name do
|
95
|
+
log_event_call event_name
|
96
|
+
run_callbacks event_name do
|
82
97
|
send method_name
|
83
98
|
end
|
84
99
|
end
|
85
100
|
end
|
86
101
|
end
|
87
|
-
|
88
|
-
# EVENT CALLBACKS
|
89
|
-
|
90
|
-
def set_event_callbacks event, opts
|
91
|
-
opts[:set] ||= self
|
92
|
-
[:before, :after, :around].each do |kind|
|
93
|
-
next unless (object_method = opts.delete kind)
|
94
|
-
set_event_callback object_method, kind, event, opts
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def set_event_callback object_method, kind, event, opts
|
99
|
-
Card.class_eval do
|
100
|
-
set_callback object_method, kind, event,
|
101
|
-
prepend: true, if: proc { |c| c.event_applies?(event, opts) }
|
102
|
-
end
|
103
|
-
end
|
104
102
|
end
|
105
103
|
end
|
106
104
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Card
|
2
|
+
module Set
|
3
|
+
class Event
|
4
|
+
module Callbacks
|
5
|
+
def set_event_callbacks
|
6
|
+
%i[before after around].each do |kind|
|
7
|
+
next unless (object_method = @opts.delete kind)
|
8
|
+
set_event_callback object_method, kind
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def set_event_callback object_method, kind
|
13
|
+
Card.class_exec(self) do |event|
|
14
|
+
set_callback object_method, kind, event.name,
|
15
|
+
prepend: true, if: proc { |c| c.event_applies?(event) }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Card
|
2
2
|
module Set
|
3
|
-
|
3
|
+
class Event
|
4
4
|
module DelayedEvent
|
5
5
|
DELAY_STAGES = ::Set.new([:integrate_with_delay_stage,
|
6
6
|
:integrate_with_delay_final_stage]).freeze
|
@@ -11,28 +11,23 @@ class Card
|
|
11
11
|
DELAY_STAGES.include?(opts[:after]) || DELAY_STAGES.include?(opts[:before])
|
12
12
|
end
|
13
13
|
|
14
|
-
def define_delayed_event_method
|
15
|
-
|
16
|
-
|
17
|
-
define_standard_event_method event, delaying_method
|
14
|
+
def define_delayed_event_method
|
15
|
+
define_event_delaying_method
|
16
|
+
define_standard_event_method delaying_method_name
|
18
17
|
end
|
19
18
|
|
20
|
-
# creates an ActiveJob.
|
19
|
+
# creates a method that creates an ActiveJob that calls the event method.
|
21
20
|
# The scheduled job gets the card object as argument and all serializable
|
22
21
|
# attributes of the card.
|
23
22
|
# (when the job is executed ActiveJob fetches the card from the database
|
24
23
|
# so all attributes get lost)
|
25
|
-
#
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
def define_event_delaying_method event, method_name, final_method_name
|
31
|
-
class_eval do
|
32
|
-
define_method(method_name, proc do
|
33
|
-
IntegrateWithDelayJob.set(queue: event).perform_later(
|
24
|
+
# It uses the event as queue name
|
25
|
+
def define_event_delaying_method
|
26
|
+
@set_module.class_exec(self) do |event|
|
27
|
+
define_method(event.delaying_method_name, proc do
|
28
|
+
IntegrateWithDelayJob.set(queue: event.name).perform_later(
|
34
29
|
Card::ActManager.act&.id, self, serialize_for_active_job, Card::Env.serialize,
|
35
|
-
Card::Auth.serialize,
|
30
|
+
Card::Auth.serialize, event.simple_method_name
|
36
31
|
)
|
37
32
|
end)
|
38
33
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
class Card
|
2
|
+
module Set
|
3
|
+
class Event
|
4
|
+
module Options
|
5
|
+
def validate_conditions
|
6
|
+
@opts.each do |key, val|
|
7
|
+
next if key.in? %i[in before after around]
|
8
|
+
validate_condition_name key
|
9
|
+
validate_condition_value key, val
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def validate_condition_name condition
|
14
|
+
return if Card::Set::Event::CONDITIONS.include? condition
|
15
|
+
raise ArgumentError,
|
16
|
+
"invalid condition key '#{condition}' in event '#{@event}'\n" \
|
17
|
+
"valid conditions are #{Card::Set::Event::CONDITIONS.to_a.join ', '}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def validate_condition_value condition, val
|
21
|
+
if condition == :when
|
22
|
+
validate_when_value val
|
23
|
+
else
|
24
|
+
invalid = Array.wrap(val) - Array.wrap(valid_values(condition))
|
25
|
+
return if invalid.empty?
|
26
|
+
raise ArgumentError,
|
27
|
+
"invalid option#{'s' if invalid.size > 1} '#{invalid}' "\
|
28
|
+
"for condition '#{condition}' in event '#{@event}'"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def validate_when_value val
|
33
|
+
return if val.is_a?(Symbol) || val.is_a?(Proc)
|
34
|
+
raise ArgumentError,
|
35
|
+
"invalid value for condition 'when' in event '#{@event}'\n" \
|
36
|
+
"must be a symbol or a proc"
|
37
|
+
end
|
38
|
+
|
39
|
+
def valid_values condition
|
40
|
+
Card::Set::Event::CONDITION_OPTIONS[condition]
|
41
|
+
end
|
42
|
+
|
43
|
+
def event_opts stage_or_opts, opts
|
44
|
+
opts = normalize_opts stage_or_opts, opts
|
45
|
+
process_stage_opts opts
|
46
|
+
process_action_opts opts
|
47
|
+
opts
|
48
|
+
end
|
49
|
+
|
50
|
+
def normalize_opts stage_or_opts, opts
|
51
|
+
if stage_or_opts.is_a? Symbol
|
52
|
+
opts[:in] = stage_or_opts
|
53
|
+
else
|
54
|
+
opts = stage_or_opts
|
55
|
+
end
|
56
|
+
opts
|
57
|
+
end
|
58
|
+
|
59
|
+
def process_action_opts opts
|
60
|
+
opts[:on] = [:create, :update] if opts[:on] == :save
|
61
|
+
end
|
62
|
+
|
63
|
+
def process_stage_opts opts
|
64
|
+
if opts[:after] || opts[:before]
|
65
|
+
# ignore :in options
|
66
|
+
elsif (in_opt = opts.delete :in)
|
67
|
+
opts[:after] = callback_name in_opt, opts.delete(:after_subcards)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def callback_name stage, after_subcards=false
|
72
|
+
name = after_subcards ? "#{stage}_final_stage" : "#{stage}_stage"
|
73
|
+
name.to_sym
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/lib/card/set/format.rb
CHANGED
@@ -21,6 +21,7 @@ class Card
|
|
21
21
|
#
|
22
22
|
module Format
|
23
23
|
require_dependency "card/set/format/haml_views"
|
24
|
+
require_dependency "card/set/format/abstract_format"
|
24
25
|
|
25
26
|
def format *format_names, &block
|
26
27
|
format_names.compact!
|
@@ -39,6 +40,10 @@ class Card
|
|
39
40
|
format { view(*args, &block) }
|
40
41
|
end
|
41
42
|
|
43
|
+
def view_for_override *args, &block
|
44
|
+
format { view_for_override(*args, &block) }
|
45
|
+
end
|
46
|
+
|
42
47
|
def before view, &block
|
43
48
|
format { before view, &block }
|
44
49
|
end
|
@@ -75,99 +80,6 @@ class Card
|
|
75
80
|
modules[:base_format][format_class] ||= []
|
76
81
|
modules[:base_format][format_class] << mod
|
77
82
|
end
|
78
|
-
|
79
|
-
# All Format modules are extended with this module in order to support
|
80
|
-
# the basic format API (ok, view definitions. It's just view
|
81
|
-
# definitions.)
|
82
|
-
# No longer just view definitions. Also basket definitions now.
|
83
|
-
module AbstractFormat
|
84
|
-
include Set::Basket
|
85
|
-
include Set::Format::HamlViews
|
86
|
-
|
87
|
-
mattr_accessor :views
|
88
|
-
self.views = Hash.new { |h, k| h[k] = {} }
|
89
|
-
|
90
|
-
def before view, &block
|
91
|
-
define_method "_before_#{view}", &block
|
92
|
-
end
|
93
|
-
|
94
|
-
def view view, *args, &block
|
95
|
-
#view = view.to_viewname.key.to_sym
|
96
|
-
interpret_view_opts view, args[0] if block_given?
|
97
|
-
view_method_block = view_block(view, args, &block)
|
98
|
-
if async_view? args
|
99
|
-
# This case makes only sense for HtmlFormat
|
100
|
-
# but I don't see an easy way to override class methods for a specific
|
101
|
-
# format. All formats are extended with this general module. So
|
102
|
-
# a HtmlFormat.view method would be overridden by AbstractFormat.view
|
103
|
-
# We need something like AbstractHtmlFormat for that.
|
104
|
-
define_async_view_method view, &view_method_block
|
105
|
-
else
|
106
|
-
define_standard_view_method view, &view_method_block
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def define_standard_view_method view, &block
|
111
|
-
views[self][view] = block
|
112
|
-
define_method "_view_#{view}", &block
|
113
|
-
end
|
114
|
-
|
115
|
-
def define_async_view_method view, &block
|
116
|
-
view_content = "#{view}_async_content"
|
117
|
-
define_standard_view_method view_content, &block
|
118
|
-
define_standard_view_method view do
|
119
|
-
%(<card-view-placeholder data-url="#{path view: view_content}" />)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
def interpret_view_opts view, opts
|
124
|
-
return unless opts.present?
|
125
|
-
Card::Format.interpret_view_opts view, opts
|
126
|
-
extract_view_cache_rules view, opts.delete(:cache)
|
127
|
-
end
|
128
|
-
|
129
|
-
def extract_view_cache_rules view, cache_rule
|
130
|
-
return unless cache_rule
|
131
|
-
methodname = Card::Format.view_cache_setting_method view
|
132
|
-
define_method(methodname) { cache_rule }
|
133
|
-
end
|
134
|
-
|
135
|
-
def view_block view, args, &block
|
136
|
-
return haml_view_block(view, wrap_with_slot?(args), &block) if haml_view?(args)
|
137
|
-
block_given? ? block : lookup_alias_block(view, args)
|
138
|
-
end
|
139
|
-
|
140
|
-
def haml_view? args
|
141
|
-
args.first.is_a?(Hash) && args.first[:template] == :haml
|
142
|
-
end
|
143
|
-
|
144
|
-
def wrap_with_slot? args
|
145
|
-
args.first.is_a?(Hash) && args.first[:slot]
|
146
|
-
end
|
147
|
-
|
148
|
-
def async_view? args
|
149
|
-
args.first.is_a?(Hash) && args.first[:async]
|
150
|
-
end
|
151
|
-
|
152
|
-
def lookup_alias_block view, args
|
153
|
-
opts = args[0].is_a?(Hash) ? args.shift : { view: args.shift }
|
154
|
-
opts[:mod] ||= self
|
155
|
-
opts[:view] ||= view
|
156
|
-
views[opts[:mod]][opts[:view]] || begin
|
157
|
-
raise "cannot find #{opts[:view]} view in #{opts[:mod]}; " \
|
158
|
-
"failed to alias #{view} in #{self}"
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
def source_location
|
163
|
-
set_module.source_location
|
164
|
-
end
|
165
|
-
|
166
|
-
# remove the format part of the module name
|
167
|
-
def set_module
|
168
|
-
Card.const_get name.split("::")[0..-2].join("::")
|
169
|
-
end
|
170
|
-
end
|
171
83
|
end
|
172
84
|
end
|
173
85
|
end
|