module OdptCommon::StringExt

文字列 (String) のクラスに組み込むモジュール @note 標準添付ライブラリの拡張

Public Instance Methods

delete_station_subname() click to toggle source
# File lib/odpt_common/string_ext.rb, line 79
def delete_station_subname
  gsub( ::PositiveStringSupport::RegexpLibrary.regexp_for_parentheses_ja , "" )
end
process_machine_dependent_character() click to toggle source
# File lib/odpt_common/string_ext.rb, line 71
def process_machine_dependent_character
  self
end
process_train_operation_text() click to toggle source
# File lib/odpt_common/string_ext.rb, line 5
def process_train_operation_text
  str = self
  str = str.zen_num_to_han
  str = str.zen_alphabet_to_han
  str = str.gsub( /[〜~]/ , " - " )

  regexp_1 = /\A(.+(?:線|ライン)内)で(?:発生した|の)?(?:、?)(.+)のため(?:、?)/
  regexp_2 = /\A(.+(?:線|ライン)) (.+?)駅? - (.+?)駅?間?で(?:発生した|の)?(?:、?)(.+)のため(?:、?)/
  regexp_3 = /\A(.+(?:線|ライン)) (.+?)駅?で(?:発生した|の)?(?:、?)(.+)のため(?:、?)/

  regexp_natural_disaster = /(\d{1,2}時\d{1,2}分頃)、(地震)のため、((?:一部の列車に)?遅れが出ています。)/

  regexp_cause = /での(.+)により、/
  
  regexp_furikae = /に(?=振替輸送を実施しています。)/

  case str
  when regexp_1
    str = str.gsub( regexp_1 ) { "#{ $1 }での#{ $2 }により、" }
  when regexp_2
    str = str.gsub( regexp_2 ) { "#{ $1 } #{ $2 } - #{ $3 } での#{ $4 }により、" }
  when regexp_3
    str = str.gsub( regexp_3 ) { "#{ $1 } #{ $2 }駅での#{ $3 }により、" }
  end

  str = str.gsub( regexp_natural_disaster ) { "#{ $1 }発生した#{ $2 }のため、#{ $3 }" }

  if regexp_cause =~ str
    case $1
    when "車両点検" , "踏切安全確認"
      str = str.gsub( regexp_cause ) { "で行なった#{ $1 }の影響で、" }
    end
  end

  str = str.gsub( regexp_furikae , "で" )
  # str = str.gsub( regexp_furikae , "への" )
  
  # cf. 東急田園都市線内での東急線内遅延により、一部の列車に遅れが出ています。
  regexp_for_invalid_railway_line_info_of_another_operator = /(.+)線内での(.+)線内遅延により、/
  if regexp_for_invalid_railway_line_info_of_another_operator =~ str
    railway_line_name_precise , operator_name = $1 , $2
    if /\A#{ operator_name }/ === railway_line_name_precise
      str = str.gsub( regexp_for_invalid_railway_line_info_of_another_operator ) { "#{ $1 }線内での遅延により、" }
    end
  end

  str = str.gsub( /只今/ , "ただいま" )

  # cf. 17時26分頃、築地駅で人身事故のため、折返し運転を行っています。全線での運転再開は、18時30分頃を見込んでいます。折返し運転区間 北千住〜八丁堀駅間 霞ケ関〜中目黒駅間只今、東京メトロ線、都営地下鉄線、JR線、東急線、東武線、京成線、つくばエクスプレス線に振替輸送を実施しています。詳しくは、駅係員にお尋ねください。
  regexp_for_partial_operation = /(折返し運転区間)[  ::]((?:.+? - .+?駅間 ?)+)\n?/
  if regexp_for_partial_operation =~ str
    header_of_partial_operation = $1
    sections_in_api = $2
    sections_to_a = $2.split( /(?<=駅間)[  ]?/ ).map { | section | section.split( /〜/ ).join( " - " ) }
    sections = sections_to_a.join( "/" )

    str = str.gsub( regexp_for_partial_operation ) { "#{ header_of_partial_operation }:#{ sections }\n" }
  end

  str = str.gsub( /(?<=つくばエクスプレス|ゆりかもめ)線/ , "" )
  str = str.gsub( /。\n? ?(?!\Z)/ , "。\n" )
  
  str = str.gsub( /(?<=詳しくは)、(?=駅係員にお尋ねください。)/ , "" )
  str
end
revive_machine_dependent_character() click to toggle source
# File lib/odpt_common/string_ext.rb, line 75
def revive_machine_dependent_character
  self
end