root/as3/sain/trank/src/org/libspark/mezumona/sain/handler/DebugHandler.as

リビジョン 4527, 3.7 kB (コミッタ: mezumona, コミット時期: 2 年 前)
  • パラメーター代入行のコメントに ; が含まれているとコメントの範囲がずれるバグを修正
  • トークン処理をフィルターするクラス (WrapperHandler?) を追加
  • 複数行値を代入できるフィルター (MultilineValueHandler?) を追加
Line 
1 package org.libspark.mezumona.sain.handler
2 {
3         import flash.utils.Dictionary;
4         import org.libspark.mezumona.sain.SAINParseError;
5
6
7
8 /**
9  * DebugHandler クラスは全てのパース情報を出力するクラスです.
10  */
11 public class DebugHandler extends DefaultHandler
12 {
13         /*/////////////////////////////////////////////////////////////////////////////////////////////
14                 Constants
15         /////////////////////////////////////////////////////////////////////////////////////////////*/
16
17        
18
19
20
21         /*/////////////////////////////////////////////////////////////////////////////////////////////
22                 Constructor / Destructor
23         /////////////////////////////////////////////////////////////////////////////////////////////*/
24
25         /**
26          * DebugHandler オブジェクトを生成します.
27          */
28         public function DebugHandler(print:Function = null)
29         {
30                 if (Boolean(print)) trace_ = print;
31         }
32
33
34
35         /*/////////////////////////////////////////////////////////////////////////////////////////////
36                 Properties (& Public Fields)
37         /////////////////////////////////////////////////////////////////////////////////////////////*/
38
39        
40
41
42
43         /*/////////////////////////////////////////////////////////////////////////////////////////////
44                 Methods
45         /////////////////////////////////////////////////////////////////////////////////////////////*/
46
47         // IContentHandler
48         // --------------------------------------------------------------------------------------------
49
50         /** @inheritDoc */
51         override public function startContent():void
52         {
53                 trace_(";start of content");
54                 dat_ = new Dictionary();
55                 root_ = new Dictionary();
56                 sec_ = root_;
57         }
58
59         /** @inheritDoc */
60         override public function endContent():void
61         {
62                 trace_(";end of content");
63                 trace_("----------\nresult\n----------");
64
65                 var root:Dictionary = root_;
66                 for (var r:String in root) {
67                         trace_(r + ":" + root[r]);
68                 }
69
70                 var dat:Dictionary = dat_;
71                 for (var i:String in dat) {
72                         var sec:Dictionary = dat[i];
73                         trace_(i + ":");
74                         for (var j:String in sec)       trace_("  " + j + ":" + sec[j]);
75                 }
76         }
77
78         /** @inheritDoc */
79         override public function startSection(name:String):void
80         {
81                 sec_ = dat_["[" + name + "]"];
82                 if (!sec_) {
83                         sec_ = new Dictionary();
84                         dat_["[" + name + "]"] = sec_;
85                         trace_("[" + name + "] ;new");
86                 }
87                 else {
88                         trace_("[" + name + "] ;redef");
89                 }
90         }
91
92         /** @inheritDoc */
93         override public function endSection(name:String):void
94         {
95                 trace_(";end [" + name + "] section");
96                 sec_ = null;
97         }
98
99         /** @inheritDoc */
100         override public function setParameter(name:String, value:String):void
101         {
102                 value = value.replace(/\n/g, "\\n")
103                              .replace(/\t/g, "\\t");
104                 if (sec_.hasOwnProperty(name))          trace_(name + "=" + value + ";old:" + sec_[name]);
105                 else                                                            trace_(name + "=" + value + ";new");
106                 sec_[name] = value;
107         }
108
109         /** @inheritDoc */
110         override public function comment(data:String):void
111         {
112                 trace_(";" + data);
113         }
114
115         // IErrorHandler
116         // --------------------------------------------------------------------------------------------
117
118         /** @inheritDoc */
119         override public function error(info:SAINParseError):void
120         {
121                 trace_("error:" + info.message + "[" + info.locator + "]");
122         }
123
124         /** @inheritDoc */
125         override public function fatalError(info:SAINParseError):void
126         {
127                 trace_("fatalError:" + info.message + "[" + info.locator + "]");
128         }
129
130         /** @inheritDoc */
131         override public function warning(info:SAINParseError):void
132         {
133                 trace_("warning:" + info.message + "[" + info.locator + "]");
134         }
135
136
137
138         /*/////////////////////////////////////////////////////////////////////////////////////////////
139                 Private Fields
140         /////////////////////////////////////////////////////////////////////////////////////////////*/
141
142         private var trace_:Function = trace;
143         private var root_:Dictionary;
144         private var dat_:Dictionary;
145         private var sec_:Dictionary;
146
147
148
149 }
150
151 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。