ฉันมีรหัสต่อไปนี้:
if (!EAP-Message) {
# Now check against the authorized_macs file
<%- @filename.each do |key,value| -%>
<%= key %>
if (!ok) {
<%- end -%>
eap
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
eap
}
ฉันต้องการเยื้องไฟล์อย่างถูกต้องโดยเพิ่มการเยื้อง ช่องว่าง หรือแท็บหลังแต่ละลูป เพื่อให้มีลักษณะดังนี้:
if (!EAP-Message) {
# Now check against the authorized_macs file
authorized_macs_10
if (!ok) {
authorized_macs_11
if (!ok) {
authorized_macs_12
if (!ok) {
authorized_macs_13
if (!ok) {
authorized_macs_14
if (!ok) {
eap
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
# accept
update control {
Auth-Type := Accept
}
}
}
else {
eap
}
นี่เป็นส่วนหนึ่งของ /etc/freeradius/sites-available/default ของโมดูลหุ่นกระบอก freeradius ของฉัน ซึ่งในที่สุดก็เสร็จสิ้นแล้ว ตัวแปร @filename
คือ hiera_hash ซึ่งฉันได้รับจากไฟล์ yaml นี่คือส่วนที่เกี่ยวข้อง:
test_freeradius::files:
'authorized_macs_10':
macs:
- 'aaaaa'
- 'bbbbb'
vlan: '10'
'authorized_macs_11':
macs:
- 'ccccc'
- 'ddddd'
vlan: '11'
'authorized_macs_12':
macs:
- 'eeeee'
- 'fffff'
vlan: '12'
'authorized_macs_13':
macs:
- 'ggggg'
- 'hhhhh'
vlan: '13'
'authorized_macs_14':
macs:
- 'iiiii'
- 'jjjjj'
vlan: '14'
และด้านล่างนี้คือคำจำกัดความที่ฉันใช้เพื่อสร้างเนื้อหาของไฟล์ default
นอกเหนือจากสิ่งอื่นๆ:
define test_freeradius::files (
$macs,
$vlan,
$macfile = $title,
) {
include test_freeradius::service
ensure_resource('file', '/etc/freeradius/modules/files', {
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0644',
content => template("${module_name}/files.erb"),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
)
file { "/etc/freeradius/${macfile}" :
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0644',
content => template("${module_name}/macfiles.erb"),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
ensure_resource('file', '/etc/freeradius/sites-available/default', {
ensure => 'file',
owner => 'root',
group => 'freerad',
mode => '0644',
content => template("${module_name}/default.erb"),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
)
ensure_resource('file', '/etc/freeradius/sites-enabled/default', {
ensure => 'link',
target => '/etc/freeradius/sites-available/default',
}
)
}
การวนซ้ำทำในสิ่งที่ควรทำ แต่ไม่มีการเยื้อง ฉันลองทำหลายอย่าง เช่น เพิ่ม <%= " "%>
ในหลายตำแหน่ง และสร้างตัวแปรสำหรับส่วน if (!ok) {
แต่น่าเสียดายที่ไม่ประสบความสำเร็จ บางทีฉันควรปรับโครงสร้างโค้ดใหม่หรือไม่ มีความคิดอะไรบ้าง?
@filename
ลงในตัวแปร JavaScript (อาจใช้ JSON) แล้ววนซ้ำข้อมูลใน JavaScript ได้หรือไม่ แนวทางดังกล่าวมีแนวโน้มที่จะสะอาดกว่าและเข้าใจง่ายกว่าการเขียนโปรแกรมสร้างโค้ดมาก - person mu is too short   schedule 16.05.2017