Ignore:
Timestamp:
Aug 3, 2017, 10:46:41 PM (7 years ago)
Author:
coas-nagasima
Message:

プロパティの文字コードにUTF-8を追加、キーワードを削除

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asp3_gr_sakura/trunk/tecsgen/tecsmerge.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby; charset=UTF-8
    r317 r318  
    88#   Copyright (C) 2008-2015 by TOPPERS Project
    99#--
    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 è²¬ã™ã‚‹ã“と.
     10#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15#       スコード中に含まれていること.
     16#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19#       の無保証規定を掲載すること.
     20#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22#       と.
     23#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     25#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26#         報告すること.
     27#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31#       免責すること.
    4632
    47 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    48 ãŠ
    49 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    51 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    52 #   ã®è²¬ä»»ã‚’負わない.
     33#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37#   の責任を負わない.
    5338
    54 #   $Id: tecsmerge.rb 2224 2015-08-22 03:15:56Z okuma-top $
     39#   $Id$
    5540#++
    5641
    57 #= tecsgen  : TECS のマージャ
     42#= tecsgen  : TECS のマージャ
    5843#
    59 #Authors::   å¤§å±± 博司
     44#Authors::   大山 博司
    6045#Version::   
    6146#Copyright:: Copyright (C) TOPPERS Project, 2008-2015. All rights reserved.
    62 #License::   TOPPERS ライセンスに準拠
     47#License::   TOPPERS ライセンスに準拠
    6348
    6449=begin
    65 tecsmerge はテンプレートファイルをå
    66 ƒã«ä½œæˆã•ã‚ŒãŸã‚»ãƒ«ã‚¿ã‚¤ãƒ—コード(含インライン関数を記述したセルタイプインラインヘッダ)を保守するものである。
    67 ã‚»ãƒ«ã‚¿ã‚¤ãƒ—に以下の改変が加えられた場合に対応する。
    68 ãƒ»å—け口関数が増えた
    69 ãƒ»å—け口の名前が変更された
    70 ãƒ»å—け口関数の名前が変更された
     50tecsmerge はテンプレートファイルを元に作成されたセルタイプコード(含インライン関数を記述したセルタイプインラインヘッダ)を保守するものである。
     51セルタイプに以下の改変が加えられた場合に対応する。
     52・受け口関数が増えた
     53・受け口の名前が変更された
     54・受け口関数の名前が変更された
    7155
    7256% tecsmerge source_dir   dest_dir
     
    7660% tecsmerge -p old_name:new_name source_file dest_dir
    7761
    78 source_file の名前は _teml.c, _templ.h で終わっていなくてはならない
    79 dest_file は source_file の _templ を取り除いた名前でなくてはならない
    80 dest_file が存在しない場合、_templ を取り除いた名前でコピーするだけである
    81 
    82 ä»¥ä¸‹ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’ 含む行を探す
    83 
    84 0) å
    85 ˆé ­
     62source_file の名前は _teml.c, _templ.h で終わっていなくてはならない
     63dest_file は source_file の _templ を取り除いた名前でなくてはならない
     64dest_file が存在しない場合、_templ を取り除いた名前でコピーするだけである
     65
     66以下のキーワードを 含む行を探す
     67
     680) 先頭
    86691) /* #[<PREAMBLE>]#,
    87702)  * #[</PREAMBLE>]#
     
    94777) /* #[<POSTAMBLE>]#
    95788)  * #[</POSTAMBLE>]#
    96 9) 終わり
    97 
    98 ä¸Šè¨˜ã®ã†ã¡ 1), 3), 5), 7) を開始キーワードと呼ぶ。
    99 ãªãŠã€ç‰¹ã«æ–­ã‚Šã®ãªã„場合、9) も開始キーワードに含む。
    100 
    101 åå‰ã®å¤‰æ›´
    102 
    103 a) 受け口名の変更
     799) 終わり
     80
     81上記のうち 1), 3), 5), 7) を開始キーワードと呼ぶ。
     82なお、特に断りのない場合、9) も開始キーワードに含む。
     83
     84名前の変更
     85
     86a) 受け口名の変更
    10487
    10588  -p old_port_name:new_port_name
    10689
    107 b) 受け口関数名の変更
     90b) 受け口関数名の変更
    10891
    10992  -f old_port_name:new_port_name
    11093
    111  old_port_name, new_port_name は、次の形式でなくてはならない。
    112 
    113   受け口名 + '_' + 関数名
    114 
    115 
    116 i) ヘッダ1
    117 
    118   0) と開始キーワードの間
    119 
    120 ii) ヘッダ2
    121 
    122   1) と開始キーワードの間
    123 
    124 é€šå¸¸ã€ã“れが複数存在することはないが、複数存在した場合、すべてファイル
    125 ã®å
    126 ˆé ­ã«å‡ºåŠ›ã•ã‚Œã‚‹ã€‚
    127 
    128 iii) 受け口ヘッダ
    129 
    130   3) と開始キーワードの間
    131 
    132 å—け口ヘッダは、後続の受け口関数の受け口を表すものと仮定される。
    133 å—け口ヘッダは、重要ではない。
    134 
    135 iv) 受け口関数
    136 
    137   5) と開始キーワードの間
     94 old_port_name, new_port_name は、次の形式でなくてはならない。
     95
     96  受け口名 + '_' + 関数名
     97
     98
     99i) ヘッダ1
     100
     101  0) と開始キーワードの間
     102
     103ii) ヘッダ2
     104
     105  1) と開始キーワードの間
     106
     107通常、これが複数存在することはないが、複数存在した場合、すべてファイル
     108の先頭に出力される。
     109
     110iii) 受け口ヘッダ
     111
     112  3) と開始キーワードの間
     113
     114受け口ヘッダは、後続の受け口関数の受け口を表すものと仮定される。
     115受け口ヘッダは、重要ではない。
     116
     117iv) 受け口関数
     118
     119  5) と開始キーワードの間
    138120
    139121=end
     
    142124$n_err   = 0
    143125$b_show  = false
    144 $b_exist = false            # コピーå
    145 ˆã«ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚る場合のみマージ
    146 $old_mode = false           # old_mode (関数本体として /<ENTRY_FUNC> の代わりに '{' を使う
     126$b_exist = false            # コピー先にファイルがある場合のみマージ
     127$old_mode = false           # old_mode (関数本体として /<ENTRY_FUNC> の代わりに '{' を使う
    147128
    148129#2.0
     
    254235  def self.rewrite_DELIMITERS  delimiters
    255236    delimiters.each{ |stat, stat_info|
    256       s = stat_info[0].gsub( /([\*\[\]])/, "\\\\\\1" )   # *, [, ] の前に \\ を挿å
    257 ¥
    258       s.gsub!( /\s*\w*_NAME/, "\\s*(\\w*)" )             # ..._NAME を (w*) に変更
    259       s = "^" + s                                        # ^ をå
    260 ˆé ­ã«æŒ¿å
    261 ¥
     237      s = stat_info[0].gsub( /([\*\[\]])/, "\\\\\\1" )   # *, [, ] の前に \\ を挿入
     238      s.gsub!( /\s*\w*_NAME/, "\\s*(\\w*)" )             # ..._NAME を (w*) に変更
     239      s = "^" + s                                        # ^ を先頭に挿入
    262240      stat_info[2] = Regexp.new( s )
    263241      # p stat_info[2]
     
    269247  rewrite_DELIMITERS @@DELIMITERS_FUNC_BY_BRACKET
    270248
    271   #=== モードに従い DELIMITERS に DELIMITERS_FUNC_BY_* をマージする
     249  #=== モードに従い DELIMITERS に DELIMITERS_FUNC_BY_* をマージする
    272250  # mode :OLD_FUNC_BODY, :NEW_FUNC_BODY
    273251  def self.merge_DELIMITERS mode
     
    303281      line_no += 1
    304282      # p "L: #{line}"
    305       b_delim = false        # デリミタキーワードの行
     283      b_delim = false        # デリミタキーワードの行
    306284      @@DELIMITERS.each { |next_stat,stat_info|
    307285
     
    334312          end
    335313
    336           case stat   # 前の状æ
    337 ‹
     314          case stat   # 前の状態
    338315          when :HEAD
    339316            @head = part
     
    351328          when :ENTRY_FUNC_COMMENT
    352329            func_name = arg.to_sym
    353             if @entry_port[ port_name ] then   # nil なら既にエラー
     330            if @entry_port[ port_name ] then   # nil なら既にエラー
    354331              @entry_port[ port_name ].entry_func_comment[ func_name ] = part
    355332              @entry_port[ port_name ].entry_func_array << func_name
    356333            end
    357334          when :ENTRY_FUNC_BODY, :ENTRY_FUNC_BODY2
    358             if @entry_port[ port_name ] then   # nil なら既にエラー
     335            if @entry_port[ port_name ] then   # nil なら既にエラー
    359336              @entry_port[ port_name ].entry_func_body[ func_name ] = part
    360337            end
     
    375352
    376353          stat = next_stat
    377           arg = $1     # arg に取っておく
     354          arg = $1     # arg に取っておく
    378355          # p stat, arg
    379356          break
     
    389366
    390367  def check template
    391     # template にないものをチェック
     368    # template にないものをチェック
    392369    @entry_port.each{ |port_name, entry_port|
    393370      temp_entry_port = template.entry_port[port_name]
     
    410387    PortRenamer.get_list.each{ |pon,pr|
    411388
    412       # 対象受け口を捜す
     389      # 対象受け口を捜す
    413390      ep = @entry_port[pon]
    414391      if ep == nil then
     
    417394      end
    418395
    419       # ポートの rename
    420       pnn = pr.new_port_name    # 置換後の名前
     396      # ポートの rename
     397      pnn = pr.new_port_name    # 置換後の名前
    421398      if pnn then
    422         # 置換する名前があれば、登録しなおす
     399        # 置換する名前があれば、登録しなおす
    423400        renamed_entry_port[pnn] = @entry_port[pon]
    424401        @entry_port.delete pon
    425402      end
    426403
    427       # 指定された関数の置換
     404      # 指定された関数の置換
    428405      renamed_func_comment = {}
    429406      renamed_func_body = {}
     
    448425      ep.entry_func_body.merge!    renamed_func_body
    449426
    450       # ポート名の変更による関数名の置換
     427      # ポート名の変更による関数名の置換
    451428      renamed_func_comment = {}
    452429      renamed_func_body = {}
     
    564541  if FileTest.file?( dst_file ) then
    565542    print( "merging #{src_file} to #{dst_file}\n" )
    566     # dst_file の読込み
     543    # dst_file の読込み
    567544    begin
    568545      dst = open( dst_file )
     
    579556    old = CDLContents.new( old_contents )
    580557
    581     # template の読込み
     558    # template の読込み
    582559    begin
    583560      src = open( src_file )
     
    615592
    616593  elsif $b_exist == false then
    617     # src_file を dst_file へコピー
     594    # src_file を dst_file へコピー
    618595    begin
    619596      src = File.open( src_file )
     
    652629
    653630
    654 #=== ファイルのエンコーディングを ASCII-8BIT に変更
    655 # Ruby 1.9 以上の場合に変更
     631#=== ファイルのエンコーディングを ASCII-8BIT に変更
     632# Ruby 1.9 以上の場合に変更
    656633def set_encoding file
    657634  if RUBY_VERSION >= "1.9.0" then
     
    661638
    662639#=== rename_dst
    663 # dst_file のバックアップファイル名を決定し、リネームする
    664 # 成功すれば、リネーム後のファイル名を返す
    665 # dst_file が存在しなければ(リネームは行われず)nil を返す。
     640# dst_file のバックアップファイル名を決定し、リネームする
     641# 成功すれば、リネーム後のファイル名を返す
     642# dst_file が存在しなければ(リネームは行われず)nil を返す。
    666643def rename_dst( dst_file )
    667644  begin
     
    669646  rescue
    670647    STDERR.puts( "info: backup not generated for #{dst_file}" )
    671     # なければ終わり
     648    # なければ終わり
    672649    return nil
    673650  end
Note: See TracChangeset for help on using the changeset viewer.