package rpmfile
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file rpmfile.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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
include Types module P (Selector : Selector.S) = struct let metadata_parser = let open Angstrom in let* lead = Lead.parser in let* signature = Header.parser ~selector:Selector.select_signature_tag in let* header = Header.parser ~selector:Selector.select_header_tag in return { lead; signature; header } end module Reader (Selector : Selector.S) = struct type result = (metadata, string) Stdlib.result exception Error of string let of_string = let module P = P (Selector) in Angstrom.(parse_string ~consume:Consume.Prefix) P.metadata_parser let unwrap = function | Ok metadata -> metadata | Error msg -> raise (Error msg) let of_string_exn s = of_string s |> unwrap let of_file' path = let module P = P (Selector) in In_channel.with_open_bin path (fun ic -> Angstrom_unix.parse P.metadata_parser ic |> snd) let of_file path = of_file' path let of_file_exn path = of_file' path |> unwrap end module Selector = Selector module Types = Types module Tag = Tag module D = Decode module Header = Header module Lead = Lead exception Not_found of string exception Decode_error = D.Error let get_value tag header = List.assoc tag header let get' ~msg decoder tag header = try get_value tag header |> decoder with Stdlib.Not_found -> raise @@ Not_found (match msg with Some s -> s | None -> string_of_int tag) let get_opt' decoder tag header = try Some (get_value tag header |> decoder) with Stdlib.Not_found -> None let get ?msg (decoder : 'a D.decoder) tag metadata = get' ~msg decoder tag metadata.header let get_opt (decoder : 'a D.decoder) tag metadata = get_opt' decoder tag metadata.header let get_from_signature ?msg (decoder : 'a D.decoder) tag metadata = get' ~msg decoder tag metadata.signature let get_opt_from_signature (decoder : 'a D.decoder) tag metadata = get_opt' decoder tag metadata.signature let name = get ~msg:"name" D.string Tag.Header.name let rec summary' = get ~msg:"summery" D.string_array Tag.Header.summary and summary m = summary' m |> List.hd let rec description' = get ~msg:"description" D.string_array Tag.Header.description and description m = description' m |> List.hd let build_time = get ~msg:"build_time" D.native_int Tag.Header.build_time and build_host = get ~msg:"build_host" D.string Tag.Header.build_host let size = get ~msg:"size" D.native_int Tag.Header.size let os = get ~msg:"os" D.string Tag.Header.os let license = get ~msg:"license" D.string Tag.Header.license let vendor = get ~msg:"vendor" D.string Tag.Header.vendor let version = get ~msg:"version" D.string Tag.Header.version let release = get ~msg:"release" D.string Tag.Header.release let packager = get ~msg:"packager" D.string Tag.Header.packager let distribution = get ~msg:"distribution" D.string Tag.Header.distribution let group = get ~msg:"group" D.string_array Tag.Header.group let url = get ~msg:"url" D.string Tag.Header.url let dist_url = get ~msg:"dist_url" D.string Tag.Header.dist_url let arch = get ~msg:"arch" D.string Tag.Header.arch let archive_size = get_opt D.native_int Tag.Header.archive_size let md5 = get_opt_from_signature D.binary Tag.Signature.md5 let sha1 = get_from_signature ~msg:"sha1" D.binary Tag.Signature.sha1 let payload_size = get_from_signature ~msg:"payload_size" D.native_int Tag.Signature.payload_size let payload_format = get ~msg:"payload_format" D.string Tag.Header.payload_format let payload_compressor = get ~msg:"payload_compressor" D.string Tag.Header.payload_compressor let payload_flags = get ~msg:"payload_flags" D.string Tag.Header.payload_flags let source_rpm = get ~msg:"source_rpm" D.string Tag.Header.source_rpm let filenames = get ~msg:"base_names" D.string_array Tag.Header.base_names let platform = get ~msg:"platform" D.string Tag.Header.platform let provide_names = get ~msg:"provide_name" D.string_array Tag.Header.provide_name let require_names = get ~msg:"require_name" D.string_array Tag.Header.require_name
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>