for 루프의 모든 반복을 평가하는 동적 표현식에 컨텍스트를 전달하려고합니다. 로드 문자열은 로컬 변수가 액세스 할 수 없음을 의미하는 전역 컨텍스트 내에서만 평가된다는 점을 이해합니다. 필자의 경우 문자열 평가를 위해 로컬을 전역으로 변환하여이 제한을 해결합니다. 내가 좋아하는 뭔가를 할 수있는 곳 유혹 엔진과 같은 XSLT를 구축하기 위해 (루아 마스터 이외의)Lua : 컨텍스트를 loadstring에 전달 하시겠습니까?
require 'cosmo'
model = { { player = "Cliff", age = 35, gender = "male" }, { player = "Ally", age = 36, gender = "female" }, { player = "Jasmine", age = 13, gender = "female" }, { player = "Lauren", age = 6.5, gender = "female" } }
values = { eval = function(args)
output = ''
condition = assert(loadstring('return ' .. args.condition))
for _, it in ipairs(model) do
each = it
if condition() then
output = output .. each.player .. ' age: ' .. each.age .. ' ' .. '\n'
end
end
return output
end }
template = "$eval{ condition = 'each.age < 30' }"
result = cosmo.fill(template, values)
print (result)
내 궁극적 인 목표입니다 :
apply_templates{ match = each.age > 30}[[<parent-player>$each.player</parent-player>]]
apply_templates{ match = each.age > 30}[[<child-player>$each.player</child-player>]]
을 ... 그리고 다른 생성 여기에 내가 가진 무엇 출력. 현재 저는 세계를 통해 지역 맥락을 공유하는 위의 매파적인 수단에 매달려 있습니다. 여기있는 사람이 내가하려고하는 일을 어떻게 수행 할 것인지에 대한 더 나은 통찰력을 가지고 있습니까?
저는 [웹 데이터 마이너] (https://github.com/mkottman/wdm/blob/master/wdm.lua#L156)에서 저의 가난한 사람의 XML 요소 검색에서 비슷한 것을 사용합니다. –
훌륭하게 작동합니다! 고맙습니다! :) – Cliff