action_jq.erl 1.3 KB

1234567891011121314151617181920212223242526
  1. -module(action_jq).
  2. %%-author('Rusty Klophaus').
  3. %%-author('Andrey Martemyanov').
  4. -include_lib("nitro/include/nitro.hrl").
  5. -compile([export_all, nowarn_export_all]).
  6. render_action( #jq{property = undefined, target = T, method = Methods, args = Args0, format = F} ) ->
  7. Args = case F of
  8. "'~s'" -> [ nitro:render(Args0) ];
  9. _ -> Args0
  10. end,
  11. Format = fun(A) when is_tuple(A) orelse is_integer(A) ->
  12. nitro:render(A);
  13. (A) -> nitro:to_list(A)
  14. end,
  15. RenderedArgs = string:join([ Format(A) || A <- Args], ","),
  16. [ [ wf_event:target(T), ".", nitro:to_binary(M), "(", nitro:f(F, [RenderedArgs]), ");" ] || M <- Methods];
  17. render_action( #jq{target = T, method = undefined, property = P, right = R, args = simple}) -> [ nitro:to_binary(T), ".", nitro:to_binary(P), "='", nitro:render(R), "';" ];
  18. render_action( #jq{target = T, method = undefined, property = P, right = undefined} ) -> [ wf_event:target(T), ".", nitro:to_binary(P), ";" ];
  19. render_action( #jq{target = T, method = undefined, property = P, right = #jq{} = R}) -> [ wf_event:target(T), ".", nitro:to_binary(P), "=", nitro:render(R), ";" ];
  20. render_action( #jq{target = T, method = undefined, property = P, right = R}) -> [ wf_event:target(T), ".", nitro:to_binary(P), "='", nitro:render(R), "';" ].