package com.tyndalehouse.step.tools.esv; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.io.FileUtils; public class GizaAlignment { public static void main(final String[] args) throws IOException { final List<String> readLines = FileUtils.readLines(new File( "d:\\dev\\projects\\giza\\112-12-27.161917.chris.A3.final")); int lineNo = 0; Map<Integer, String> wordMap = null; for (final String line : readLines) { if (line.startsWith("#")) { wordMap = new HashMap<Integer, String>(16); // output previous lineNo = 1; continue; } if (lineNo == 1) { final String[] words = line.split(" "); for (int i = 0; i < words.length; i++) { wordMap.put(i + 1, words[i]); } lineNo = 2; continue; } if (lineNo == 2) { final StringBuilder sb = new StringBuilder(128); for (int ii = 0; ii < line.length(); ii++) { if (line.charAt(ii) == '{') { // open curly brace // munge as many chars as possible StringBuilder number = new StringBuilder(); while (line.charAt(++ii) != '}') { // do nothing if (line.charAt(ii) == ' ') { if (number.length() != 0) { sb.append(wordMap.get(Integer.parseInt(number.toString()))); sb.append(' '); } number = new StringBuilder(); } else { number.append(line.charAt(ii)); } } } else { sb.append(line.charAt(ii)); } } System.out.println(sb.toString()); lineNo = 0; } } } }