aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/data/collection/dictionary/plist.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/lux/data/collection/dictionary/plist.lux')
-rw-r--r--stdlib/source/lux/data/collection/dictionary/plist.lux14
1 files changed, 13 insertions, 1 deletions
diff --git a/stdlib/source/lux/data/collection/dictionary/plist.lux b/stdlib/source/lux/data/collection/dictionary/plist.lux
index 8b2bef218..2f4593fac 100644
--- a/stdlib/source/lux/data/collection/dictionary/plist.lux
+++ b/stdlib/source/lux/data/collection/dictionary/plist.lux
@@ -1,7 +1,10 @@
(.module:
[lux #*
[data
- [text ("text/." Equivalence<Text>)]]])
+ ["." product]
+ [text ("text/." Equivalence<Text>)]
+ [collection
+ [list ("list/." Functor<List>)]]]])
(type: #export (PList a)
(List [Text a]))
@@ -17,6 +20,15 @@
(#.Some v')
(get key properties'))))
+(do-template [<name> <type> <access>]
+ [(def: #export <name>
+ (All [a] (-> (PList a) (List <type>)))
+ (list/map <access>))]
+
+ [keys Text product.left]
+ [values a product.right]
+ )
+
(def: #export (contains? key properties)
(All [a] (-> Text (PList a) Bit))
(case (get key properties)