1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 17:44:05 +08:00
This commit is contained in:
shaoying 2021-07-26 07:36:09 +08:00
parent 028da6be6b
commit 08f8ba8730
14 changed files with 67 additions and 75 deletions

View File

@ -84,8 +84,7 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
FIELD: {Name: FIELD, Help: "插件", Value: kit.Data( FIELD: {Name: FIELD, Help: "插件", Value: kit.Data(
kit.MDB_TEMPLATE, `<fieldset class="story {{.Option "name"}}" kit.MDB_TEMPLATE, `<fieldset {{.OptionTemplate}}" data-meta='{{.Optionv "meta"|Format}}'>
data-type="{{.Option "type"}}" data-name="{{.Option "name"}}" data-text="{{.Option "text"}}" data-meta='{{.Optionv "meta"|Format}}'>
<legend>{{.Option "name"}}</legend> <legend>{{.Option "name"}}</legend>
<form class="option"></form> <form class="option"></form>
<div class="action"></div> <div class="action"></div>

View File

@ -42,10 +42,7 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
IMAGE: {Name: IMAGE, Help: "图片", Value: kit.Data( IMAGE: {Name: IMAGE, Help: "图片", Value: kit.Data(
kit.MDB_TEMPLATE, `<img class="story" kit.MDB_TEMPLATE, `<img {{.OptionTemplate}} title="{{.Option "text"}}" src="{{.Option "text"}}">`,
{{range $k, $v := .Optionv "extra"}}data-{{$k}}='{{$v}}'{{end}}
data-type="{{.Option "type"}}" data-name="{{.Option "name"}}" data-text="{{.Option "text"}}"
title="{{.Option "text"}}" src="{{.Option "text"}}">`,
)}, )},
}, },
}) })

View File

@ -24,8 +24,7 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
LOCAL: {Name: LOCAL, Help: "文件", Value: kit.Data( LOCAL: {Name: LOCAL, Help: "文件", Value: kit.Data(
kit.MDB_TEMPLATE, `<code class="story" {{.OptionTemplate}} kit.MDB_TEMPLATE, `<code {{.OptionTemplate}}>{{range $index, $value := .Optionv "input"}}{{$value}}{{end}}</code>`,
>{{range $index, $value := .Optionv "input"}}{{$value}}{{end}}</code>`,
)}, )},
}, },
}) })

View File

@ -25,10 +25,7 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
ORDER: {Name: ORDER, Help: "列表", Value: kit.Data( ORDER: {Name: ORDER, Help: "列表", Value: kit.Data(
kit.MDB_TEMPLATE, `<ul class="story" kit.MDB_TEMPLATE, `<ul {{.OptionTemplate}}>{{range $index, $value := .Optionv "list"}}<li>{{$value}}</li>{{end}}</ul>`,
{{range $k, $v := .Optionv "extra"}}data-{{$k}}='{{$v}}'{{end}}
data-type="{{.Option "type"}}" data-name="{{.Option "name"}}" data-text="{{.Option "text"}}">
{{range $index, $value := .Optionv "list"}}<li>{{$value}}</li>{{end}}</ul>`,
)}, )},
}, },
}) })

View File

@ -35,10 +35,7 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
REFER: {Name: REFER, Help: "参考", Value: kit.Data( REFER: {Name: REFER, Help: "参考", Value: kit.Data(
kit.MDB_TEMPLATE, `<ul class="story" kit.MDB_TEMPLATE, `<ul {{.OptionTemplate}}>{{range $index, $value := .Optionv "list"}}<li>{{index $value 0}}: <a href="{{index $value 1}}" target="_blank">{{index $value 1}}</a></li>{{end}}</ul>`,
{{range $k, $v := .Optionv "extra"}}data-{{$k}}='{{$v}}'{{end}}
data-type="{{.Option "type"}}" data-name="{{.Option "name"}}" data-text="{{.Option "text"}}">
{{range $index, $value := .Optionv "list"}}<li>{{index $value 0}}: <a href="{{index $value 1}}" target="_blank">{{index $value 1}}</a></li>{{end}}</ul>`,
)}, )},
}, },
}) })

View File

