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

package org.jline.reader.impl;

import org.jline.utils.Levenshtein;
import org.jline.reader.LineReader;

public class ReaderUtils
{
    private ReaderUtils() {
    }
    
    public static boolean isSet(final LineReader reader, final LineReader.Option option) {
        return reader != null && reader.isSet(option);
    }
    
    public static String getString(final LineReader reader, final String name, final String def) {
        final Object v = (reader != null) ? reader.getVariable(name) : null;
        return (v != null) ? v.toString() : def;
    }
    
    public static boolean getBoolean(final LineReader reader, final String name, final boolean def) {
        final Object v = (reader != null) ? reader.getVariable(name) : null;
        if (v instanceof Boolean) {
            return (boolean)v;
        }
        if (v != null) {
            final String s = v.toString();
            return s.isEmpty() || s.equalsIgnoreCase("on") || s.equalsIgnoreCase("1") || s.equalsIgnoreCase("true");
        }
        return def;
    }
    
    public static int getInt(final LineReader reader, final String name, final int def) {
        int nb = def;
        final Object v = (reader != null) ? reader.getVariable(name) : null;
        if (v instanceof Number) {
            return ((Number)v).intValue();
        }
        if (v != null) {
            nb = 0;
            try {
                nb = Integer.parseInt(v.toString());
            }
            catch (final NumberFormatException ex) {}
        }
        return nb;
    }
    
    public static long getLong(final LineReader reader, final String name, final long def) {
        long nb = def;
        final Object v = (reader != null) ? reader.getVariable(name) : null;
        if (v instanceof Number) {
            return ((Number)v).longValue();
        }
        if (v != null) {
            nb = 0L;
            try {
                nb = Long.parseLong(v.toString());
            }
            catch (final NumberFormatException ex) {}
        }
        return nb;
    }
    
    public static int distance(final String word, final String cand) {
        if (word.length() < cand.length()) {
            final int d1 = Levenshtein.distance(word, cand.substring(0, Math.min(cand.length(), word.length())));
            final int d2 = Levenshtein.distance(word, cand);
            return Math.min(d1, d2);
        }
        return Levenshtein.distance(word, cand);
    }
}
