import {gt, nth, size, trim} from "lodash";
import {MEMBER_INDEXES_PATTERN, MEMBER_NAMES_PATTERN} from "../constants/patterns";

export default  class MembersParser {
    public static getUsernames(text?: string) {
        const secondUser = MembersParser.matchSecondUser(MEMBER_NAMES_PATTERN, text);

        return secondUser
            ?.split(',')
            .map(trim)
            .filter(Boolean) || [];
    }

    public static getUserIndexes(text: string) {
        const secondUser = MembersParser.matchSecondUser(MEMBER_INDEXES_PATTERN, text);
        return secondUser
            ?.split(',')
            .map(trim)
            .filter(Boolean)
            .map(Number) || [];
    }

   private static matchSecondUser(pattern: RegExp, text?: string): string | undefined {
        const users = text?.match(pattern);
        if (gt(size(users), 1)) {
            return nth(users, 1)
        }
        return undefined
    }
}