Python - 通过format 函数制作简易的代码模版,生成代码
1、编写几个代码模版
package com.wretchant.nsbd.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.springframework.cache.annotation.Cacheable;
import javax.persistence.*;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Slf4j
@Entity
@Table(name = "{table_name}")
@DynamicInsert
@DynamicUpdate
public class {class_name} extends Base implements Serializable $
private static final long serialVersionUID = {serial_id};
private String url;
private Long cognizanceId;
~
package com.wretchant.nsbd.controller;
import cn.hutool.core.util.StrUtil;
import com.wretchant.nsbd.entity.Img;
import com.wretchant.nsbd.entity.Project;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Validated
@RequestMapping("api/img")
@RestController
public class ImgController extends BaseController $
@PostMapping("save/$cognizanceId:.+~")
public String save(@PathVariable("cognizanceId") Long cognizanceId,@NotBlank String url) $
Img img = new Img();
img.setCognizanceId(cognizanceId);
img.setUrl(url);
imgRepo.saveAndFlush(img);
return "success";
~
~
package com.wretchant.nsbd.jpa;
import com.wretchant.nsbd.entity.Img;
import org.springframework.cache.annotation.Cacheable;
import java.util.List;
public interface ImgRepo extends BaseRepo<Img,Long>$
List<Img> findByDeletedIsFalseAndCognizanceId(Long cognizanceId);
~
2、编写python 代码
import random
from dir import dir_utils
def reduction(s):
return str(s).replace('$', '{').replace('~', '}')
def exec_template(path, need_print=False, **parameter):
template = open(path, encoding='utf-8').readlines()
format_template = []
for line in template:
format_line = str(line).format(**parameter)
last = reduction(format_line)
format_template.append(last)
if need_print:
print(last, end='')
return format_template
def batch_exec_template(path, need_print=False, **parameter):
templates = []
rel_dirs, rel_filenames = dir_utils.foreach(path)
for template_name in rel_filenames:
templates.append(exec_template(template_name, need_print, **parameter))
return templates
if __name__ == '__main__':
pm = {
'table_name': 'img',
'class_name': 'Img',
'serial_id': random.randint(-9999999999, 9999999999)
}
batch_exec_template('jpa_code_template', True, **pm)