     
     for line in text.lines() {
         
-        // コメントの外に到達してヒアドキュメントが含まれていたら
-        if !inComment && !heredocLines.isEmpty {
-            
-            let regex = Regex("let ([0-9A-Za-z]+)\\s*=\\s*\"")!
-            if regex.isMatch(line) {
-                let variable = regex.match(line)!._1
-                
-                let strintLiteral = convertHeredocToSource(heredocLines)
-                
-                let newLine = "let \(variable) = \"\(strintLiteral)\""
-                if let indent = indent {
-                    results.append(newLine.leftPad(indent - 1))
-                } else {
-                    results.append(newLine)
-                }
-                
-                heredocLines = []
-                indent = nil
-                continue
-            }
-            
-            heredocLines = []
-            indent = nil
-        }
-        
-        // コメント開始
-        if Regex("/\\*")!.isMatch(line) {
-            inComment = true
-            results.append(line)
-            continue
-        }
-        
         // here-docを解析して記録
         if inComment {
             
             // インデントを記憶
-            if Regex("(\\s*)<<\\[EOL\\]")!.isMatch(line) {
-                let space = Regex("(\\s*)<<\\[EOL\\]")!.match(line)!._1
+            if RegexHeredoc.isMatch(line) {
+                let space = RegexHeredoc.match(line)!._1
                 indent = space.characters.count
                 results.append(line)
                 continue
             }
             
             // コメント終了
-            if Regex("\\*/")!.isMatch(line) {
+            if line.isEndComment {
                 inComment = false
                 results.append(line)
                 continue

    return String.unlines(results)
}

func convertHeredocToSource(_ lines: [String]) -> String {
    
    let code = lines.joined(separator: "\\n")
    let escaped = escapeCharacters(code)
    return escaped
}

func escapeCharacters(_ line: String) -> String {

//

import Foundation

private let RegexBeginComment = Regex("/\\*")!
private let RegexEndComment   = Regex("\\*/")!
private let RegexLetString    = Regex("let ([0-9A-Za-z]+)\\s*=\\s*\"")!
private let RegexHeredoc      = Regex("(\\s*)<<\\[EOL\\]")!

fileprivate extension String {
    var isBeginComment: Bool {
        return RegexBeginComment.isMatch(self)
    }
    var isEndComment: Bool {
        return RegexEndComment.isMatch(self)
    }
}

/// 指定されたコード全体を変換したものを返す
///
