ab8bb5f64318272aa8903001ff2a0b3e0a96ccd1
[potlatch2.git] / org / as3yaml / ConstructorImpl.as
1 /*
2  * Copyright (c) 2007 Derek Wischusen
3  * 
4  * Permission is hereby granted, free of charge, to any person obtaining a copy of 
5  * this software and associated documentation files (the "Software"), to deal in 
6  * the Software without restriction, including without limitation the rights to 
7  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
8  * of the Software, and to permit persons to whom the Software is furnished to do
9  * so, subject to the following conditions:
10  * 
11  * The above copyright notice and this permission notice shall be included in all
12  * copies or substantial portions of the Software.
13  * 
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
20  * SOFTWARE.
21  */
22
23 package org.as3yaml {
24
25     import flash.utils.Dictionary;
26     
27     import org.idmedia.as3commons.util.HashMap;
28     import org.idmedia.as3commons.util.Map;;
29         
30         public class ConstructorImpl extends SafeConstructor 
31         {
32             private static var yamlConstructors : Dictionary = new Dictionary();
33             private static var yamlMultiConstructors : Dictionary = new Dictionary();
34             private static var yamlMultiRegexps : HashMap = new HashMap();
35             
36             override public function getYamlConstructor(key:Object) : Function {
37                 
38                 var ctor : Function = yamlConstructors[key];
39                 
40                 if(ctor == null) {
41                   ctor = super.getYamlConstructor(key);
42                 }   
43                 return ctor;
44             }
45         
46             override public function getYamlMultiConstructor(key : Object) : Function {
47                 
48                 var ctor : Function = yamlMultiConstructors[key];
49                 
50                 if(ctor == null) {
51                  ctor = super.getYamlMultiConstructor(key);
52                 } 
53                    
54                 return ctor;
55             }
56         
57             override public function getYamlMultiRegexp(key : Object) : RegExp {
58                 var mine : RegExp =  yamlMultiRegexps.get(key);
59                 if(mine == null) {
60                     mine = super.getYamlMultiRegexp(key);
61                 }
62                 return mine;
63             }
64         
65             override public function getYamlMultiRegexps() : Map {
66                 var all : Map = new HashMap();
67                 all.putAll(super.getYamlMultiRegexps());
68                 all.putAll(yamlMultiRegexps);
69                 return all;
70             }
71         
72             public static function addConstructor(tag : String, ctor : YamlConstructor) : void {
73                 yamlConstructors.put(tag,ctor);
74             }
75         
76             public static function addMultiConstructor(tagPrefix : String, ctor : YamlMultiConstructor) : void {
77                 yamlMultiConstructors.put(tagPrefix,ctor);
78                 yamlMultiRegexps.put(tagPrefix,new RegExp("^"+tagPrefix));
79             }
80         
81             public function ConstructorImpl( composer : Composer) {
82                 super(composer);
83             }
84         
85         }
86 }