package org.xyzh.common.utils.validation.method;

import java.util.regex.Pattern;

/**
 * @description 中文字符校验方法
 * @filename ChineseValidateMethod.java
 * @author yslg
 * @copyright yslg
 * @since 2025-11-02
 */
public class ChineseValidateMethod implements ValidateMethod {
    
    // 中文字符正则（包括中文标点符号）
    private static final Pattern CHINESE_PATTERN = Pattern.compile("^[\u4e00-\u9fa5]+$");
    
    private final Boolean allowPunctuation; // 是否允许中文标点符号
    
    public ChineseValidateMethod() {
        this.allowPunctuation = false;
    }
    
    public ChineseValidateMethod(Boolean allowPunctuation) {
        this.allowPunctuation = allowPunctuation;
    }
    
    @Override
    public Boolean validate(Object value) {
        if (value == null || !(value instanceof String)) {
            return false;
        }
        
        String str = (String) value;
        
        if (allowPunctuation) {
            // 允许中文字符和中文标点符号
            return Pattern.matches("^[\u4e00-\u9fa5\\u3000-\\u303f]+$", str);
        } else {
            // 仅允许纯中文字符
            return CHINESE_PATTERN.matcher(str).matches();
        }
    }
    
    @Override
    public String getErrorMessage() {
        return allowPunctuation ? "请输入中文字符" : "请输入纯中文字符（不含标点符号）";
    }
    
    @Override
    public String getName() {
        return "中文字符校验";
    }
}

