File: check_lua_classes.py

package info (click to toggle)
corsix-th 0.60-2
  • links: PTS, VCS
  • area: contrib
  • in suites: stretch
  • size: 31,624 kB
  • ctags: 6,190
  • sloc: xml: 181,440; cpp: 23,645; java: 7,959; ansic: 4,733; objc: 248; python: 210; lex: 82; yacc: 44; makefile: 24; sh: 14
file content (37 lines) | stat: -rw-r--r-- 1,298 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/python

import fileinput
import os
import re
import sys

#This regex can't find all class declaration mistakes and only checks the first few lines:
#Regex: ^class "(.+)".*\n\n(?!---@type \1\nlocal \1 = _G\["\1"])
regex = r"^class \"(.+)\".*\n\n(?!---@type \1\nlocal \1 = _G\[\"\1\"])"

print_root_regex = re.compile("Lua.*")
script_dir = os.getcwd() + "/../CorsixTH/Lua"
ignored = os.listdir(script_dir + "/languages")
problem_found = False
for root, _, files in os.walk(script_dir):
  for script in files:
    if script.endswith(".lua") and script not in ignored:
      script_string = open(root + "/" + script, 'r').read()
      for found_class in re.findall(regex, script_string, re.MULTILINE):
        if not problem_found:
          print("******* CHECK CLASS DECLARATIONS *******")
          problem_found = True
          print("Invalid/Improper Class Declarations Found:")
        print("*" + print_root_regex.search(root).group(0) + "\\" + script + ":" + found_class)

if problem_found:
  print("\nReason: The class declaration(s) didn't begin as follows:")
  print("")
  print("class \"Name\" / class \"Name\" (Parent)")
  print("")
  print("---@type Name")
  print("local Name = _G[\"Name\"]")
  print("-----------------------------------------\n")
  sys.exit(1)

sys.exit(0)