remove whitespace from output
This commit is contained in:
		
					parent
					
						
							
								b9c53717e3
							
						
					
				
			
			
				commit
				
					
						4145129974
					
				
			
		
					 4 changed files with 57 additions and 38 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -37,3 +37,6 @@ secret-key | |||
| *.mo | ||||
| *.log | ||||
| *.sql | ||||
| 
 | ||||
| # to keep empty dirs | ||||
| !.gitkeep | ||||
|  | @ -71,7 +71,7 @@ | |||
|         </div> | ||||
|         <div class="description select-configuration input form-group justify-center"> | ||||
|             <label for="config">OS</label> | ||||
|             <select name="config" id=""> | ||||
|             <select name="config"> | ||||
|                 {% for template in templates %} | ||||
|                 <option value="{{template.opennebula_vm_template_id}}">{{template.name}}</option> | ||||
|                 {% endfor %} | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ Example: | |||
| """ | ||||
| 
 | ||||
| # import csv | ||||
| # import json | ||||
| import json | ||||
| import logging | ||||
| import os | ||||
| import re | ||||
|  | @ -45,8 +45,8 @@ RE_PATTERNS = { | |||
|         '^\s*\@media([^{]+)\{\s*([\s\S]*?})\s*}' | ||||
|     ), | ||||
|     'css_selector': ( | ||||
|         '^\s*([.#\[:_A-Za-z][^{]*)' | ||||
|         '{([\s\S]*?)}' | ||||
|         '^\s*([.#\[:_A-Za-z][^{]*?)\s*' | ||||
|         '\s*{([\s\S]*?)\s*}' | ||||
|     ), | ||||
|     'html_class': 'class=[\'\"]([a-zA-Z0-9-_\s]*)', | ||||
|     'html_id': 'id=[\'\"]([a-zA-Z0-9-_]*)' | ||||
|  | @ -81,11 +81,12 @@ class Command(BaseCommand): | |||
| 
 | ||||
|     def handle(self, *args, **options): | ||||
|         apps_list = options['apps'] | ||||
|         report = {} | ||||
|         for app in apps_list: | ||||
|             if options['css']: | ||||
|                 self.optimize_css(app) | ||||
|             # else: | ||||
|             #     optimize_all(app) | ||||
|                 report[app] = self.optimize_css(app) | ||||
|         # write report | ||||
|         write_report(report) | ||||
| 
 | ||||
|     def optimize_css(self, app_name): | ||||
|         """Optimize declarations inside a css stylesheet | ||||
|  | @ -103,8 +104,7 @@ class Command(BaseCommand): | |||
|             'css_dup': get_css_duplication(css_selectors), | ||||
|             'css_unused': get_css_unused(css_selectors, html_selectors) | ||||
|         } | ||||
|         # write report | ||||
|         write_report(report) | ||||
|         return report | ||||
| 
 | ||||
| 
 | ||||
| def get_files(app_name): | ||||
|  | @ -192,8 +192,11 @@ def get_selectors_css(files): | |||
|                 data = f.read() | ||||
|             media_selectors[file] = string_match_pattern(data, 'css_media') | ||||
|             new_data = string_remove_pattern(data, 'css_media') | ||||
|             default_match = string_match_pattern(new_data, 'css_selector') | ||||
|             selectors[file] = { | ||||
|                 'default': string_match_pattern(new_data, 'css_selector') | ||||
|                 'default': [ | ||||
|                     [' '.join(grp.split()) for grp in m] for m in default_match | ||||
|                 ] | ||||
|             } | ||||
|     # get declarations from media queries | ||||
|     for file, match_list in media_selectors.items(): | ||||
|  | @ -224,9 +227,10 @@ def get_selectors_html(files): | |||
|     selectors = {} | ||||
|     for file in files: | ||||
|         results = templates_match_pattern(file, ['html_class', 'html_id']) | ||||
|         class_dict = {c: 1 for match in results[0] for c in match.split()} | ||||
|         selectors[file] = { | ||||
|             'class': results[0], | ||||
|             'id': results[1], | ||||
|             'classes': list(class_dict.keys()), | ||||
|             'ids': results[1], | ||||
|         } | ||||
|     return selectors | ||||
| 
 | ||||
|  | @ -284,8 +288,8 @@ def string_remove_pattern(data, patterns): | |||
|         patterns (list or str): The pattern(s) to be removed from the file | ||||
| 
 | ||||
|     Returns: | ||||
|         str: The new string with all instance of matching pattern removed | ||||
|         from it | ||||
|         str: The new string with all instance of matching pattern | ||||
|         removed from it | ||||
|     """ | ||||
|     if not isinstance(patterns, str): | ||||
|         for p in patterns: | ||||
|  | @ -353,23 +357,30 @@ def get_css_unused(css_selectors, html_selectors): | |||
|         html_selectors (dict): A dictonary containing the 'class' and 'id' | ||||
|         declarations from all html files | ||||
|     """ | ||||
|     pass | ||||
|     with open('utils/optimize/test.json', 'w') as f: | ||||
|         json.dump([html_selectors, css_selectors], f, indent=4) | ||||
|     # print(html_selectors, css_selectors) | ||||
| 
 | ||||
| 
 | ||||
| def write_report(results, filename='frontend'): | ||||
| def write_report(all_reports, filename='frontend'): | ||||
|     """Write the generated report to a file for re-use | ||||
| 
 | ||||
|     Args; | ||||
|         results (dict): A dictonary of results obtained from different tests | ||||
|         all_reports (dict): A dictonary of report obtained from different tests | ||||
|         filename (str): An optional suffix for the output file | ||||
|     """ | ||||
|     full_filename = '../optimize_' + filename + '.html' | ||||
|     full_filename = 'utils/optimize/optimize_' + filename + '.html' | ||||
|     output_file = os.path.join( | ||||
|         settings.PROJECT_DIR, full_filename | ||||
|     ) | ||||
|     with open('utils/optimize/op_frontend.json', 'w') as f: | ||||
|         json.dump(all_reports, f, indent=4) | ||||
|     with open(output_file, 'w', newline='') as f: | ||||
|         data = template.loader.render_to_string('utils/report.html', results) | ||||
|         f.write(data) | ||||
|         f.write( | ||||
|             template.loader.render_to_string( | ||||
|                 'utils/report.html', {'all_reports': all_reports} | ||||
|             ) | ||||
|         ) | ||||
|         # w = csv.writer(f) | ||||
|         # print(zip_longest(*results)) | ||||
|         # for r in zip_longest(*results): | ||||
|  |  | |||
|  | @ -22,8 +22,11 @@ | |||
|           <h3>Duplicate Rules in a Stylesheet</h3> | ||||
|           <hr> | ||||
|         </div> | ||||
|         {% for app, report in all_reports.items %} | ||||
|           <div class="card-text"> | ||||
|           {% for file, media_group in css_dup.items %} | ||||
|             <h4 class="pb-2">{{app}}</h4> | ||||
|             <div class="pl-2"> | ||||
|               {% for file, media_group in report.css_dup.items %} | ||||
|                 <strong>{{file}}</strong> | ||||
|                 <ul class="list-unstyled"> | ||||
|                   {% for media, rules in media_group.items %} | ||||
|  | @ -42,6 +45,8 @@ | |||
|               {% endfor %} | ||||
|             </div> | ||||
|           </div> | ||||
|         {% endfor %} | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|   {% for app in app_list %} {% endfor %} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue