Upload files to "java/markup"

This commit is contained in:
2026-04-13 10:47:09 +03:00
parent cd38cb319b
commit e6190c3bd0
5 changed files with 140 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package markup;
import java.util.List;
/**
* @author Nikita Doschennikov (me@fymio.us)
*/
public abstract class AbstractList implements ContainsInListItem {
private final List<ListItem> items;
private final String highlight;
private final String texBegin;
private final String texEnd;
protected AbstractList(
List<ListItem> items,
String highlight,
String texBegin,
String texEnd
) {
this.items = items;
this.highlight = highlight;
this.texBegin = texBegin;
this.texEnd = texEnd;
}
@Override
public void toHtml(StringBuilder sb) {
sb.append("<").append(highlight).append(">");
for (ListItem item : items) {
item.toHtml(sb);
}
sb.append("</").append(highlight).append(">");
}
@Override
public void toMarkdown(StringBuilder sb) {}
@Override
public void toTex(StringBuilder sb) {
sb.append(texBegin);
for (ListItem item : items) {
item.toTex(sb);
}
sb.append(texEnd);
}
}

View File

@@ -0,0 +1,66 @@
package markup;
import java.util.List;
/**
* @author Nikita Doschennikov (me@fymio.us)
*/
public abstract class AbstractMarkup implements Markdown, Html, Tex {
protected final List<? extends Markup> items;
private final String highlightMarkdown;
private final String highlightHtml;
private final String highlightTexOpen;
private final String highlightTexClose;
protected AbstractMarkup(
List<? extends Markup> items,
String highlightMarkdown,
String highlightHtml,
String highlightTexOpen,
String highlightTexClose
) {
this.items = items;
this.highlightMarkdown = highlightMarkdown;
this.highlightHtml = highlightHtml;
this.highlightTexOpen = highlightTexOpen;
this.highlightTexClose = highlightTexClose;
}
@Override
public void toMarkdown(StringBuilder sb) {
sb.append(highlightMarkdown);
for (Markup item : items) {
item.toMarkdown(sb);
}
sb.append(highlightMarkdown);
}
@Override
public void toHtml(StringBuilder sb) {
if (!highlightHtml.isEmpty()) {
sb.append("<").append(highlightHtml).append(">");
}
for (Markup item : items) {
item.toHtml(sb);
}
if (!highlightHtml.isEmpty()) {
sb.append("</").append(highlightHtml).append(">");
}
}
@Override
public void toTex(StringBuilder sb) {
sb.append(highlightTexOpen);
for (Markup item : items) {
if (item instanceof Text) {
((Text) item).toTex(sb);
} else if (item instanceof AbstractMarkup) {
((AbstractMarkup) item).toTex(sb);
} else if (item instanceof AbstractList) {
((AbstractList) item).toTex(sb);
}
}
sb.append(highlightTexClose);
}
}

View File

@@ -0,0 +1,6 @@
package markup;
/**
* @author Nikita Doschennikov (me@fymio.us)
*/
public interface ContainsInListItem extends Markup {}

13
java/markup/Emphasis.java Normal file
View File

@@ -0,0 +1,13 @@
package markup;
import java.util.List;
/**
* @author Nikita Doschennikov (me@fymio.us)
*/
public class Emphasis extends AbstractMarkup implements PartOfParagraph {
public Emphasis(List<PartOfParagraph> items) {
super(items, "*", "em", "\\emph{", "}");
}
}

8
java/markup/Html.java Normal file
View File

@@ -0,0 +1,8 @@
package markup;
/**
* @author Nikita Doschennikov (me@fymio.us)
*/
public interface Html {
void toHtml(StringBuilder sb);
}