Notepad++ 使用模板和列表创建内容(函数)

Notepad++ 使用模板和列表创建内容(函数)

我想创建类似的函数,其名称从文件列表中获取。其内容也将使用列表中的名称。

例如:列表在文件(fun_list.txt)中写入如下:

CLK_A_0
CLK_A_1
CLK_B_0
CLK_B_1
CLK_B_2
..
..

我的函数模板定义在(fun_template.txt)

uint32 enable_###(boolean val)
{
   ### =  val;
}

单个输出文件的预期结果为(fun_clock.c):

uint32 enable_CLK_A_0(boolean val)
{
   CLK_A_0 =  val;
}
uint32 enable_CLK_A_1(boolean val)
{
   CLK_A_1 =  val;
}
uint32 enable_CLK_B_0(boolean val)
{
   CLK_B_0 =  val;
}
uint32 enable_CLK_B_1(boolean val)
{
   CLK_B_1 =  val;
}
uint32 enable_CLK_B_2(boolean val)
{
   CLK_B_2 =  val;
}
..

如何在 notepad++ 中实现这一点?我认为使用宏我们应该能够做到这一点。

我对文件名没有任何限制(或在单独的文件中),我想轻松创建这些功能而不是手动复制。

如果 notepad++ 中没有,那么如果 windows(cmd)或 linux 中有一些简单的解决方案那就太好了。

答案1

这个小的 perl 脚本可以完成这个工作:

#!/usr/bin/perl 
use strict;
use warnings;

# define and open the three files
my $file_lst = 'fun_list.txt';         # give the full path if doesn't run in the same dir
my $file_tpl = 'fun_template.txt';
my $file_out = 'fun_clock.c';

open my $fh_l, '<', $file_lst or die "Unable to open '$file_lst': $!";
open my $fh_t, '<', $file_tpl or die "Unable to open '$file_tpl': $!";
open my $fh_o, '>', $file_out or die "Unable to open '$file_out': $!";

# read template file in "slurp" mode
my $tpl;
{
    local $/ = undef;
    $tpl =  <$fh_t>;
}
# read the list file and replace all ### in the template with the line in  list file
while(<$fh_l>) {
    chomp;
    (my $tmp = $tpl) =~ s/###/$_/g;
    print $fh_o $tmp;
}

相关内容