class TwitterCldr::Resources::ImportResolver
Attributes
importers[R]
options[R]
Public Class Methods
new(importers = Resources.importer_classes_for_ruby_engine, options = {})
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 10 def initialize(importers = Resources.importer_classes_for_ruby_engine, options = {}) @importers = importers @options = options end
Public Instance Methods
import()
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 15 def import check_unmet_deps import_in_order end
Private Instance Methods
check_unmet_deps()
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 41 def check_unmet_deps instances.each do |instance| check_unmet_instance_deps(instance) end end
check_unmet_instance_deps(instance)
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 47 def check_unmet_instance_deps(instance) return if options[:allow_missing_dependencies] unmet_deps = unmet_deps_for(instance) unless unmet_deps.empty? list = unmet_deps.map { |d| d.name }.join(', ') raise "#{instance.class} dependencies are not met: #{list}" end end
deps_for(instance)
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 70 def deps_for(instance) if dep_requirement = instance.requirements[:dependency] dep_requirement.importer_classes else [] end end
import_in_order()
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 22 def import_in_order tsort.each { |instance| instance.import } end
instances()
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 58 def instances @instances ||= importers.map do |importer| importer.is_a?(Class) ? importer.new : importer end end
tsort_each_child(instance) { |dep| ... }
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 30 def tsort_each_child(instance, &block) deps_for(instance).map do |dep_class| dep = instances.find { |ins| ins.class == dep_class } yield dep if dep unless options[:allow_missing_dependencies] raise "Could not find dependency #{dep_class.name}" end end end
tsort_each_node(&block)
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 26 def tsort_each_node(&block) instances.each(&block) end
unmet_deps_for(instance)
click to toggle source
# File lib/twitter_cldr/resources/import_resolver.rb, line 64 def unmet_deps_for(instance) deps_for(instance).reject do |dep_class| instances.any? { |ins| ins.class == dep_class } end end