aboutsummaryrefslogtreecommitdiff
path: root/lib/analysers/dependency.mli
blob: c89522a26aa9b1d809dd295b27aaddcbe7ef29d7 (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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
type t

val get_process_order : ImportConf.Syntax.t -> t list
(** Extract the file list to process, following the identified dependancies.
    Try to load first the document which does not required another spreadsheet,
    and keep going in the topological order  

    Raise [Unknown_source file] if a source is referenced but is not declared.
    The order matter : the exception will be raised in a source is referenced
    before the declaration (when chaining differents externals) *)

val table : t -> ImportDataTypes.Table.t
(** Get the table to proceed. *)

val columns : t -> ImportContainers.IntSet.t
(** A set of columns loaded in this table. Thoses columns may not need
            reported in the final export. 

            Each column is identified by is index in the Excel document. 

            This set does not include the columns used in the keys. They can be
            fetched with the [keys] function *)

type key = {
  name : string;  (** This is the name of the target table we are pointed to *)
  expression : ImportDataTypes.Path.column ImportExpression.T.t;
      (** The expression used as key *)
  columns : ImportContainers.IntSet.t Lazy.t;
      (** The list of columns used in the key. All the columns are referenced
            in the expression. We can have many columns used inside a single
            key when a function is used (for example for joining multiple
            columns into a single key)  *)
}
(** This type describe the join key in a table. The name is the refering table
    using this key (the key name in the datable is key_"name" ), and the
    expression describe how to build the key. *)

val keys : t -> key list
(** [keys] is the list of columns pointed by another one. They are
          considered as join key between the diffrent tables. *)