summary refs log blame commit diff
path: root/pkgs/lib/strings-with-deps.nix
blob: 78cded99ef7129fb449cb83d67760beaeb2c3795 (plain) (tree)
1
2
3
4
5
6
7





                                         
  























                                        
                                  



                                                                    
                                                                                

          



                                                                          
        

                                                                                     

                                                         
                                                   
 
args: 
	with args;
	with lib;
	let 
		inherit (builtins)	
			head tail isList;
in
rec {

/*
	let  shelllib = rec {
		a= {
			text = "aaaa";
			deps = [b c];
		};
		b = {
			text = "b";
		};
		c = {
			text = "c";
			deps = [];
		};
	};
	in
	
	[textClosure [shelllib.a]
		textclosure shelllib.a];

	
*/
	
	textClosureDupList = arg: 
	(
		if isList arg then 
			textClosureDupList {text = ""; deps = arg;} 
		else
			(concatLists (map textClosureDupList arg.deps)) ++ [arg]
	);

	textClosureList = arg:
		(map	(x : x.text) 
			(uniqList {inputList = textClosureDupList arg;}));
	textClosure = arg: concatStringsSep "\n" (textClosureList arg);
	
	textClosureMap = f: arg: concatStringsSep "\n" (map f (textClosureList arg));

	noDepEntry = text : {inherit text;deps = [];};
	FullDepEntry = text : deps: {inherit text deps;};
	PackEntry = deps: {inherit deps; text="";};
}