Merge updates from master

This commit is contained in:
Repository mirror & CI
2023-07-27 14:01:37 +00:00
2 changed files with 88 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
commit fc8a14e84acd8a4baa2d98bdec4e7ac18ed137a5
Author: Mazunki Hoksaas <rolferen@gmail.com>
Date: Thu Jul 27 15:04:16 2023 +0200
add support for python3.11 re module
diff --git a/lizard_languages/code_reader.py b/lizard_languages/code_reader.py
index 1eb95d5..9e12658 100644
--- a/lizard_languages/code_reader.py
+++ b/lizard_languages/code_reader.py
@@ -4,6 +4,8 @@ Base class for all language parsers
import re
from copy import copy
+from functools import reduce
+from operator import or_
class CodeStateMachine(object):
@@ -112,7 +114,7 @@ class CodeReader:
if not token_class:
token_class = create_token
- def _generate_tokens(source, add):
+ def _generate_tokens(source, add, flags=re.NOFLAG):
# DO NOT put any sub groups in the regex. Good for performance
_until_end = r"(?:\\\n|[^\n])*"
combined_symbols = ["<<=", ">>=", "||", "&&", "===", "!==",
@@ -136,7 +138,7 @@ class CodeReader:
r"|\\\n" +
r"|\n" +
r"|[^\S\n]+" +
- r"|.)", re.M | re.S)
+ r"|.)", re.M | re.S | flags)
macro = ""
for match in token_pattern.finditer(source):
token = token_class(match)
@@ -154,7 +156,21 @@ class CodeReader:
if macro:
yield macro
- return _generate_tokens(source_code, addition)
+ flag_dict = {
+ 'a': re.A, # ASCII-only matching
+ 'i': re.I, # Ignore case
+ 'L': re.L, # Locale dependent
+ 'm': re.M, # Multi-line
+ 's': re.S, # Dot matches all
+ 'u': re.U, # Unicode matching
+ 'x': re.X # Verbose
+ }
+
+ pattern = re.compile(r'\(\?[aiLmsux]+\)')
+ re_flags = ''.join(opt[2:-1] for opt in pattern.findall(addition))
+ flags = reduce(or_, (flag_dict[flag] for flag in re_flags), re.NOFLAG)
+
+ return _generate_tokens(source_code, pattern.sub('', addition), flags=flags)
def __call__(self, tokens, reader):
self.context = reader.context

View File

@@ -0,0 +1,28 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11,12} )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1
DESCRIPTION="A simple code complexity analyser, supports most of the popular languages."
HOMEPAGE="http://www.lizard.ws/"
SRC_URI="https://github.com/terryyin/lizard/archive/${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64"
LICENSE="MIT"
SLOT="0"
DEPEND="
test? (
dev-python/jinja[${PYTHON_USEDEP}]
dev-python/mock[${PYTHON_USEDEP}]
)
"
PATCHES=( "${FILESDIR}/${P}-py3.11.patch" )
distutils_enable_tests pytest