Class: URBANopt::CLI::UrbanOptCLI::DefaultContextLoader
- Inherits:
-
Object
- Object
- URBANopt::CLI::UrbanOptCLI::DefaultContextLoader
- Defined in:
- lib/uo_cli.rb
Overview
Helper class: Manages loading or generating default post-processor context Encapsulates logic for cache validation and CSV header rehydration
Instance Method Summary collapse
-
#initialize(root_dir, scenario_name, run_func) ⇒ DefaultContextLoader
constructor
A new instance of DefaultContextLoader.
-
#load_or_generate ⇒ Object
Load existing default report from cache, or generate if missing.
-
#post_processor ⇒ Object
Get the post-processor instance.
Constructor Details
#initialize(root_dir, scenario_name, run_func) ⇒ DefaultContextLoader
Returns a new instance of DefaultContextLoader.
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/uo_cli.rb', line 52 def initialize(root_dir, scenario_name, run_func) @root_dir = root_dir @scenario_name = scenario_name @run_func = run_func @run_dir = File.join(root_dir, 'run', scenario_name.downcase) @default_report_json = File.join(@run_dir, 'default_scenario_report.json') @default_report_csv = File.join(@run_dir, 'default_scenario_report.csv') @post_processor = nil @scenario_report = nil end |
Instance Method Details
#load_or_generate ⇒ Object
Load existing default report from cache, or generate if missing
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/uo_cli.rb', line 64 def load_or_generate @post_processor ||= URBANopt::Scenario::ScenarioDefaultPostProcessor.new(@run_func) if File.exist?(@default_report_json) && File.exist?(@default_report_csv) puts "\nDefault post-process outputs already exist for '#{@scenario_name}'. Skipping default re-run." begin @scenario_report = load_cached_report puts 'Loaded existing default post-process outputs.' rescue StandardError => e puts "\nWARNING: Error loading cached default report: #{e.}. Re-running default post-processor." @scenario_report = @post_processor.run @scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) @scenario_report.feature_reports.each(&:save) puts 'Default post-process complete.' end else puts "\nDefault post-process outputs not found for '#{@scenario_name}'. Running default post-process first." @scenario_report = @post_processor.run @scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) @scenario_report.feature_reports.each(&:save) puts 'Default post-process complete.' end @scenario_report end |
#post_processor ⇒ Object
Get the post-processor instance
91 92 93 94 |
# File 'lib/uo_cli.rb', line 91 def post_processor @post_processor ||= URBANopt::Scenario::ScenarioDefaultPostProcessor.new(@run_func) @post_processor end |