Changeset 43 in code for trunk/cli/convert.ml


Ignore:
Timestamp:
Dec 18, 2022, 2:49:25 PM (2 years ago)
Author:
fox
Message:

Relation dates, with conversion condition upon it

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/cli/convert.ml

    r42 r43  
    88                let source = List.hd files in
    99                let dest = Filename.concat r.Conversion.dir (Text.short_id text) in
    10                 List.fold_left
    11                         (fun a f ->
    12                                 match f.Conversion.page with None -> false || a
    13                                 | Some page ->
    14                                         let dest = dest ^ f.Conversion.ext in
    15                                         (if is_older source dest then (File_store.file dest (page r text); true) else false)
    16                                         || a)
     10                List.fold_left (fun a f ->
     11                        match f.Conversion.page with None -> false || a
     12                        | Some page ->
     13                                let dest = dest ^ f.Conversion.ext in
     14                                (if is_older source dest || Conversion.Rel.Id_map.mem text.Text.id r.relations
     15                                then (File_store.file dest (page r text); true) else false)
     16                                || a)
    1717                        false cs
    1818        | x -> Printf.eprintf "Can't convert Content-Type: %s file: %s" x text.Text.title; false
     
    2727        t
    2828
    29 let acc_rel source target a =
    30         prerr_endline source;
    31         Conversion.Id_map.update target
    32         (function Some set -> Some (Conversion.Ref_set.add source set)
    33                 | None -> Some (Conversion.Ref_set.singleton source))
    34         a
    35 
    36 let empty_rels () = Conversion.Id_map.empty, Conversion.Id_map.empty
    37 
    38 let acc_txt_refs text refs = String_set.fold (acc_rel text.Text.id) (Text.set "references" text) refs
    39 let acc_txt_reps text reps = String_set.fold (acc_rel text.Text.id) (Text.set "in-reply-to" text) reps
    40 let acc_txt_rels (refs, reps) (elt, _paths) =
    41         acc_txt_refs elt refs, acc_txt_reps elt reps
    42 
    43 let acc_pck_refs id refs_ls refs = String_set.fold (acc_rel id) (String_set.of_list refs_ls) refs
    44 let acc_pck_reps id reps_ls reps = String_set.fold (acc_rel id) (String_set.of_list reps_ls) reps
    45 let acc_pck_rels refs_reps peer =
    46         let path = try List.hd peer.Peers.pack.Header_pack.info.locations with Failure _ -> "" in
    47         try Header_pack.fold
    48                 (fun (refs, reps) id _t _title _authors _topics refs_ls reps_ls ->
    49                         let id = Filename.concat path id in
    50                         acc_pck_refs id refs_ls refs, acc_pck_reps id reps_ls reps)
    51                 refs_reps peer.Peers.pack
    52         with e -> prerr_endline "acc_pck_rels"; raise e
    53 
    5429let directory converters noindex repo =
    5530        let order = File_store.oldest in
    5631        let repo =
    57                 let references, replies =
    58                         File_store.fold ~dir:repo.Conversion.dir ~order acc_txt_rels (empty_rels ()) in
    59                 let references, replies = Peers.fold acc_pck_rels (references, replies) in
    60                 Printf.eprintf "%s %d\n" repo.Conversion.dir (Conversion.Id_map.cardinal replies);
    61                 { repo with references; replies } in
     32                let open Conversion in
     33                let rels = File_store.fold ~dir:repo.dir ~order Rel.acc_txt Rel.empty_map in
     34                let relations = Peers.fold Rel.acc_pck rels in
     35                { repo with relations } in
    6236        let acc (ts,ls,acc) ((elt,_) as r) = Topic_set.to_map ts (Text.set "topics" elt), elt::ls,
    6337                if convert converters repo r then acc+1 else acc in
     
    9670                        | Ok text ->
    9771                                let dir = "." in
    98                                 let references, replies = File_store.(fold ~dir ~order:newest acc_txt_rels (empty_rels ())) in
    99                                 let repo = { (Conversion.empty ()) with dir; kv = load_kv ""; references; replies } in
     72                                let open Conversion in
     73                                let relations = File_store.(fold ~dir ~order:newest Rel.acc_txt Rel.empty_map) in
     74                                let repo = { (Conversion.empty ()) with dir; kv = load_kv ""; relations } in
    10075                                ignore @@ convert (converters types repo.kv) repo (text, [path])
    10176                )
Note: See TracChangeset for help on using the changeset viewer.