mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 17:44:05 +08:00
opt wiki
This commit is contained in:
parent
028da6be6b
commit
08f8ba8730
@ -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>
|
||||||
|
@ -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"}}">`,
|
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -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>`,
|
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -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>`,
|
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -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>`,
|
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -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>`,
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
|
@ -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>
|
||||||
|
@ -1 +0,0 @@
|
|||||||
package wiki
|
|
@ -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>`
|
|
||||||
|
@ -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>`,
|
||||||
|
)},
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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},
|
||||||
|
1
misc.go
1
misc.go
@ -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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user