Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Авестийский Юникод

Автор Iskandar, июня 15, 2012, 09:56

0 Пользователи и 1 гость просматривают эту тему.

Bhudh

Offtop
Сунуть в папку UserJS.
А что, нельзя его сделать отдельной страницей, что ли?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Валентин Н

Цитата: Bhudh от июня 16, 2012, 15:28
Сунуть в папку UserJS.
Не работает, там 3 файла: 1. сам транслитератор, 2. список замен, 3. хтмл интерфейс.

Цитата: Bhudh от июня 16, 2012, 15:28
А что, нельзя его сделать отдельной страницей, что ли?
хотел чтоб тексты транслителись на страницах, а не отдельлно перегонять текст.
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

Bhudh

Цитата: Валентин Н от июня 16, 2012, 15:37там 3 файла: 1. сам транслитератор, 2. список замен, 3. хтмл интерфейс.
Не вижу препятствий к их объединению. Разве что Вы боитесь размера...

Цитата: Валентин Н от июня 16, 2012, 15:37хотел чтоб тексты транслителись на страницах
Скрипт должен искать подходящие символы и перегонять. Регэкспы рулят.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Валентин Н

Цитата: Bhudh от июня 16, 2012, 15:42
Не вижу препятствий к их объединению. Разве что Вы боитесь размера...
Но там же ссылка на другой файл наверно?

Цитата: Bhudh от июня 16, 2012, 15:42
Скрипт должен искать подходящие символы и перегонять. Регэкспы рулят.
Но ведь он перегоняет только то, что введено в поле ввода в хтмл интерфейсе...
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

Bhudh

Цитата: Валентин Н от июня 16, 2012, 15:48Но там же ссылка на другой файл наверно?
Какая ссылка? Все три файла можно объединить в один. "Ссылки" будут только внутренними.

Цитата: Валентин Н от июня 16, 2012, 15:48Но ведь он перегоняет только то, что введено в поле ввода в хтмл интерфейсе...
Скрипт делает то, что Вы ему приказываете.
Приказали перегонять то, что введено в поле ввода — он и перегоняет... :donno:
Прикажете перегонять то, что на странице — будет перегонять то, что на странице.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Валентин Н

Цитата: Bhudh от июня 16, 2012, 15:51
Прикажете перегонять то, что на странице — будет перегонять то, что на странице.
Если это не трудно, то может вы смогли бы это сделать?
:-[
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

Bhudh

Охх... Потерял я ссылку на кроссбраузерную оболочку... У меня на странице ВКонтакта есть ссылка на один js-файл для Оперы, качните да вписывайте что душе угодно :).
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Валентин Н

ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Валентин Н

вот код самого транслитератора: Что там надо изменить, чтоб он:
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
— список замен брал не из другого файла, а из себя самого.

Программировал, только в школе на бейсике!
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

wangjhenbai

Цитата: Валентин Н от июня 16, 2012, 15:26
у меня есть джава транслитератор, что надо сделать чтобы он стал плагином оперы?
Если Джава — то ничего не получится, скорее всего. Если ДжаваСкрипт — то можно попробовать...

Дело в том, что я не умею писать плагины. Я умею писать только юзерскрипты. Т.е. прикрутить транслитерацию к отдельному сайту я могу, а ко всему интернету, чтобы по кнопочке меню — нет. Но можно попробовать...
Если я кому-то нужен, д м игрек м д собака яндекс точка ру.

wangjhenbai

Цитата: Валентин Н от июня 16, 2012, 16:10
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
С какой страницы? Если это userJS, он будет выполняться на всех страницах или на всех страницах определённого сайта.
Если я кому-то нужен, д м игрек м д собака яндекс точка ру.

Валентин Н

Имя файла translator.js джаваскрипт наверно.
А почему можно прикрутить к отдельному сайту, а не к любому?
Он может участки кода страницы транслитерировать?
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!


Bhudh

Цитата: Валентин Н от июня 16, 2012, 16:30А почему можно прикрутить к отдельному сайту, а не к любому?
Потому что это особенность UserJS.
Я же дал ссылку, там есть указание на сайт.


Цитата: Валентин Н от июня 16, 2012, 16:30Он может участки кода страницы транслитерировать?
В смысле кода? Участки текста, код-то менять незачем...


