Refactor JSON output
This commit is contained in:
		
							parent
							
								
									77c13cdf56
								
							
						
					
					
						commit
						5fea98111b
					
				
					 2 changed files with 56 additions and 13 deletions
				
			
		|  | @ -11,4 +11,54 @@ namespace nix { | |||
| void printValueAsJSON(EvalState & state, bool strict, | ||||
|     Value & v, std::ostream & out, PathSet & context); | ||||
| 
 | ||||
| void escapeJSON(std::ostream & str, const string & s); | ||||
| 
 | ||||
| struct JSONObject | ||||
| { | ||||
|     std::ostream & str; | ||||
|     bool first; | ||||
|     JSONObject(std::ostream & str) : str(str), first(true) | ||||
|     { | ||||
|         str << "{"; | ||||
|     } | ||||
|     ~JSONObject() | ||||
|     { | ||||
|         str << "}"; | ||||
|     } | ||||
|     void attr(const string & s) | ||||
|     { | ||||
|         if (!first) str << ","; else first = false; | ||||
|         escapeJSON(str, s); | ||||
|         str << ":"; | ||||
|     } | ||||
|     void attr(const string & s, const string & t) | ||||
|     { | ||||
|         attr(s); | ||||
|         escapeJSON(str, t); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| struct JSONList | ||||
| { | ||||
|     std::ostream & str; | ||||
|     bool first; | ||||
|     JSONList(std::ostream & str) : str(str), first(true) | ||||
|     { | ||||
|         str << "["; | ||||
|     } | ||||
|     ~JSONList() | ||||
|     { | ||||
|         str << "]"; | ||||
|     } | ||||
|     void elem() | ||||
|     { | ||||
|         if (!first) str << ","; else first = false; | ||||
|     } | ||||
|     void elem(const string & s) | ||||
|     { | ||||
|         elem(); | ||||
|         escapeJSON(str, s); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue