2012-07-15 2 views
0

다른 구문으로 변환해야하는 매우 긴 SGML 파일을 가지고 있습니다. 그러나 어떤 이유로 출력이 나올 때 코드가 작동하지 않습니다. 정확히 같은 문서, 코드는 다음과 같습니다 :SGML 태그를 대체하고 Ruby에서 새롭고 다른 파일에 쓰기

#!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

I + 1의 seph의 답변을하지만 : 당신은 일반 텍스트와 같은 구조화 된 파일 처리 -이 작업은 의도 한대로 정확하게 수행 될 수 있지만 실제 변환은보다 안정적이고 정확합니다. 정말 간단한 SGML 파일의 경우 중요하지 않을 수 있습니다. –

답변

1

gsub을 사용하고 싶습니다!

또한, 블록 형태로 사용할 필요 : 또한

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

, 난 당신이 새로운 파일 필요가 있다고 생각하지 않습니다

File.open(fileOutput, 'w') do |f| 
    f.write(document) 
end