Цитата: Валентин Н от июня 16, 2012, 16:10
вот код самого транслитератора: // RuleMap вертає функцію, що реалізує ефективне перетворення слова за заданими правилами.
// Правила задаються у вигляді масиву правил, кожне з яких складається з префіксних букв, замінюваної частини, результату і постфіксних букв.
// Префіксні букви при цьому можуть бути як відтрансльованими так і невідтрансльованими.
Translator.RuleMap = function(rules){
   // Вертає рядок str записаний буквами в регістрі відповідно до регістру букв рядка chars. Небукви іґноруються.
   // Букви в верхньому регістрі з str зберігаються такими незалежно від рядка chars.
   var ConvertStringCase = function (str,chars,addchars,defaultregister){
      if(!defaultregister) defaultregister=false;
      var chrs = new Array();
      var ssize = 0;
      for(var j=0; j<chars.length; ++j){
         var ch = chars.charAt(j);
     if(ch.toLowerCase()==ch)
        if(ch.toUpperCase()==ch);
    else chrs[ssize++]=false;
     else
        chrs[ssize++]=true;
      }

      var FindFirstCharCase = function(seq){
         for(var j=0; j<seq.length; ++j){
            var ch = seq.charAt(j);
        if(ch.toLowerCase()==ch)
           if(ch.toUpperCase()==ch);
           else return false;
        else return true;
         }
         return defaultregister?(!chrs[0]?false:true):false;
      }
 
      if(ssize<=1&&str.length>1) chrs[ssize++] = FindFirstCharCase(addchars);
   
      var result="";
      if(ssize<=str.length){
         for(var j=0; j<ssize; ++j)
        result+=chrs[j]?str.charAt(j).toUpperCase():str.charAt(j);
     if(ssize<str.length) result+=chrs[ssize-1]?str.substring(ssize,str.length).toUpperCase():str.substring(ssize,str.length);
      }else{
         var i=0;
     var jssize=0;
         for(var j=0; j<str.length; ++j){
        var chr = false;
    jssize+=ssize;
        while(jssize>=i*str.length) if(chrs[i++]) chr=true;
        result+=chr?str.charAt(j).toUpperCase():str.charAt(j);
     }
      }
      return result;
   }

   var map = new Object();
   for(var i=0; i<rules.length; ++i){
      var Rule = new Object();
      if(rules[i].length==2){
     Rule.pre="";
Rule.post="";
Rule.pattern=rules[i][0];
Rule.res=rules[i][1];
  }else
      if(rules[i].length==4){
     Rule.pre=rules[i][0];
Rule.post=rules[i][3];
Rule.pattern=rules[i][1];
Rule.res=rules[i][2];
  } else continue;
      var lettermap=Rule.pattern.charAt(0);
  if(lettermap.length){
     var mapelement=map[lettermap];
if(!mapelement)
    mapelement=new Array();
mapelement[mapelement.length]=Rule;
map[lettermap]=mapelement;
  }
   }
     
   var LastLetter = function(s,def){
      var i = s.length;
  while(i--){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
  }
  return def;
   }
   var FirstLetter = function(s,def){
  for(var i = 0; i<s.length; ++i){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
  }
  return def;
   }

   var translate = function(word){   
      var result = "";
      var lwr = word.toLowerCase()+" ";
      var lastchar = " ";
      var lastchart = " ";
  var lastletter = " ";
  var lastlettert = " ";
      while(word.length){
         var str = word.charAt(0);
     var dec = str.length;
         var rules = map[lwr.charAt(0)];
         if(rules)
            for(var i=0; i<rules.length; ++i){
          if(rules[i].pre.length&&
         (lastchar.length==0||lastchart.length==0||rules[i].pre.indexOf(lastchar)==-1&&rules[i].pre.indexOf(lastchart)==-1))
    if(rules[i].pre.indexOf("@")==-1||rules[i].pre.indexOf(lastletter)==-1&&rules[i].pre.indexOf(lastlettert)==-1) continue;
       var pattern = rules[i].pattern;
       if(lwr.indexOf(pattern)==0){
      if(rules[i].post.length){
     var post = lwr.substring(pattern.length,lwr.length);
         if(rules[i].post.indexOf(post.charAt(0))==-1&&(rules[i].post.indexOf("@")==-1||rules[i].post.indexOf(FirstLetter(post," "))==-1)) continue;
  }
      dec=pattern.length;
      str=ConvertStringCase(rules[i].res,word.substring(0,dec),word.substring(dec,word.length-dec+1),result.length>0);
      break;
       }
        }
     lastchar=lwr.substring(dec-1,dec);
     lastchart=str.substring(str.length-1,str.length).toLowerCase();

lastletter = LastLetter(lwr,lastletter)
lastlettert = LastLetter(str.toLowerCase(),lastlettert);
 
     word=word.substring(dec,word.length);
     lwr=lwr.substring(dec,lwr.length);
         result+=str;
      }
      return result;
   }

   return translate;
}

