- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/tecs_lang.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 #== è¨èªã«é¢ããå¤æ°ãè¨å®56 # ã¡ãã»ã¼ã¸ãã¡ã¤ã«ã®èªã¿è¾¼ã¿ãè¡ã (èªã¿è¾¼ã¿ã«å¤±æããå ´åãããã©ã«ãã®æåã³ã¼ãã«å¤æ´ãã)40 #== 言語に関する変数を設定 41 # メッセージファイルの読み込みも行う (読み込みに失敗した場合、デフォルトの文字コードに変更する) 57 42 class TECS_LANG 58 # ããã·ã¥ã®ã¿ã°ã¯ case insensitive ã®ããã大æåã®æååã¨ãã43 # ハッシュのタグは case insensitive のため、大文字の文字列とする 59 44 CHARSET_ALIAS = { 60 45 "UJIS" => :eucJP, 61 46 "UTF-8" => :utf8, 62 "EUCJP" => :eucJP, # ä»¥ä¸ case insensitive ã«ãããã47 "EUCJP" => :eucJP, # 以下 case insensitive にするため 63 48 "SJIS" => :sjis, 64 49 "UTF8" => :utf8, … … 67 52 LANG_ALIAS = { 68 53 "C" => :en_US, 69 "EN_US" => :en_US, # ä»¥ä¸ case insensitive ã«ãããã54 "EN_US" => :en_US, # 以下 case insensitive にするため 70 55 "JA_JP" => :ja_JP 71 56 } … … 75 60 } 76 61 77 #=== LANG ã®ãã¼ã¹78 #lang::String "ja_JP.eucJP@cjknarrow", "C" ãªã©62 #=== LANG のパース 63 #lang::String "ja_JP.eucJP@cjknarrow", "C" など 79 64 #RETURN:: [ :ja_JP, :eucJP, :cjknarrow ] 80 65 def self.parse_lang( lang ) … … 82 67 83 68 lang_terri = $1.to_sym if $1 != nil && $1 != "" 84 # set_kcode_binary ã«ãããC.UTF-8 ã®ã¿ãç¹å¥æ±ãããå¿ 85 è¦ããªããªã£ã 86 # if lang_terri == :C then # LANG=C.* ã¯ããã¹ã¦ 1 byte æåã³ã¼ãã¨ãã¦æ±ã 69 # set_kcode_binary により、C.UTF-8 のみを特別扱いする必要がなくなった 70 # if lang_terri == :C then # LANG=C.* は、すべて 1 byte 文字コードとして扱う 87 71 # codeset = nil 88 72 # modifier = nil … … 94 78 end 95 79 96 #=== lang, charset ã®å¥æ解決ããã³å¦¥å½æ§ã®ãã§ãã¯97 #lang::Symbol : :en_US, :ja_JP ãªã©98 #charset::Symbol : :eucJP, :utf8 ãªã©80 #=== lang, charset の別明解決および妥当性のチェック 81 #lang::Symbol : :en_US, :ja_JP など 82 #charset::Symbol : :eucJP, :utf8 など 99 83 #RETURN: 100 # [ lang, charset, result ]:: ããresult = false ã®å ´å lang, charset ã¯ä¸é©å84 # [ lang, charset, result ]:: result = false の場合 lang, charset は不適切 101 85 def self.resolve_alias_and_check( lang, charset ) 102 86 if LANG_ALIAS[ lang.to_s.upcase ] then … … 122 106 end 123 107 124 #=== codepage ãåãåºã125 #codepage ã¯3ï½5æ¡ã®æ´æ°ã¨ãã¦ä»®å®108 #=== codepage を取り出す 109 #codepage は3~5桁の整数として仮定 126 110 def self.get_win_codepage 127 111 cmd_pipe = IO.popen('cmd /c chcp','r') … … 132 116 end 133 117 134 #=== codepage ãã LANG ã®è¨å®æååã«å¤æ118 #=== codepage から LANG の設定文字列に変換 135 119 def self.codepage_to_lang cp 136 120 if cp == "932" then … … 141 125 end 142 126 143 #=== è¨èªãæåã³ã¼ãã«é¢ããå¤æ°ãè¨å®144 # 以ä¸ã®é ã«ãã§ãã¯ãããä¸çªæå¾ã«è¨å®ãããå¤ãæ¡ç¨ããã145 # ã»ããã©ã«ã146 # ã»codepage (exerb ç㧠TERM æªè¨å®ã¾ã㯠TERM=cygwin ã®å ´åã®ã¿)147 # ã»LANG ç°å¢å¤æ°148 # ã»TECSGEN_LANG ç°å¢å¤æ°149 # ã»TECSGEN_FILE_LANG ç°å¢å¤æ° (ãã¡ã¤ã«ã®æåã³ã¼ãã®ã¿)150 # ã»-k ãªãã·ã§ã³ (ãã¡ã¤ã«ã®æåã³ã¼ãã®ã¿)127 #=== 言語、文字コードに関する変数を設定 128 # 以下の順にチェックされ、一番最後に設定された値が採用される 129 # ・デフォルト 130 # ・codepage (exerb 版で TERM 未設定または TERM=cygwin の場合のみ) 131 # ・LANG 環境変数 132 # ・TECSGEN_LANG 環境変数 133 # ・TECSGEN_FILE_LANG 環境変数 (ファイルの文字コードのみ) 134 # ・-k オプション (ファイルの文字コードのみ) 151 135 def self.set_lang_var 152 136 153 137 if $IN_EXERB && ( ENV[ 'TERM' ] == nil || ENV[ 'TERM' ] == "cygwin" ) then 154 # exerb çã§ç«¯æ« cygwin ã®æ㯠codepage ã®ã¿ãè¦ã138 # exerb 版で端末 cygwin の時は codepage のみを見る 155 139 cp = get_win_codepage 156 140 lang = codepage_to_lang cp … … 160 144 161 145 elsif ENV[ 'LANG' ]then 162 # é exerb çã§ã¯ LANG ç°å¢å¤æ°ãè¦ã163 # cygwin console ã§ã¯ codepage ã«å¾ã£ã¦åºåããæ¹ãå¹³åãªãã146 # 非 exerb 版では LANG 環境変数を見る 147 # cygwin console では codepage に従って出力した方が平和なため 164 148 165 149 $LANG_FILE, $CHARSET_FILE, *dum = self.parse_lang( ENV[ 'LANG' ] ) … … 181 165 end 182 166 183 #=== -k ãªãã·ã§ã³ãããã¡ã¤ã«ç¨ã®è¨èªãæåã³ã¼ãå¤æ°ãè¨å®167 #=== -k オプションからファイル用の言語、文字コード変数を設定 184 168 def self.set_lang_by_option 185 169 if $kcode == nil … … 211 195 end 212 196 213 #=== Kconv ã¯ã©ã¹ç¨ã®å¤æ°ãè¨å® 214 # è¨èªæ 215 å ±ãã Kconv ã«é¢ããå¤æ°ãè¨å® 197 #=== Kconv クラス用の変数を設定 198 # 言語情報から Kconv に関する変数を設定 216 199 def self.set_kconv_var 217 200 218 # æåã³ã¼ãã®è¨å®201 # 文字コードの設定 219 202 case $CHARSET_FILE # string: "EUC" | "SJIS" | "NONE" | "UTF8" 220 203 when :eucJP … … 251 234 end 252 235 253 $KCODE_TECSGEN = "UTF8" # string: "EUC" ãã®ãã¡ã¤ã«ã®æåã³ã¼ãï¼ãªãã·ã§ã³ã§ã¯ãªãå®æ°ï¼236 $KCODE_TECSGEN = "UTF8" # string: "EUC" このファイルの文字コード(オプションではなく定数) 254 237 $KCONV_TECSGEN = Kconv::UTF8 # const: 255 set_kcode $KCODE_TECSGEN # ãã®ãã¡ã¤ã«ã®æåã³ã¼ããè¨å®256 end 257 258 #=== ä¸æçã« KCODE ã BINARY ã«å¤æ´ãã259 # EUC ã UTF8 ã§èªã¿è¾¼ãã å ´åã«æååºåãã誤ãåé¡ã®å¯¾å¿260 # ã³ã¡ã³ãã®èªã¿é£ã°ãã誤ãç¹ãåé¡261 # ãã ããSJIS ã®å ´åã¯ãã¨ã¹ã±ã¼ãæåã®åé¡ããããããå¤æ´ããªã238 set_kcode $KCODE_TECSGEN # このファイルの文字コードを設定 239 end 240 241 #=== 一時的に KCODE を BINARY に変更する 242 # EUC を UTF8 で読み込んだ場合に文字区切りを誤る問題の対応 243 # コメントの読み飛ばしを誤る点が問題 244 # ただし、SJIS の場合は、エスケープ文字の問題があるため、変更しない 262 245 def self.set_kcode_binary 263 246 … … 273 256 end 274 257 275 #=== ä¸æçãªã KCODE ã®å¤æ´ãå 276 ã«æ»ã 258 #=== 一時的なあ KCODE の変更を元に戻す 277 259 def self.reset_kcode 278 260 set_kcode $KCODE_BACK … … 280 262 281 263 ##### 282 # $LANG_FILE è¨èª (C 㯠en_US ã«å¤æããã)283 # $LANG_CONSOLE è¨èª (C 㯠en_US ã«å¤æããã)284 # $CHARSET_FILE ãã¡ã¤ã«ã®æåã³ã¼ã285 # $CHARSET_CONSOLE ã³ã³ã½ã¼ã«æåã³ã¼ã286 287 # ããã©ã«ãã®è¨å®ï¼æ£è¦åæ¸ã¿ã®ãã¨ï¼264 # $LANG_FILE 言語 (C は en_US に変換される) 265 # $LANG_CONSOLE 言語 (C は en_US に変換される) 266 # $CHARSET_FILE ファイルの文字コード 267 # $CHARSET_CONSOLE コンソール文字コード 268 269 # デフォルトの設定(正規化済みのこと) 288 270 $LANG_FILE_DEFAULT = :en_US 289 271 $CHARSET_FILE_DEFAULT = nil … … 296 278 $CHARSET_CONSOLE = $CHARSET_CONSOLE_DEFAULT 297 279 298 # -k ã§æå®å¯è½ãªã³ã¼ã280 # -k で指定可能なコード 299 281 $CODE_TYPE_ARRAY = [ "euc", "sjis", "none", "utf8" ] 300 282 301 # è¨èªã決å®ãã283 # 言語を決定する 302 284 self.set_lang_var 303 285 304 # è¨èªãã³ã¼ãã®ãã§ãã¯ã¨æ£è¦å286 # 言語、コードのチェックと正規化 305 287 lang_file, charset_file, res = 306 288 self.resolve_alias_and_check( $LANG_FILE, $CHARSET_FILE ) … … 316 298 end 317 299 318 # ã¡ãã»ã¼ã¸ã¢ã¸ã¥ã¼ã«ããã¼ã300 # メッセージモジュールをロード 319 301 if require_tecsgen_lib( "tecslib/messages/messages_console_#{lang_console}.rb", false ) == false then 320 302 require_tecsgen_lib( "tecslib/messages/messages_console_#{$LANG_CONSOLE_DEFAULT}.rb" ) … … 330 312 end 331 313 332 # Kconv ã¯ã©ã¹ã®ããã®å¤æ°ãè¨å®314 # Kconv クラスのための変数を設定 333 315 self.set_kconv_var 334 316 … … 337 319 dbgPrint "Ruby19_File_Encode=#{$Ruby19_File_Encode}\n" 338 320 339 #=== åä½ãã¹ãå®è¡321 #=== 単体テスト実行 340 322 if $unit_test then 341 323 print "unit test: set_lang_var\n" … … 350 332 end 351 333 352 #= Console ã¯ã©ã¹353 # æåã³ã¼ããå¤æãã334 #= Console クラス 335 # 文字コードを変換する 354 336 class Console 355 337 def self.print str -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.