PLT-6706: add /code command (#6936)
* add /code command * return an error for empty /code message
Этот коммит содержится в:
44
app/command_code.go
Обычный файл
44
app/command_code.go
Обычный файл
@@ -0,0 +1,44 @@
|
|||||||
|
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
|
||||||
|
// See License.txt for license information.
|
||||||
|
|
||||||
|
package app
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/mattermost/platform/model"
|
||||||
|
goi18n "github.com/nicksnyder/go-i18n/i18n"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CodeProvider struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
CMD_CODE = "code"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
RegisterCommandProvider(&CodeProvider{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (me *CodeProvider) GetTrigger() string {
|
||||||
|
return CMD_CODE
|
||||||
|
}
|
||||||
|
|
||||||
|
func (me *CodeProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
|
||||||
|
return &model.Command{
|
||||||
|
Trigger: CMD_CODE,
|
||||||
|
AutoComplete: true,
|
||||||
|
AutoCompleteDesc: T("api.command_code.desc"),
|
||||||
|
AutoCompleteHint: T("api.command_code.hint"),
|
||||||
|
DisplayName: T("api.command_code.name"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (me *CodeProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
|
if len(message) == 0 {
|
||||||
|
return &model.CommandResponse{Text: args.T("api.command_code.message.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
||||||
|
}
|
||||||
|
rmsg := " " + strings.Join(strings.Split(message, "\n"), "\n ")
|
||||||
|
return &model.CommandResponse{ResponseType: model.COMMAND_RESPONSE_TYPE_IN_CHANNEL, Text: rmsg}
|
||||||
|
}
|
||||||
26
app/command_code_test.go
Обычный файл
26
app/command_code_test.go
Обычный файл
@@ -0,0 +1,26 @@
|
|||||||
|
package app
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/mattermost/platform/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCodeProviderDoCommand(t *testing.T) {
|
||||||
|
cp := CodeProvider{}
|
||||||
|
args := &model.CommandArgs{
|
||||||
|
T: func(s string, args ...interface{}) string { return s },
|
||||||
|
}
|
||||||
|
|
||||||
|
for msg, expected := range map[string]string{
|
||||||
|
"": "api.command_code.message.app_error",
|
||||||
|
"foo": " foo",
|
||||||
|
"foo\nbar": " foo\n bar",
|
||||||
|
"foo\nbar\n": " foo\n bar\n ",
|
||||||
|
} {
|
||||||
|
actual := cp.DoCommand(args, msg).Text
|
||||||
|
if actual != expected {
|
||||||
|
t.Errorf("expected `%v`, got `%v`", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
16
i18n/en.json
16
i18n/en.json
@@ -919,6 +919,22 @@
|
|||||||
"id": "api.command_shortcuts.nav.unread_prev",
|
"id": "api.command_shortcuts.nav.unread_prev",
|
||||||
"translation": "ALT+SHIFT+UP: Previous channel or direct message in left hand sidebar with unread messages\n"
|
"translation": "ALT+SHIFT+UP: Previous channel or direct message in left hand sidebar with unread messages\n"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "api.command_code.desc",
|
||||||
|
"translation": "Display text as a code block"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api.command_code.hint",
|
||||||
|
"translation": "[text]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api.command_code.name",
|
||||||
|
"translation": "code"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "api.command_code.message.app_error",
|
||||||
|
"translation": "A message must be provided with the /code command."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "api.command_shrug.desc",
|
"id": "api.command_shrug.desc",
|
||||||
"translation": "Adds ¯\\_(ツ)_/¯ to your message"
|
"translation": "Adds ¯\\_(ツ)_/¯ to your message"
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user