// Вертає функцію, що перетворює текст, підставляючи всі слова у функцію Rule.
// Функція вважається чистою і кешується за допомогою мапи слів.
Translator.TranslateText = function(Rule){
   var IsExcluded = function(str){
      var i = OnChange.exclsymbols.length;
      while(i--) if(str.indexOf(OnChange.exclsymbols.charAt(i))!=-1) return true;
      return false;
   }

   var wordmap = new Object();
   
   var OnChange = function(src){
      var startDate = new Date();
 
  var firstsplit = src.split("\n");
      var newmap = new Object();

      OnChange.patches = 0;
      OnChange.cached = 0;  

      for(var i=0; i<firstsplit.length; ++i){
     var source = firstsplit[i].split(" ");
OnChange.patches+=source.length;
  for(var s=0; s<source.length; ++s){
            var stext = source[s];
            var text = wordmap[stext];
            if(!text)
   text=Rule(stext);
else
   OnChange.cached++;
            newmap[stext]=text;
            if(OnChange.dogcheck&&stext.charAt(0)=="@")
               text=stext.substring(1,stext.length);
            else
               if(OnChange.exclcheck&&IsExcluded(stext))
                  text=stext;
               else;
source[s]=text;
         }
firstsplit[i]=source.join(" ");     
       }

   wordmap = newmap;  
   var dst=firstsplit.join("\n");
       OnChange.worktime = ((new Date()).getTime() - startDate.getTime());
   return dst;
   }
   
   OnChange.dogcheck = true;
   OnChange.exclcheck = true;
   
   OnChange.worktime = 0; // час роботи в мілісекундах
   OnChange.patches = 0;  // кількість оброблених слів
   OnChange.cached = 0;   // кількість кешованих слів

   OnChange.exclsymbols = "@/\\+=*";

   return OnChange;
}

Util = new Object();

Util.IsCharacter = function(ch){
   return ch.toUpperCase()!=ch.toLowerCase();
}

// Об'єднує спецсимволи з одного і того ж слова
Util.MergeSpecSym = function(word1, word2){
   var res = "";
   if(!word2 || !word1) return res;
   var c1 = 0;
   var c2 = 0;
   for(;;){
  while(word1.charAt(c1)==word2.charAt(c2)){
res+=word1.charAt(c1);
     ++c1;
++c2;
     if(c1>=word1.length) return res+word2.substr(c2,word2.length);
else
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
  }
  if(!Util.IsCharacter(word1.charAt(c1))){
res += word1.charAt(c1++);
if(c1>=word1.length) return res+word2.substr(c2,word2.length);
  }else
  if(!Util.IsCharacter(word2.charAt(c2))){
res += word2.charAt(c2++);
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
  } else return res;
   }
}

// Вертає значення параметра, взяе з адресного рядка
Util.GetParam = function(name){
   var results = RegExp("[\\?&]"+name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]")+"=([^&#]*)").exec(window.location.href);
   return results == null?"":decodeURIComponent(results[1]);
}

Util.PutParam = function(name, value, tail){
   if(!tail)tail="";
   if(!value || !name || !value.length || !name.length) return tail;
   return "?"+name+"="+encodeURIComponent(value)+tail.replace("?","&");
}

// Визначає яку форму іменника вживати — однину, двоїну, троїну чи множину
Util.SelectSDTP = function(num, singular, dual, trial, plural){
   if(plural==null){ plural=trial; trial=dual; }
   if(plural==null) plural=trial;
   if(plural==null) return singular;
   num=num%100;
   if(num<10||num>19) switch (num % 10){
      case 1: return singular;
  case 2: return dual;
  case 3: return trial;
  case 4: return trial;
   }
   return plural;
}

Что там надо изменить, чтоб он:
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
— список замен брал не из другого файла, а из себя самого.
1) Задать диапазон или полный список букв, нуждающихся в конвертации и написать функцию их добычи из текста.
2) Внедрить другой файл в первый, в виде массива, к примеру, что и решает п. 1).
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Karakurt


wangjhenbai

Цитата: Karakurt от июня 16, 2012, 16:48
Что делать в линуксе?
А что в Линуксе не так?

У Вас не отображается авестийский? А расскажите, пожалуйста, подробнее: какой обозреватель, какой дистрибутив?
Если я кому-то нужен, д м игрек м д собака яндекс точка ру.

Karakurt

После установки шрифта стал показывать. Минт дебиан. Жирнолис.

Валентин Н

И куда конкретно это надо вставить и что надо изменить для этого.
Вот список замен
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

Bhudh

Блин, я для кого в цитате тэг [code][/code] использовал⁈ >(

А как Вы сделали этот массив? Что-то у меня нехорошее предчувствие, что работать оно не будет...
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Валентин Н

Цитата: Bhudh от июня 16, 2012, 19:05
А как Вы сделали этот массив? Что-то у меня нехорошее предчувствие, что работать оно не будет...
Что значит как с делал??? Как у разработчика было, так и сделал, только свой список составил.
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

Bhudh

И у разработчика разное число аргументов в массиве было?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Валентин Н

Цитата: Bhudh от июня 16, 2012, 20:21
И у разработчика разное число аргументов в массиве было?
Не работает только если меньше, больше можно.
ЗАБАНИЛ ВИКИПЕДИЮ
Нижниь ıндэкс в ҷıсʌах — степень тıсяҷı
Препинания авторские!

Bhudh

А, врубился...
Если три ввести, тоже может не сработать.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр