let string_to_char_seq_raw_item
?filename ?(tags=Tags.char_sequence_default) () =
let check_alphabet ~pos s = match tags.Tags.sequence with
| `int_sequence
| `char_sequence None ->
output_ok (`partial_sequence s)
| `char_sequence (Some alphabet) ->
if String.for_all s ~f:(List.mem alphabet) then
output_ok (`partial_sequence s)
else
output_error (`malformed_partial_sequence (pos,s))
in
let string_to_partial_sequence ~pos s =
match tags.Tags.max_items_per_line with
| Some n ->
if String.length s > n then
output_error (`sequence_is_too_long (pos,s))
else
check_alphabet ~pos s
| None -> check_alphabet ~pos s
in
string_to_raw_item
~string_to_partial_sequence
?filename
~tags
()