Stu*_*rys 4 perl perl-module dist-zilla
有没有办法在文件中有一个用户定义的参数,然后dist.ini
设置参数的值.例如,文件可能包含{{$THE_ANSWER}}
,dist.ini
文件将提供类似的值THE_ANSWER = 42
?我很高兴使用dist::zilla
perl发行版,我在理解它如何将文件视为模板时遇到了问题.似乎只有几个硬编码参数,可以通过插件改变,可以用于任何文件.一个这样的参数是可用的{{$ NEXT}}变量[NextRelease]
中Changes
的文件.
我阅读了教程并在CPAN上搜索了模块,无法确定这是否可行.使用[GenerateFile]
插件将整个文件放在文件中是不可接受的解决方法dist.ini
.除了缺乏灵活性和简单的丑陋之外,似乎不可能通过这种方式添加具有领先白色空间的线条.
我要做的是使用存储或插件来存储变量.Stashes就像插件一样,但它们除了存储数据之外什么都不做,它们可以放在你的全局配置中dist.ini
.
[%Vars]
favorite_pie = pumpkin
Run Code Online (Sandbox Code Playgroud)
然后你就可以这样对待他们:
$zilla->stash_named('%Vars')->favorite_pie
Run Code Online (Sandbox Code Playgroud)
这假设你已经创建了Dist :: Zilla :: Stash :: Vars并给它一个favorite_pie属性.
但是,你可以制作一个完全通用的存储,它接受任何东西作为关键.为此,我将查看Dist :: Zilla :: Plugin :: Prereqs的源代码,它允许任意配置选项并将其推入其BUILDSARGS
方法中的哈希属性.
您可以制作Dist :: Zilla :: Stash :: Generic,然后根据需要多次注册,原因各不相同:
[%Generic / Pies]
favorite = pumpkin
hated = rhubarb
firstever = quince
[%Generic / Passwords]
pause = PeasAreDelicious
google = secret
reddit = SecretPeasAreDelicious
Run Code Online (Sandbox Code Playgroud)
...然后,根据需要,在模板中说...
{{ $zilla->stash_named('Passwords')->get_var('pause' }}
Run Code Online (Sandbox Code Playgroud)
如果我制作了大量使用这种泛型的文件,我会给它们的Text :: Template实例传递一个这样的闭包get_password
:
get_password => sub { $zilla->stash_named('Passwords')->get_var($_[0]) }
Run Code Online (Sandbox Code Playgroud)
然后您的模板可能包括:
Login with: {{ get_password("pause") }}
Run Code Online (Sandbox Code Playgroud)
这个答案显然会留给你一些消息来源,但我认为应该指出我用来做你想做的所有事情.
归档时间: |
|
查看次数: |
186 次 |
最近记录: |