File indexing completed on 2024-05-19 04:03:43

0001 #!/usr/bin/env python3
0002 # SPDX-FileCopyrightText: 2023 Jonathan Poelen <jonathan.poelen@gmail.com>
0003 # SPDX-License-Identifier: MIT
0004 
0005 from pathlib import Path
0006 from urllib import request
0007 import re
0008 import sys
0009 
0010 
0011 if len(sys.argv) < 1:
0012   print(f'{sys.argv[0]} syntax/less.xml', file=sys.stderr)
0013   exit(1)
0014 
0015 #
0016 # Extract functions
0017 #
0018 
0019 data = request.urlopen('https://lesscss.org/functions/').read().decode()
0020 
0021 functions = re.findall(r'</a>([-_\w\d]+)</h3>', data, flags=re.DOTALL)
0022 functions.append('%')
0023 
0024 #
0025 # Update syntax
0026 #
0027 
0028 sep = '\n            '
0029 new_list = f"""<list name="functions">
0030             <include>functions##CSS</include>
0031 
0032             <!-- Less functions, @see http://lesscss.org/functions/ -->
0033             <item>{f'</item>{sep}<item>'.join(sorted(functions))}</item>
0034         </list>"""
0035 
0036 less_filename = Path(sys.argv[1])
0037 less_content = less_filename.read_text()
0038 original_less_content = less_content
0039 less_content = re.sub(r'<list name="functions">.*?</list>',
0040                       new_list, less_content, count=1, flags=re.DOTALL)
0041 
0042 if original_less_content != less_content:
0043   less_content = re.sub(' version="(\d+)" ', lambda m: f' version="{int(m[1])+1}" ',
0044                         less_content, count=1)
0045   less_filename.write_text(less_content)