aasm 4.5.1 → 5.5.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 +5 -5
- data/LICENSE +1 -1
- data/README.md +809 -129
- data/lib/aasm/aasm.rb +74 -37
- data/lib/aasm/base.rb +188 -41
- data/lib/aasm/configuration.rb +27 -2
- data/lib/aasm/core/event.rb +75 -47
- data/lib/aasm/core/invoker.rb +129 -0
- data/lib/aasm/core/invokers/base_invoker.rb +75 -0
- data/lib/aasm/core/invokers/class_invoker.rb +52 -0
- data/lib/aasm/core/invokers/literal_invoker.rb +49 -0
- data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
- data/lib/aasm/core/state.rb +22 -13
- data/lib/aasm/core/transition.rb +30 -23
- data/lib/aasm/dsl_helper.rb +24 -22
- data/lib/aasm/errors.rb +8 -5
- data/lib/aasm/instance_base.rb +63 -15
- data/lib/aasm/localizer.rb +13 -3
- data/lib/aasm/minitest/allow_event.rb +13 -0
- data/lib/aasm/minitest/allow_transition_to.rb +13 -0
- data/lib/aasm/minitest/have_state.rb +13 -0
- data/lib/aasm/minitest/transition_from.rb +21 -0
- data/lib/aasm/minitest.rb +5 -0
- data/lib/aasm/minitest_spec.rb +15 -0
- data/lib/aasm/persistence/active_record_persistence.rb +87 -79
- data/lib/aasm/persistence/base.rb +30 -30
- data/lib/aasm/persistence/core_data_query_persistence.rb +94 -0
- data/lib/aasm/persistence/dynamoid_persistence.rb +92 -0
- data/lib/aasm/persistence/mongoid_persistence.rb +49 -35
- data/lib/aasm/persistence/no_brainer_persistence.rb +105 -0
- data/lib/aasm/persistence/orm.rb +154 -0
- data/lib/aasm/persistence/plain_persistence.rb +2 -1
- data/lib/aasm/persistence/redis_persistence.rb +112 -0
- data/lib/aasm/persistence/sequel_persistence.rb +37 -67
- data/lib/aasm/persistence.rb +20 -5
- data/lib/aasm/rspec/allow_event.rb +5 -1
- data/lib/aasm/rspec/allow_transition_to.rb +5 -1
- data/lib/aasm/rspec/transition_from.rb +8 -4
- data/lib/aasm/state_machine.rb +6 -12
- data/lib/aasm/state_machine_store.rb +76 -0
- data/lib/aasm/version.rb +1 -1
- data/lib/aasm.rb +8 -2
- data/lib/generators/aasm/aasm_generator.rb +16 -0
- data/lib/generators/aasm/orm_helpers.rb +41 -0
- data/lib/generators/active_record/aasm_generator.rb +40 -0
- data/lib/generators/active_record/templates/migration.rb +8 -0
- data/lib/generators/active_record/templates/migration_existing.rb +5 -0
- data/lib/generators/mongoid/aasm_generator.rb +28 -0
- data/lib/generators/nobrainer/aasm_generator.rb +28 -0
- data/lib/motion-aasm.rb +37 -0
- metadata +104 -259
- data/.document +0 -6
- data/.gitignore +0 -19
- data/.travis.yml +0 -37
- data/API +0 -34
- data/CHANGELOG.md +0 -272
- data/CODE_OF_CONDUCT.md +0 -13
- data/Gemfile +0 -15
- data/HOWTO +0 -12
- data/PLANNED_CHANGES.md +0 -11
- data/README_FROM_VERSION_3_TO_4.md +0 -240
- data/Rakefile +0 -26
- data/aasm.gemspec +0 -31
- data/callbacks.txt +0 -51
- data/gemfiles/rails_3.2.gemfile +0 -14
- data/gemfiles/rails_4.0.gemfile +0 -12
- data/gemfiles/rails_4.0_mongo_mapper.gemfile +0 -14
- data/gemfiles/rails_4.1.gemfile +0 -12
- data/gemfiles/rails_4.1_mongo_mapper.gemfile +0 -14
- data/gemfiles/rails_4.2.gemfile +0 -12
- data/gemfiles/rails_4.2_mongo_mapper.gemfile +0 -14
- data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -12
- data/lib/aasm/persistence/mongo_mapper_persistence.rb +0 -157
- data/spec/database.rb +0 -63
- data/spec/database.yml +0 -3
- data/spec/en.yml +0 -9
- data/spec/en_deprecated_style.yml +0 -10
- data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
- data/spec/models/active_record/complex_active_record_example.rb +0 -33
- data/spec/models/active_record/derivate_new_dsl.rb +0 -7
- data/spec/models/active_record/false_state.rb +0 -35
- data/spec/models/active_record/gate.rb +0 -39
- data/spec/models/active_record/localizer_test_model.rb +0 -34
- data/spec/models/active_record/no_direct_assignment.rb +0 -21
- data/spec/models/active_record/no_scope.rb +0 -21
- data/spec/models/active_record/persisted_state.rb +0 -12
- data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
- data/spec/models/active_record/reader.rb +0 -7
- data/spec/models/active_record/readme_job.rb +0 -21
- data/spec/models/active_record/simple_new_dsl.rb +0 -17
- data/spec/models/active_record/thief.rb +0 -29
- data/spec/models/active_record/transient.rb +0 -6
- data/spec/models/active_record/with_enum.rb +0 -39
- data/spec/models/active_record/with_false_enum.rb +0 -31
- data/spec/models/active_record/with_true_enum.rb +0 -39
- data/spec/models/active_record/writer.rb +0 -6
- data/spec/models/basic_two_state_machines_example.rb +0 -25
- data/spec/models/callbacks/basic.rb +0 -78
- data/spec/models/callbacks/basic_multiple.rb +0 -75
- data/spec/models/callbacks/guard_within_block.rb +0 -66
- data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
- data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -65
- data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
- data/spec/models/callbacks/private_method.rb +0 -44
- data/spec/models/callbacks/private_method_multiple.rb +0 -44
- data/spec/models/callbacks/with_args.rb +0 -61
- data/spec/models/callbacks/with_args_multiple.rb +0 -61
- data/spec/models/callbacks/with_state_arg.rb +0 -26
- data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
- data/spec/models/complex_example.rb +0 -222
- data/spec/models/conversation.rb +0 -93
- data/spec/models/default_state.rb +0 -12
- data/spec/models/double_definer.rb +0 -21
- data/spec/models/foo.rb +0 -92
- data/spec/models/foo_callback_multiple.rb +0 -45
- data/spec/models/guardian.rb +0 -48
- data/spec/models/guardian_multiple.rb +0 -48
- data/spec/models/initial_state_proc.rb +0 -31
- data/spec/models/invalid_persistor.rb +0 -31
- data/spec/models/mongo_mapper/complex_mongo_mapper_example.rb +0 -37
- data/spec/models/mongo_mapper/no_scope_mongo_mapper.rb +0 -21
- data/spec/models/mongo_mapper/simple_mongo_mapper.rb +0 -23
- data/spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb +0 -25
- data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
- data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
- data/spec/models/mongoid/simple_mongoid.rb +0 -23
- data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
- data/spec/models/no_initial_state.rb +0 -25
- data/spec/models/not_auto_loaded/process.rb +0 -21
- data/spec/models/parametrised_event.rb +0 -29
- data/spec/models/parametrised_event_multiple.rb +0 -29
- data/spec/models/process_with_new_dsl.rb +0 -31
- data/spec/models/provided_state.rb +0 -24
- data/spec/models/sequel/complex_sequel_example.rb +0 -45
- data/spec/models/sequel/sequel_multiple.rb +0 -25
- data/spec/models/sequel/sequel_simple.rb +0 -25
- data/spec/models/silencer.rb +0 -27
- data/spec/models/simple_example.rb +0 -15
- data/spec/models/simple_multiple_example.rb +0 -30
- data/spec/models/state_machine_with_failed_event.rb +0 -12
- data/spec/models/sub_class.rb +0 -7
- data/spec/models/sub_class_with_more_states.rb +0 -18
- data/spec/models/sub_classing.rb +0 -3
- data/spec/models/super_class.rb +0 -46
- data/spec/models/this_name_better_not_be_in_use.rb +0 -11
- data/spec/models/transactor.rb +0 -53
- data/spec/models/valid_state_name.rb +0 -23
- data/spec/models/validator.rb +0 -79
- data/spec/models/worker.rb +0 -2
- data/spec/spec_helper.rb +0 -25
- data/spec/unit/api_spec.rb +0 -77
- data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
- data/spec/unit/callback_multiple_spec.rb +0 -295
- data/spec/unit/callbacks_spec.rb +0 -296
- data/spec/unit/complex_example_spec.rb +0 -84
- data/spec/unit/complex_multiple_example_spec.rb +0 -99
- data/spec/unit/edge_cases_spec.rb +0 -16
- data/spec/unit/event_multiple_spec.rb +0 -73
- data/spec/unit/event_naming_spec.rb +0 -11
- data/spec/unit/event_spec.rb +0 -322
- data/spec/unit/guard_multiple_spec.rb +0 -60
- data/spec/unit/guard_spec.rb +0 -60
- data/spec/unit/initial_state_multiple_spec.rb +0 -15
- data/spec/unit/initial_state_spec.rb +0 -12
- data/spec/unit/inspection_multiple_spec.rb +0 -201
- data/spec/unit/inspection_spec.rb +0 -111
- data/spec/unit/localizer_spec.rb +0 -76
- data/spec/unit/memory_leak_spec.rb +0 -38
- data/spec/unit/new_dsl_spec.rb +0 -12
- data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -573
- data/spec/unit/persistence/active_record_persistence_spec.rb +0 -552
- data/spec/unit/persistence/mongo_mapper_persistence_multiple_spec.rb +0 -146
- data/spec/unit/persistence/mongo_mapper_persistence_spec.rb +0 -93
- data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -127
- data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -79
- data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -153
- data/spec/unit/persistence/sequel_persistence_spec.rb +0 -100
- data/spec/unit/readme_spec.rb +0 -42
- data/spec/unit/reloading_spec.rb +0 -15
- data/spec/unit/rspec_matcher_spec.rb +0 -79
- data/spec/unit/simple_example_spec.rb +0 -42
- data/spec/unit/simple_multiple_example_spec.rb +0 -63
- data/spec/unit/state_spec.rb +0 -89
- data/spec/unit/subclassing_multiple_spec.rb +0 -39
- data/spec/unit/subclassing_spec.rb +0 -31
- data/spec/unit/transition_spec.rb +0 -291
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'concurrent'
|
2
|
+
module AASM
|
3
|
+
class StateMachineStore
|
4
|
+
@stores = Concurrent::Map.new
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def stores
|
8
|
+
@stores
|
9
|
+
end
|
10
|
+
|
11
|
+
# do not overwrite existing state machines, which could have been created by
|
12
|
+
# inheritance, see AASM::ClassMethods method inherited
|
13
|
+
def register(klass, overwrite = false, state_machine = nil)
|
14
|
+
raise "Cannot register #{klass}" unless klass.is_a?(Class)
|
15
|
+
|
16
|
+
case name = template = overwrite
|
17
|
+
when FalseClass then stores[klass.to_s] ||= new
|
18
|
+
when TrueClass then stores[klass.to_s] = new
|
19
|
+
when Class then stores[klass.to_s] = stores[template.to_s].clone
|
20
|
+
when Symbol then stores[klass.to_s].register(name, state_machine)
|
21
|
+
when String then stores[klass.to_s].register(name, state_machine)
|
22
|
+
else raise "Don't know what to do with #{overwrite}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
alias_method :[]=, :register
|
26
|
+
|
27
|
+
def fetch(klass, fallback = nil)
|
28
|
+
stores[klass.to_s] || fallback && begin
|
29
|
+
match = klass.ancestors.find do |ancestor|
|
30
|
+
ancestor.include? AASM and stores[ancestor.to_s]
|
31
|
+
end
|
32
|
+
|
33
|
+
stores[match.to_s]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
alias_method :[], :fetch
|
37
|
+
|
38
|
+
def unregister(klass)
|
39
|
+
stores.delete(klass.to_s)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def initialize
|
44
|
+
@machines = Concurrent::Map.new
|
45
|
+
end
|
46
|
+
|
47
|
+
def clone
|
48
|
+
StateMachineStore.new.tap do |store|
|
49
|
+
@machines.each_pair do |name, machine|
|
50
|
+
store.register(name, machine.clone)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def machine(name)
|
56
|
+
@machines[name.to_s]
|
57
|
+
end
|
58
|
+
alias_method :[], :machine
|
59
|
+
|
60
|
+
def machine_names
|
61
|
+
@machines.keys
|
62
|
+
end
|
63
|
+
alias_method :keys, :machine_names
|
64
|
+
|
65
|
+
def register(name, machine, force = false)
|
66
|
+
raise "Cannot use #{name.inspect} for machine name" unless name.is_a?(Symbol) or name.is_a?(String)
|
67
|
+
raise "Cannot use #{machine.inspect} as a machine" unless machine.is_a?(AASM::StateMachine)
|
68
|
+
|
69
|
+
if force
|
70
|
+
@machines[name.to_s] = machine
|
71
|
+
else
|
72
|
+
@machines[name.to_s] ||= machine
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/aasm/version.rb
CHANGED
data/lib/aasm.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
|
3
1
|
require 'aasm/version'
|
4
2
|
require 'aasm/errors'
|
5
3
|
require 'aasm/configuration'
|
@@ -9,7 +7,15 @@ require 'aasm/instance_base'
|
|
9
7
|
require 'aasm/core/transition'
|
10
8
|
require 'aasm/core/event'
|
11
9
|
require 'aasm/core/state'
|
10
|
+
require 'aasm/core/invoker'
|
11
|
+
require 'aasm/core/invokers/base_invoker'
|
12
|
+
require 'aasm/core/invokers/class_invoker'
|
13
|
+
require 'aasm/core/invokers/literal_invoker'
|
14
|
+
require 'aasm/core/invokers/proc_invoker'
|
12
15
|
require 'aasm/localizer'
|
16
|
+
require 'aasm/state_machine_store'
|
13
17
|
require 'aasm/state_machine'
|
14
18
|
require 'aasm/persistence'
|
19
|
+
require 'aasm/persistence/base'
|
20
|
+
require 'aasm/persistence/plain_persistence'
|
15
21
|
require 'aasm/aasm'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
|
3
|
+
module AASM
|
4
|
+
module Generators
|
5
|
+
class AASMGenerator < Rails::Generators::NamedBase
|
6
|
+
namespace "aasm"
|
7
|
+
argument :column_name, type: :string, default: 'aasm_state'
|
8
|
+
|
9
|
+
desc "Generates a model with the given NAME (if one does not exist) with aasm " <<
|
10
|
+
"block and migration to add aasm_state column."
|
11
|
+
|
12
|
+
hook_for :orm
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module AASM
|
2
|
+
module Generators
|
3
|
+
module OrmHelpers
|
4
|
+
|
5
|
+
def model_contents
|
6
|
+
if column_name == 'aasm_state'
|
7
|
+
<<RUBY
|
8
|
+
include AASM
|
9
|
+
|
10
|
+
aasm do
|
11
|
+
end
|
12
|
+
RUBY
|
13
|
+
else
|
14
|
+
<<RUBY
|
15
|
+
include AASM
|
16
|
+
|
17
|
+
aasm :column => '#{column_name}' do
|
18
|
+
end
|
19
|
+
RUBY
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def column_exists?
|
26
|
+
table_name.singularize.humanize.constantize.column_names.include?(column_name.to_s)
|
27
|
+
rescue NameError
|
28
|
+
false
|
29
|
+
end
|
30
|
+
|
31
|
+
def model_exists?
|
32
|
+
File.exist?(File.join(destination_root, model_path))
|
33
|
+
end
|
34
|
+
|
35
|
+
def model_path
|
36
|
+
@model_path ||= File.join("app", "models", "#{file_path}.rb")
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
require 'generators/aasm/orm_helpers'
|
3
|
+
|
4
|
+
module ActiveRecord
|
5
|
+
module Generators
|
6
|
+
class AASMGenerator < ActiveRecord::Generators::Base
|
7
|
+
include AASM::Generators::OrmHelpers
|
8
|
+
namespace "active_record:aasm"
|
9
|
+
argument :column_name, type: :string, default: 'aasm_state'
|
10
|
+
|
11
|
+
source_root File.expand_path("../templates", __FILE__)
|
12
|
+
|
13
|
+
def copy_aasm_migration
|
14
|
+
if column_exists?
|
15
|
+
puts "Both model and column exists"
|
16
|
+
elsif model_exists?
|
17
|
+
migration_template "migration_existing.rb", "db/migrate/add_#{column_name}_to_#{table_name}.rb"
|
18
|
+
else
|
19
|
+
migration_template "migration.rb", "db/migrate/aasm_create_#{table_name}.rb"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def generate_model
|
24
|
+
invoke "active_record:model", [name], migration: false unless model_exists?
|
25
|
+
end
|
26
|
+
|
27
|
+
def inject_aasm_content
|
28
|
+
content = model_contents
|
29
|
+
|
30
|
+
class_path = if namespaced?
|
31
|
+
class_name.to_s.split("::")
|
32
|
+
else
|
33
|
+
[class_name]
|
34
|
+
end
|
35
|
+
inject_into_class(model_path, class_path.last, content) if model_exists?
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
require 'generators/aasm/orm_helpers'
|
3
|
+
|
4
|
+
module Mongoid
|
5
|
+
module Generators
|
6
|
+
class AASMGenerator < Rails::Generators::NamedBase
|
7
|
+
include AASM::Generators::OrmHelpers
|
8
|
+
namespace "mongoid:aasm"
|
9
|
+
argument :column_name, type: :string, default: 'aasm_state'
|
10
|
+
|
11
|
+
def generate_model
|
12
|
+
invoke "mongoid:model", [name] unless model_exists?
|
13
|
+
end
|
14
|
+
|
15
|
+
def inject_aasm_content
|
16
|
+
inject_into_file model_path, model_contents, after: "include Mongoid::Document\n" if model_exists?
|
17
|
+
end
|
18
|
+
|
19
|
+
def inject_field_types
|
20
|
+
inject_into_file model_path, migration_data, after: "include Mongoid::Document\n" if model_exists?
|
21
|
+
end
|
22
|
+
|
23
|
+
def migration_data
|
24
|
+
" field :#{column_name}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rails/generators/named_base'
|
2
|
+
require 'generators/aasm/orm_helpers'
|
3
|
+
|
4
|
+
module NoBrainer
|
5
|
+
module Generators
|
6
|
+
class AASMGenerator < Rails::Generators::NamedBase
|
7
|
+
include AASM::Generators::OrmHelpers
|
8
|
+
namespace 'nobrainer:aasm'
|
9
|
+
argument :column_name, type: :string, default: 'aasm_state'
|
10
|
+
|
11
|
+
def generate_model
|
12
|
+
invoke 'nobrainer:model', [name] unless model_exists?
|
13
|
+
end
|
14
|
+
|
15
|
+
def inject_aasm_content
|
16
|
+
inject_into_file model_path, model_contents, after: "include NoBrainer::Document::Timestamps\n" if model_exists?
|
17
|
+
end
|
18
|
+
|
19
|
+
def inject_field_types
|
20
|
+
inject_into_file model_path, migration_data, after: "include NoBrainer::Document::Timestamps\n" if model_exists?
|
21
|
+
end
|
22
|
+
|
23
|
+
def migration_data
|
24
|
+
" field :#{column_name}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/motion-aasm.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
unless defined?(Motion::Project::App)
|
2
|
+
raise "This must be required from within a RubyMotion Rakefile"
|
3
|
+
end
|
4
|
+
|
5
|
+
file_dependencies = {
|
6
|
+
'aasm/aasm.rb' => ['aasm/persistence.rb'],
|
7
|
+
'aasm/persistence.rb' => ['aasm/persistence/plain_persistence.rb', 'aasm/persistence/core_data_query_persistence.rb'],
|
8
|
+
'aasm/persistence/base.rb' => ['aasm/base.rb'],
|
9
|
+
'aasm/persistence/core_data_query_persistence.rb' => ['aasm/persistence/base.rb']
|
10
|
+
}
|
11
|
+
|
12
|
+
exclude_files = [
|
13
|
+
'aasm/rspec.*',
|
14
|
+
'aasm/minitest.*',
|
15
|
+
'aasm/minitest_spec.*',
|
16
|
+
'aasm/persistence/active_record_persistence.rb',
|
17
|
+
'aasm/persistence/dynamoid_persistence.rb',
|
18
|
+
'aasm/persistence/mongoid_persistence.rb',
|
19
|
+
'aasm/persistence/no_brainer_persistence.rb',
|
20
|
+
'aasm/persistence/sequel_persistence.rb',
|
21
|
+
'aasm/persistence/redis_persistence.rb'
|
22
|
+
]
|
23
|
+
|
24
|
+
Motion::Project::App.setup do |app|
|
25
|
+
parent = File.expand_path File.dirname(__FILE__)
|
26
|
+
|
27
|
+
app.files.unshift Dir.glob(File.join(parent, "aasm/**/*.rb")).reject { |file| exclude_files.any? { |exclude| file.match(exclude) } }
|
28
|
+
|
29
|
+
app.files_dependencies file_dependencies.inject({}, &->(file_dependencies, (file, *dependencies)) do
|
30
|
+
file = File.join(parent, file)
|
31
|
+
dependencies = dependencies.flatten(1).map do |dependency|
|
32
|
+
File.join(parent, dependency)
|
33
|
+
end
|
34
|
+
|
35
|
+
file_dependencies.merge({ file => dependencies })
|
36
|
+
end)
|
37
|
+
end
|