serch emoji and add them unicod
This commit is contained in:
parent
7526915645
commit
e7a06144ae
1
go.mod
1
go.mod
@ -30,6 +30,7 @@ require (
|
|||||||
github.com/klauspost/compress v1.17.6 // indirect
|
github.com/klauspost/compress v1.17.6 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
|
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
|
||||||
github.com/kr/pretty v0.1.0 // indirect
|
github.com/kr/pretty v0.1.0 // indirect
|
||||||
|
github.com/kyokomi/emoji v2.2.4+incompatible // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
|
2
go.sum
2
go.sum
@ -58,6 +58,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/kyokomi/emoji v2.2.4+incompatible h1:np0woGKwx9LiHAQmwZx79Oc0rHpNw3o+3evou4BEPv4=
|
||||||
|
github.com/kyokomi/emoji v2.2.4+incompatible/go.mod h1:mZ6aGCD7yk8j6QY6KICwnZ2pxoszVseX1DNoGtU2tBA=
|
||||||
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
||||||
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
|
@ -2,8 +2,11 @@ package tools
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"amocrm/internal/models"
|
"amocrm/internal/models"
|
||||||
|
"fmt"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
"unicode/utf8"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ToPipeline(amoPipelines []models.Pipeline) []model.Pipeline {
|
func ToPipeline(amoPipelines []models.Pipeline) []model.Pipeline {
|
||||||
@ -84,7 +87,7 @@ func ConstructField(allAnswers []model.ResultAnswer, result model.AmoUsersTrueRe
|
|||||||
for _, data := range allAnswers {
|
for _, data := range allAnswers {
|
||||||
if fieldID, ok := rule.Questionid[int(data.QuestionID)]; ok {
|
if fieldID, ok := rule.Questionid[int(data.QuestionID)]; ok {
|
||||||
values := entityFieldsMap[entityType][fieldID]
|
values := entityFieldsMap[entityType][fieldID]
|
||||||
values = append(values, models.Values{Value: data.Content})
|
values = append(values, models.Values{Value: emojiUnicode(data.Content)})
|
||||||
entityFieldsMap[entityType][fieldID] = values
|
entityFieldsMap[entityType][fieldID] = values
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -135,3 +138,48 @@ func ConstructField(allAnswers []model.ResultAnswer, result model.AmoUsersTrueRe
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isEmoji(r rune) bool {
|
||||||
|
// https://symbl.cc/ru/unicode/blocks/emoticons/
|
||||||
|
|
||||||
|
return (r >= 0x1F600 && r <= 0x1F64F) || // эмотикоины
|
||||||
|
(r >= 0x1F650 && r <= 0x1F67F) || // орнаментные символы
|
||||||
|
(r >= 0x1F680 && r <= 0x1F6FF) || // Транспортные и картографические символы
|
||||||
|
(r >= 0x1F700 && r <= 0x1F77F) || // Алхимические символы
|
||||||
|
(r >= 0x1F780 && r <= 0x1F7FF) || // Расширенные геометрические фигуры
|
||||||
|
(r >= 0x1F800 && r <= 0x1F8FF) || // Дополнительные стрелки — С
|
||||||
|
(r >= 0x1F900 && r <= 0x1F9FF) || // Дополнительные символы и пиктограммы
|
||||||
|
(r >= 0x1FA00 && r <= 0x1FA6F) || // Шахматные символы
|
||||||
|
(r >= 0x1FA70 && r <= 0x1FAFF) || // Расширенные символы и пиктограммы — A
|
||||||
|
(r >= 0x1FB00 && r <= 0x1FBFF) || // Символы наследия вычислительной техники
|
||||||
|
(r >= 0x20000 && r <= 0x2A6DF) || // Унифицированные идеограммы ККЯ. Расширение B
|
||||||
|
(r >= 0x2A700 && r <= 0x2B73F) || // Унифицированные идеограммы ККЯ. Расширение C
|
||||||
|
(r >= 0x2B740 && r <= 0x2B81F) || // Унифицированные идеограммы ККЯ. Расширение D
|
||||||
|
(r >= 0x2B820 && r <= 0x2CEAF) || // Унифицированные идеограммы ККЯ. Расширение E
|
||||||
|
(r >= 0x2CEB0 && r <= 0x2EBEF) || // Унифицированные идеограммы ККЯ. Расширение F
|
||||||
|
(r >= 0x2EBF0 && r <= 0x2EE5F) || // CJK Unified Ideographs Extension I
|
||||||
|
(r >= 0x2F800 && r <= 0x2FA1F) || // Дополнение к совместимым идеограммам ККЯ
|
||||||
|
(r >= 0x30000 && r <= 0x3134F) || // Унифицированные идеограммы ККЯ. Расширение G
|
||||||
|
(r >= 0x31350 && r <= 0x323AF) || // Унифицированные идеограммы ККЯ. Расширение H
|
||||||
|
(r >= 0xE0000 && r <= 0xE007F) || // Теги
|
||||||
|
(r >= 0xE0100 && r <= 0xE01EF) // Дополнение к селекторам вариантов начертания
|
||||||
|
}
|
||||||
|
|
||||||
|
func emojiUnicode(text string) string {
|
||||||
|
var result strings.Builder
|
||||||
|
for len(text) > 0 {
|
||||||
|
r, size := utf8.DecodeRuneInString(text)
|
||||||
|
if size == -1 {
|
||||||
|
result.WriteString(text[:1])
|
||||||
|
text = text[1:]
|
||||||
|
} else {
|
||||||
|
if isEmoji(r) {
|
||||||
|
result.WriteString(fmt.Sprintf(`"0x%x"`, r))
|
||||||
|
} else {
|
||||||
|
result.WriteRune(r)
|
||||||
|
}
|
||||||
|
text = text[size:]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result.String()
|
||||||
|
}
|
||||||
|
@ -82,7 +82,6 @@ func (wc *PostFields) startFetching(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
leadFields, contactData, companyData := tools.ConstructField(allAnswers, result)
|
leadFields, contactData, companyData := tools.ConstructField(allAnswers, result)
|
||||||
|
|
||||||
deal.CustomFieldsValues = leadFields
|
deal.CustomFieldsValues = leadFields
|
||||||
deal.Embed.Contact = contactData
|
deal.Embed.Contact = contactData
|
||||||
deal.Embed.Company = companyData
|
deal.Embed.Company = companyData
|
||||||
|
Loading…
Reference in New Issue
Block a user