source: asp3_wo_tecs/trunk/cfg/common/GenFile.rb@ 304

Last change on this file since 304 was 304, checked in by ertl-honda, 7 years ago

コンフィギュレータをruby版に変更

File size: 5.6 KB
Line 
1#!ruby -Ku
2#
3# TOPPERS Configurator by Ruby
4#
5# Copyright (C) 2015 by Embedded and Real-Time Systems Laboratory
6# Graduate School of Information Science, Nagoya Univ., JAPAN
7# Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
8# Copyright (C) 2016 by APTJ Co., Ltd., JAPAN
9#
10# 上記著作権者
11は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13# 変・再é…
14å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
15# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17# スコード中に含まれていること.
18# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19# 用できる形で再é…
20å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
21å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
22# 者
23マニュアルなど)に,上記の著作権表示,この利用条件および下記
24# の無保証規定を掲載すること.
25# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
26# 用できない形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
28# と.
29# (a) 再é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
31マニュアルなど)に,上記の著
32# 作権表示,この利用条件および下記の無保証規定を掲載すること.
33# (b) 再é…
34å¸ƒã®å½¢æ…
35‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
36# 報告すること.
37# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38# 害からも,上記著作権者
39およびTOPPERSプロジェクトをå…
40è²¬ã™ã‚‹ã“と.
41# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
42# 由に基づく請求からも,上記著作権者
43およびTOPPERSプロジェクトを
44# å…
45è²¬ã™ã‚‹ã“と.
46#
47# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
48お
49# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52# の責任を負わない.
53#
54# $Id: GenFile.rb 25 2016-01-29 16:48:00Z ertl-hiro $
55#
56
57if ($0 == __FILE__)
58 TOOL_ROOT = File.expand_path(File.dirname(__FILE__) + "/")
59 $LOAD_PATH.unshift(TOOL_ROOT)
60end
61
62######################################################################
63# 定数定義
64######################################################################
65NL = "\n"
66TAB = "\t"
67
68######################################################################
69# ファイル作成クラス定義
70######################################################################
71class GenFile
72 @@hFileData = {}
73
74 def initialize(sName)
75 @sCurName = sName
76 if (!@@hFileData.has_key?(sName))
77 @@hFileData[@sCurName] = ""
78 end
79 end
80
81 # ファイルデータに1行追加する
82 def add(sCode = "")
83 @@hFileData[@sCurName].concat(sCode + NL)
84 end
85
86 # ファイルデータに1行追加する(改行2回)
87 def add2(sCode = "")
88 add(sCode + NL)
89 end
90
91 # ファイルデータの末尾に文字列を追加する
92 def append(sCode = "")
93 @@hFileData[@sCurName].concat(sCode)
94 end
95
96 # ファイルデータの末尾が指定した文字の場合,その文字を除去する(改行やスペースを考æ…
97®)
98 def chop_char(sChar, sCode = "")
99 # 末尾の改行,スペースを取り出す
100 sChopped = ""
101 while (["\r", "\n", " "].include?(@@hFileData[@sCurName][-1]))
102 sChopped = @@hFileData[@sCurName][-1] + sChopped
103 @@hFileData[@sCurName].chop!()
104 end
105
106 # 改行コードを取り出した後の末尾がsCharの場合除去
107 if (@@hFileData[@sCurName][-1] == sChar)
108 @@hFileData[@sCurName].chop!()
109 end
110
111 # 取り出したコードを戻して,文字列を追加
112 append(sChopped + sCode)
113 end
114
115 # 指定した文字の後にスペースがある場合,スペースも除去する
116 def chop_char_sp(sChar, sCode = "")
117 chop_char(sChar, sCode)
118 while (@@hFileData[@sCurName][-1] == " ")
119 @@hFileData[@sCurName].chop!()
120 end
121 end
122
123 # ファイルデータの末尾が","の場合,","を除去する
124 def chop_comma(sCode = "")
125 chop_char(",", sCode)
126 end
127
128 # カンマの後にスペースがある場合,スペースも除去する
129 def chop_comma_sp(sCode = "")
130 chop_char_sp(",", sCode)
131 end
132
133 # コメントヘッダを追加する
134 def comment_header(sComment)
135 # 複数行対応
136 aString = sComment.split(NL)
137
138 add("/*")
139 aString.each{|sLine|
140 add(" * " + sLine)
141 }
142 add2(" */")
143 end
144
145 # ファイルデータを表示する
146 def print()
147 puts(@@hFileData[@sCurName])
148 end
149
150 # å…
151¨ãƒ•ã‚¡ã‚¤ãƒ«ã‚’出力する
152 def self.output()
153 # エラー発生時は出力しない
154 if ($error_flg == true)
155 return
156 end
157
158 @@hFileData.each{|sName, sData|
159 # 既にファイルが存在し,差分がない場合は出力しない(タイムスタンプを更新しない)
160 if (File.exist?(sName))
161 sCurrentData = File.read(sName)
162 if (sData == sCurrentData)
163 next
164 end
165 end
166 File.open(sName, "w") {|io|
167 puts("[#{File.basename($0)}] Generated #{sName}")
168 io.puts(sData)
169 }
170 }
171 end
172end
173
Note: See TracBrowser for help on using the repository browser.