package com.tale.ext; import com.blade.jdbc.model.Paginator; import com.blade.kit.*; import com.tale.controller.BaseController; import com.tale.init.TaleConst; import com.tale.service.SiteService; import com.tale.utils.TaleUtils; import com.vdurmont.emoji.EmojiParser; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 公共函数 * <p> * Created by biezhi on 2017/2/21. */ public final class Commons { private static SiteService siteService; private static final List EMPTY = new ArrayList(0); private static final Random rand = new Random(); private static final String TEMPLATES = "/templates/"; public static void setSiteService(SiteService ss) { siteService = ss; Theme.setSiteService(ss); } /** * 判断分页中是否有数据 * * @param paginator * @return */ public static boolean is_empty(Paginator paginator) { return null == paginator || CollectionKit.isEmpty(paginator.getList()); } /** * 返回网站首页链接,如:http://tale.biezhi.me * * @return */ public static String site_url() { return site_url(""); } /** * 返回当前主题名称 * * @return */ public static String site_theme() { return site_option("site_theme", "default"); } /** * 返回网站链接下的全址 * * @param sub 后面追加的地址 * @return */ public static String site_url(String sub) { return site_option("site_url") + sub; } /** * 网站标题 * * @return */ public static String site_title() { return site_option("site_title"); } /** * 网站配置项 * * @param key * @return */ public static String site_option(String key) { return site_option(key, ""); } /** * 网站配置项 * * @param key * @param defalutValue 默认值 * @return */ public static String site_option(String key, String defalutValue) { if (StringKit.isBlank(key)) { return ""; } return TaleConst.OPTIONS.get(key, defalutValue); } /** * 返回站点设置的描述信息 * @return */ public static String site_description(){ return site_option("site_description"); } /** * 截取字符串 * * @param str * @param len * @return */ public static String substr(String str, int len) { if (str.length() > len) { return str.substring(0, len); } return str; } /** * 返回主题URL * * @return */ public static String theme_url() { return Commons.site_url(TEMPLATES + BaseController.THEME); } /** * 返回主题下的文件路径 * * @param sub * @return */ public static String theme_url(String sub) { return Commons.site_url(TEMPLATES + BaseController.THEME + sub); } /** * 返回gravatar头像地址 * * @param email * @return */ public static String gravatar(String email) { String avatarUrl = "https://secure.gravatar.com/avatar"; if (StringKit.isBlank(email)) { return avatarUrl; } String hash = Tools.md5(email.trim().toLowerCase()); return avatarUrl + "/" + hash; } /** * 格式化unix时间戳为日期 * * @param unixTime * @return */ public static String fmtdate(Integer unixTime) { return fmtdate(unixTime, "yyyy-MM-dd"); } /** * 格式化日期 * @param date * @param fmt * @return */ public static String fmtdate(Date date, String fmt) { return DateKit.dateFormat(date, fmt); } /** * 格式化unix时间戳为日期 * * @param unixTime * @param patten * @return */ public static String fmtdate(Integer unixTime, String patten) { if (null != unixTime && StringKit.isNotBlank(patten)) { return DateKit.formatDateByUnixTime(unixTime, patten); } return ""; } /** * 获取随机数 * @param max * @param str * @return */ public static String random(int max, String str){ return UUID.random(1, max) + str; } /** * An :grinning:awesome :smiley:string 😄with a few :wink:emojis! * * 这种格式的字符转换为emoji表情 * * @param value * @return */ public static String emoji(String value){ return EmojiParser.parseToUnicode(value); } /** * 获取文章第一张图片 * * @return */ public static String show_thumb(String content) { content = TaleUtils.mdToHtml(content); if (content.contains("<img")) { String img = ""; String regEx_img = "<img.*src\\s*=\\s*(.*?)[^>]*?>"; Pattern p_image = Pattern.compile(regEx_img, Pattern.CASE_INSENSITIVE); Matcher m_image = p_image.matcher(content); if (m_image.find()) { img = img + "," + m_image.group(); // //匹配src Matcher m = Pattern.compile("src\\s*=\\s*\'?\"?(.*?)(\'|\"|>|\\s+)").matcher(img); if (m.find()) { return m.group(1); } } } return ""; } }