hdma,
{a=decodeURIComponent(a), |
Что-то не идёт. Может потому что как-то надо кириллическую букву А (вместо английской A) правильно прописать для алфавита? —
case"A":return void a.e(5).then(a.bind(null,16)).then((function(i){var a=i.definitions_A |
hdma,
А что в русском алфавите только одна буква? Зачем вообще там кириллица? Это же приложение, как я понял, не для перевода, а толковый словарь английского языка. |
Ну это для теста. В файле "app.js" я прописал кириллицей две буквы "аа" в самом начале списка слов. то же самое добавил в файле "3.js" в начале списка:
{"аа":0, То есть, воспроизвел всё то же самое, как это работало для латиницы. Соответственно, мне кажется, если с первой буквой сработает, то и остальные пойдут. А так же, если перед этой кириллицей и тут — case"A":return — поставить англ. букву А, то переход по клику начинает работать. |
Цитата:
|
hdma,
Вот эти строки нужно менять как минимум: // app.js //1 "<a href='?page=definition&word="+n.replace(/'/g,"%27").replace(/ /g,"%20")+"'>"+n+"</a>" //2 var N=["a",...,"-yl"], //3 F={A:0,B:23288,C:45163,D:77117,E:98409,F:113516,G:129883,H:146789,I:161766,J:174946,K:178691,L:182759,M:195581,N:214319, O:223559,P:235471,Q:263522,R:265324,S:285095,T:324135,U:344471,V:355391,W:361599,X:371334,Y:371869,Z:373356,0:374863}, //4 W="ABCDEFGHIJKLMNOPQRSTUVWXYZ0", //5 e.prototype.partitionIndexStart=function(e){var i=this.normalizeLetter(e);return F[i]}, //6 e.prototype.partitionIndexFinish=function(e){var i=this.normalizeLetter(e);return"Z"==i?F[0]:"0"==i?N.length:(i=String.fromCharCode(i.charCodeAt(0)+1),F[i])}, //7 case"A":return void a.e(5).then(a.bind(null,16)).then((function(i){var a=i.definitions_A;e.partitions.A=a,s(a)})); case"B":return void a.e(6).then(a.bind(null,17)).then((function(i){var a=i.definitions_B;e.partitions.B=a,s(a)})); ... //8 e.prototype.normalizeLetter=function(e){var i=e[0].toUpperCase();return i>="A"&&i<="Z"?i:"0"}, //9 a=a.replace(/%20/g," ").replace(/%27/g,"'"), //10 se.navigate("?page=definition&word="+a), //11 (регулярки) /^[a-zA-Z0-9 '-]*$/ /[\.\d]|[A-Z]|-$|^-/ /\W/g new RegExp("(\\W)"+i+"[\\.):]","ig"); // 5.js, 6.js, ... //12 .push([[5],{16:function(a,o,t){"use strict";t.r(o),t.d(o,"definitions_A", .push([[6],{17:function(a,o,n){"use strict";n.r(o),n.d(o,"definitions_B", ... №1 и №9 сделано, №10 так: se.navigate("?page=definition&word="+encodeURIComponent(a)), №2 это база словаря, ее можно убрать пока из файла, чтобы не мешала, так как она занимает 95%, также можно убрать весь код до записи ,,,,,,,,,,,,,,,,function(e,i,a), так как он стандартный и не относится к логике приложения. Каждый файл 5.js, 6.js и тд, относится к определенной букве и содержит определения, поэтому №7 и №12 должны соответствовать друг другу. №5 менять не надо, просто показан для partitionIndexFinish. Дальше думаю разберешься. |
Rise, вот спасибо, уважаемый! Буду пробовать
|
Rise, если позволите, возникли вопросы. Я хотел бы сразу наладить возможность перехода к определению для первого слова с кириллицей, прописанного в базе — а дальше уже логику понял. Поэтому поначалу пытаюсь поменять только то, что запустит работу переходов по перечню слов. Для этого в самое начало базы добавил две буквы "а" кириллицей:
var N=["аа", (И соответственно, в файл "3.js" добавил var a={"аа":0,) И то же самое в №№ 3 и 4 (наши буквы "А", вместо английских): //3 F={A:0,B:23288,C:45163,D:77117 ... //4 W="ABCDEFGHIJKLMNOPQRSTUVWXYZ0", //7 case"А":return void a.e(5).then(a.bind(null ... //8 e.prototype.normalizeLetter=function(e){var i=e[0].toUpperCase();return i>="А"&&i<="Z"?i:"0"}, Во все регулярки во всём файле "app.js", в которых встречались "a-z" — добавил соответствующие регистрам диапазоны с кириллицей, А-Яа-яЁё — /^[А-Яа-яЁёa-zA-Z0-9 '-]*$/ /[\.\d]|[А-ЯЁA-Z]|-$|^-/ Для "\W" — который означает "не-буква" — затрудняюсь найти соответствующую замену. Правильно ли понимаю, что в js при использовании шаблона \W — кириллица не опознаётся как буква, и именно поэтому ее следует изменить? И это же касается \W во второй строке, где есть экранирование? — /\W/g new RegExp("(\\W)"+i+"[\\.):]","ig"); В остальном — №1, №9, №10 — поменял и выяснилось, что переходить по первому слову с уже сделанными изменениями, не получается. Хотелось бы именно задействовать работу первого слова в базе, а в остальном я понял логику. |
Цитата:
Цитата:
|
Цитата:
//3 F={A:0,B:23288,C:45163,D:77117 ... //4 W="ABCDEFGHIJKLMNOPQRSTUVWXYZ0", //7 case"А":return void a.e(5).then(a.bind(null ... //8 e.prototype.normalizeLetter=function(e){var i=e[0].toUpperCase();return i>="А"&&i<="Z"?i:"0"}, Просто хотелось бы запустить переход по клику с минимумом изменений, так как если всё править - наверняка можно ошибиться и тогда сложнее будет понять, где был недочёт. И затрудняюсь понять как прописывать экранированную \W. Попробовал по такому же принципу экранировать [^A-Za-z0-9_], — но тоже не пошло: s=new RegExp("(\\W)"+i+" заменил на: s=new RegExp("(\[\^A-Za-z0-9_\])"+i+" |
Часовой пояс GMT +3, время: 17:23. |