<?php

/**
 * SeekQuarry/Yioop --
 * Open Source Pure PHP Search Engine, Crawler, and Indexer
 *
 * Copyright (C) 2009 - 2026  Chris Pollett chris@pollett.org
 *
 * LICENSE:
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 * @author Chris Pollett chris@pollett.org
 * @license https://www.gnu.org/licenses/ GPL3
 * @link https://www.seekquarry.com/
 * @copyright 2009 - 2026
 * @filesource
 */
namespace seekquarry\yioop\locale\tl\resources;

use seekquarry\yioop\models\LocaleModel;

/**
 * Tagalog (spoken in Philipines) specific tokenization code.
 * Typically, tokenizer.php either contains a stemmer for the language in
 * question or it specifies how many characters in a char gram
 *
 * @author Chris Pollett
 */
class Tokenizer
{
    /**
     * A list of frequently occurring terms for this locale which should
     * be excluded from certain kinds of queries. This is also used
     * for language detection
     * @var array
     */
    public static $stop_words = ['akin', 'aking', 'ako', 'alin', 'am', 'amin',
        'aming', 'ang', 'ano', 'anumang', 'apat', 'at', 'atin', 'ating', 'ay',
        'bababa', 'bago', 'bakit', 'bawat', 'bilang', 'dahil', 'dalawa',
        'dapat', 'din', 'dito', 'doon', 'gagawin', 'gayunman', 'ginagawa',
        'ginawa', 'ginawang', 'gumawa', 'gusto', 'habang', 'hanggang',
        'hindi', 'huwag', 'iba', 'ibaba', 'ibabaw', 'ibig', 'ikaw', 'ilagay',
        'ilalim', 'ilan', 'inyong', 'isa', 'isang', 'itaas', 'ito', 'iyo',
        'iyon', 'iyong', 'ka', 'kahit', 'kailangan', 'kailanman', 'kami',
        'kanila', 'kanilang', 'kanino', 'kanya', 'kanyang', 'kapag', 'kapwa',
        'karamihan', 'katiyakan', 'katulad', 'kaya', 'kaysa', 'ko', 'kong',
        'kulang', 'kumuha', 'kung', 'laban', 'lahat', 'lamang', 'likod',
        'lima', 'maaari', 'maaaring', 'maging', 'mahusay', 'makita', 'marami',
        'marapat', 'masyado', 'may', 'mayroon', 'mga', 'minsan', 'mismo',
        'mula', 'muli', 'na', 'nabanggit', 'naging', 'nagkaroon', 'nais',
        'nakita', 'namin', 'napaka', 'narito', 'nasaan', 'ng', 'ngayon',
        'ni', 'nila', 'nilang', 'nito', 'niya', 'niyang', 'noon', 'o', 'pa',
        'paano', 'pababa', 'paggawa', 'pagitan', 'pagkakaroon', 'pagkatapos',
        'palabas', 'pamamagitan', 'panahon', 'pangalawa', 'para', 'paraan',
        'pareho', 'pataas', 'pero', 'pumunta', 'pumupunta', 'sa', 'saan',
        'sabi', 'sabihin', 'sarili', 'sila', 'sino', 'siya', 'tatlo', 'tayo',
        'tulad', 'tungkol', 'una', 'walang'];
    /**
     * How many characters in a char gram for this locale
     * @var int
     */
    public static $char_gram_len = 5;
    /**
     * Removes the stop words from the page (used for Word Cloud generation
     * and language detection)
     *
     * @param mixed $data either a string or an array of string to remove
     *      stop words from
     * @return mixed $data with no stop words
     */
    public static function stopwordsRemover($data)
    {
        static $pattern = "";
        if (empty($pattern)) {
            $pattern = '/\b(' . implode('|', self::$stop_words) . ')\b/u';
        }
        $data = preg_replace($pattern, '', $data);
        return $data;
    }
}
