--- a/src/GuileHandler.h Sun Feb 03 19:02:50 2019 +0100
+++ b/src/GuileHandler.h Sun Feb 03 19:29:52 2019 +0100
@@ -76,8 +76,14 @@
return scm_string_to_symbol(scm_from_locale_string(convertor.to_bytes(name).c_str()));
}
- SCM evalGuileCode(const string_t& value) {
- return scm_eval_string(toGuileValue(&value, typeid (string_t), TypeId::STRING));
+ /**
+ * @param code guile source code e.g. (+ 1 2 3) or #t
+ * @param defaultReturnValue is returned if code is empty
+ * @return result of code execution or defaultReturnValue
+ */
+ SCM evalGuileCode(const string_t& code, SCM defaultReturnValue = SCM_BOOL_F) {
+ if (code.size()) return scm_eval_string(toGuileValue(&code, typeid (string_t), TypeId::STRING));
+ else return defaultReturnValue;
}
SCM toGuileValue(const void* value, const std::type_info& typeInfo, TypeId type) {
@@ -176,7 +182,8 @@
// TODO: > 0 ?:
if (currentAttributeIndex > 0 && currentAttributeIndex % currentReaderMetadata.size() == 0) {
- includeCurrentRecord = scm_to_bool(evalGuileCode(currentRelationConfiguration->guileWhere));
+ evalGuileCode(currentRelationConfiguration->guileForEach);
+ includeCurrentRecord = scm_to_bool(evalGuileCode(currentRelationConfiguration->guileWhere, SCM_BOOL_T));
if (includeCurrentRecord) for (auto attribute : currentWriterMetadata) writeGuileValueToAttribute(attribute);
includeCurrentRecord = false;
}