()
| 145 | |
| 146 | |
| 147 | def scan_objects_file(): |
| 148 | if not os.path.exists(PAGE_OBJECTS_FILE): |
| 149 | create_objects_file() |
| 150 | |
| 151 | page_selectors = {} |
| 152 | with open(PAGE_OBJECTS_FILE, mode="r", encoding="utf-8") as f: |
| 153 | all_code = f.read() |
| 154 | |
| 155 | var_names = [] |
| 156 | selectors = [] |
| 157 | current_class = "None" |
| 158 | selector_list_dict = {} # Key = class name / Values are name-value tuples |
| 159 | selector_list_dict[current_class] = [] |
| 160 | selector_list_dict["Page"] = [] |
| 161 | code_lines = all_code.split("\n") |
| 162 | for line in code_lines: |
| 163 | line = line.rstrip() |
| 164 | # Handle: class CLASSNAME(object): OR class CLASSNAME(): |
| 165 | data = re.match(r"""^(\s*)class\s+([\S]+)\((object|)\):\s*$""", line) |
| 166 | if data: |
| 167 | whitespace = data.group(1) |
| 168 | name = "%s" % data.group(2) |
| 169 | current_class = name |
| 170 | selector_list_dict[current_class] = [] |
| 171 | page_selectors["class %s" % name] = "." |
| 172 | |
| 173 | # Handle: SELECTOR_NAME = "SELECTOR" |
| 174 | data = re.match(r"""^(\s*)(\S+)\s*=\s*([\S\s]+)\s*$""", line) |
| 175 | if data: |
| 176 | whitespace = data.group(1) |
| 177 | name = data.group(2) |
| 178 | selector = data.group(3) |
| 179 | selector = remove_extra_slashes(selector) |
| 180 | page_selectors[name] = selector |
| 181 | var_names.append(name) |
| 182 | selectors.append(selector) |
| 183 | if whitespace == "": |
| 184 | current_class = "None" |
| 185 | if (len(selector) > 2 and selector[0] == "'") and ( |
| 186 | selector[-1] == "'" and '"' not in selector[1:-1] |
| 187 | ): |
| 188 | selector = '"' + selector[1:-1] + '"' |
| 189 | if "\\[" in selector or "\\]" in selector or "\\." in selector: |
| 190 | if selector[0] != "r": |
| 191 | selector = "r" + selector |
| 192 | selector_list_dict[current_class].append((name, selector)) |
| 193 | |
| 194 | if "class Page" not in page_selectors.keys(): |
| 195 | page_selectors["class Page"] = "." |
| 196 | |
| 197 | if len(selector_list_dict["Page"]) == 0: |
| 198 | selector_list_dict["Page"].append(("html", '"html"')) |
| 199 | return var_names, selectors, selector_list_dict |
| 200 | |
| 201 | |
| 202 | def optimize_selector(selector): |
no test coverage detected
searching dependent graphs…