
cyclops.ClojureConverters Maven / Gradle / Ivy
The newest version!
package cyclops;
import com.aol.cyclops2.data.collections.extensions.CollectionX;
import com.aol.cyclops2.types.foldable.To;
import cyclops.collections.clojure.*;
import cyclops.collections.immutable.PersistentMapX;
import clojure.lang.*;
import java.util.Comparator;
import java.util.HashMap;
import java.util.TreeMap;
import java.util.function.Function;
/**
* Class for holding conversion methods between types
* Use in conjunction with {@link To#to(Function)} for fluent conversions
*
*
* {@code
* LinkedList list1 = ListX.of(1,2,3)
* .to(Converters::LinkedList);
ArrayList list2 = ListX.of(1,2,3)
.to(Converters::ArrayList);
* }
*
*
*/
public interface ClojureConverters {
public static PersistentHashMap PersistentHashMap(PersistentMapX vec){
return vec.unwrapNested(PersistentHashMap.class,
()->{
ClojureHashMapX map = ClojureHashMapX.copyFromMap(vec).unwrap();
return map.unwrap();
} );
}
public static ,V> PersistentTreeMap PersistentTreeMap(PersistentMapX vec){
return vec.unwrapNested(PersistentTreeMap.class,
()->{
ClojureTreeMapX map = ClojureTreeMapX.copyFromMap((Comparator) Comparator.naturalOrder(),vec).unwrap();
return map.unwrap();
} );
}
public static PersistentTreeMap PersistentTreeMap(PersistentMapX vec, Comparator comp){
return vec.unwrapNested(TreeMap.class,
()->{
ClojureTreeMapX map = ClojureTreeMapX.copyFromMap(comp,vec).unwrap();
return map.unwrap();
} );
}
public static > PersistentTreeSet PersistentTreeSet(CollectionX vec){
return vec.unwrapNested(PersistentTreeSet.class,
()->{
ClojureTreeSetX set = ClojureTreeSetX.copyFromCollection(vec,(Comparator)Comparator.naturalOrder()).unwrap();
return set.unwrap();
});
}
public static PersistentHashSet PersistentHashSet(CollectionX vec){
return vec.unwrapNested(PersistentHashSet.class,
()-> {
ClojureHashSetX set = ClojureHashSetX.copyFromCollection(vec).unwrap();
return set.unwrap();
});
}
public static PersistentTreeSet PersistentTreeSet(CollectionX vec, Comparator comp) {
return vec.unwrapNested(PersistentTreeSet.class,
() -> {
ClojureTreeSetX set = ClojureTreeSetX.copyFromCollection(vec, comp).unwrap();
return set.unwrap();
});
}
public static PersistentHashSet PersistentHashSet(CollectionX vec, Comparator comp) {
return vec.unwrapNested(PersistentHashSet.class,
() -> {
ClojureHashSetX set = ClojureHashSetX.copyFromCollection(vec).unwrap();
return set.unwrap();
});
}
public static PersistentQueue PersistentQueue(CollectionX vec){
return vec.unwrapNested(PersistentQueue.class,
()-> {
ClojureQueueX queue = ClojureQueueX.copyFromCollection(vec).unwrap();
return queue.unwrap();
});
}
public static PersistentList PersistentList(CollectionX vec){
return vec.unwrapNested(PersistentList.class,
()-> {
ClojureListX vector = ClojureListX.copyFromCollection(vec).unwrap();
return vector.unwrap();
});
}
public static PersistentVector PersistentVector(CollectionX vec){
return vec.unwrapNested(PersistentVector.class,
()-> {
ClojureVectorX vector = ClojureVectorX.copyFromCollection(vec).unwrap();
return vector.unwrap();
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy