package com.hubspot.baragon.agent.handlebars;
import java.io.IOException;
import com.github.jknack.handlebars.Helper;
import com.github.jknack.handlebars.Options;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
public class FirstOfHelper implements Helper<Object> {
public static final String NAME = "firstOf";
private final Object fallback;
public FirstOfHelper(Object fallback) {
this.fallback = fallback;
}
public Object getFallback() {
return fallback;
}
@Override
public CharSequence apply(Object context, Options options) throws IOException {
// handle null
if (context == null) {
return options.param(0, fallback).toString();
}
// handle optional
if (context instanceof Optional) {
final Optional<Object> contextOptional = (Optional<Object>) context;
return contextOptional.or(options.param(0, fallback)).toString();
}
// handle empty string
if (context instanceof String) {
final String contextString = (String) context;
return !Strings.isNullOrEmpty(contextString) ? contextString : options.param(0, fallback).toString();
}
// otherwise just return context
return context.toString();
}
}