package de.sebastianbenz.task.generator; import com.google.common.base.Objects; import de.sebastianbenz.task.Code; import de.sebastianbenz.task.Content; import de.sebastianbenz.task.EmptyLine; import de.sebastianbenz.task.Image; import de.sebastianbenz.task.Link; import de.sebastianbenz.task.Note; import de.sebastianbenz.task.Project; import de.sebastianbenz.task.Tag; import de.sebastianbenz.task.Task; import de.sebastianbenz.task.TaskModel; import de.sebastianbenz.task.Text; import de.sebastianbenz.task.TextSegment; 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 ConfluenceGenerator 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(); { EList<TextSegment> _segments = note.getSegments(); for(final TextSegment s : _segments) { CharSequence _write = this.write(s); _builder.append(_write, ""); } } return _builder; } protected CharSequence _generate(final Task task) { StringConcatenation _builder = new StringConcatenation(); _builder.append("* "); { boolean _isDone = task.isDone(); if (_isDone) { _builder.append("-"); } } { EList<TextSegment> _segments = task.getSegments(); for(final TextSegment s : _segments) { CharSequence _write = this.write(s); _builder.append(_write, ""); } } { boolean _isDone_1 = task.isDone(); if (_isDone_1) { _builder.append("-"); } } return _builder; } protected CharSequence _generate(final Project project) { StringConcatenation _builder = new StringConcatenation(); _builder.append("h"); int _level = project.getLevel(); int _plus = (_level + 1); _builder.append(_plus, ""); _builder.append(". "); String _value = project.getValue(); String _escape = this.escape(_value); _builder.append(_escape, ""); return _builder; } protected CharSequence _generate(final EmptyLine emptyLine) { StringConcatenation _builder = new StringConcatenation(); _builder.append("\t\t"); _builder.newLine(); return _builder; } protected CharSequence _write(final Text text) { String _value = text.getValue(); return this.escape(_value); } protected CharSequence _write(final Link link) { String url = link.getUrl(); boolean _startsWith = url.startsWith("http://"); boolean _not = (!_startsWith); if (_not) { String _plus = ("http://" + url); url = _plus; } String description = ""; String _description = link.getDescription(); boolean _equals = Objects.equal(_description, ""); if (_equals) { String _url = link.getUrl(); description = _url; } else { String _description_1 = link.getDescription(); description = _description_1; } String _description_2 = link.getDescription(); String _plus_1 = ("[" + _description_2); String _plus_2 = (_plus_1 + "|"); String _url_1 = link.getUrl(); String _plus_3 = (_plus_2 + _url_1); return (_plus_3 + "]"); } protected CharSequence _write(final Image image) { String _url = image.getUrl(); String _plus = ("!" + _url); String _plus_1 = (_plus + "|title=\""); String _description = image.getDescription(); String _plus_2 = (_plus_1 + _description); return (_plus_2 + "\"!"); } protected CharSequence _write(final Tag tag) { StringConcatenation _builder = new StringConcatenation(); _builder.append("{color:gray}+"); _builder.append(tag, ""); _builder.append("{+}{color}"); return _builder; } protected CharSequence _generate(final Code code) { StringConcatenation _builder = new StringConcatenation(); _builder.append("{code}"); _builder.newLine(); String _value = code.getValue(); _builder.append(_value, ""); _builder.newLineIfNotEmpty(); _builder.append("{code}"); _builder.newLine(); return _builder; } public String escape(final String string) { String _replaceAll = string.replaceAll("\\{", "\\\\{"); return _replaceAll.replaceAll("\\}", "\\\\}"); } 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()); } } public CharSequence write(final TextSegment image) { if (image instanceof Image) { return _write((Image)image); } else if (image instanceof Link) { return _write((Link)image); } else if (image instanceof Tag) { return _write((Tag)image); } else if (image instanceof Text) { return _write((Text)image); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(image).toString()); } } }