mirror of
https://github.com/documize/community.git
synced 2025-07-18 20:59: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"
|
||||
)
|
||||
|
||||
// TODO" replace with https://github.com/mcmatts/slug
|
||||
|
||||
// MakeSlug creates a slug, suitable for use in a URL, from a string
|
||||
func MakeSlug(str string) string {
|
||||
slg := strings.Map(
|
||||
|
|
|
@ -13,8 +13,12 @@ package stringutil
|
|||
|
||||
import "testing"
|
||||
|
||||
// go test github.com/documize/community/core/stringutil -run TestSlug
|
||||
func TestSlug(t *testing.T) {
|
||||
st(t, "Hello World", "hello-world")
|
||||
st(t, " Zip--up ", "zip-up")
|
||||
st(t, "Общее", "obshee")
|
||||
st(t, "哈威", "哈威")
|
||||
}
|
||||
|
||||
func st(t *testing.T, in, out string) {
|
||||
|
|
|
@ -1,19 +1,24 @@
|
|||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||
//
|
||||
// This software (Documize Community Edition) is licensed under
|
||||
// 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>.
|
||||
// by contacting <sales@documize.com>.
|
||||
//
|
||||
// https://documize.com
|
||||
|
||||
// Make url friendly slug from specified text.
|
||||
// Has to handle non-english character text "Общее" text!
|
||||
function makeSlug(text) {
|
||||
return slug(text, { mode: 'rfc3986', lower: true});
|
||||
//return text.toLowerCase().replace(/[^\w ]+/g, '').replace(/ +/g, '-');
|
||||
let s = slug(text, { mode: 'rfc3986', lower: true});
|
||||
|
||||
// If slug does not recognise characters (e.g. chinese)
|
||||
// send back original characters.
|
||||
if (s === '') s = text;
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
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