From af1ac89df75c3d3d212fd0bf2a3d48a6c0fdbd5c Mon Sep 17 00:00:00 2001 From: Milad Karbasizadeh Date: Mon, 2 Jan 2017 14:48:22 +0330 Subject: [PATCH] Rename fix-string.js and fixTextForSvg function name to a more readable name. User regex to detect arabic characters. Fix editing bugs. --- modules/services/osm.js | 9 +++++---- modules/ui/entity_editor.js | 9 +++++++++ .../{core/fix-string.js => util/svg_paths_arabic_fix.js} | 6 +++--- 3 files changed, 17 insertions(+), 7 deletions(-) rename modules/{core/fix-string.js => util/svg_paths_arabic_fix.js} (96%) diff --git a/modules/services/osm.js b/modules/services/osm.js index 6ad4366ce..bac09e0ba 100644 --- a/modules/services/osm.js +++ b/modules/services/osm.js @@ -7,7 +7,7 @@ import { geoExtent } from '../geo/index'; import { osmEntity, osmNode, osmRelation, osmWay } from '../osm/index'; import { utilDetect } from '../util/detect'; import { utilRebind } from '../util/rebind'; -import { fixTextForSvg } from '../core/fix-string'; +import { fixArabicScriptTextForSvg } from '../util/svg_paths_arabic_fix'; var dispatch = d3.dispatch('authLoading', 'authDone', 'change', 'loading', 'loaded'), @@ -71,10 +71,11 @@ function getTags(obj) { var attrs = elems[i].attributes; tags[attrs.k.value] = attrs.v.value; } - var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 - if(tags.name && tags.highway && !isFirefox){ + var isFirefox = utilDetect().browser.toLowerCase().indexOf('firefox') > -1 + var arabicRegex = /[\u0600-\u06FF]/g + if(tags.name && tags.highway && !isFirefox && arabicRegex.test(tags.name)){ tags.real_name = tags.name; - tags.name = fixTextForSvg(tags.real_name); + tags.name = fixArabicScriptTextForSvg(tags.real_name); } return tags; } diff --git a/modules/ui/entity_editor.js b/modules/ui/entity_editor.js index ad10e4768..b66424182 100644 --- a/modules/ui/entity_editor.js +++ b/modules/ui/entity_editor.js @@ -12,6 +12,7 @@ import { uiRawTagEditor } from './raw_tag_editor'; import { uiTagReference } from './tag_reference'; import { uiPreset } from './preset'; import { utilRebind } from '../util/rebind'; +import { fixArabicScriptTextForSvg } from '../util/svg_paths_arabic_fix'; export function uiEntityEditor(context) { @@ -224,6 +225,14 @@ export function uiEntityEditor(context) { tags[k] = v; } }); + var arabicRegex = /[\u0600-\u06FF]/g + if(tags.highway && tags.real_name){ + if(arabicRegex.test(tags.real_name)){ + tags.name = fixArabicScriptTextForSvg(tags.real_name); + } else{ + tags.name = tags.real_name; + } + } if (!onInput) { tags = clean(tags); diff --git a/modules/core/fix-string.js b/modules/util/svg_paths_arabic_fix.js similarity index 96% rename from modules/core/fix-string.js rename to modules/util/svg_paths_arabic_fix.js index 3e002e8fc..2fdc101de 100644 --- a/modules/core/fix-string.js +++ b/modules/util/svg_paths_arabic_fix.js @@ -34,13 +34,13 @@ const chars = { 5000: {initial: "ﻻ", isolated: "ﻻ", medial: "", final: "ﻼ" } }; -export function fixTextForSvg(inputText){ +export function fixArabicScriptTextForSvg(inputText){ return inputText.split(' ').reverse().map(function(w){ - return fixWordForSvg(w); + return fixArabicScriptWordForSvg(w); }).join(' '); } -export function fixWordForSvg(inputWord){ +export function fixArabicScriptWordForSvg(inputWord){ let context = true; let ret = []; //const inputWord = inputWord.split('');