Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

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 to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    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#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #== 言語に関する変数を設定
    56 # メッセージファイルの読み込みも行う (読み込みに失敗した場合、デフォルトの文字コードに変更する)
     40#== 言語に関する変数を設定
     41# メッセージファイルの読み込みも行う (読み込みに失敗した場合、デフォルトの文字コードに変更する)
    5742class TECS_LANG
    58   # ハッシュのタグは case insensitive のため、大文字の文字列とする
     43  # ハッシュのタグは case insensitive のため、大文字の文字列とする
    5944  CHARSET_ALIAS = {
    6045    "UJIS" => :eucJP,
    6146    "UTF-8" => :utf8,
    62     "EUCJP" => :eucJP,   # 以下 case insensitive にするため
     47    "EUCJP" => :eucJP,   # 以下 case insensitive にするため
    6348    "SJIS" => :sjis,
    6449    "UTF8" => :utf8,
     
    6752  LANG_ALIAS = {
    6853    "C" => :en_US,
    69     "EN_US" => :en_US,   # 以下 case insensitive にするため
     54    "EN_US" => :en_US,   # 以下 case insensitive にするため
    7055    "JA_JP" => :ja_JP
    7156  }
     
    7560  }
    7661
    77   #=== LANG のパース
    78   #lang::String  "ja_JP.eucJP@cjknarrow", "C" など
     62  #=== LANG のパース
     63  #lang::String  "ja_JP.eucJP@cjknarrow", "C" など
    7964  #RETURN:: [ :ja_JP, :eucJP, :cjknarrow ]
    8065  def self.parse_lang( lang )
     
    8267
    8368    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 文字コードとして扱う
    8771    #  codeset = nil
    8872    #  modifier = nil
     
    9478  end
    9579
    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 など
    9983  #RETURN:
    100   #  [ lang, charset, result ]::  result = false の場合 lang, charset は不適切
     84  #  [ lang, charset, result ]::  result = false の場合 lang, charset は不適切
    10185  def self.resolve_alias_and_check( lang, charset )
    10286    if LANG_ALIAS[ lang.to_s.upcase ] then
     
    122106  end
    123107
    124   #=== codepage を取り出す
    125   #codepage は3~5桁の整数として仮定
     108  #=== codepage を取り出す
     109  #codepage は3~5桁の整数として仮定
    126110  def self.get_win_codepage
    127111    cmd_pipe = IO.popen('cmd /c chcp','r')
     
    132116  end
    133117
    134   #=== codepage から LANG の設定文字列に変換
     118  #=== codepage から LANG の設定文字列に変換
    135119  def self.codepage_to_lang cp
    136120    if cp == "932" then
     
    141125  end
    142126
    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 オプション (ファイルの文字コードのみ)
    151135  def self.set_lang_var
    152136
    153137    if $IN_EXERB && ( ENV[ 'TERM' ] == nil || ENV[ 'TERM' ] == "cygwin" ) then
    154       # exerb 版で端末 cygwin の時は codepage のみを見る
     138      # exerb 版で端末 cygwin の時は codepage のみを見る
    155139      cp = get_win_codepage
    156140      lang = codepage_to_lang cp
     
    160144
    161145    elsif ENV[ 'LANG' ]then
    162       # 非 exerb 版では LANG 環境変数を見る
    163       # cygwin console では codepage に従って出力した方が平和なため
     146      # 非 exerb 版では LANG 環境変数を見る
     147      # cygwin console では codepage に従って出力した方が平和なため
    164148
    165149      $LANG_FILE, $CHARSET_FILE, *dum = self.parse_lang( ENV[ 'LANG' ] )
     
    181165  end
    182166
    183   #=== -k オプションからファイル用の言語、文字コード変数を設定
     167  #=== -k オプションからファイル用の言語、文字コード変数を設定
    184168  def self.set_lang_by_option
    185169    if $kcode == nil
     
    211195  end
    212196
    213   #=== Kconv クラス用の変数を設定
    214   # 言語æƒ
    215 å ±ã‹ã‚‰ Kconv に関する変数を設定
     197  #=== Kconv クラス用の変数を設定
     198  # 言語情報から Kconv に関する変数を設定
    216199  def self.set_kconv_var
    217200
    218     # 文字コードの設定
     201    # 文字コードの設定
    219202    case $CHARSET_FILE           # string: "EUC" | "SJIS" | "NONE" | "UTF8"
    220203    when :eucJP
     
    251234    end
    252235
    253     $KCODE_TECSGEN = "UTF8"      # string: "EUC"  このファイルの文字コード(オプションではなく定数)
     236    $KCODE_TECSGEN = "UTF8"      # string: "EUC"  このファイルの文字コード(オプションではなく定数)
    254237    $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 の場合は、エスケープ文字の問題があるため、変更しない
    262245  def self.set_kcode_binary
    263246
     
    273256  end
    274257
    275   #=== 一時的なあ KCODE の変更をå
    276 ƒã«æˆ»ã™
     258  #=== 一時的なあ KCODE の変更を元に戻す
    277259  def self.reset_kcode
    278260    set_kcode $KCODE_BACK
     
    280262
    281263  #####
    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  # デフォルトの設定(正規化済みのこと)
    288270  $LANG_FILE_DEFAULT  = :en_US
    289271  $CHARSET_FILE_DEFAULT = nil
     
    296278  $CHARSET_CONSOLE = $CHARSET_CONSOLE_DEFAULT
    297279
    298   # -k で指定可能なコード
     280  # -k で指定可能なコード
    299281  $CODE_TYPE_ARRAY = [ "euc", "sjis", "none", "utf8" ]
    300282
    301   # 言語を決定する
     283  # 言語を決定する
    302284  self.set_lang_var
    303285
    304   # 言語、コードのチェックと正規化
     286  # 言語、コードのチェックと正規化
    305287  lang_file, charset_file, res =
    306288    self.resolve_alias_and_check( $LANG_FILE, $CHARSET_FILE )
     
    316298  end
    317299
    318   # メッセージモジュールをロード
     300  # メッセージモジュールをロード
    319301  if require_tecsgen_lib( "tecslib/messages/messages_console_#{lang_console}.rb", false ) == false then
    320302    require_tecsgen_lib( "tecslib/messages/messages_console_#{$LANG_CONSOLE_DEFAULT}.rb" )
     
    330312  end
    331313
    332   # Kconv クラスのための変数を設定
     314  # Kconv クラスのための変数を設定
    333315  self.set_kconv_var
    334316
     
    337319  dbgPrint "Ruby19_File_Encode=#{$Ruby19_File_Encode}\n"
    338320
    339   #=== 単体テスト実行
     321  #=== 単体テスト実行
    340322  if $unit_test then
    341323    print "unit test: set_lang_var\n"
     
    350332end
    351333
    352 #= Console クラス
    353 # 文字コードを変換する
     334#= Console クラス
     335# 文字コードを変換する
    354336class Console
    355337  def self.print str
Note: See TracChangeset for help on using the changeset viewer.