pagefind_stem 1.0.0

Snowball stemming algorithms repackaged for Rust, with languages behind feature flags.
Documentation
//! Generated from nepali.sbl by Snowball 3.0.0 - https://snowballstem.org/

#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(unused_mut)]
#![allow(unused_parens)]
#![allow(unused_variables)]
use snowball::SnowballEnv;
use snowball::Among;

#[derive(Clone)]
struct Context {
}

static A_0: &'static [Among<Context>; 17] = &[
    Among("\u{0915}\u{0940}", -1, 2, None),
    Among("\u{0932}\u{093E}\u{0907}", -1, 1, None),
    Among("\u{0932}\u{0947}", -1, 1, None),
    Among("\u{0932}\u{093E}\u{0908}", -1, 1, None),
    Among("\u{0915}\u{0948}", -1, 2, None),
    Among("\u{0938}\u{0901}\u{0917}\u{0948}", -1, 1, None),
    Among("\u{092E}\u{0948}", -1, 1, None),
    Among("\u{0915}\u{094B}", -1, 2, None),
    Among("\u{0938}\u{0901}\u{0917}", -1, 1, None),
    Among("\u{0938}\u{0902}\u{0917}", -1, 1, None),
    Among("\u{092E}\u{093E}\u{0930}\u{094D}\u{092B}\u{0924}", -1, 1, None),
    Among("\u{0930}\u{0924}", -1, 1, None),
    Among("\u{0915}\u{093E}", -1, 2, None),
    Among("\u{092E}\u{093E}", -1, 1, None),
    Among("\u{0926}\u{094D}\u{0935}\u{093E}\u{0930}\u{093E}", -1, 1, None),
    Among("\u{0915}\u{093F}", -1, 2, None),
    Among("\u{092A}\u{091B}\u{093F}", -1, 1, None),
];

static A_1: &'static [Among<Context>; 3] = &[
    Among("\u{0901}", -1, 1, None),
    Among("\u{0902}", -1, 1, None),
    Among("\u{0948}", -1, 2, None),
];

