package de.sebastianbenz.task.generator;
import de.sebastianbenz.task.Code;
import de.sebastianbenz.task.Content;
import de.sebastianbenz.task.EmptyLine;
import de.sebastianbenz.task.Note;
import de.sebastianbenz.task.Project;
import de.sebastianbenz.task.Task;
import de.sebastianbenz.task.TaskModel;
import de.sebastianbenz.task.generator.TaskGenerator;
import java.util.Arrays;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtend2.lib.StringConcatenation;
@SuppressWarnings("all")
public class MarkdownGenerator implements TaskGenerator {
public CharSequence generate(final TaskModel taskModel) {
StringConcatenation _builder = new StringConcatenation();
{
EList<Content> _contents = taskModel.getContents();
for(final Content content : _contents) {
CharSequence _generate = this.generate(content);
_builder.append(_generate, "");
_builder.newLineIfNotEmpty();
}
}
return _builder;
}
protected CharSequence _generate(final Note note) {
StringConcatenation _builder = new StringConcatenation();
String _value = note.getValue();
_builder.append(_value, "");
_builder.newLineIfNotEmpty();
return _builder;
}
protected CharSequence _generate(final Task task) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("* ");
String _text = task.getText();
String _substring = _text.substring(1);
_builder.append(_substring, "");
_builder.newLineIfNotEmpty();
return _builder;
}
protected CharSequence _generate(final Code code) {
CharSequence _xblockexpression = null;
{
String _value = code.getValue();
String[] lines = _value.split("\n");
StringConcatenation _builder = new StringConcatenation();
{
for(final String line : lines) {
String _plus = (" " + line);
_builder.append(_plus, "");
}
}
_builder.newLineIfNotEmpty();
_xblockexpression = (_builder);
}
return _xblockexpression;
}
protected CharSequence _generate(final Project project) {
int i = 0;
StringConcatenation _stringConcatenation = new StringConcatenation();
StringConcatenation result = _stringConcatenation;
int _level = project.getLevel();
boolean _lessEqualsThan = (i <= _level);
boolean _while = _lessEqualsThan;
while (_while) {
{
result.append("#");
int _plus = (i + 1);
i = _plus;
}
int _level_1 = project.getLevel();
boolean _lessEqualsThan_1 = (i <= _level_1);
_while = _lessEqualsThan_1;
}
String _value = project.getValue();
String _plus = (" " + _value);
result.append(_plus);
return result;
}
protected CharSequence _generate(final EmptyLine emptyLine) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("\t\t");
_builder.newLine();
return _builder;
}
public CharSequence generate(final Content code) {
if (code instanceof Code) {
return _generate((Code)code);
} else if (code instanceof EmptyLine) {
return _generate((EmptyLine)code);
} else if (code instanceof Note) {
return _generate((Note)code);
} else if (code instanceof Project) {
return _generate((Project)code);
} else if (code instanceof Task) {
return _generate((Task)code);
} else {
throw new IllegalArgumentException("Unhandled parameter types: " +
Arrays.<Object>asList(code).toString());
}
}
}