amalgame/commit

ADDED: filter mode for preloaded

authorJacco van Ossenbruggen
Sun Aug 31 11:18:59 2014 +0200
committerJacco van Ossenbruggen
Sun Aug 31 11:18:59 2014 +0200
commitd6674a188c838d383860f056a99f117e1a00381e
tree9f0a764f6caf9b29de5256ada834c8d52a2fe823
parentdc4049945961c90a4a30c0b390a4a460de0cd917
Diff style: patch stat
diff --git a/lib/ag_modules/preloaded_mapping.pl b/lib/ag_modules/preloaded_mapping.pl
index c8e4c7b..b589efa 100644
--- a/lib/ag_modules/preloaded_mapping.pl
+++ b/lib/ag_modules/preloaded_mapping.pl
@@ -7,6 +7,7 @@
 
 :- public amalgame_module/1.
 :- public matcher/4.
+:- public filter/3.
 :- public parameter/4.
 
 amalgame_module(amalgame:'SelectPreLoaded').
@@ -27,6 +28,19 @@ matcher(Source, Target, Mapping, Options) :-
 		Mapping0),
 	sort(Mapping0, Mapping).
 
+filter(In, Out, Options) :-
+	option(name(Graph), Options),
+	filter_(Graph, In, Out).
+
+filter_(_Graph, [], []).
+filter_(Graph, [Hin|Tin], Out) :-
+	Hin = align(S,T,P),
+	(   has_correspondence(align(S, T, PGraph), Graph)
+	->  append(PGraph, P, Pmerged),
+	    Out = [ align(S, T, Pmerged) | Tout]
+	;   Out = Tout
+	),
+	filter_(Graph, Tin, Tout).
 
 c_from_graph(align(S,T,P), Source, Target, Graph) :-
 	has_correspondence(align(S,T,P), Graph),