|
контекстный поиск в коде программ
|
|||
---|---|---|---|
#18+
Есть ли такое в студии, или в загашнике у кого? Не хочется изобретать велосипед, но хочется задать программе строку (имя переменной или глобали) и получить список программ, в которых это имя встречается. Как писал кто-то в этом форуме - "здоровое желание халявы":) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 16:06 |
|
контекстный поиск в коде программ
|
|||
---|---|---|---|
#18+
DirksDRНе хочется изобретать велосипед, но хочется задать программе строку (имя переменной или глобали) и получить список программ, в которых это имя встречается. Вот параметодов, коими мы пользуемся... Тебе нужно сунуть их в класс... Пробежаться по программкам, вызывая метод find() и анализируя возвращаемые значения... /// <h3>Поиск подстроки в программе</h3> /// <p> /// Вернет строку типа "строка,колонка[,длина]" или пустую строку если вхождение не найдено. /// Где <b>длина</b> это количество символов строки, которая соответствовала регулярному /// выражению /// </p> /// <table> /// <tr> /// <td><b>String</b></td> /// <td><i>Искомая строка</i></td> /// </tr> /// <tr> /// <td><b>Name</b></td> /// <td><i>Имя программы</i></td> /// </tr> /// <tr> /// <td><b>Case</b></td> /// <td><i>Без учета регистра</i></td> /// </tr> /// <tr> /// <td><b>Type</b></td> /// <td><i>Искать как регулярное выражение - 1. Функцией $find() - 0</i></td> /// </tr> /// <tr> /// <td><b>Ns</b></td> /// <td><i>Имя области</i></td> /// </tr> /// <tr> /// <td><b>Row</b></td> /// <td><i>Начальная строка</i></td> /// </tr> /// <tr> /// <td><b>Col</b></td> /// <td><i>Начальная колонка</i></td> /// </tr> /// </table> /// <p>Примеры поиска:</p> /// /// <EXAMPLE> /// // 1. Ищем вхождение строки "D OPENUSE^ASYS3" в программе A.int /// w ##class(air.cEdit).find("D OPENUSE^ASYS3","A.int") /// // Вернет строку "18,2" /// // 2. Ищем цифровую последовательность в программе A.int, начиная со второй строки /// w ##class(air.cEdit).find("\d+","A.int",,1,,2) /// // Вернет строку "5,26,2" /// </EXAMPLE> /// ClassMethod find(String As %String, Name As %String, Case As %Boolean = 0, Type As %Boolean = 0, Ns As %String = "", Row As %Integer = 0, Col As %Integer = 0) As %String { i Ns'="",'##class(%SYS.Namespace).Exists(Ns) q "" s ns=$znspace zn:Ns'="" Ns s val="" if ##class(%Routine).Exists(Name) { s o=##class(%Routine).%New(Name) s text=o.Read() k o s val=..search(String,text,Case,Type,Row,Col) } zn ns q val } /// <h3>Поиск подстроки в тексте</h3> /// <p> /// Вернет строку типа "строка,колонка[,длина]" или пустую строку если вхождение не найдено. /// Где <b>длина</b> это количество символов строки, которая соответствовала регулярному /// выражению /// </p> /// <table> /// <tr> /// <td><b>String</b></td> /// <td><i>Искомая строка</i></td> /// </tr> /// <tr> /// <td><b>Text</b></td> /// <td><i>Текст</i></td> /// </tr> /// <tr> /// <td><b>Case</b></td> /// <td><i>Без учета регистра</i></td> /// </tr> /// <tr> /// <td><b>Type</b></td> /// <td><i>Искать как регулярное выражение - 1. Функцией $find() - 0</i></td> /// </tr> /// <tr> /// <td><b>Row</b></td> /// <td><i>Начальная строка</i></td> /// </tr> /// <tr> /// <td><b>Col</b></td> /// <td><i>Начальная колонка</i></td> /// </tr> /// </table> /// <p>Примеры поиска:</p> /// /// <EXAMPLE> /// // 1. Ищем вхождение строки "D OPENUSE^ASYS3" в тексте /// w ##class(air.cEdit).search("D OPENUSE^ASYS3","Пример текста D OPENUSE^ASYS3") /// // Вернет строку "1,15" /// // 2. Ищем цифровую последовательность в тексте, начиная со второй строки /// w ##class(air.cEdit).search("\d+","Пример текста "_$c(10)_"Пример текста 2",,1,2) /// // Вернет строку "2,15,1" /// </EXAMPLE> /// ClassMethod search(String As %String, Text As %String, Case As %Boolean = 0, Type As %Boolean = 0, Row As %Integer = 0, Col As %Integer = 0) As %String { if Case { s:Type String="(?i)"_String s:'Type Text=$system.SQL.UPPER(Text),String=$system.SQL.UPPER(String) } s beg=$l($p(Text,$c(10),1,Row-1))+Col try { s beg=$s(Type:$locate(Text,String,beg+1,,val),1:$f(Text,String,beg)) } catch { s beg=0 } q:'beg "" s pos=$s(Type:beg,1:beg-$l(String)) s txt=$e(Text,1,pos) s Row=$l(txt,$c(10)) s Col=$l($p(txt,$c(10),Row)) q Row_","_Col_$s(Type:","_$l(val),1:"") } ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 16:27 |
|
контекстный поиск в коде программ
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 16:33 |
|
контекстный поиск в коде программ
|
|||
---|---|---|---|
#18+
DirksDR, Ctrl+Shift+F ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 18:12 |
|
|
start [/forum/topic.php?fid=39&msg=38821553&tid=1556759]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 273ms |
total: | 415ms |
0 / 0 |