method
deduce_implied_options
Ruby on Rails latest stable (v7.1.3.2)
-
0 notes -
Class: AppBase
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
deduce_implied_options(options, option_reasons, meta_options)
private
Hide source
# File railties/lib/rails/generators/app_base.rb, line 153 def deduce_implied_options(options, option_reasons, meta_options) active = options.transform_values { |value| [] if value }.compact irrevocable = (active.keys - meta_options).to_set deduction_order = TSort.tsort( ->(&block) { option_reasons.each_key(&block) }, ->(key, &block) { option_reasons[key]&.each(&block) } ) deduction_order.each do |name| active_reasons = option_reasons[name].to_a.select(&active) active[name] ||= active_reasons if active_reasons.any? irrevocable << name if active_reasons.any?(irrevocable) end revoked = options.select { |name, value| value == false }.keys.to_set - irrevocable deduction_order.reverse_each do |name| revoked += option_reasons[name].to_a if revoked.include?(name) end revoked -= meta_options active.filter_map do |name, reasons| unless revoked.include?(name) || reasons.all?(revoked) [name, reasons - revoked.to_a] end end.to_h end