Class: CDLString

Inherits:
Object show all
Defined in:
lib/tecsgen/core/syntaxobj.rb

Overview

CDL の文字列リテラルを扱うためのクラス

CDL の文字列リテラルそのものではない

Class Method Summary collapse

Class Method Details

.escape(str) ⇒ Object

エスケープ文字を変換



1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
# File 'lib/tecsgen/core/syntaxobj.rb', line 1179

def self.escape(str)
  str = str.dup
  str.gsub!(/\\a/, "\x07")
  str.gsub!(/\\b/, "\x08")
  str.gsub!(/\\f/, "\x0c")
  str.gsub!(/\\n/, "\x0a")
  str.gsub!(/\\r/, "\x0d")
  str.gsub!(/\\t/, "\x08")
  str.gsub!(/\\v/, "\x0b")
  str.gsub!(/(\\[Xx][0-9A-Fa-f]{1,2})/, '{printf \"\\1\"}')
  str.gsub!(/(\\[0-7]{1,3})/, '{printf \"\\1\"}')
  str.gsub!(/\\(.)/, "\\1") # mikan 未定義のエスケープシーケンスを変換してしまう (gcc V3.4.4 では警告が出される)
  return str
end

.remove_dquote(str) ⇒ Object

CDLString#前後の “ を取り除く



1195
1196
1197
1198
1199
# File 'lib/tecsgen/core/syntaxobj.rb', line 1195

def self.remove_dquote(str)
  s = str.sub(/\A"/, "")
  s.sub!(/"\z/, "")
  return s
end