24 个版本

0.9.1 2024 年 3 月 26 日
0.9.0 2023 年 11 月 24 日
0.8.8 2020 年 2 月 4 日
0.8.6 2019 年 11 月 25 日
0.2.0 2015 年 11 月 2 日

138解析器实现

Download history 1548/week @ 2024-04-27 1600/week @ 2024-05-04 1225/week @ 2024-05-11 1540/week @ 2024-05-18 1832/week @ 2024-05-25 2034/week @ 2024-06-01 1875/week @ 2024-06-08 1689/week @ 2024-06-15 2644/week @ 2024-06-22 2189/week @ 2024-06-29 2588/week @ 2024-07-06 1784/week @ 2024-07-13 2185/week @ 2024-07-20 2306/week @ 2024-07-27 1984/week @ 2024-08-03 1792/week @ 2024-08-10

每月 8,633 次下载

MIT 许可证

74KB
2K SLoC

ion   crates-badge docs-badge

MIT License Test Status

ion:高级 Ion 文件解析器

概述

ion 是一个用于解析 *.ion 文件的复杂解析器,用 Rust 编写,用于处理多种数据格式。这种格式非常适合配置和结构化数据,支持多种类型,如 StringInteger (i64)Float (f64)BooleanArraysDictionary

特性

  • 支持多种数据类型:能够解析字符串、整数、浮点数、布尔值、数组和字典。
  • 基于部分的组织:便于在具有不同结构的独立部分中组织数据。
  • 高效的解析:针对解析复杂 Ion 文档的性能和可靠性进行了优化。

示例用法

以下示例展示了 *.ion 文件的可灵活性和结构

基本部分

[CONTRACT]
id = "HOTEL001"
name = "Hotel001"
currency = "EUR"
active = true
markets = ["DE", "PL"]

表格格式

[DEF.MEAL]
| code | description |
|------|-------------|
| RO   | Room Only   |

[DEF.ROOM]
| code | description |      occ       |
|------|-------------|----------------|
| SGL  | Single      | P1:2 A1:1 C0:1 |
| DBL  | Double      | P2:3 A2:2 C0:1 |

具有可能字段类型的基本部分

[CONTRACT]
country = "Poland"                  // String
markets = ["PL", "DE", "UK"]        // Array
75042 = {                           // Dictionary
    view = "SV"                     // String
    loc  = ["M", "B"]               // Array
    dist = { beach_km = 4.1 }       // Dictionary
}

由几个部分构建的复杂文档

[CONTRACT]
country = "Poland"
markets = ["PL", "DE", "UK"]
75042 = {
    view = "SV"
    loc  = ["M", "B"]
    dist = { beach_km = 4.1 }
}

[RATE.PLAN]
|       dates       | code |  description   |    rooms    | rules |
|-------------------|------|----------------|-------------|-------|
| 20200512:20200514 | BAR  | Best available | SGL,DBL,APP |       |
| 20200601:20200614 | BBV  | Best Bar View  | DBL,APP     |       |

# A `key-value` and `table` section
[RATE.BASE]
enable = true
legend = {
    UN = "unit night"
    RO = "room only"
}
|       dates       | charge | room | occ | meal |  amt   |
|-------------------|--------|------|-----|------|--------|
| 20161122:20170131 | UN     | APP  | A2  | RO   | 250.00 |
| 20161122:20170131 | UN     | APP  | A4  | RO   | 450.00 |
| 20161122:20170131 | UN     | APP  | A6  | RO   | 650.00 |

许可证

在 MIT 许可证下授权。

无运行时依赖