package xapi.ui.html; import xapi.annotation.compile.MagicMethod; import xapi.inject.X_Inject; import xapi.ui.api.StyleService; import xapi.ui.html.api.HtmlService; import xapi.ui.html.api.HtmlSnippet; public class X_Html { private X_Html() {} @SuppressWarnings({ "unchecked", "rawtypes" }) @MagicMethod(doNotVisit = true) public static <T> String toHtml(Class<?> template, Class<? extends T> cls, T o, StyleService<?> context) { return toSnippet(template, (Class)cls, context).convert(o); } @MagicMethod(doNotVisit = true) public static <T> String toHtml(Class<? extends T> cls, T o, StyleService<?> context) { return toHtml(cls, cls, o, context); } @MagicMethod(doNotVisit = true) public static <T> HtmlSnippet<T> toSnippet(Class<? extends T> cls, StyleService<?> context) { return toSnippet(cls, cls, context); } @MagicMethod(doNotVisit = true) public static <T> HtmlSnippet<T> toSnippet(Class<?> templateClass, Class<? extends T> cls, StyleService<?> context) { return X_Inject.singleton(HtmlService.class).toSnippet(templateClass, cls, context); } @MagicMethod(doNotVisit = true) public static void injectCss(final Class<?> cls, StyleService<?> context) { X_Inject.singleton(HtmlService.class).injectStyle(cls, context); } public static String toGoogleFontUrl(String ... fonts) { StringBuilder b = new StringBuilder( "@import url(" + "https://fonts.googleapis.com/css?family="); for (int i = 0; i < fonts.length; i++) { String font = fonts[i]; if (i > 0) { b.append("|"); } // TODO proper uri encoding later b.append(font.replace(' ', '+')); } b.append(");"); return b.toString(); } }