• R/O
  • SSH
  • HTTPS

asclipse: 提交


Commit MetaInfo

修订版319 (tree)
时间2009-06-26 23:47:10
作者shin1

Log Message

tool関連をプロダクトコードからテストケースへ移動した。

更改概述

差异

--- as3ast/trunk/src/test/java/jp/sourceforge/asclipse/as3/tool/AS3ContextToFile.java (nonexistent)
+++ as3ast/trunk/src/test/java/jp/sourceforge/asclipse/as3/tool/AS3ContextToFile.java (revision 319)
@@ -0,0 +1,65 @@
1+package jp.sourceforge.asclipse.as3.tool;
2+
3+import java.io.File;
4+import java.io.FileNotFoundException;
5+import java.io.FileOutputStream;
6+import java.io.IOException;
7+import java.io.ObjectOutputStream;
8+import java.util.List;
9+import java.util.Map;
10+
11+import jp.sourceforge.asclipse.as3.IAS3Context;
12+import jp.sourceforge.asclipse.as3.ParserUtil;
13+import jp.sourceforge.asclipse.as3.element.AS3Element;
14+import jp.sourceforge.asclipse.as3.element.AS3Root;
15+import jp.sourceforge.asclipse.as3.element.AS3Type;
16+import jp.sourceforge.asclipse.as3.internal.DefaultAS3Context;
17+
18+/**
19+ * ビルトインasファイルを解析し、シリアライズする。
20+ * @author shin1
21+ */
22+public class AS3ContextToFile {
23+
24+ private AS3ContextToFile() {
25+ }
26+
27+ /**
28+ * @param args
29+ */
30+ public static void main(String[] args) {
31+ Map<File, AS3Root> parseAll =
32+ ParserUtil.parseAll(new File("src/main/resources/as"), new String[0]);
33+ IAS3Context context = new DefaultAS3Context("builtin");
34+ for (AS3Root root : parseAll.values()) {
35+ List<AS3Element> children = root.getChildren();
36+ boolean hasType = false;
37+ for (AS3Element element : children) {
38+ if (element instanceof AS3Type) {
39+ hasType = true;
40+ }
41+ }
42+ if (!hasType) {
43+ System.err.println(root.getResourceName() + " doen't have as3type.");
44+ }
45+ context.addAS3Root(root);
46+ }
47+ ObjectOutputStream out = null;
48+ try {
49+ out = new ObjectOutputStream(new FileOutputStream("target/builtin.ser"));
50+ out.writeObject(context);
51+ } catch (FileNotFoundException e) {
52+ e.printStackTrace();
53+ } catch (IOException e) {
54+ e.printStackTrace();
55+ } finally {
56+ if (out != null) {
57+ try {
58+ out.close();
59+ } catch (IOException e) {
60+ e.printStackTrace();
61+ }
62+ }
63+ }
64+ }
65+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- as3ast/trunk/src/test/java/jp/sourceforge/asclipse/as3/tool/SmallSourceGenerator.java (nonexistent)
+++ as3ast/trunk/src/test/java/jp/sourceforge/asclipse/as3/tool/SmallSourceGenerator.java (revision 319)
@@ -0,0 +1,268 @@
1+package jp.sourceforge.asclipse.as3.tool;
2+
3+import java.io.BufferedReader;
4+import java.io.File;
5+import java.io.FileFilter;
6+import java.io.FileInputStream;
7+import java.io.FileNotFoundException;
8+import java.io.FileReader;
9+import java.io.IOException;
10+import java.io.InputStream;
11+import java.io.PrintStream;
12+import java.util.ArrayList;
13+import java.util.List;
14+
15+import jp.sourceforge.asclipse.as3.ParserUtil;
16+import jp.sourceforge.asclipse.as3.element.AS3Class;
17+import jp.sourceforge.asclipse.as3.element.AS3ConstProperty;
18+import jp.sourceforge.asclipse.as3.element.AS3Element;
19+import jp.sourceforge.asclipse.as3.element.AS3Function;
20+import jp.sourceforge.asclipse.as3.element.AS3Import;
21+import jp.sourceforge.asclipse.as3.element.AS3Include;
22+import jp.sourceforge.asclipse.as3.element.AS3Interface;
23+import jp.sourceforge.asclipse.as3.element.AS3NamespaceDirective;
24+import jp.sourceforge.asclipse.as3.element.AS3Package;
25+import jp.sourceforge.asclipse.as3.element.AS3Property;
26+import jp.sourceforge.asclipse.as3.element.AS3Root;
27+import jp.sourceforge.asclipse.as3.element.AS3UseNamespaceDirective;
28+
29+import org.apache.commons.lang.StringUtils;
30+import org.slf4j.Logger;
31+import org.slf4j.LoggerFactory;
32+
33+/**
34+ * 解析したソースを小さい形式で出力する。
35+ * <p></p>
36+ * @author shin1ogawa
37+ */
38+public class SmallSourceGenerator {
39+
40+ private static final Logger LOGGER = LoggerFactory.getLogger(SmallSourceGenerator.class);
41+
42+ /** 出力先に出力対象が既にあった場合に上書きするか。 */
43+ public static boolean isOverride = true;
44+
45+ /** インデントに使用する文字 */
46+ public static String indentString = "\t";
47+
48+
49+ private SmallSourceGenerator() {
50+ }
51+
52+
53+ private static final String FRAMEWORK_SOURCE_HOME = "as/frameworks/";
54+
55+ /** ソースフォルダのリスト */
56+ public static String[] srcFolders = {
57+ "as/FP9",
58+ "as/AIR",
59+ "as/Flex3",
60+// FRAMEWORK_SOURCE_HOME + "air/ApplicationUpdater/src/ApplicationUpdater",
61+// FRAMEWORK_SOURCE_HOME + "air/ApplicationUpdater/src/ApplicationUpdaterDialogs",
62+// FRAMEWORK_SOURCE_HOME + "air/ServiceMonitor/src/",
63+// FRAMEWORK_SOURCE_HOME + "airframework/src/",
64+// FRAMEWORK_SOURCE_HOME + "flash-integration/src/",
65+// FRAMEWORK_SOURCE_HOME + "framework/src/",
66+// FRAMEWORK_SOURCE_HOME + "haloclassic/src/",
67+// FRAMEWORK_SOURCE_HOME + "rpc/src/",
68+// FRAMEWORK_SOURCE_HOME + "utilities/src/",
69+ };
70+
71+
72+ /**
73+ * @param args
74+ */
75+ public static void main(String[] args) {
76+ int count = srcFolders.length;
77+ for (int i = 0; i < count; i++) {
78+ String srcFolder = srcFolders[i];
79+ try {
80+ isOverride = i < 3;
81+ parse(srcFolder);
82+ } catch (IOException e) {
83+ e.printStackTrace();
84+ }
85+ }
86+ }
87+
88+ /**
89+ * まとめて解析する。
90+ * @param subFolder
91+ * @throws IOException
92+ */
93+ public static void parse(String subFolder) throws IOException {
94+ File file = new File(subFolder);
95+ SmallSourceGenerator.convert(file, new File("src/main/resources/as"), getIgnoreList());
96+ }
97+
98+ /**
99+ * ignoreしたい対象ファイルのリストを返す。
100+ * <p>デカイファイルとか解析できないとわかっているファイルとか。</p>
101+ * @return ignoreしたい対象ファイルのファイル名のリスト
102+ * @throws IOException
103+ */
104+ private static String[] getIgnoreList() throws IOException {
105+ File file = new File("as/frameworks/ignoreas.txt");
106+ if (!file.exists()) {
107+ return new String[0];
108+ }
109+ List<String> list = new ArrayList<String>();
110+ BufferedReader reader = new BufferedReader(new FileReader(file));
111+ String line = null;
112+ while ((line = reader.readLine()) != null) {
113+ list.add(line);
114+ }
115+ reader.close();
116+ return list.toArray(new String[0]);
117+ }
118+
119+ /**
120+ * 特定のフォルダ配下のソースを解析し、functionの中身を削除して出力する。
121+ * @param srcRootFolder 読み込み元フォルダ
122+ * @param dstRootFolder 出力先フォルダ
123+ * @param ignoreNames 無視するファイルのファイル名のリスト
124+ */
125+ public static void convert(File srcRootFolder, File dstRootFolder, String[] ignoreNames) {
126+ if (!srcRootFolder.exists()) {
127+ throw new IllegalArgumentException("rootFolder is null.");
128+ }
129+ if (!dstRootFolder.exists()) {
130+ LOGGER.info("mkdirs: " + dstRootFolder.getAbsolutePath());
131+ dstRootFolder.mkdirs();
132+ }
133+ convertFolder(srcRootFolder.getAbsolutePath(), srcRootFolder, dstRootFolder
134+ .getAbsolutePath(), ignoreNames);
135+ }
136+
137+ private static void convertFolder(String rootFolderName, File srcFolder,
138+ String dstRootFolderName, final String[] ignoreNames) {
139+ File[] listFiles = srcFolder.listFiles(new FileFilter() {
140+
141+ public boolean accept(File pathname) {
142+ if (pathname.getAbsolutePath().endsWith(".svn")) {
143+ return false;
144+ }
145+ if (ignoreNames != null) {
146+ for (String ignoreName : ignoreNames) {
147+ if (pathname.getAbsolutePath().endsWith(ignoreName)) {
148+ return false;
149+ }
150+ }
151+ }
152+ return pathname.isDirectory() || pathname.getName().endsWith(".as");
153+ }
154+ });
155+ for (File file : listFiles) {
156+ if (file.isDirectory()) {
157+ convertFolder(rootFolderName, file, dstRootFolderName, ignoreNames);
158+ } else {
159+ String dstFolderName =
160+ dstRootFolderName + "/"
161+ + srcFolder.getAbsolutePath().replace(rootFolderName, "") + "/";
162+ File dstFolder = new File(dstFolderName);
163+ if (!dstFolder.exists()) {
164+ dstFolder.mkdirs();
165+ LOGGER.info("mkdirs: " + dstFolder.getAbsolutePath());
166+ }
167+ String dstFileName = dstFolderName + file.getName();
168+ File dstFile = new File(dstFileName);
169+ convertFile(file, dstFile, rootFolderName);
170+ }
171+ }
172+ }
173+
174+ /**
175+ * 特定のファイルを解析し、functionの中身を削除して出力する。
176+ * @param srcFile 読み込むファイル
177+ * @param dstFile 出力するファイル
178+ * @param rootFolderName 読み込み元のファイルのルートフォルダ名
179+ */
180+ public static void convertFile(File srcFile, File dstFile, String rootFolderName) {
181+ if (dstFile.exists()) {
182+ if (!isOverride) {
183+ LOGGER.info("already exists. skip: " + dstFile.getAbsolutePath());
184+ return;
185+ } else {
186+ LOGGER.info("already exists. overwrite: " + dstFile.getAbsolutePath());
187+ }
188+ }
189+ String resourceName = srcFile.getAbsolutePath().replace(rootFolderName, "");
190+ InputStream input = null;
191+ AS3Root element = null;
192+ try {
193+ input = new FileInputStream(srcFile);
194+ LOGGER.debug("start: " + srcFile.getAbsolutePath());
195+ element = ParserUtil.parse(input, resourceName);
196+ } catch (Exception e) {
197+// e.printStackTrace();
198+ LOGGER.error("fail to parse: " + srcFile.getAbsolutePath());
199+ return;
200+ } finally {
201+ if (input != null) {
202+ try {
203+ input.close();
204+ } catch (IOException e) {
205+ // e.printStackTrace();
206+ }
207+ }
208+ }
209+ if (element.hasParserError()) {
210+ LOGGER.error("fail to parse: " + resourceName);
211+ return;
212+ }
213+ PrintStream out = null;
214+ try {
215+ if (!dstFile.exists()) {
216+ dstFile.createNewFile();
217+ }
218+ out = new PrintStream(dstFile);
219+ generate(element, out);
220+ LOGGER.info("converted successfly. -> " + dstFile.getAbsolutePath());
221+ } catch (FileNotFoundException e) {
222+ LOGGER.warn("fail to write: " + resourceName, e);
223+ } catch (IOException e) {
224+ LOGGER.warn("fail to write: " + resourceName, e);
225+ } finally {
226+ if (out != null) {
227+ out.close();
228+ }
229+ }
230+ }
231+
232+ /**
233+ * 解析済みのツリーからfunctionの中身を削除して出力する。
234+ * @param element 解析済みのツリーのルート要素
235+ * @param out 出力先
236+ */
237+ public static void generate(AS3Element element, PrintStream out) {
238+ generate(element, out, 0);
239+ }
240+
241+ private static void generate(AS3Element element, PrintStream out, int depth) {
242+ String indent = StringUtils.repeat(indentString, depth);
243+ if (element instanceof AS3Package || element instanceof AS3Class
244+ || element instanceof AS3Interface) {
245+ out.print(indent);
246+ out.print(element.getTitle());
247+ out.println(" {");
248+ } else if (element instanceof AS3Function || element instanceof AS3Property
249+ || element instanceof AS3ConstProperty || element instanceof AS3NamespaceDirective
250+ || element instanceof AS3UseNamespaceDirective || element instanceof AS3Import
251+ || element instanceof AS3Include) {
252+ // TODO import文は必要無いかもしれない。
253+ out.print(indent);
254+ out.print(element.getTitle());
255+ out.println(";");
256+ }
257+ List<AS3Element> children = element.getChildren();
258+ for (AS3Element child : children) {
259+ generate(child, out, depth + 1);
260+ }
261+ if (element instanceof AS3Package || element instanceof AS3Class
262+ || element instanceof AS3Interface) {
263+ out.print(indent);
264+ out.println("}");
265+ }
266+ }
267+
268+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- as3ast/trunk/src/main/java/jp/sourceforge/asclipse/as3/tool/AS3ContextToFile.java (revision 318)
+++ as3ast/trunk/src/main/java/jp/sourceforge/asclipse/as3/tool/AS3ContextToFile.java (nonexistent)
@@ -1,65 +0,0 @@
1-package jp.sourceforge.asclipse.as3.tool;
2-
3-import java.io.File;
4-import java.io.FileNotFoundException;
5-import java.io.FileOutputStream;
6-import java.io.IOException;
7-import java.io.ObjectOutputStream;
8-import java.util.List;
9-import java.util.Map;
10-
11-import jp.sourceforge.asclipse.as3.IAS3Context;
12-import jp.sourceforge.asclipse.as3.ParserUtil;
13-import jp.sourceforge.asclipse.as3.element.AS3Element;
14-import jp.sourceforge.asclipse.as3.element.AS3Root;
15-import jp.sourceforge.asclipse.as3.element.AS3Type;
16-import jp.sourceforge.asclipse.as3.internal.DefaultAS3Context;
17-
18-/**
19- * ビルトインasファイルを解析し、シリアライズする。
20- * @author shin1
21- */
22-public class AS3ContextToFile {
23-
24- private AS3ContextToFile() {
25- }
26-
27- /**
28- * @param args
29- */
30- public static void main(String[] args) {
31- Map<File, AS3Root> parseAll =
32- ParserUtil.parseAll(new File("src/main/resources/as"), new String[0]);
33- IAS3Context context = new DefaultAS3Context("builtin");
34- for (AS3Root root : parseAll.values()) {
35- List<AS3Element> children = root.getChildren();
36- boolean hasType = false;
37- for (AS3Element element : children) {
38- if (element instanceof AS3Type) {
39- hasType = true;
40- }
41- }
42- if (!hasType) {
43- System.err.println(root.getResourceName() + " doen't have as3type.");
44- }
45- context.addAS3Root(root);
46- }
47- ObjectOutputStream out = null;
48- try {
49- out = new ObjectOutputStream(new FileOutputStream("target/builtin.ser"));
50- out.writeObject(context);
51- } catch (FileNotFoundException e) {
52- e.printStackTrace();
53- } catch (IOException e) {
54- e.printStackTrace();
55- } finally {
56- if (out != null) {
57- try {
58- out.close();
59- } catch (IOException e) {
60- e.printStackTrace();
61- }
62- }
63- }
64- }
65-}
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
--- as3ast/trunk/src/main/java/jp/sourceforge/asclipse/as3/tool/SmallSourceGenerator.java (revision 318)
+++ as3ast/trunk/src/main/java/jp/sourceforge/asclipse/as3/tool/SmallSourceGenerator.java (nonexistent)
@@ -1,268 +0,0 @@
1-package jp.sourceforge.asclipse.as3.tool;
2-
3-import java.io.BufferedReader;
4-import java.io.File;
5-import java.io.FileFilter;
6-import java.io.FileInputStream;
7-import java.io.FileNotFoundException;
8-import java.io.FileReader;
9-import java.io.IOException;
10-import java.io.InputStream;
11-import java.io.PrintStream;
12-import java.util.ArrayList;
13-import java.util.List;
14-
15-import jp.sourceforge.asclipse.as3.ParserUtil;
16-import jp.sourceforge.asclipse.as3.element.AS3Class;
17-import jp.sourceforge.asclipse.as3.element.AS3ConstProperty;
18-import jp.sourceforge.asclipse.as3.element.AS3Element;
19-import jp.sourceforge.asclipse.as3.element.AS3Function;
20-import jp.sourceforge.asclipse.as3.element.AS3Import;
21-import jp.sourceforge.asclipse.as3.element.AS3Include;
22-import jp.sourceforge.asclipse.as3.element.AS3Interface;
23-import jp.sourceforge.asclipse.as3.element.AS3NamespaceDirective;
24-import jp.sourceforge.asclipse.as3.element.AS3Package;
25-import jp.sourceforge.asclipse.as3.element.AS3Property;
26-import jp.sourceforge.asclipse.as3.element.AS3Root;
27-import jp.sourceforge.asclipse.as3.element.AS3UseNamespaceDirective;
28-
29-import org.apache.commons.lang.StringUtils;
30-import org.slf4j.Logger;
31-import org.slf4j.LoggerFactory;
32-
33-/**
34- * 解析したソースを小さい形式で出力する。
35- * <p></p>
36- * @author shin1ogawa
37- */
38-public class SmallSourceGenerator {
39-
40- private static final Logger LOGGER = LoggerFactory.getLogger(SmallSourceGenerator.class);
41-
42- /** 出力先に出力対象が既にあった場合に上書きするか。 */
43- public static boolean isOverride = true;
44-
45- /** インデントに使用する文字 */
46- public static String indentString = "\t";
47-
48-
49- private SmallSourceGenerator() {
50- }
51-
52-
53- private static final String FRAMEWORK_SOURCE_HOME = "as/frameworks/";
54-
55- /** ソースフォルダのリスト */
56- public static String[] srcFolders = {
57- "as/FP9",
58- "as/AIR",
59- "as/Flex3",
60-// FRAMEWORK_SOURCE_HOME + "air/ApplicationUpdater/src/ApplicationUpdater",
61-// FRAMEWORK_SOURCE_HOME + "air/ApplicationUpdater/src/ApplicationUpdaterDialogs",
62-// FRAMEWORK_SOURCE_HOME + "air/ServiceMonitor/src/",
63-// FRAMEWORK_SOURCE_HOME + "airframework/src/",
64-// FRAMEWORK_SOURCE_HOME + "flash-integration/src/",
65-// FRAMEWORK_SOURCE_HOME + "framework/src/",
66-// FRAMEWORK_SOURCE_HOME + "haloclassic/src/",
67-// FRAMEWORK_SOURCE_HOME + "rpc/src/",
68-// FRAMEWORK_SOURCE_HOME + "utilities/src/",
69- };
70-
71-
72- /**
73- * @param args
74- */
75- public static void main(String[] args) {
76- int count = srcFolders.length;
77- for (int i = 0; i < count; i++) {
78- String srcFolder = srcFolders[i];
79- try {
80- isOverride = i < 3;
81- parse(srcFolder);
82- } catch (IOException e) {
83- e.printStackTrace();
84- }
85- }
86- }
87-
88- /**
89- * まとめて解析する。
90- * @param subFolder
91- * @throws IOException
92- */
93- public static void parse(String subFolder) throws IOException {
94- File file = new File(subFolder);
95- SmallSourceGenerator.convert(file, new File("src/main/resources/as"), getIgnoreList());
96- }
97-
98- /**
99- * ignoreしたい対象ファイルのリストを返す。
100- * <p>デカイファイルとか解析できないとわかっているファイルとか。</p>
101- * @return ignoreしたい対象ファイルのファイル名のリスト
102- * @throws IOException
103- */
104- private static String[] getIgnoreList() throws IOException {
105- File file = new File("as/frameworks/ignoreas.txt");
106- if (!file.exists()) {
107- return new String[0];
108- }
109- List<String> list = new ArrayList<String>();
110- BufferedReader reader = new BufferedReader(new FileReader(file));
111- String line = null;
112- while ((line = reader.readLine()) != null) {
113- list.add(line);
114- }
115- reader.close();
116- return list.toArray(new String[0]);
117- }
118-
119- /**
120- * 特定のフォルダ配下のソースを解析し、functionの中身を削除して出力する。
121- * @param srcRootFolder 読み込み元フォルダ
122- * @param dstRootFolder 出力先フォルダ
123- * @param ignoreNames 無視するファイルのファイル名のリスト
124- */
125- public static void convert(File srcRootFolder, File dstRootFolder, String[] ignoreNames) {
126- if (!srcRootFolder.exists()) {
127- throw new IllegalArgumentException("rootFolder is null.");
128- }
129- if (!dstRootFolder.exists()) {
130- LOGGER.info("mkdirs: " + dstRootFolder.getAbsolutePath());
131- dstRootFolder.mkdirs();
132- }
133- convertFolder(srcRootFolder.getAbsolutePath(), srcRootFolder, dstRootFolder
134- .getAbsolutePath(), ignoreNames);
135- }
136-
137- private static void convertFolder(String rootFolderName, File srcFolder,
138- String dstRootFolderName, final String[] ignoreNames) {
139- File[] listFiles = srcFolder.listFiles(new FileFilter() {
140-
141- public boolean accept(File pathname) {
142- if (pathname.getAbsolutePath().endsWith(".svn")) {
143- return false;
144- }
145- if (ignoreNames != null) {
146- for (String ignoreName : ignoreNames) {
147- if (pathname.getAbsolutePath().endsWith(ignoreName)) {
148- return false;
149- }
150- }
151- }
152- return pathname.isDirectory() || pathname.getName().endsWith(".as");
153- }
154- });
155- for (File file : listFiles) {
156- if (file.isDirectory()) {
157- convertFolder(rootFolderName, file, dstRootFolderName, ignoreNames);
158- } else {
159- String dstFolderName =
160- dstRootFolderName + "/"
161- + srcFolder.getAbsolutePath().replace(rootFolderName, "") + "/";
162- File dstFolder = new File(dstFolderName);
163- if (!dstFolder.exists()) {
164- dstFolder.mkdirs();
165- LOGGER.info("mkdirs: " + dstFolder.getAbsolutePath());
166- }
167- String dstFileName = dstFolderName + file.getName();
168- File dstFile = new File(dstFileName);
169- convertFile(file, dstFile, rootFolderName);
170- }
171- }
172- }
173-
174- /**
175- * 特定のファイルを解析し、functionの中身を削除して出力する。
176- * @param srcFile 読み込むファイル
177- * @param dstFile 出力するファイル
178- * @param rootFolderName 読み込み元のファイルのルートフォルダ名
179- */
180- public static void convertFile(File srcFile, File dstFile, String rootFolderName) {
181- if (dstFile.exists()) {
182- if (!isOverride) {
183- LOGGER.info("already exists. skip: " + dstFile.getAbsolutePath());
184- return;
185- } else {
186- LOGGER.info("already exists. overwrite: " + dstFile.getAbsolutePath());
187- }
188- }
189- String resourceName = srcFile.getAbsolutePath().replace(rootFolderName, "");
190- InputStream input = null;
191- AS3Root element = null;
192- try {
193- input = new FileInputStream(srcFile);
194- LOGGER.debug("start: " + srcFile.getAbsolutePath());
195- element = ParserUtil.parse(input, resourceName);
196- } catch (Exception e) {
197-// e.printStackTrace();
198- LOGGER.error("fail to parse: " + srcFile.getAbsolutePath());
199- return;
200- } finally {
201- if (input != null) {
202- try {
203- input.close();
204- } catch (IOException e) {
205- // e.printStackTrace();
206- }
207- }
208- }
209- if (element.hasParserError()) {
210- LOGGER.error("fail to parse: " + resourceName);
211- return;
212- }
213- PrintStream out = null;
214- try {
215- if (!dstFile.exists()) {
216- dstFile.createNewFile();
217- }
218- out = new PrintStream(dstFile);
219- generate(element, out);
220- LOGGER.info("converted successfly. -> " + dstFile.getAbsolutePath());
221- } catch (FileNotFoundException e) {
222- LOGGER.warn("fail to write: " + resourceName, e);
223- } catch (IOException e) {
224- LOGGER.warn("fail to write: " + resourceName, e);
225- } finally {
226- if (out != null) {
227- out.close();
228- }
229- }
230- }
231-
232- /**
233- * 解析済みのツリーからfunctionの中身を削除して出力する。
234- * @param element 解析済みのツリーのルート要素
235- * @param out 出力先
236- */
237- public static void generate(AS3Element element, PrintStream out) {
238- generate(element, out, 0);
239- }
240-
241- private static void generate(AS3Element element, PrintStream out, int depth) {
242- String indent = StringUtils.repeat(indentString, depth);
243- if (element instanceof AS3Package || element instanceof AS3Class
244- || element instanceof AS3Interface) {
245- out.print(indent);
246- out.print(element.getTitle());
247- out.println(" {");
248- } else if (element instanceof AS3Function || element instanceof AS3Property
249- || element instanceof AS3ConstProperty || element instanceof AS3NamespaceDirective
250- || element instanceof AS3UseNamespaceDirective || element instanceof AS3Import
251- || element instanceof AS3Include) {
252- // TODO import文は必要無いかもしれない。
253- out.print(indent);
254- out.print(element.getTitle());
255- out.println(";");
256- }
257- List<AS3Element> children = element.getChildren();
258- for (AS3Element child : children) {
259- generate(child, out, depth + 1);
260- }
261- if (element instanceof AS3Package || element instanceof AS3Class
262- || element instanceof AS3Interface) {
263- out.print(indent);
264- out.println("}");
265- }
266- }
267-
268-}
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
Show on old repository browser