SGML заменяет теги и записывает в новый и другой файл в Ruby

У меня есть очень длинный файл SGML, который мне нужно преобразовать в другой синтаксис, но по какой-то причине мой код не работает, когда я получаю вывод, это точно такой же документ, код выглядит следующим образом:

#!usr/bin/env ruby 

def replaceStrings(toChange)

  ##Remove Title tags and replace with the correct 
  toChange.gsub(/<title>/) { "====="  }
  toChange.gsub(/<\/title>/) { "====="  }

  ##Image
  toChange.gsub(/<graphic fileref="/) { "{{"  }
  toChange.gsub(/<\/graphic>/) { "|}}"  }
  toChange.gsub(/;" scale="60">/) { ""  }

  ##Paragraphs
  toChange.gsub(/<para>/) { ""  }
  toChange.gsub(/<\/para>/) { ""  }

  puts toChange

end

fileInput = ARGV[0]
fileOutput = ARGV[1]

document = File.readlines(fileInput)
puts fileInput
puts fileOutput
document.each { |e|  replaceStrings(e)}

File.new(fileOutput, 'w')
File.open(fileOutput, 'w'){
  |f| f.write(document)
}

Насколько я могу судить, я вызываю метод replaceString, но я что-то упускаю или что-то делаю неправильно?

ПРИМЕЧАНИЕ: я довольно новичок в Ruby

1 ответ

Вы хотите использовать gsub!

Также не нужно использовать блочную форму:

toChange.gsub!(/<title>/, "=====")

Кроме того, я не думаю, что вам нужен файл новый:

File.open(fileOutput, 'w') do |f|
  f.write(document)
end
Другие вопросы по тегам