🎨 The marketplace supports searching https://github.com/siyuan-note/siyuan/issues/8173
This commit is contained in:
parent
f5f66d25df
commit
7f16d32123
1 changed files with 56 additions and 80 deletions
|
@ -51,23 +51,12 @@ func BazaarPlugins(frontend, keyword string) (plugins []*bazaar.Plugin) {
|
|||
return
|
||||
}
|
||||
|
||||
func filterPlugins(packages []*bazaar.Plugin, keyword string) (ret []*bazaar.Plugin) {
|
||||
func filterPlugins(plugins []*bazaar.Plugin, keyword string) (ret []*bazaar.Plugin) {
|
||||
ret = []*bazaar.Plugin{}
|
||||
keyword = strings.TrimSpace(keyword)
|
||||
if "" == keyword {
|
||||
return packages
|
||||
}
|
||||
|
||||
for _, pkg := range packages {
|
||||
if strings.Contains(pkg.DisplayName.Default, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.EnUS, keyword) ||
|
||||
strings.Contains(pkg.Description.Default, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.Description.EnUS, keyword) {
|
||||
ret = append(ret, pkg)
|
||||
keywords := getSearchKeywords(keyword)
|
||||
for _, plugin := range plugins {
|
||||
if matchPackage(keywords, plugin.Package) {
|
||||
ret = append(ret, plugin)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
@ -135,23 +124,12 @@ func BazaarWidgets(keyword string) (widgets []*bazaar.Widget) {
|
|||
return
|
||||
}
|
||||
|
||||
func filterWidgets(packages []*bazaar.Widget, keyword string) (ret []*bazaar.Widget) {
|
||||
func filterWidgets(widgets []*bazaar.Widget, keyword string) (ret []*bazaar.Widget) {
|
||||
ret = []*bazaar.Widget{}
|
||||
keyword = strings.TrimSpace(keyword)
|
||||
if "" == keyword {
|
||||
return packages
|
||||
}
|
||||
|
||||
for _, pkg := range packages {
|
||||
if strings.Contains(pkg.DisplayName.Default, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.EnUS, keyword) ||
|
||||
strings.Contains(pkg.Description.Default, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.Description.EnUS, keyword) {
|
||||
ret = append(ret, pkg)
|
||||
keywords := getSearchKeywords(keyword)
|
||||
for _, w := range widgets {
|
||||
if matchPackage(keywords, w.Package) {
|
||||
ret = append(ret, w)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
@ -199,23 +177,12 @@ func BazaarIcons(keyword string) (icons []*bazaar.Icon) {
|
|||
return
|
||||
}
|
||||
|
||||
func filterIcons(packages []*bazaar.Icon, keyword string) (ret []*bazaar.Icon) {
|
||||
func filterIcons(icons []*bazaar.Icon, keyword string) (ret []*bazaar.Icon) {
|
||||
ret = []*bazaar.Icon{}
|
||||
keyword = strings.TrimSpace(keyword)
|
||||
if "" == keyword {
|
||||
return packages
|
||||
}
|
||||
|
||||
for _, pkg := range packages {
|
||||
if strings.Contains(pkg.DisplayName.Default, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.EnUS, keyword) ||
|
||||
strings.Contains(pkg.Description.Default, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.Description.EnUS, keyword) {
|
||||
ret = append(ret, pkg)
|
||||
keywords := getSearchKeywords(keyword)
|
||||
for _, i := range icons {
|
||||
if matchPackage(keywords, i.Package) {
|
||||
ret = append(ret, i)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
@ -271,23 +238,12 @@ func BazaarThemes(keyword string) (ret []*bazaar.Theme) {
|
|||
return
|
||||
}
|
||||
|
||||
func filterThemes(packages []*bazaar.Theme, keyword string) (ret []*bazaar.Theme) {
|
||||
func filterThemes(themes []*bazaar.Theme, keyword string) (ret []*bazaar.Theme) {
|
||||
ret = []*bazaar.Theme{}
|
||||
keyword = strings.TrimSpace(keyword)
|
||||
if "" == keyword {
|
||||
return packages
|
||||
}
|
||||
|
||||
for _, pkg := range packages {
|
||||
if strings.Contains(pkg.DisplayName.Default, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.EnUS, keyword) ||
|
||||
strings.Contains(pkg.Description.Default, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.Description.EnUS, keyword) {
|
||||
ret = append(ret, pkg)
|
||||
keywords := getSearchKeywords(keyword)
|
||||
for _, t := range themes {
|
||||
if matchPackage(keywords, t.Package) {
|
||||
ret = append(ret, t)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
@ -355,23 +311,12 @@ func BazaarTemplates(keyword string) (templates []*bazaar.Template) {
|
|||
return
|
||||
}
|
||||
|
||||
func filterTemplates(packages []*bazaar.Template, keyword string) (ret []*bazaar.Template) {
|
||||
func filterTemplates(templates []*bazaar.Template, keyword string) (ret []*bazaar.Template) {
|
||||
ret = []*bazaar.Template{}
|
||||
keyword = strings.TrimSpace(keyword)
|
||||
if "" == keyword {
|
||||
return packages
|
||||
}
|
||||
|
||||
for _, pkg := range packages {
|
||||
if strings.Contains(pkg.DisplayName.Default, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.DisplayName.EnUS, keyword) ||
|
||||
strings.Contains(pkg.Description.Default, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCN, keyword) ||
|
||||
strings.Contains(pkg.Description.ZhCHT, keyword) ||
|
||||
strings.Contains(pkg.Description.EnUS, keyword) {
|
||||
ret = append(ret, pkg)
|
||||
keywords := getSearchKeywords(keyword)
|
||||
for _, t := range templates {
|
||||
if matchPackage(keywords, t.Package) {
|
||||
ret = append(ret, t)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
@ -399,3 +344,34 @@ func UninstallBazaarTemplate(templateName string) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func matchPackage(keywords []string, pkg *bazaar.Package) bool {
|
||||
for _, keyword := range keywords {
|
||||
if strings.Contains(strings.ToLower(pkg.DisplayName.Default), keyword) ||
|
||||
strings.Contains(strings.ToLower(pkg.DisplayName.ZhCN), keyword) ||
|
||||
strings.Contains(strings.ToLower(pkg.DisplayName.ZhCHT), keyword) ||
|
||||
strings.Contains(strings.ToLower(pkg.DisplayName.EnUS), keyword) ||
|
||||
strings.Contains(strings.ToLower(pkg.Description.Default), keyword) ||
|
||||
strings.Contains(strings.ToLower(pkg.Description.ZhCN), keyword) ||
|
||||
strings.Contains(strings.ToLower(pkg.Description.ZhCHT), keyword) ||
|
||||
strings.Contains(strings.ToLower(pkg.Description.EnUS), keyword) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func getSearchKeywords(query string) (ret []string) {
|
||||
query = strings.TrimSpace(query)
|
||||
if "" == query {
|
||||
return
|
||||
}
|
||||
|
||||
keywords := strings.Split(query, " ")
|
||||
for _, k := range keywords {
|
||||
if "" != k {
|
||||
ret = append(ret, strings.ToLower(k))
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue