在OCaml中导入和解析日历

问题描述 投票:0回答:1

我正在OCaml中进行计划/计划,我希望能够使用iCal文件作为输入,但是我不知道如何在OCaml中将文件解析为我自己的日历类型。理想情况下,我希望能够以与使用Yojson读取json文件相同的方式读取iCal文件。关于如何实现此目标的任何想法?

json parsing functional-programming ocaml icalendar
1个回答
0
投票

如果您正在谈论ICalendar格式,那么可以使用OCaml库icalendar进行读取。您可以使用

安装它
opam install icalendar

它几乎没有文档,因此这里是一个示例程序,它将读取并打印回日历。

open Format

let read filename =
  let buf = Buffer.create 4096 in
  let src = open_in filename in
  let rec loop () = loop (Buffer.add_channel buf src 4096) in
  try loop () with End_of_file -> close_in src; Buffer.contents buf

let main filename =
  match Icalendar.parse (read filename) with
  | Error failure ->
    eprintf "Failed to read file %s %s@\n%!" filename failure
  | Ok calendar ->
    printf "%a@\n%!" Icalendar.pp calendar

let () = main Sys.argv.(1)

注意,我还必须编写将整个文件读入字符串的read函数。此功能不是标准库的一部分,而是其他库(例如,基本库,核心库,电池库)通常提供的。

[要生成程序,请创建一个空文件夹,将代码放入文件中,例如example.ml,然后在该文件夹中发出以下命令:

ocamlbuild -pkg icalendar example.native

然后您可以将内置的二进制文件用作

./example.native input.ics

其中input.ics是样本输入。

© www.soinside.com 2019 - 2024. All rights reserved.