SWI-Prolog条件包含在html // 1中

时间:2014-12-21 06:33:18

标签: html prolog swi-prolog dcg

我有一些html片段依赖于在会话中设置的某些值,是否有可能以某种方式调整包含,以便我最终不会复制大量的html代码?或者也许有另一种方法可以解决这个问题,不涉及html // 1?

foo -->
  html([
    div(p('I''m always displayed')),
    {
        http_session_data(Data),
        % some other logic
    },
    div(p('I''m only displayed when there''s session data'))
  )].

代码失败:ERROR: [Thread httpd@9999_3] Failed to translate to HTML: http_session_data(Data)

1 个答案:

答案 0 :(得分:0)

我通过将逻辑放在另一个DCG并将其包含在html // 1中来解决这个问题。

(
  {
    http_session_data(Data)
  }
->
  div(p('I''m only displayed when there''s session data'))
;
  {true}
)

{true}部分是在控制台中删除错误消息。

然而,我已经改变主意并决定使用AngularJS来处理Html,因为Prolog对它的支持对于复杂的DOM来说太基础和痛苦。