stog

Static web site compiler, able to handle blog posts as well as regular pages or any XML document in general
IN THIS PACKAGE
Module Stog . 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 = {
doc_path : Path.path;
doc_parent : Path.path option;
doc_children : Path.path list;
doc_type : string;
doc_prolog : Xml.prolog option;
doc_body : body;
doc_date : date option;
doc_title : string;
doc_keywords : string list;
doc_topics : string list;
doc_defs : def list;
doc_src : string;
doc_sets : string list;(*

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

*)
doc_lang_dep : bool;(*

whether a file must be generated for each language

*)
doc_out : body option;
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 =
| Date
| Topic of string
| Keyword of string
| Ref
module Graph : Graph.S with type key = doc_id and type edge_data = edge_type
type file_tree = {
files : Str_set.t;
dirs : file_tree Str_map.t;
}
type stog_mod = {
mod_requires : Str_set.t;
mod_defs : def list;
}
type 'a dependency =
| File of string
| Doc of 'a
module Depset : Set.S with type elt = string dependency
type stog_dependencies = Depset.t Str_map.t
type stog = {
stog_dir : string;
stog_docs : ( doc, doc ) Tmap.t;
stog_docs_by_path : doc_id Path_trie.t;
stog_defs : def list;
stog_tmpl_dirs : string list;
stog_mod_dirs : string list;
stog_cache_dir : string;
stog_title : string;
stog_desc : body;
stog_graph : Graph.t;
stog_docs_by_kw : Doc_set.t Str_map.t;
stog_docs_by_topic : Doc_set.t Str_map.t;
stog_archives : Doc_set.t Int_map.t Int_map.t;
stog_base_url : Url.t;
stog_email : string;
stog_rss_length : int;
stog_lang : string option;
stog_outdir : string;
stog_main_doc : doc_id option;
stog_files : file_tree;
stog_modules : stog_mod Str_map.t;
stog_used_mods : Str_set.t;
stog_depcut : bool;
stog_deps : stog_dependencies;
stog_id_map : (Path.path * string option) Str_map.t Path.Map.t;
stog_levels : (string * int list) list Str_map.t;
stog_publish_only : Filter_types.t option;
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