glossa_shared/decode/
file.rs1use super::*;
2
3pub fn decode_file<T, P>(src_file: P) -> ResolverResult<T>
4where
5 T: serde::de::DeserializeOwned,
6 P: AsRef<std::path::Path>,
7{
8 use std::{fs::File, io::BufReader};
9
10 use bincode::serde::decode_from_std_read;
11 use tap::Pipe;
12
13 let decode = |src| decode_from_std_read::<T, _, _>(src, bincode_std_cfg());
14
15 src_file
16 .pipe(File::open)?
17 .pipe(BufReader::new)
18 .pipe_ref_mut(decode)
19 .map_err(Into::into)
20}
21
22pub fn decode_single_file_to_flatten_map<P: AsRef<std::path::Path>>(
32 src_file: P,
33) -> ResolverResult<L10nFlattenMap> {
34 decode_file(src_file)
35}
36
37pub fn decode_file_to_maps<P: AsRef<std::path::Path>>(
48 src_file: P,
49) -> ResolverResult<L10nMaps> {
50 decode_file(src_file)
51}
52
53pub fn decode_single_file_to_dsl_map<P: AsRef<std::path::Path>>(
63 src_file: P,
64) -> ResolverResult<L10nDSLMap> {
65 decode_file(src_file)
66}
67
68pub fn decode_file_to_dsl_maps<P: AsRef<std::path::Path>>(
79 src_file: P,
80) -> ResolverResult<DSLMaps> {
81 decode_file(src_file)
82}