Jelajahi Sumber

Add some helpful functions

Billy Barrow 1 tahun lalu
induk
melakukan
6d025efa7b
2 mengubah file dengan 20 tambahan dan 0 penghapusan
  1. 8 0
      src/lib/Collections/BinaryData.vala
  2. 12 0
      src/lib/Enumerable.vala

+ 8 - 0
src/lib/Collections/BinaryData.vala

@@ -268,6 +268,14 @@ namespace Invercargill {
             return builder.str;
         }
 
+        public string to_raw_string(bool null_terminate = true) {
+            Enumerable<uint8> data = this;
+            if(null_terminate) {
+                data.concat(Invercargill.single<uint8>(0));
+            }
+            return (string)data.to_array();
+        }
+
         public string to_base64() {
             return Base64.encode(to_array());
         }

+ 12 - 0
src/lib/Enumerable.vala

@@ -211,6 +211,18 @@ namespace Invercargill {
             return pair(other).all(p => equals(p.value1, p.value2));
         }
 
+        public virtual Enumerable<T> act(ItemDelegate<T> handler) {
+            return select<T>(i => {
+                handler(i);
+                return i;
+            });
+        }
+
+        public virtual Enumerable<T> unique(EqualityDelegate<T> comparison) {
+            var vec = new Vector<T>();
+            return this.where(i => vec.no(e => comparison(i, e))).act(i => vec.add(i));
+        }
+
         public virtual Enumerable<T> with(T item) {
             var seq = new Series<T>();
             seq.add(item);