PageRenderTime 88ms CodeModel.GetById 84ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/src/Manos/Manos.Template/TemplateFactory.cs

http://github.com/jacksonh/manos
C# | 80 lines | 39 code | 18 blank | 23 comment | 8 complexity | 5b2cba36dfdfa4206284e087755ac41d MD5 | raw file
 1//
 2// Copyright (C) 2010 Jackson Harper (jackson@manosdemono.com)
 3//
 4// Permission is hereby granted, free of charge, to any person obtaining
 5// a copy of this software and associated documentation files (the
 6// "Software"), to deal in the Software without restriction, including
 7// without limitation the rights to use, copy, modify, merge, publish,
 8// distribute, sublicense, and/or sell copies of the Software, and to
 9// permit persons to whom the Software is furnished to do so, subject to
10// the following conditions:
11// 
12// The above copyright notice and this permission notice shall be
13// included in all copies or substantial portions of the Software.
14// 
15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22//
23//
24
25
26
27
28using System;
29using System.IO;
30using System.Text;
31using System.Linq;
32using System.Reflection;
33using System.Collections;
34using System.Collections.Generic;
35
36
37namespace Manos.Templates {
38	
39	public static class TemplateFactory {
40		
41		private static Dictionary<string,IManosTemplate> templates = new Dictionary<string, IManosTemplate> ();
42		
43		public static IManosTemplate Get (string name)
44		{
45			IManosTemplate res = null;
46			
47			if (!TryGet (name, out res))
48				return null;
49			
50			return res;
51		}
52		
53		public static bool TryGet (string name, out IManosTemplate template)
54		{
55			if (name == null)
56				throw new ArgumentNullException ("name");
57			
58			return templates.TryGetValue (name, out template);
59		}
60		
61		public static void Register (string name, IManosTemplate template)
62		{
63			if (name == null)
64				throw new ArgumentNullException ("name");
65			if (template == null)
66				throw new ArgumentNullException ("template");
67			
68			if (templates.ContainsKey (name))
69				throw new InvalidOperationException (String.Format ("A template named {0} has already been registered.", name));
70			
71			templates.Add (name, template);
72		}
73		
74		public static void Clear ()
75		{
76			templates.Clear ();
77		}
78	}
79}
80