aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/dumper
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/package/dumper')
-rw-r--r--crates/shirabe/src/package/dumper/array_dumper.rs30
1 files changed, 14 insertions, 16 deletions
diff --git a/crates/shirabe/src/package/dumper/array_dumper.rs b/crates/shirabe/src/package/dumper/array_dumper.rs
index 3d3b27a..3523d58 100644
--- a/crates/shirabe/src/package/dumper/array_dumper.rs
+++ b/crates/shirabe/src/package/dumper/array_dumper.rs
@@ -3,9 +3,21 @@
use indexmap::IndexMap;
use shirabe_php_shim::PhpMixed;
+use crate::package::Mirror;
use crate::package::PackageInterfaceHandle;
use crate::package::SUPPORTED_LINK_TYPES;
+/// Serializes a Mirror back into the PHP array shape `{url, preferred}`.
+fn mirror_to_php(mirror: Mirror) -> PhpMixed {
+ let mut entry: IndexMap<String, Box<PhpMixed>> = IndexMap::new();
+ entry.insert("url".to_string(), Box::new(PhpMixed::String(mirror.url)));
+ entry.insert(
+ "preferred".to_string(),
+ Box::new(PhpMixed::Bool(mirror.preferred)),
+ );
+ PhpMixed::Array(entry)
+}
+
#[derive(Debug)]
pub struct ArrayDumper;
@@ -62,14 +74,7 @@ impl ArrayDumper {
mirrors
.into_iter()
.enumerate()
- .map(|(i, m)| {
- (
- i.to_string(),
- Box::new(PhpMixed::Array(
- m.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
- )),
- )
- })
+ .map(|(i, m)| (i.to_string(), Box::new(mirror_to_php(m))))
.collect(),
)),
);
@@ -108,14 +113,7 @@ impl ArrayDumper {
mirrors
.into_iter()
.enumerate()
- .map(|(i, m)| {
- (
- i.to_string(),
- Box::new(PhpMixed::Array(
- m.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
- )),
- )
- })
+ .map(|(i, m)| (i.to_string(), Box::new(mirror_to_php(m))))
.collect(),
)),
);