File: update_less.py

package info (click to toggle)
kf6-syntax-highlighting 6.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 47,568 kB
  • sloc: xml: 197,750; cpp: 12,850; python: 3,023; sh: 955; perl: 546; ruby: 488; pascal: 393; javascript: 161; php: 150; jsp: 132; lisp: 131; haskell: 124; ada: 119; ansic: 107; makefile: 96; f90: 94; ml: 85; cobol: 81; yacc: 71; csh: 62; erlang: 54; sql: 51; java: 47; objc: 37; awk: 31; asm: 30; tcl: 29; fortran: 18; cs: 10
file content (45 lines) | stat: -rwxr-xr-x 1,245 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2023 Jonathan Poelen <jonathan.poelen@gmail.com>
# SPDX-License-Identifier: MIT

from pathlib import Path
from urllib import request
import re
import sys


if len(sys.argv) < 1:
  print(f'{sys.argv[0]} syntax/less.xml', file=sys.stderr)
  exit(1)

#
# Extract functions
#

data = request.urlopen('https://lesscss.org/functions/').read().decode()

functions = re.findall(r'</a>([-_\w\d]+)</h3>', data, flags=re.DOTALL)
functions.append('%')

#
# Update syntax
#

sep = '\n            '
new_list = f"""<list name="functions">
            <include>functions##CSS</include>

            <!-- Less functions, @see http://lesscss.org/functions/ -->
            <item>{f'</item>{sep}<item>'.join(sorted(functions))}</item>
        </list>"""

less_filename = Path(sys.argv[1])
less_content = less_filename.read_text()
original_less_content = less_content
less_content = re.sub(r'<list name="functions">.*?</list>',
                      new_list, less_content, count=1, flags=re.DOTALL)

if original_less_content != less_content:
  less_content = re.sub(' version="(\d+)" ', lambda m: f' version="{int(m[1])+1}" ',
                        less_content, count=1)
  less_filename.write_text(less_content)