diff --git a/app/src/search/assets.ts b/app/src/search/assets.ts
index 523df96f1..ba0fa56e9 100644
--- a/app/src/search/assets.ts
+++ b/app/src/search/assets.ts
@@ -357,47 +357,35 @@ export const assetMethodMenu = (target: HTMLElement, cb: () => void) => {
window.siyuan.menus.menu.popup({x: rect.right, y: rect.bottom}, true);
};
+let filterTypes: string[] = [
+ ".txt", ".md", ".markdown", ".docx", ".xlsx", ".pptx", ".json", ".log", ".sql", ".html", ".xml", ".java", ".h", ".c",
+ ".cpp", ".go", ".rs", ".swift", ".kt", ".py", ".php", ".js", ".css", ".ts", ".sh", ".bat", ".cmd", ".ini", ".yaml",
+ ".rst", ".adoc", ".textile", ".opml", ".org", ".wiki",
+]
+
+const filterTypesHTML = (types: string[]) => {
+ filterTypes = filterTypes.sort((a: string, b: string) => {
+ return a.localeCompare(b);
+ });
+
+ let html = "";
+ types.forEach((type: string) => {
+ html += ``;
+ });
+ return html;
+}
+
export const assetFilterMenu = (assetsElement: Element) => {
const localData = window.siyuan.storage[Constants.LOCAL_SEARCHASSET].types;
const filterDialog = new Dialog({
title: window.siyuan.languages.type,
- content: `
+ content: `` + filterTypesHTML(filterTypes) + `
diff --git a/kernel/model/asset_content.go b/kernel/model/asset_content.go
index a31163f27..ff45540c7 100644
--- a/kernel/model/asset_content.go
+++ b/kernel/model/asset_content.go
@@ -289,7 +289,7 @@ func IndexAssetContent(absPath string) {
assetsDir := util.GetDataAssetsAbsPath()
- ext := strings.ToLower(filepath.Ext(absPath))
+ ext := filepath.Ext(absPath)
parser := assetContentSearcher.GetParser(ext)
if nil == parser {
return
@@ -360,7 +360,7 @@ func (searcher *AssetsSearcher) GetParser(ext string) AssetParser {
searcher.lock.Lock()
defer searcher.lock.Unlock()
- return searcher.parsers[ext]
+ return searcher.parsers[strings.ToLower(ext)]
}
func (searcher *AssetsSearcher) FullIndex() {
@@ -382,7 +382,7 @@ func (searcher *AssetsSearcher) FullIndex() {
return nil
}
- ext := strings.ToLower(filepath.Ext(absPath))
+ ext := filepath.Ext(absPath)
parser := searcher.GetParser(ext)
if nil == parser {
return nil
@@ -433,9 +433,11 @@ func NewAssetsSearcher() *AssetsSearcher {
".c": txtAssetParser,
".cpp": txtAssetParser,
".go": txtAssetParser,
+ ".rs": txtAssetParser,
".swift": txtAssetParser,
".kt": txtAssetParser,
".py": txtAssetParser,
+ ".php": txtAssetParser,
".js": txtAssetParser,
".css": txtAssetParser,
".ts": txtAssetParser,
@@ -460,6 +462,10 @@ func NewAssetsSearcher() *AssetsSearcher {
}
}
+const (
+ TxtAssetContentMaxSize = 1024 * 1024 * 4
+)
+
type AssetParseResult struct {
Path string
Size int64
@@ -475,7 +481,14 @@ type TxtAssetParser struct {
}
func (parser *TxtAssetParser) Parse(absPath string) (ret *AssetParseResult) {
- if !strings.HasSuffix(strings.ToLower(absPath), ".txt") {
+ info, err := os.Stat(absPath)
+ if nil != err {
+ logging.LogErrorf("stat file [%s] failed: %s", absPath, err)
+ return
+ }
+
+ if TxtAssetContentMaxSize < info.Size() {
+ logging.LogWarnf("file [%s] is too large [%s]", absPath, humanize.Bytes(uint64(info.Size())))
return
}