Я пишу сценарий TCL для анализа вывода HTML на консоли профилирования Firebug. Начнем с того, что я просто хочу накапливать количество вызовов методов для каждого файла. Для этого я пытаюсь использовать вложенные словари. Кажется, я правильно понял первый уровень (где файл является ключом, а метод - значением), но не вторым, вложенным уровнем, где метод - это значение, а значение - это ключ.Значение установки ошибки во вложенном словаре
Я прочитал о команде обновления словаря, поэтому я открыт для рефакторинга с использованием этого. Мое использование TCL включено снова, поэтому заблаговременно за помощь. Ниже мой код и некоторый пример вывод
foreach row $table_rows {
regexp {<a class="objectLink objectLink-profile a11yFocus ">(.+?)</a>.+?class=" ">(.+?)\(line\s(\d+)} $row -> js_method js_file file_line
if {![dict exists $method_calls $js_file]} {
dict set method_calls $js_file [dict create]
}
set file_method_calls [dict get $method_calls $js_file]
if {![dict exists $file_method_calls $js_method]} {
dict set file_method_calls $js_method 0
dict set method_calls $js_file $file_method_calls
}
set file_method_call_counts [dict get $file_method_calls $js_method]
dict set $file_method_calls $js_method [expr 1 + $file_method_call_counts]
dict set method_calls $js_file $file_method_calls
}
dict for {js_file file_method_calls} $method_calls {
puts "file: $js_file"
dict for {method_name call_count} $file_method_calls {
puts "$method_name: $call_count"
}
puts ""
}
ВЫВОД:
file: localhost:50267
(?): 0
e: 0
file: Defaults.js
toDictionary: 0
(?): 0
Renderer: 0
file: jquery.cookie.js
cookie: 0
decoded: 0
(?): 0
Вы [не должны разобрать HTML с регулярным выражением] (HTTP : //stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –