aboutsummaryrefslogtreecommitdiff
path: root/motus/js/updateProposition.ml
blob: 7a4608f8ef9219db7034ef7c2e35704cd31d5493 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(** Update the current propositions when the user change a value in one of the
    field.
 *)

open StdLabels

type t =
  { position : int
  ; letter : Jstr.t
  ; validity : Motus_lib.Validity.t
  }

let process { position; letter; validity } state =
  let current_prop =
    List.mapi state.State.current_prop ~f:(fun pos' content ->
        if position <> pos'
        then content
        else if Jstr.is_empty letter
        then None
        else Some (Jstr.uppercased letter, validity) )
  in
  FieldList.set_with_props current_prop state.fields state.rules;

  { state with current_prop }