def handle_cleaner_var(self, var): """Handle one <var> element under <cleaner>. Example: <var name="basepath"> <value search="glob">~/.config/f*</value> <value>~/.config/foo</value> <value>%AppData\foo</value> </var> """ var_name = var.getAttribute('name') for value_element in var.getElementsByTagName('value'): if not self.os_match(value_element.getAttribute('os')): continue value_str = getText(value_element.childNodes) is_glob = value_element.getAttribute('search') == 'glob' if is_glob: value_list = expand_glob_join(value_str, '') else: value_list = [ value_str, ] if self.vars.has_key(var_name): # append self.vars[var_name] = value_list + self.vars[var_name] else: # initialize self.vars[var_name] = value_list
def handle_cleaner_running(self, running_elements): """<running> element under <cleaner>""" # example: <running type="command">opera</running> for running in running_elements: detection_type = running.getAttribute('type') value = getText(running.childNodes) self.cleaner.add_running(detection_type, value)
def handle_cleaner_var(self, var): """Handle one <var> element under <cleaner>. cleaner 아래의 var 요소 Example: <var name="basepath"> <value search="glob">~/.config/f*</value> <value>~/.config/foo</value> <value>%AppData\foo</value> </var> """ var_name = var.getAttribute('name') #var태그에서 name속성을 추출 for value_element in var.getElementsByTagName('value'): # var태그의 value태그들 반복한다. if not self.os_match(value_element.getAttribute('os')): # value태그들에서 os속성값을 추출해 운영체제와 일치하는지 확인한다. continue # 일치하지않으면 continue value_str = getText(value_element.childNodes) # value태그들의 자식노드들을 text형식으로 추출 (경로가 저장된다) is_glob = value_element.getAttribute('search') == 'glob' # value태그의 search속성이 glob인지 확인하고 저장 if is_glob: value_list = expand_glob_join(value_str, '') # is_glob이 참이면 추출한 경로에 운영체제에 맞게 연결하고, # 경로안에 환경변수가 있다면 확장하고 else: # list를 돌려주는 함수 expand_glob_join 호출 value_list = [value_str, ] # 아닐경우 추출한 경로를 list에 저장 if self.vars.has_key(var_name): # append self.vars[var_name] = value_list + self.vars[var_name] else: # initialize self.vars[var_name] = value_list
def handle_cleaner_var(self, var): """Handle one <var> element under <cleaner>. Example: <var name="basepath"> <value search="glob">~/.config/f*</value> <value>~/.config/foo</value> <value>%AppData\foo</value> </var> """ var_name = var.getAttribute('name') for value_element in var.getElementsByTagName('value'): if not self.os_match(value_element.getAttribute('os')): continue value_str = getText(value_element.childNodes) is_glob = value_element.getAttribute('search') == 'glob' if is_glob: value_list = expand_glob_join(value_str, '') else: value_list = [value_str, ] if self.vars.has_key(var_name): # append self.vars[var_name] = value_list + self.vars[var_name] else: # initialize self.vars[var_name] = value_list
def handle_cleaner_option_label(self, label): """<label> element under <option>""" self.option_name = _(getText(label.childNodes)) translate = label.getAttribute('translate') translators = label.getAttribute('translators') if not translate or boolstr_to_bool(translate): self.xlate_cb(self.option_name, translators)
def handle_cleaner_option_label(self, label): """<label> element under <option> option태그 아래에서의 label요소""" self.option_name = _(getText(label.childNodes)) # label의 자식노드를 text로 추출해서 option_name에 저장 translate = label.getAttribute('translate') # label에서 translate속성 추출 translators = label.getAttribute('translators') # label에서 translators속성 추출 if not translate or boolstr_to_bool(translate): self.xlate_cb(self.option_name, translators) # translate 나 translate를 파이썬부울로 변환한 값이 true가아니면
def handle_cleaner_description(self, description): """<description> element under <cleaner> cleaner태그 아래에서 description태그 요소""" self.cleaner.description = _(getText(description.childNodes)) # description의 자식노드들을 text로 추출하여 self.cleaner.description에 저장 # 여기서 description의 자식노드란 <description>설명</description> 이 있을때 설명 부분에 해당한다. translators = description.getAttribute('translators') #description에서 translators속성 값을 추출 self.xlate_cb(self.cleaner.description, translators)
def handle_cleaner_running(self, running_elements): """<running> element under <cleaner> cleaner태그 아래의 running태그 요소""" # example: <running type="command">opera</running> for running in running_elements: # running_elements의 요소를 running에 반복 if not self.os_match(running.getAttribute('os')): continue # 만약 running에서 추출한 os(현재 사용중인 운영체제)가 지원하는 os와 일치하지않으면 continue detection_type = running.getAttribute('type') # running에서 type속성 값 추출 (실행 중인 프로그램의 type) value = getText(running.childNodes) # running의 자식노드들을 text로 추출 self.cleaner.add_running(detection_type, value)
def handle_cleaner_label(self, label): """<label> element under <cleaner> cleaner태그 아래에 label태그 요소""" self.cleaner.name = _(getText(label.childNodes)) # label객체의 자식노드들을 text로 추출해서 self.cleaner.name에 저장 translate = label.getAttribute('translate') #label에서 translate속성 추출 if translate and boolstr_to_bool(translate): self.xlate_cb(self.cleaner.name) # translate 와 translate를 bool값으로 한것이 True면 # xlate_cb함수에 self.cleaner.name값을 넣어서 사용 """ xlate_cb함수가 번역과 관련된 함수인데 위에서 xlate_cb의 값이 None이면 xlate_mode는 False이고이 함수는 None값을 돌려주는 함수가됨 """ """ xlate_mode의 값이 None이 아니면 xlate_mode가 True가 되는것으로 보아
def handle_cleaner_var(self, var): """Handle one <var> element under <cleaner>. Example: <var name="basepath"> <value>~/.config/foo</value> <value>%AppData\foo</value> </var> """ var_name = var.getAttribute('name') for value_element in var.getElementsByTagName('value'): value_str = getText(value_element.childNodes) if self.vars.has_key(var_name): # append self.vars[var_name] = [ value_str, ] + self.vars[var_name] else: # initialize self.vars[var_name] = [ value_str, ]
def handle_cleaner_label(self, label): """<label> element under <cleaner>""" self.cleaner.name = _(getText(label.childNodes)) translate = label.getAttribute('translate') if translate and boolstr_to_bool(translate): self.xlate_cb(self.cleaner.name)
def handle_cleaner_option_warning(self, warning): """<warning> element under <option>""" self.option_warning = _(getText(warning.childNodes)) self.xlate_cb(self.option_warning)
def handle_cleaner_option_description(self, description): """<description> element under <option>""" self.option_description = _(getText(description.childNodes)) translators = description.getAttribute('translators') self.xlate_cb(self.option_description, translators)
def handle_cleaner_option_description(self, description): """<description> element under <option>""" # cleaner태그 아래의 option태그 아래의 description 요소 self.option_description = _(getText(description.childNodes)) # description의 자식노드를 text형식으로 추출 translators = description.getAttribute('translators') # description에서 translators 속성 추출 self.xlate_cb(self.option_description, translators) # xlate_cb함수 사용
def handle_cleaner_option_warning(self, warning): # clearner 아래의 option 아래의 warning 요소 """<warning> element under <option>""" self.option_warning = _(getText(warning.childNodes)) # warning의 자식노드를 text data로 추출 self.xlate_cb(self.option_warning) # xlate_cb함수 사용