@ -24,10 +24,7 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
SHELL: {Name: SHELL, Help: "命令", Value: kit.Data( SHELL: {Name: SHELL, Help: "命令", Value: kit.Data(
kit.MDB_TEMPLATE, `<code class="story" kit.MDB_TEMPLATE, `<code {{.OptionTemplate}}>$ {{.Option "input"}} # {{.Option "name"}}
{{range $k, $v := .Optionv "extra"}}data-{{$k}}='{{$v}}'{{end}}
data-type="{{.Option "type"}}" data-name="{{.Option "name"}}" data-text="{{.Option "input"}}"
>$ {{.Option "input"}} # {{.Option "name"}}
{{.Option "output"}}</code>`, {{.Option "output"}}</code>`,
)}, )},
}, },

View File

@ -51,9 +51,7 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
TABLE: {Name: TABLE, Help: "表格", Value: kit.Data( TABLE: {Name: TABLE, Help: "表格", Value: kit.Data(
kit.MDB_TEMPLATE, `<table class="story" kit.MDB_TEMPLATE, `<table {{.OptionTemplate}}>
{{range $k, $v := .Optionv "extra"}}data-{{$k}}='{{$v}}'{{end}}
data-type="{{.Option "type"}}" data-name="{{.Option "name"}}" data-text="{{.Option "text"}}">
<tr>{{range $i, $v := .Optionv "head"}}<th>{{$v}}</th>{{end}}</tr> <tr>{{range $i, $v := .Optionv "head"}}<th>{{$v}}</th>{{end}}</tr>
{{range $index, $value := .Optionv "list"}} {{range $index, $value := .Optionv "list"}}
<tr>{{range $i, $v := $value}}<td>{{$v}}</td>{{end}}</tr> <tr>{{range $i, $v := $value}}<td>{{$v}}</td>{{end}}</tr>

View File

@ -1 +0,0 @@
package wiki

View File

@ -1,7 +1,6 @@
package wiki package wiki
import ( import (
"fmt"
"strings" "strings"
ice "github.com/shylinux/icebergs" ice "github.com/shylinux/icebergs"
@ -9,40 +8,39 @@ import (
) )
func _title_show(m *ice.Message, kind, text string, arg ...string) { func _title_show(m *ice.Message, kind, text string, arg ...string) {
title, _ := m.Optionv(TITLE).(map[string]int) switch title, _ := m.Optionv(TITLE).(map[string]int); kind {
switch kind {
case PREMENU: // 前置目录 case PREMENU: // 前置目录
m.RenderTemplate(premenu) _option(m, kind, "", strings.TrimSpace(text), arg...)
m.RenderTemplate(m.Conf(TITLE, kit.Keym(kind)))
return return
case ENDMENU: // 后置目录 case ENDMENU: // 后置目录
m.RenderTemplate(endmenu) _option(m, kind, "", strings.TrimSpace(text), arg...)
m.RenderTemplate(m.Conf(TITLE, kit.Keym(kind)))
return return
case SECTION: // 分节标题 case SECTION: // 分节标题
title[SECTION]++ title[SECTION]++
m.Option("level", "h3") m.Option(kit.MDB_LEVEL, "h3")
m.Option("prefix", fmt.Sprintf("%d.%d ", title[CHAPTER], title[SECTION])) m.Option(kit.MDB_PREFIX, kit.Format("%d.%d ", title[CHAPTER], title[SECTION]))
case CHAPTER: // 章节标题 case CHAPTER: // 章节标题
title[CHAPTER]++ title[CHAPTER]++
title[SECTION] = 0 title[SECTION] = 0
m.Option("level", "h2") m.Option(kit.MDB_LEVEL, "h2")
m.Option("prefix", fmt.Sprintf("%d ", title[CHAPTER])) m.Option(kit.MDB_PREFIX, kit.Format("%d ", title[CHAPTER]))
default: // 文章标题 default: // 文章标题
m.Option("level", "h1") m.Option(kit.MDB_LEVEL, "h1")
m.Option("prefix", "") m.Option(kit.MDB_PREFIX, "")
} }
// 添加目录
menu, _ := m.Optionv("menu").(map[string]interface{})
menu["list"] = append(menu["list"].([]interface{}), map[string]interface{}{
"level": m.Option("level"), "prefix": m.Option("prefix"), "content": m.Option("content", text),
})
// 渲染引擎 // 渲染引擎
_wiki_template(m, TITLE, "", text, arg...) _wiki_template(m, TITLE, "", text, arg...)
// 添加目录
menu, _ := m.Optionv(kit.MDB_MENU).(map[string]interface{})
menu[kit.MDB_LIST] = append(menu[kit.MDB_LIST].([]interface{}), kit.Dict(m.OptionSimple("level,prefix,text")))
} }
const ( const (
@ -59,8 +57,8 @@ func init() {
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
TITLE: {Name: "title [premenu|chapter|section|endmenu] text", Help: "标题", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { TITLE: {Name: "title [premenu|chapter|section|endmenu] text", Help: "标题", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 { if len(arg) == 0 {
ns := strings.Split(ice.Info.NodeName, "-") ns := kit.Split(ice.Info.NodeName, "-")
arg = append(arg, kit.Select(ns[len(ns)-1], "")) arg = append(arg, ns[len(ns)-1])
} }
if len(arg) == 1 { if len(arg) == 1 {
arg = append(arg, "") arg = append(arg, "")
@ -70,13 +68,12 @@ func init() {
}, },
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
TITLE: {Name: TITLE, Help: "标题", Value: kit.Data( TITLE: {Name: TITLE, Help: "标题", Value: kit.Data(
kit.MDB_TEMPLATE, `<{{.Option "level"}} {{.OptionTemplate}}>{{.Option "prefix"}} {{.Option "content"}}</{{.Option "level"}}>`, kit.MDB_TEMPLATE, `<{{.Option "level"}} {{.OptionTemplate}}>{{.Option "prefix"}} {{.Option "text"}}</{{.Option "level"}}>`,
PREMENU, `<ul {{.OptionTemplate}}></ul>`,
ENDMENU, `<ul {{.OptionTemplate}}>{{$menu := .Optionv "menu"}}
{{range $index, $value := Value $menu "list"}}<li>{{Value $value "prefix"}} {{Value $value "text"}}</li>{{end}}
</ul>`,
)}, )},
}, },
}) })
} }
var premenu = `<ul class="story" data-type="premenu"></ul>`
var endmenu = `<ul class="story" data-type="endmenu">{{$menu := .Optionv "menu"}}{{range $index, $value := Value $menu "list"}}
<li>{{Value $value "prefix"}} {{Value $value "content"}}</li>{{end}}
</ul>`

View File

@ -9,11 +9,6 @@ import (
kit "github.com/shylinux/toolkits" kit "github.com/shylinux/toolkits"
) )
var video = `<video class="story"
{{range $k, $v := .Optionv "extra"}}data-{{$k}}='{{$v}}'{{end}}
data-type="{{.Option "type"}}" data-name="{{.Option "name"}}" data-text="{{.Option "text"}}"
title="{{.Option "text"}}" src="{{.Option "text"}}" controls></video>`
func _video_show(m *ice.Message, name, text string, arg ...string) { func _video_show(m *ice.Message, name, text string, arg ...string) {
if !strings.HasPrefix(text, "http") && !strings.HasPrefix(text, "/") { if !strings.HasPrefix(text, "http") && !strings.HasPrefix(text, "/") {
text = path.Join("/share/local", _wiki_path(m, FEEL, text)) text = path.Join("/share/local", _wiki_path(m, FEEL, text))
@ -33,9 +28,6 @@ const VIDEO = "video"
func init() { func init() {
Index.Merge(&ice.Context{ Index.Merge(&ice.Context{
Configs: map[string]*ice.Config{
VIDEO: {Name: "video", Help: "视频", Value: kit.Data(kit.MDB_TEMPLATE, video)},
},
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
VIDEO: {Name: "video [name] url", Help: "视频", Action: map[string]*ice.Action{ VIDEO: {Name: "video [name] url", Help: "视频", Action: map[string]*ice.Action{
mdb.RENDER: {Name: "render", Help: "渲染", Hand: func(m *ice.Message, arg ...string) { mdb.RENDER: {Name: "render", Help: "渲染", Hand: func(m *ice.Message, arg ...string) {
@ -45,5 +37,11 @@ func init() {
arg = _name(m, arg) arg = _name(m, arg)
_video_show(m, arg[0], arg[1], arg[2:]...) _video_show(m, arg[0], arg[1], arg[2:]...)
}}, }},
}}) },
Configs: map[string]*ice.Config{
VIDEO: {Name: "video", Help: "视频", Value: kit.Data(
kit.MDB_TEMPLATE, `<video {{.OptionTemplate}} title="{{.Option "text"}}" src="{{.Option "text"}}" controls></video>`,
)},
},
})
} }

View File

@ -60,5 +60,6 @@ var Index = &ice.Context{Name: WIKI, Help: "文档中心",
func init() { func init() {
web.Index.Register(Index, &web.Frame{}, web.Index.Register(Index, &web.Frame{},
FEEL, WORD, DATA, DRAW, IMAGE, SPARK, FEEL, WORD, DATA, DRAW, IMAGE, SPARK,
TITLE,
) )
} }

View File

@ -1,27 +1,39 @@
title
title "hi"
premenu
chapter "文档" chapter "文档"
section "文档"
endmenu
return
field "影音" web.wiki.feel field "影音" web.wiki.feel
field "数据" web.wiki.data field "数据" web.wiki.data
field "绘图" web.wiki.draw
return
field "文档" web.wiki.word field "文档" web.wiki.word
field "绘图" web.wiki.draw
field "绘图" web.wiki.draw
field "绘图" web.wiki.draw field "绘图" web.wiki.draw
wiki.go title.go
wiki.shy brief.go
refer.go
feel.go spark.go
word.go
data.go
draw.go
order.go
table.go
chart.go chart.go
image.go image.go
video.go video.go
music.go music.go
baidu.go
template.go
field.go
shell.go
local.go
parse.go
other.go
data.go
draw.go
feel.go
word.go
wiki.go
wiki.shy

View File

@ -31,9 +31,9 @@ func _option(m *ice.Message, kind, name, text string, arg ...string) {
func _word_show(m *ice.Message, name string, arg ...string) { func _word_show(m *ice.Message, name string, arg ...string) {
m.Set(ice.MSG_RESULT) m.Set(ice.MSG_RESULT)
m.Option(TITLE, map[string]int{}) m.Option(TITLE, map[string]int{})
m.Option("menu", kit.Dict("list", []interface{}{})) m.Option(kit.MDB_MENU, kit.Dict(kit.MDB_LIST, []interface{}{}))
m.Option(ice.MSG_ALIAS, m.Confv(WORD, kit.Keym("alias"))) m.Option(ice.MSG_ALIAS, m.Confv(WORD, kit.Keym(kit.MDB_ALIAS)))
m.Option(nfs.DIR_ROOT, _wiki_path(m, WORD)) m.Option(nfs.DIR_ROOT, _wiki_path(m, WORD))
m.Option(ice.MSG_RENDER, ice.RENDER_RAW) m.Option(ice.MSG_RENDER, ice.RENDER_RAW)
m.Cmdy(ssh.SOURCE, name) m.Cmdy(ssh.SOURCE, name)
@ -50,7 +50,7 @@ func init() {
Index.Merge(&ice.Context{ Index.Merge(&ice.Context{
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
WORD: {Name: WORD, Help: "语言文字", Value: kit.Data( WORD: {Name: WORD, Help: "语言文字", Value: kit.Data(
kit.MDB_PATH, "", kit.MDB_REGEXP, ".*\\.shy", "alias", kit.Dict( kit.MDB_PATH, "", kit.MDB_REGEXP, ".*\\.shy", kit.MDB_ALIAS, kit.Dict(
PREMENU, []interface{}{TITLE, PREMENU}, PREMENU, []interface{}{TITLE, PREMENU},
CHAPTER, []interface{}{TITLE, CHAPTER}, CHAPTER, []interface{}{TITLE, CHAPTER},
SECTION, []interface{}{TITLE, SECTION}, SECTION, []interface{}{TITLE, SECTION},

View File

@ -275,6 +275,7 @@ func (m *Message) RenderResult(args ...interface{}) *Message {
return m.Render(RENDER_RESULT, args...) return m.Render(RENDER_RESULT, args...)
} }
func (m *Message) RenderTemplate(args ...interface{}) *Message { func (m *Message) RenderTemplate(args ...interface{}) *Message {
return m.Render(RENDER_TEMPLATE, args...) return m.Render(RENDER_TEMPLATE, args...)
} }
func (m *Message) RenderDownload(args ...interface{}) *Message { func (m *Message) RenderDownload(args ...interface{}) *Message {