package org.wikipedia.edit.richtext;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.support.annotation.NonNull;
import org.wikipedia.R;
import static android.support.v4.content.ContextCompat.getColor;
import static org.wikipedia.util.ResourceUtil.getThemedAttributeId;
public enum SyntaxRuleStyle {
TEMPLATE {
@NonNull @Override public SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem) {
int color = getColor(ctx, getThemedAttributeId(ctx, R.attr.syntax_highlight_template_color));
return new ColorSpanEx(color, Color.TRANSPARENT, spanStart, syntaxItem);
}
},
INTERNAL_LINK {
@NonNull @Override public SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem) {
int color = getColor(ctx, getThemedAttributeId(ctx, R.attr.link_color));
return new ColorSpanEx(color, Color.TRANSPARENT, spanStart, syntaxItem);
}
},
EXTERNAL_LINK {
@NonNull @Override public SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem) {
int color = getColor(ctx, getThemedAttributeId(ctx, R.attr.link_color));
return new ColorSpanEx(color, Color.TRANSPARENT, spanStart, syntaxItem);
}
},
REF {
@NonNull @Override public SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem) {
return new ColorSpanEx(getColor(ctx, R.color.dark_green), Color.TRANSPARENT, spanStart,
syntaxItem);
}
},
BOLD_ITALIC {
@NonNull @Override public SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem) {
return new StyleSpanEx(Typeface.BOLD_ITALIC, spanStart, syntaxItem);
}
},
BOLD {
@NonNull @Override public SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem) {
return new StyleSpanEx(Typeface.BOLD, spanStart, syntaxItem);
}
},
ITALIC {
@NonNull @Override public SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem) {
return new StyleSpanEx(Typeface.ITALIC, spanStart, syntaxItem);
}
};
@NonNull public abstract SpanExtents createSpan(@NonNull Context ctx, int spanStart,
SyntaxRule syntaxItem);
}