foch 0.0.1

EU4 mod analysis and merge toolkit
Documentation
use super::{
	BackendOutcome, BackendProfile, BackendRequest, BackendUnit, MergeBackend,
	MergeBackendDescriptor, MergeBackendId,
};
use crate::merge::output::materialize::structural::reference::{
	merge_definition_module, merge_structural_file,
};

pub(crate) struct AddressPatchBackend;

impl MergeBackend for AddressPatchBackend {
	fn descriptor(&self) -> MergeBackendDescriptor {
		MergeBackendId::AddressPatch.descriptor()
	}

	fn profile(&self) -> BackendProfile {
		BackendProfile {
			validate_semantic_units: false,
			duplicate_definition_override: None,
		}
	}

	fn analyze(&self, request: BackendRequest<'_, '_>) -> BackendOutcome {
		match request.unit {
			BackendUnit::File(contributors) => merge_structural_file(
				request.target_path,
				contributors,
				request.context,
				request.interactive_handler,
				request.interactive_config_path,
			),
			BackendUnit::DefinitionModule(views) => merge_definition_module(
				request.target_path,
				views,
				request.context,
				request.interactive_handler,
				request.interactive_config_path,
			),
		}
	}
}