package stog

  1. Overview
  2. Docs

Types.

module XR = Xtmpl.Rewrite
module Xml = Xtmpl.Xml
type date = Date.t
type body = XR.tree list
type def = XR.name * XR.attributes * body
val get_def : def list -> XR.name -> (XR.attributes * body) option
module Str_map : Map.S with type key = string
module Str_set : Set.S with type elt = string
type doc = {
  1. doc_path : Path.path;
  2. doc_parent : Path.path option;
  3. doc_children : Path.path list;
  4. doc_type : string;
  5. doc_prolog : Xml.prolog option;
  6. doc_body : body;
  7. doc_date : date option;
  8. doc_title : string;
  9. doc_keywords : string list;
  10. doc_topics : string list;
  11. doc_defs : def list;
  12. doc_src : string;
  13. doc_sets : string list;
    (*

    list of sets ("blog", "foo", etc.) this document belongs to

    *)
  14. doc_lang_dep : bool;
    (*

    whether a file must be generated for each language

    *)
  15. doc_out : body option;
  16. doc_used_mods : Str_set.t;
}
type doc_id = doc Tmap.key
val make_doc : ?typ:string -> ?path:Path.path -> ?prolog:Xml.prolog -> unit -> doc
module Path_trie : Trie.S with type symbol = string
module Doc_set : Set.S with type elt = doc_id
module Int_map : Map.S with type key = int
module Int_set : Set.S with type elt = int
type edge_type =
  1. | Date
  2. | Topic of string
  3. | Keyword of string
  4. | Ref
module Graph : Graph.S with type key = doc_id and type edge_data = edge_type
type file_tree = {
  1. files : Str_set.t;
  2. dirs : file_tree Str_map.t;
}
type stog_mod = {
  1. mod_requires : Str_set.t;
  2. mod_defs : def list;
}
type 'a dependency =
  1. | File of string
  2. | Doc of 'a
module Depset : Set.S with type elt = string dependency
type stog_dependencies = Depset.t Str_map.t
type stog = {
  1. stog_dir : string;
  2. stog_docs : (doc, doc) Tmap.t;
  3. stog_docs_by_path : doc_id Path_trie.t;
  4. stog_defs : def list;
  5. stog_tmpl_dirs : string list;
  6. stog_mod_dirs : string list;
  7. stog_cache_dir : string;
  8. stog_title : string;
  9. stog_desc : body;
  10. stog_graph : Graph.t;
  11. stog_docs_by_kw : Doc_set.t Str_map.t;
  12. stog_docs_by_topic : Doc_set.t Str_map.t;
  13. stog_archives : Doc_set.t Int_map.t Int_map.t;
  14. stog_base_url : Url.t;
  15. stog_email : string;
  16. stog_rss_length : int;
  17. stog_lang : string option;
  18. stog_outdir : string;
  19. stog_main_doc : doc_id option;
  20. stog_files : file_tree;
  21. stog_modules : stog_mod Str_map.t;
  22. stog_used_mods : Str_set.t;
  23. stog_depcut : bool;
  24. stog_deps : stog_dependencies;
  25. stog_id_map : (Path.path * string option) Str_map.t Path.Map.t;
  26. stog_levels : (string * int list) list Str_map.t;
  27. stog_publish_only : Filter_types.t option;
  28. stog_source : [ `Dir | `File ];
}
val create_stog : ?source:[ `Dir | `File ] -> string -> stog
val stog_md5 : stog -> string
val doc : stog -> doc Tmap.key -> doc
val docs_by_path : ?typ:string -> stog -> Path.path -> (doc_id * doc) list
val doc_by_path : ?typ:string -> stog -> Path.path -> doc_id * doc
val doc_children : stog -> doc -> doc list
val set_doc : stog -> doc Tmap.key -> doc -> stog
val add_path : stog -> Path.path -> doc_id -> stog
val add_doc : stog -> doc -> stog
val sort_docs_by_date : doc list -> doc list
val sort_ids_docs_by_date : ('a * doc) list -> ('a * doc) list
val sort_ids_docs_by_rules : 'b -> string list -> (doc_id * doc * 'b XR.env) list -> 'b * (doc_id * doc) list
val doc_list : ?by_date:bool -> ?set:string -> stog -> (doc Tmap.key * doc) list
val merge_stogs : stog list -> stog
val make_path : stog -> string -> string list
val find_block_by_id : doc -> string -> XR.tree option
val id_map_add : stog -> Path.Map.key -> Str_map.key -> Path.path -> string option -> stog
val map_doc_ref : stog -> doc -> Str_map.key -> doc * Str_map.key