parent
							
								
									cbda1e7f6c
								
							
						
					
					
						commit
						2aae76a8b4
					
				@ -0,0 +1,81 @@ | 
				
			||||
package io.legado.app.help | 
				
			||||
 | 
				
			||||
import com.hankcs.hanlp.HanLP | 
				
			||||
import io.legado.app.App | 
				
			||||
import io.legado.app.data.entities.Book | 
				
			||||
import io.legado.app.data.entities.ReplaceRule | 
				
			||||
import kotlinx.coroutines.Dispatchers | 
				
			||||
import kotlinx.coroutines.withContext | 
				
			||||
import org.jetbrains.anko.toast | 
				
			||||
 | 
				
			||||
class ContentProcessor(private val bookName: String, private val bookOrigin: String) { | 
				
			||||
 | 
				
			||||
    private var replaceRules = arrayListOf<ReplaceRule>() | 
				
			||||
 | 
				
			||||
    init { | 
				
			||||
        upReplaceRules() | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Synchronized | 
				
			||||
    fun upReplaceRules() { | 
				
			||||
        replaceRules.clear() | 
				
			||||
        replaceRules.addAll(App.db.replaceRuleDao().findEnabledByScope(bookName, bookOrigin)) | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    suspend fun getContent( | 
				
			||||
        book: Book, | 
				
			||||
        title: String, //已经经过简繁转换 | 
				
			||||
        content: String, | 
				
			||||
        isRead: Boolean = true | 
				
			||||
    ): List<String> { | 
				
			||||
        var content1 = content | 
				
			||||
        if (book.getUseReplaceRule()) { | 
				
			||||
            replaceRules.forEach { item -> | 
				
			||||
                item.pattern.let { | 
				
			||||
                    if (it.isNotEmpty()) { | 
				
			||||
                        try { | 
				
			||||
                            content1 = if (item.isRegex) { | 
				
			||||
                                content1.replace(it.toRegex(), item.replacement) | 
				
			||||
                            } else { | 
				
			||||
                                content1.replace(it, item.replacement) | 
				
			||||
                            } | 
				
			||||
                        } catch (e: Exception) { | 
				
			||||
                            withContext(Dispatchers.Main) { | 
				
			||||
                                App.INSTANCE.toast("${item.name}替换出错") | 
				
			||||
                            } | 
				
			||||
                        } | 
				
			||||
                    } | 
				
			||||
                } | 
				
			||||
            } | 
				
			||||
        } | 
				
			||||
        if (isRead) { | 
				
			||||
            if (book.getReSegment()) { | 
				
			||||
                content1 = ContentHelp.reSegment(content1, title) | 
				
			||||
            } | 
				
			||||
            try { | 
				
			||||
                when (AppConfig.chineseConverterType) { | 
				
			||||
                    1 -> content1 = HanLP.convertToSimplifiedChinese(content1) | 
				
			||||
                    2 -> content1 = HanLP.convertToTraditionalChinese(content1) | 
				
			||||
                } | 
				
			||||
            } catch (e: Exception) { | 
				
			||||
                withContext(Dispatchers.Main) { | 
				
			||||
                    App.INSTANCE.toast("简繁转换出错") | 
				
			||||
                } | 
				
			||||
            } | 
				
			||||
        } | 
				
			||||
        val contents = arrayListOf<String>() | 
				
			||||
        content1.split("\n").forEach { | 
				
			||||
            val str = it.replace("^[\\n\\s\\r]+".toRegex(), "") | 
				
			||||
            if (contents.isEmpty()) { | 
				
			||||
                contents.add(title) | 
				
			||||
                if (str != title && str.isNotEmpty()) { | 
				
			||||
                    contents.add("${ReadBookConfig.paragraphIndent}$str") | 
				
			||||
                } | 
				
			||||
            } else if (str.isNotEmpty()) { | 
				
			||||
                contents.add("${ReadBookConfig.paragraphIndent}$str") | 
				
			||||
            } | 
				
			||||
        } | 
				
			||||
        return contents | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue