| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- # -*- coding: utf-8 -*-
- """驼峰迁移补充:Params/本地工具方法的 key 字符串参数转驼峰。
- 覆盖形如 Params.intOrNull(data, "category_id")、firstInt(params, "user_id", "userId") 的调用。
- 第一参数限定 params/form/data/body/all/values/query/request 等变量名,避免误伤。
- """
- import re
- from pathlib import Path
- from _root import ROOT
- SRC = ROOT / "yoshop-java" / "src" / "main" / "java"
- SNAKE = re.compile(r'^[a-z]+(_[a-z0-9]+)+$')
- CALL = re.compile(
- r'((?:\w+\.)?\w+\((?:params|form|data|body|all|values|query|request|order|\w*Map),\s*")([a-z0-9_]+)(")')
- def to_camel(s):
- return re.sub(r'_([a-z0-9])', lambda m: m.group(1).upper(), s)
- changed = []
- n = 0
- for f in sorted(SRC.rglob("*.java")):
- text = f.read_text(encoding="utf-8")
- orig = text
- def repl(m):
- global n
- key = m.group(2)
- if not SNAKE.match(key):
- return m.group(0)
- n += 1
- return m.group(1) + to_camel(key) + m.group(3)
- text = CALL.sub(repl, text)
- if text != orig:
- f.write_text(text, encoding="utf-8")
- changed.append(str(f.relative_to(SRC)))
- print("改动 %d 个文件、%d 处" % (len(changed), n))
- for c in changed:
- print(" ", c)
|