hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

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^