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

package com.hypixel.hytale.codec.codecs;

import com.hypixel.hytale.codec.schema.config.Schema;
import com.hypixel.hytale.codec.schema.config.StringSchema;
import com.hypixel.hytale.codec.schema.SchemaContext;
import java.io.IOException;
import com.hypixel.hytale.codec.util.RawJsonReader;
import org.bson.BsonInt32;
import com.hypixel.hytale.codec.ExtraInfo;
import javax.annotation.Nonnull;
import org.bson.BsonValue;
import java.util.regex.Pattern;
import com.hypixel.hytale.codec.Codec;

@Deprecated
public class StringIntegerCodec implements Codec<Integer>
{
    public static final StringIntegerCodec INSTANCE;
    private static final Pattern INTEGER_PATTERN;
    
    @Nonnull
    @Override
    public Integer decode(@Nonnull final BsonValue bsonValue, final ExtraInfo extraInfo) {
        if (bsonValue.isString()) {
            return Integer.parseInt(bsonValue.asString().getValue());
        }
        return bsonValue.asNumber().intValue();
    }
    
    @Nonnull
    @Override
    public BsonValue encode(final Integer t, final ExtraInfo extraInfo) {
        return new BsonInt32(t);
    }
    
    @Nonnull
    @Override
    public Integer decodeJson(@Nonnull final RawJsonReader reader, final ExtraInfo extraInfo) throws IOException {
        final int read = reader.peek();
        if (read == -1) {
            throw new IOException("Unexpected EOF!");
        }
        if (read == 34) {
            return Integer.parseInt(reader.readString());
        }
        return reader.readIntValue();
    }
    
    @Nonnull
    @Override
    public StringSchema toSchema(@Nonnull final SchemaContext context) {
        final StringSchema s = new StringSchema();
        s.setPattern(StringIntegerCodec.INTEGER_PATTERN);
        s.setMarkdownDescription("A string that contains any integer");
        return s;
    }
    
    static {
        INSTANCE = new StringIntegerCodec();
        INTEGER_PATTERN = Pattern.compile("^[0-9]+$");
    }
}
