// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.core.util.message;

import java.awt.Color;
import java.util.Iterator;
import java.util.Collection;
import javax.annotation.Nullable;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.Message;

public final class MessageFormat
{
    private static final Message ENABLED;
    private static final Message DISABLED;
    private static final int LIST_MAX_INLINE_VALUES = 4;
    
    @Nonnull
    public static Message enabled(final boolean b) {
        return b ? MessageFormat.ENABLED : MessageFormat.DISABLED;
    }
    
    @Nonnull
    public static Message list(@Nullable final Message header, @Nonnull final Collection<Message> values) {
        final Message msg = Message.empty();
        if (header != null) {
            msg.insert(Message.translation("server.formatting.list.header").param("header", header).param("count", values.size()));
            if (values.size() <= 4) {
                msg.insert(Message.translation("server.formatting.list.inlineHeaderSuffix"));
            }
        }
        if (values.isEmpty()) {
            msg.insert(Message.translation("server.formatting.list.empty"));
            return msg;
        }
        if (values.size() <= 4) {
            final Message separator = Message.translation("server.formatting.list.itemSeparator");
            final Message[] array = values.toArray(Message[]::new);
            for (int i = 0; i < array.length; ++i) {
                msg.insert(array[i]);
                if (i < array.length - 1) {
                    msg.insert(separator);
                }
            }
        }
        else {
            final Message delim = Message.raw("\n");
            for (final Message value : values) {
                msg.insert(delim);
                msg.insert(Message.translation("server.formatting.list.row").param("value", value));
            }
        }
        return msg;
    }
    
    static {
        ENABLED = Message.translation("server.general.enabled").color(Color.GREEN);
        DISABLED = Message.translation("server.general.disabled").color(Color.RED);
    }
}