static A_2: &'static [Among<Context>; 91] = &[
    Among("\u{0947}\u{0915}\u{0940}", -1, 1, None),
    Among("\u{090F}\u{0915}\u{0940}", -1, 1, None),
    Among("\u{0907}\u{090F}\u{0915}\u{0940}", 1, 1, None),
    Among("\u{093F}\u{090F}\u{0915}\u{0940}", 1, 1, None),
    Among("\u{0926}\u{0947}\u{0916}\u{0940}", -1, 1, None),
    Among("\u{0925}\u{0940}", -1, 1, None),
    Among("\u{0926}\u{0940}", -1, 1, None),
    Among("\u{091B}\u{0941}", -1, 1, None),
    Among("\u{0947}\u{091B}\u{0941}", 7, 1, None),
    Among("\u{0928}\u{0947}\u{091B}\u{0941}", 8, 1, None),
    Among("\u{090F}\u{091B}\u{0941}", 7, 1, None),
    Among("\u{0928}\u{0941}", -1, 1, None),
    Among("\u{0939}\u{0930}\u{0941}", -1, 1, None),
    Among("\u{0939}\u{0930}\u{0942}", -1, 1, None),
    Among("\u{091B}\u{0947}", -1, 1, None),
    Among("\u{0925}\u{0947}", -1, 1, None),
    Among("\u{0928}\u{0947}", -1, 1, None),
    Among("\u{0947}\u{0915}\u{0948}", -1, 1, None),
    Among("\u{0928}\u{0947}\u{0915}\u{0948}", 17, 1, None),
    Among("\u{090F}\u{0915}\u{0948}", -1, 1, None),
    Among("\u{0926}\u{0948}", -1, 1, None),
    Among("\u{0907}\u{0926}\u{0948}", 20, 1, None),
    Among("\u{093F}\u{0926}\u{0948}", 20, 1, None),
    Among("\u{0947}\u{0915}\u{094B}", -1, 1, None),
    Among("\u{0928}\u{0947}\u{0915}\u{094B}", 23, 1, None),
    Among("\u{090F}\u{0915}\u{094B}", -1, 1, None),
    Among("\u{0907}\u{090F}\u{0915}\u{094B}", 25, 1, None),
    Among("\u{093F}\u{090F}\u{0915}\u{094B}", 25, 1, None),
    Among("\u{0926}\u{094B}", -1, 1, None),
    Among("\u{0907}\u{0926}\u{094B}", 28, 1, None),
    Among("\u{093F}\u{0926}\u{094B}", 28, 1, None),
    Among("\u{092F}\u{094B}", -1, 1, None),
    Among("\u{0907}\u{092F}\u{094B}", 31, 1, None),
    Among("\u{0925}\u{094D}\u{092F}\u{094B}", 31, 1, None),
    Among("\u{092D}\u{092F}\u{094B}", 31, 1, None),
    Among("\u{093F}\u{092F}\u{094B}", 31, 1, None),
    Among("\u{0925}\u{093F}\u{092F}\u{094B}", 35, 1, None),
    Among("\u{0926}\u{093F}\u{092F}\u{094B}", 35, 1, None),
    Among("\u{091B}\u{094C}", -1, 1, None),
    Among("\u{0907}\u{091B}\u{094C}", 38, 1, None),
    Among("\u{0947}\u{091B}\u{094C}", 38, 1, None),
    Among("\u{0928}\u{0947}\u{091B}\u{094C}", 40, 1, None),
    Among("\u{090F}\u{091B}\u{094C}", 38, 1, None),
    Among("\u{093F}\u{091B}\u{094C}", 38, 1, None),
    Among("\u{092F}\u{094C}", -1, 1, None),
    Among("\u{091B}\u{094D}\u{092F}\u{094C}", 44, 1, None),
    Among("\u{0925}\u{094D}\u{092F}\u{094C}", 44, 1, None),
    Among("\u{0925}\u{093F}\u{092F}\u{094C}", 44, 1, None),
    Among("\u{091B}\u{0928}\u{094D}", -1, 1, None),
    Among("\u{0907}\u{091B}\u{0928}\u{094D}", 48, 1, None),
    Among("\u{0947}\u{091B}\u{0928}\u{094D}", 48, 1, None),
    Among("\u{0928}\u{0947}\u{091B}\u{0928}\u{094D}", 50, 1, None),
    Among("\u{090F}\u{091B}\u{0928}\u{094D}", 48, 1, None),
    Among("\u{093F}\u{091B}\u{0928}\u{094D}", 48, 1, None),
    Among("\u{0932}\u{093E}\u{0928}\u{094D}", -1, 1, None),
    Among("\u{091B}\u{093F}\u{0928}\u{094D}", -1, 1, None),
    Among("\u{0925}\u{093F}\u{0928}\u{094D}", -1, 1, None),
    Among("\u{092A}\u{0930}\u{094D}", -1, 1, None),
    Among("\u{0907}\u{0938}\u{094D}", -1, 1, None),
    Among("\u{0925}\u{093F}\u{0907}\u{0938}\u{094D}", 58, 1, None),
    Among("\u{091B}\u{0947}\u{0938}\u{094D}", -1, 1, None),
    Among("\u{0939}\u{094B}\u{0938}\u{094D}", -1, 1, None),
    Among("\u{091B}\u{0938}\u{094D}", -1, 1, None),
    Among("\u{0907}\u{091B}\u{0938}\u{094D}", 62, 1, None),
    Among("\u{0947}\u{091B}\u{0938}\u{094D}", 62, 1, None),
    Among("\u{0928}\u{0947}\u{091B}\u{0938}\u{094D}", 64, 1, None),
    Among("\u{090F}\u{091B}\u{0938}\u{094D}", 62, 1, None),
    Among("\u{093F}\u{091B}\u{0938}\u{094D}", 62, 1, None),
    Among("\u{093F}\u{0938}\u{094D}", -1, 1, None),
    Among("\u{0925}\u{093F}\u{0938}\u{094D}", 68, 1, None),
    Among("\u{0925}\u{093F}\u{090F}", -1, 1, None),
    Among("\u{091B}", -1, 1, None),
    Among("\u{0907}\u{091B}", 71, 1, None),
    Among("\u{0947}\u{091B}", 71, 1, None),
    Among("\u{0928}\u{0947}\u{091B}", 73, 1, None),
    Among("\u{0939}\u{0941}\u{0928}\u{0947}\u{091B}", 74, 1, None),
    Among("\u{0939}\u{0941}\u{0928}\u{094D}\u{091B}", 71, 1, None),
    Among("\u{0907}\u{0928}\u{094D}\u{091B}", 71, 1, None),
    Among("\u{093F}\u{0928}\u{094D}\u{091B}", 71, 1, None),
    Among("\u{090F}\u{091B}", 71, 1, None),
    Among("\u{093F}\u{091B}", 71, 1, None),
    Among("\u{0947}\u{0915}\u{093E}", -1, 1, None),
    Among("\u{0928}\u{0947}\u{0915}\u{093E}", 81, 1, None),
    Among("\u{090F}\u{0915}\u{093E}", -1, 1, None),
    Among("\u{0907}\u{090F}\u{0915}\u{093E}", 83, 1, None),
    Among("\u{093F}\u{090F}\u{0915}\u{093E}", 83, 1, None),
    Among("\u{0926}\u{093E}", -1, 1, None),
    Among("\u{0907}\u{0926}\u{093E}", 86, 1, None),
    Among("\u{093F}\u{0926}\u{093E}", 86, 1, None),
    Among("\u{0926}\u{0947}\u{0916}\u{093F}", -1, 1, None),
    Among("\u{092E}\u{093E}\u{0925}\u{093F}", -1, 1, None),
];

