import { appendContextPath, createFrame, isArray } from '../utils';

export default function(instance) {
  instance.registerHelper('blockHelperMissing', function(context, options) {
    let inverse = options.inverse,
      fn = options.fn;

    if (context === true) {
      return fn(this);
    } else if (context === false || context == null) {
      return inverse(this);
    } else if (isArray(context)) {
      if (context.length > 0) {
        if (options.ids) {
          options.ids = [options.name];
        }

        return instance.helpers.each(context, options);
      } else {
        return inverse(this);
      }
    } else {
      if (options.data && options.ids) {
        let data = createFrame(options.data);
        data.contextPath = appendContextPath(
          options.data.contextPath,
          options.name
        );
        options = { data: data };
      }

      return fn(context, options);
    }
  });
}
