clarification.mojo (1285B)
1 from hyf_core.domain.field import DecodedField, known_field 2 3 4 @fieldwise_init 5 struct ClarificationEvidence(Copyable, Movable): 6 var target_field: String 7 var source_id: String 8 var revision: String 9 var text: String 10 11 12 def clarification_evidence( 13 target_field: String, source_id: String, revision: String, text: String 14 ) raises -> ClarificationEvidence: 15 if target_field.strip() == "": 16 raise Error("clarification requires a target field") 17 if source_id.strip() == "" or revision.strip() == "": 18 raise Error("clarification requires source id and revision") 19 if text.strip() == "": 20 raise Error("clarification text must not be empty") 21 return ClarificationEvidence( 22 target_field=String(target_field), 23 source_id=String(source_id), 24 revision=String(revision), 25 text=String(text), 26 ) 27 28 29 def clarification_is_stale( 30 evidence: ClarificationEvidence, current_revision: String 31 ) -> Bool: 32 return evidence.revision != current_revision 33 34 35 def apply_clarification( 36 original: DecodedField, 37 evidence: ClarificationEvidence, 38 resolved_value: String, 39 ) raises -> DecodedField: 40 var refined = known_field(resolved_value, "clarification") 41 refined.qualifier = original.qualifier 42 return refined^