Search in sources :

Example 6 with Variable

use of com.squarespace.template.Variable in project template-compiler by Squarespace.

the class DateTimeIntervalFormatter method apply.

@Override
public void apply(Context ctx, Arguments args, Variables variables) throws CodeExecuteException {
    int count = variables.count();
    if (count < 2) {
        return;
    }
    Variable v1 = variables.get(0);
    Variable v2 = variables.get(1);
    CLDR cldr = ctx.cldr();
    String zoneId = PluginDateUtils.getTimeZoneNameFromContext(ctx);
    CalendarDate start = cldr.Calendars.toGregorianDate(v1.node().asLong(0), zoneId);
    CalendarDate end = cldr.Calendars.toGregorianDate(v2.node().asLong(0), zoneId);
    DateIntervalFormatOptions options = (DateIntervalFormatOptions) args.getOpaque();
    String result = cldr.Calendars.formatDateInterval(start, end, options);
    v1.set(result);
}
Also used : DateIntervalFormatOptions(com.squarespace.cldrengine.api.DateIntervalFormatOptions) CalendarDate(com.squarespace.cldrengine.api.CalendarDate) Variable(com.squarespace.template.Variable) CLDR(com.squarespace.cldrengine.CLDR)

Example 7 with Variable

use of com.squarespace.template.Variable in project template-compiler by Squarespace.

the class RelativeTimeFormatter method apply.

@Override
public void apply(Context ctx, Arguments args, Variables variables) throws CodeExecuteException {
    int count = variables.count();
    Variable v1 = variables.get(0);
    Long now = ctx.now();
    long s = now == null ? System.currentTimeMillis() : now.longValue();
    long e = v1.node().asLong();
    if (count > 1) {
        s = e;
        e = variables.get(1).node().asLong();
    }
    CLDR cldr = ctx.cldr();
    CalendarDate start = cldr.Calendars.toGregorianDate(s, "UTC");
    CalendarDate end = cldr.Calendars.toGregorianDate(e, "UTC");
    RelativeTimeFormatOptions opts = OptionParsers.relativetime(args);
    String res = cldr.Calendars.formatRelativeTime(start, end, opts);
    v1.set(res);
}
Also used : CalendarDate(com.squarespace.cldrengine.api.CalendarDate) Variable(com.squarespace.template.Variable) CLDR(com.squarespace.cldrengine.CLDR) RelativeTimeFormatOptions(com.squarespace.cldrengine.api.RelativeTimeFormatOptions)

Example 8 with Variable

use of com.squarespace.template.Variable in project template-compiler by Squarespace.

the class MoneyFormatter method apply.

@Override
public void apply(Context ctx, Arguments args, Variables variables) throws CodeExecuteException {
    Variable var = variables.first();
    JsonNode node = var.node();
    JsonNode decimalValue = node.path("decimalValue");
    JsonNode currencyNode = node.path("currencyCode");
    if (decimalValue.isMissingNode() || currencyNode.isMissingNode()) {
        // Check if we have a new money node and CLDR formatting is enabled.
        if (CommerceUtils.useCLDRMode(ctx)) {
            decimalValue = node.path("value");
            currencyNode = node.path("currency");
        }
        // No valid money node found.
        if (decimalValue.isMissingNode() || currencyNode.isMissingNode()) {
            var.setMissing();
            return;
        }
    }
    CLDR cldr = ctx.cldr();
    String code = currencyNode.asText();
    Decimal decimal = GeneralUtils.nodeToDecimal(decimalValue);
    CurrencyType currency = CurrencyType.fromString(code);
    CurrencyFormatOptions opts = (CurrencyFormatOptions) args.getOpaque();
    String result = cldr.Numbers.formatCurrency(decimal, currency, opts);
    var.set(result);
}
Also used : Variable(com.squarespace.template.Variable) Decimal(com.squarespace.cldrengine.api.Decimal) CurrencyFormatOptions(com.squarespace.cldrengine.api.CurrencyFormatOptions) CLDR(com.squarespace.cldrengine.CLDR) JsonNode(com.fasterxml.jackson.databind.JsonNode) CurrencyType(com.squarespace.cldrengine.api.CurrencyType)

Aggregations

Variable (com.squarespace.template.Variable)8 CLDR (com.squarespace.cldrengine.CLDR)5 JsonNode (com.fasterxml.jackson.databind.JsonNode)3 CalendarDate (com.squarespace.cldrengine.api.CalendarDate)3 Decimal (com.squarespace.cldrengine.api.Decimal)2 CLDR (com.squarespace.cldr.CLDR)1 NumberFormatter (com.squarespace.cldr.numbers.NumberFormatter)1 Unit (com.squarespace.cldr.units.Unit)1 UnitCategory (com.squarespace.cldr.units.UnitCategory)1 UnitConverter (com.squarespace.cldr.units.UnitConverter)1 UnitFactorSet (com.squarespace.cldr.units.UnitFactorSet)1 UnitValue (com.squarespace.cldr.units.UnitValue)1 CurrencyFormatOptions (com.squarespace.cldrengine.api.CurrencyFormatOptions)1 CurrencyType (com.squarespace.cldrengine.api.CurrencyType)1 DateFormatOptions (com.squarespace.cldrengine.api.DateFormatOptions)1 DateIntervalFormatOptions (com.squarespace.cldrengine.api.DateIntervalFormatOptions)1 DecimalFormatOptions (com.squarespace.cldrengine.api.DecimalFormatOptions)1 MessageArgs (com.squarespace.cldrengine.api.MessageArgs)1 RelativeTimeFormatOptions (com.squarespace.cldrengine.api.RelativeTimeFormatOptions)1 GeneralUtils.splitVariable (com.squarespace.template.GeneralUtils.splitVariable)1