Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Дело на 10$, нерешенный вопрос с регулярным выражением (https://javascript.ru/forum/library-toolkit-framework/54907-delo-na-10%24-nereshennyjj-vopros-s-regulyarnym-vyrazheniem.html)

blacklool 06.04.2015 01:18

Дело на 10$, нерешенный вопрос с регулярным выражением
 
Даже не знаю можно ли такое делать... но ладно тому кто первый мне поможет с решением задачи я по желанию переведу 10$ (могу только на paypal) :help:

Ближе к делу,

мне нужно изменить скрипт marked.js, и поменять некоторые регулярные выражения.

Вот заготовка: здесь

Там везде где нужно будет вводить изменения, выделено большим комментарием. (поскольку так же обращусь за помощью в stackoverflow все комментарии на английском* )

и подробно о том что нужно:
(строка 448)
var inline = {
    // . . .

    //в marked по ум. чтобы добавить картинку нужно прописать ![](), и вот для этого оригинальное выражение:
    
    //link: /^\!?\[(inside)\]\(href\)/
    
    //а мне нужно чтобы было не ![]() а {>здесь номер<}![]()  и вот как я изменил:
    
    link: /^\{\>index<\)\}\!?\[(inside)\]\(href\)(\w*\S*)*/,
    
    //в конце добавил (\w*\S*)* чтобы для одной строки в редакторе возможно было добавить только 1 картинку

    //...
};
    
    //здесь мы дописываем регулярное выражение, это для того чтобы позже получить значение href, inside и index. вот первые две оригинальные:
    inline._inside = /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;
    inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
    
    //inline._index = /(?:^\{\>[^\<\}]*\<\}|[^\{\>\<\}]|\<\}(?=[^\{\>]*\<\}))*/;  <-- это то что я пытался написать но не верно. . .
    //inline._index = /(?:^\{\>[^\<\}]*\<\}|[^\{\>\<\}]|\<\}(?=[^{]*\}))*/;


после того как мы собираем общую строчку регулярного выражения :

inline.link = replace(inline.link)
  ('inside', inline._inside)
  ('href', inline._href)
	('index', inline._index) //<----------------------------------------
  ();


нужно проверить пришедший текст с этой строчкой и получить значения href, inside и index ( строка 637 )

if (cap = this.rules.link.exec(src)) {
    src = src.substring(cap[0].length);
    this.inLink = true;
    out += this.outputLink(cap, {
    
    //index: cap [x] <---------------------

     href: cap[2],
     title: cap[3]
    });
    this.inLink = false;
    continue;
}


вот собственно и вся задача, получать inside, href, номер (индекс) с строки {>2<}![alt text](http://link.to/image.jpg)

и важно чтобы после работали обычные ссылки [текст](http://site.com)

:thanks:

blacklool 06.04.2015 02:24

Вопрос решен! Спасибо!


Часовой пояс GMT +3, время: 22:13.