/*
* Copyright (C) 2014 たんらる
*/
package fourthline.mmlTools.parser;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.LinkedList;
import java.util.List;
/**
* テキストをセクションに区切って扱います.
* [section-name]
* text...
*/
public final class SectionContents {
private final String name;
private final StringBuilder buffer = new StringBuilder();
private SectionContents(String name) {
this.name = name;
}
/**
* セクション名を取得します.
* @return
*/
public String getName() {
return name;
}
/**
* セクションコンテンツ(text...部分)を取得します.
* @return
*/
public String getContents() {
return buffer.toString();
}
/**
* InputStreamからセクションのリストを作成します.
* @param istream
* @return
*/
public static List<SectionContents> makeSectionContentsByInputStream(InputStream istream) {
return makeSectionContentsByInputStream(istream, "UTF-8");
}
/**
* InputStreamからセクションのリストを作成します.
* @param istream
* @param charsetName
* @return
*/
public static List<SectionContents> makeSectionContentsByInputStream(InputStream istream, String charsetName) {
LinkedList<SectionContents> contentsList = new LinkedList<>();
try {
InputStreamReader reader = new InputStreamReader(istream, charsetName);
new BufferedReader(reader).lines().forEach(s -> {
if (s.startsWith("[")) {
contentsList.add( new SectionContents(s) );
} else if (contentsList.size() > 0) {
SectionContents section = contentsList.getLast();
section.buffer.append(s).append('\n');
}
});
} catch (UnsupportedEncodingException e) {}
return contentsList;
}
}