From f4ee30a61b018afd61b67b8a7269a826e2a98281 Mon Sep 17 00:00:00 2001 From: Justin Davis Date: Sun, 12 Feb 2012 21:01:47 -0500 Subject: Start of Io version of modpkgmeta. --- bin/modpkgmeta | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) mode change 100644 => 100755 bin/modpkgmeta diff --git a/bin/modpkgmeta b/bin/modpkgmeta old mode 100644 new mode 100755 index e69de29..8d8066e --- a/bin/modpkgmeta +++ b/bin/modpkgmeta @@ -0,0 +1,74 @@ +#!/usr/bin/env io + +PFieldVal := Object clone +PFieldVal do( + stringValue := nil + ownerField := nil + + moveTo := method(newOwner, + ownerField removeValue(self) + ownerField = newOwner addValue(self) + self + ) + matches := method(start, + stringValue beginsWithSeq(start) + ) + asString := method(stringValue) +) + +PFieldValMux := Object clone +PFieldValMux do( + init := method( + self fieldVals := List clone + ) + addValue := method(fv, + fieldVals append(fv) + self + ) + moveTo := method(destField, + fieldVals foreach(fv, + fv moveTo(destField) + ) + self + ) + asList := method( + fieldVals + ) +) + +PField := Object clone +PField do( + init := method( + self fieldVals := List clone + ) + match := method( + mux := PFieldValMux clone + call evalArgs foreach(arg, + fieldVals foreach(fv, + fv matches(arg) ifTrue(mux addValue(fv)) + ) + ) + mux + ) + addValue := method(newFV, + fieldVals append(newFV) + newFV ownerField = self + self + ) + removeValue := method(fv, + fieldVals remove(fv) + self + ) +) + +depends := PField clone +list("foo", "bar") foreach(str, + val := PFieldVal clone + val stringValue = str + depends addValue(val) +) + +checkdepends := PField clone +depends match("foo", "bar") moveTo(checkdepends) +checkdepends fieldVals foreach(fv, fv asString println) +checkdepends println -- cgit v1.2.3-24-g4f1b