From 8ed1ac19770dca2b5c37c529fe4420068e107f77 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Thu, 9 Oct 2014 17:27:58 +0200 Subject: Allow substitution of literal or numeric month in weblog month selection. --- org/madore/damlengine/TodoElement.java | 4 ++-- .../damlengine/TodoWeblogMonthsCalendar.java | 22 +++++++++++++++++++++ .../damlengine/TodoWeblogSelectionElement.java | 23 ++++++++++++++-------- 3 files changed, 39 insertions(+), 10 deletions(-) (limited to 'org') diff --git a/org/madore/damlengine/TodoElement.java b/org/madore/damlengine/TodoElement.java index 83275ad..acccac0 100644 --- a/org/madore/damlengine/TodoElement.java +++ b/org/madore/damlengine/TodoElement.java @@ -64,8 +64,8 @@ public abstract class TodoElement extends TodoItem { damlFactories.put("weblog-select", new TodoWeblogSelectElement.Factory()); damlFactories.put("weblog-index-select", new TodoWeblogIndexSelectElement.Factory()); damlFactories.put("weblog-selection-recent-count", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.RECENT_COUNT)); - damlFactories.put("weblog-selection-month-year", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.MONTH_YEAR)); - damlFactories.put("weblog-selection-month-month", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.MONTH_MONTH)); + damlFactories.put("weblog-selection-month-numeric", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.MONTH_NUMERIC)); + damlFactories.put("weblog-selection-month-literal", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.MONTH_LITERAL)); damlFactories.put("weblog-selection-cat-code", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.CATEGORY_CODE)); damlFactories.put("weblog-selection-cat-name", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.CATEGORY_NAME)); damlFactories.put("weblog-selection-single-number", new TodoWeblogSelectionElement.Factory(TodoWeblogSelectionElement.Type.SINGLE_NUMBER)); diff --git a/org/madore/damlengine/TodoWeblogMonthsCalendar.java b/org/madore/damlengine/TodoWeblogMonthsCalendar.java index 044f05f..481f05a 100644 --- a/org/madore/damlengine/TodoWeblogMonthsCalendar.java +++ b/org/madore/damlengine/TodoWeblogMonthsCalendar.java @@ -23,6 +23,28 @@ public final class TodoWeblogMonthsCalendar extends TodoDefaultElement { "Sep", "Oct", "Nov", "Dec", }; + public static final String[] monthNamesEn = { + null, + "January", "February", "March", "April", + "May", "June", "July", "August", + "September", "October", "November", "December", + }; + + public static final String[] monthNamesFr = { + null, + "janvier", "f\u00e9vrier", "mars", "avril", + "mai", "juin", "juillet", "ao\u00fbt", + "septembre", "octobre", "novembre", "d\u00e9cembre", + }; + + public static final Map monthNames; + + static { + monthNames = new HashMap(); + monthNames.put("en", monthNamesEn); + monthNames.put("fr", monthNamesFr); + } + public static class Factory extends TodoElement.Factory { @Override public TodoWeblogMonthsCalendar newItem(Element node, diff --git a/org/madore/damlengine/TodoWeblogSelectionElement.java b/org/madore/damlengine/TodoWeblogSelectionElement.java index c9088eb..637bc85 100644 --- a/org/madore/damlengine/TodoWeblogSelectionElement.java +++ b/org/madore/damlengine/TodoWeblogSelectionElement.java @@ -12,8 +12,8 @@ public final class TodoWeblogSelectionElement extends TodoDefaultElement { public enum Type { RECENT_COUNT, - MONTH_YEAR, - MONTH_MONTH, + MONTH_NUMERIC, + MONTH_LITERAL, CATEGORY_NAME, CATEGORY_CODE, SINGLE_NUMBER, @@ -114,19 +114,26 @@ public final class TodoWeblogSelectionElement extends TodoDefaultElement { newNode = ctx.doc.createTextNode(str); node.getParentNode().replaceChild(newNode, node); break; - case MONTH_YEAR: + case MONTH_NUMERIC: if ( ! ( ctx.wsc instanceof Context.WeblogMonthSelectionContext ) ) - throw new IllegalStateException("weblog-selection-month-year element encountered while not in weblog month selection state"); - str = ((Context.WeblogMonthSelectionContext)(ctx.wsc)).year; + throw new IllegalStateException("weblog-selection-month-numeric element encountered while not in weblog month selection state"); + str = ((Context.WeblogMonthSelectionContext)(ctx.wsc)).year + "-" + + ((Context.WeblogMonthSelectionContext)(ctx.wsc)).month; newNode = ctx.doc.createTextNode(str); node.getParentNode().replaceChild(newNode, node); break; - case MONTH_MONTH: + case MONTH_LITERAL: if ( ! ( ctx.wsc instanceof Context.WeblogMonthSelectionContext ) ) - throw new IllegalStateException("weblog-selection-month-month element encountered while not in weblog month selection state"); - str = ((Context.WeblogMonthSelectionContext)(ctx.wsc)).month; + throw new IllegalStateException("weblog-selection-month-literal element encountered while not in weblog month selection state"); + int mnum = Integer.parseInt(((Context.WeblogMonthSelectionContext)(ctx.wsc)).month); + String lang = LangHelper.getLangRec(node); + String[] mnames = TodoWeblogMonthsCalendar.monthNames.get(lang); + if ( mnames == null ) + mnames = TodoWeblogMonthsCalendar.monthNamesEn; + str = mnames[mnum] + " " + ((Context.WeblogMonthSelectionContext)(ctx.wsc)).year; newNode = ctx.doc.createTextNode(str); node.getParentNode().replaceChild(newNode, node); + LangHelper.setLangRec(node, lang); break; case CATEGORY_CODE: if ( ! ( ctx.wsc instanceof Context.WeblogCategorySelectionContext ) ) -- cgit v1.2.3