fn r_remove_category_1(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    among_var = env.find_among_b(A_0, context);
    if among_var == 0 {
        return false;
    }
    env.bra = env.cursor;
    match among_var {
        1 => {
            env.slice_del();
        }
        2 => {
            'lab0: loop {
                let v_1 = env.limit - env.cursor;
                'lab1: loop {
                    if !env.eq_s_b(&"\u{090F}") {
                        break 'lab1;
                    }
                    break 'lab0;
                }
                env.cursor = env.limit - v_1;
                'lab2: loop {
                    if !env.eq_s_b(&"\u{0947}") {
                        break 'lab2;
                    }
                    break 'lab0;
                }
                env.cursor = env.limit - v_1;
                env.slice_del();
                break 'lab0;
            }
        }
        _ => ()
    }
    return true
}

fn r_remove_category_2(env: &mut SnowballEnv, context: &mut Context) -> bool {
    let mut among_var;
    env.ket = env.cursor;
    if (env.cursor - 2 <= env.limit_backward || env.current.as_bytes()[(env.cursor - 1) as usize] as u8 >> 5 != 4 as u8 || ((262 as i32 >> (env.current.as_bytes()[(env.cursor - 1) as usize] as u8 & 0x1f)) & 1) == 0) {
        return false;
    }

    among_var = env.find_among_b(A_1, context);
    if among_var == 0 {
        return false;
    }
    env.bra = env.cursor;
    match among_var {
        1 => {
            'lab0: loop {
                let v_1 = env.limit - env.cursor;
                'lab1: loop {
                    if !env.eq_s_b(&"\u{092F}\u{094C}") {
                        break 'lab1;
                    }
                    break 'lab0;
                }
                env.cursor = env.limit - v_1;
                'lab2: loop {
                    if !env.eq_s_b(&"\u{091B}\u{094C}") {
                        break 'lab2;
                    }
                    break 'lab0;
                }
                env.cursor = env.limit - v_1;
                'lab3: loop {
                    if !env.eq_s_b(&"\u{0928}\u{094C}") {
                        break 'lab3;
                    }
                    break 'lab0;
                }
                env.cursor = env.limit - v_1;
                if !env.eq_s_b(&"\u{0925}\u{0947}") {
                    return false;
                }
                break 'lab0;
            }
            env.slice_del();
        }
        2 => {
            if !env.eq_s_b(&"\u{0924}\u{094D}\u{0930}") {
                return false;
            }
            env.slice_del();
        }
        _ => ()
    }
    return true
}

fn r_remove_category_3(env: &mut SnowballEnv, context: &mut Context) -> bool {
    env.ket = env.cursor;
    if env.find_among_b(A_2, context) == 0 {
        return false;
    }
    env.bra = env.cursor;
    env.slice_del();
    return true
}

pub fn stem(env: &mut SnowballEnv) -> bool {
    let mut context = &mut Context {
    };
    env.limit_backward = env.cursor;
    env.cursor = env.limit;
    let v_1 = env.limit - env.cursor;
    r_remove_category_1(env, context);
    env.cursor = env.limit - v_1;
    'replab0: loop{
        let v_2 = env.limit - env.cursor;
        'lab1: for _ in 0..1 {
            let v_3 = env.limit - env.cursor;
            r_remove_category_2(env, context);
            env.cursor = env.limit - v_3;
            if !r_remove_category_3(env, context) {
                break 'lab1;
            }
            continue 'replab0;
        }
        env.cursor = env.limit - v_2;
        break 'replab0;
    }
    env.cursor = env.limit_backward;
    return true
}