package shakuhachi

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file field.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
(**********************************************************************************************)
(*                                                                                            *)
(* This file is part of shakuhachi: a music collection manager                                *)
(* Copyright (C) 2025 Yves Ndiaye                                                             *)
(*                                                                                            *)
(* shakuhachi is free software: you can redistribute it and/or modify it under the terms      *)
(* of the GNU General Public License as published by the Free Software Foundation,            *)
(* either version 3 of the License, or (at your option) any later version.                    *)
(*                                                                                            *)
(* shakuhachi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;    *)
(* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR           *)
(* PURPOSE.  See the GNU General Public License for more details.                             *)
(* You should have received a copy of the GNU General Public License along with shakuhachi.   *)
(* If not, see <http://www.gnu.org/licenses/>.                                                *)
(*                                                                                            *)
(**********************************************************************************************)

(** Operations on fields. *)

(** type of the fields. *)
type t =
  | FTitle
  | FArtist
  | FAlbum
  | FTitleSort
  | FAlbumArtist
  | FArtistSort
  | FAlbumSort
  | FTrack
  | FYear
  | FDisc
  | FCover
  | FGenre
  | FComment

(** [compare lhs rhs] is [Stdlib.compare lhs rhs]. *)
let compare : t -> t -> int = Stdlib.compare

(** [equal lhs rhs] is [Stdlib.( = ) lhs rhs]. *)
let equal : t -> t -> bool = ( = )

(** [to_string f] is the string representation of [f]. *)
let to_string = function
  | FTitle ->
      "title"
  | FArtist ->
      "artist"
  | FAlbum ->
      "album"
  | FAlbumArtist ->
      "album-artist"
  | FTitleSort ->
      "title-sort"
  | FArtistSort ->
      "artist-sort"
  | FAlbumSort ->
      "album-sort"
  | FTrack ->
      "track"
  | FYear ->
      "year"
  | FDisc ->
      "disc"
  | FCover ->
      "cover"
  | FGenre ->
      "genre"
  | FComment ->
      "comment"

(** [choices] is all fields associated with their string representation. *)
let choices =
  [
    ("title", FTitle);
    ("artist", FArtist);
    ("album", FAlbum);
    ("album-artist", FAlbumArtist);
    ("title-sort", FTitleSort);
    ("artist-sort", FArtistSort);
    ("album-sort", FAlbumSort);
    ("track", FTrack);
    ("year", FYear);
    ("disc", FDisc);
    ("cover", FCover);
    ("genre", FGenre);
    ("comment", FComment);
  ]