mirror of
https://github.com/documize/community.git
synced 2025-07-19 13:19:43 +02:00
Improve JS slugify process
To handle non-recognized charsets.
This commit is contained in:
parent
1944690540
commit
527b02e8b3
4 changed files with 48 additions and 4 deletions
|
@ -16,6 +16,8 @@ import (
|
||||||
"unicode"
|
"unicode"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TODO" replace with https://github.com/mcmatts/slug
|
||||||
|
|
||||||
// MakeSlug creates a slug, suitable for use in a URL, from a string
|
// MakeSlug creates a slug, suitable for use in a URL, from a string
|
||||||
func MakeSlug(str string) string {
|
func MakeSlug(str string) string {
|
||||||
slg := strings.Map(
|
slg := strings.Map(
|
||||||
|
|
|
@ -13,8 +13,12 @@ package stringutil
|
||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
|
// go test github.com/documize/community/core/stringutil -run TestSlug
|
||||||
func TestSlug(t *testing.T) {
|
func TestSlug(t *testing.T) {
|
||||||
|
st(t, "Hello World", "hello-world")
|
||||||
st(t, " Zip--up ", "zip-up")
|
st(t, " Zip--up ", "zip-up")
|
||||||
|
st(t, "Общее", "obshee")
|
||||||
|
st(t, "哈威", "哈威")
|
||||||
}
|
}
|
||||||
|
|
||||||
func st(t *testing.T, in, out string) {
|
func st(t *testing.T, in, out string) {
|
||||||
|
|
|
@ -12,8 +12,13 @@
|
||||||
// Make url friendly slug from specified text.
|
// Make url friendly slug from specified text.
|
||||||
// Has to handle non-english character text "Общее" text!
|
// Has to handle non-english character text "Общее" text!
|
||||||
function makeSlug(text) {
|
function makeSlug(text) {
|
||||||
return slug(text, { mode: 'rfc3986', lower: true});
|
let s = slug(text, { mode: 'rfc3986', lower: true});
|
||||||
//return text.toLowerCase().replace(/[^\w ]+/g, '').replace(/ +/g, '-');
|
|
||||||
|
// If slug does not recognise characters (e.g. chinese)
|
||||||
|
// send back original characters.
|
||||||
|
if (s === '') s = text;
|
||||||
|
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeId(len) {
|
function makeId(len) {
|
||||||
|
|
33
gui/tests/unit/utils/slug-test.js
Normal file
33
gui/tests/unit/utils/slug-test.js
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
|
//
|
||||||
|
// This software (Documize Community Edition) is licensed under
|
||||||
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
//
|
||||||
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
|
// by contacting <sales@documize.com>.
|
||||||
|
//
|
||||||
|
// https://documize.com
|
||||||
|
|
||||||
|
import { module, test } from 'qunit';
|
||||||
|
import { setupTest } from 'ember-qunit';
|
||||||
|
import stringUtil from 'documize/utils/string';
|
||||||
|
|
||||||
|
module('Unit | Utility | Slug', function (hooks) {
|
||||||
|
setupTest(hooks);
|
||||||
|
|
||||||
|
test('english slug', function (assert) {
|
||||||
|
let result = stringUtil.makeSlug('Hello Slug');
|
||||||
|
assert.equal(result, 'hello-slug', 'slug: ' + result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('cyrillic slug', function (assert) {
|
||||||
|
let result = stringUtil.makeSlug('Общее');
|
||||||
|
assert.equal(result, 'obshee', 'slug: ' + result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('chinese slug', function (assert) {
|
||||||
|
let result = stringUtil.makeSlug('哈威');
|
||||||
|
assert.equal(result, '哈威', 'slug: ' + result);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue