These are chat archives for synrc/n2o

28th
Apr 2017
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 09:48
Добрый день! Пара вопросов, скорее, стартовых.
  1. wf:q/1 возвращает в консоль true вместо ожидаемого содержимого (использовался пример из https://habrahabr.ru/post/220841/ с кодом:
    body() ->
    [ #textbox{ id=message },

    button{ postback={button_pressed}, source=[message] } ].

    event({button_pressed}) ->
    wf:info("Message: ~p",[wf:q(message)]).
ой, извиняюсь за неумелое форматирование.
видимо, что-то в DSL фреймворка изменилось?
Namdak Tonpa
@5HT
Apr 28 2017 09:50
можешь выложить свой пример на гитхаб?
чтобы мы могли склонировать и посмотреть на true
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 09:51
ок
строки 19-20.
кнопка есть, нажимается, колбэк есть, вроде бы, но в консоли браузера пишет true. То есть проходит, но, видимо значения нет.
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:06
и ошибка номер два у меня:
Line 10: error {undefined_record,dtl} in "/apps/sample/src/post.erl". Полагаю, ошибка также детская совершенно с роутами, но вроде все глаза протер.
Erlang/OTP 19 [erts-8.2], если что
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:12
если в файле https://github.com/Shirokowsky/n2o_edited_sample/blob/master/apps/sample/src/post.erl закомментировать последнюю строку, компилируется, конечно. Но интересно, отчего #dtl не цепляет.
Namdak Tonpa
@5HT
Apr 28 2017 10:21
index:Message 2: <<"12">>
index:Message: <<"11">>
у меня все работает
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:21
изображение.png
Namdak Tonpa
@5HT
Apr 28 2017 10:22
true — в консоли — это от validation.js
это хуйня
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:22
а куда тогда выводится?
Namdak Tonpa
@5HT
Apr 28 2017 10:22
в консоль сервера же
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:22
чистая. МОжет быть я не в ту консоль смотрю? Где запустил, там и смотрю
Namdak Tonpa
@5HT
Apr 28 2017 10:23
счас я тебе PR кину
на будущее — не комить ebin deps
Shirokowsky/n2o_edited_sample#1
на смотри
-include_lib("nitro/include/nitro.hrl").
-include("records.hrl").
log_modules() -> [n2o_client,n2o_nitrogen,n2o_stream,wf_convert,index].
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:36
спасибо! Роутинг запустился, пошел смотреть подробнее о том-другом, а вот лог не поехал.
про не комить ebin deps также понял.
Namdak Tonpa
@5HT
Apr 28 2017 10:37
лог не поехал пушо ты не добавил index
в log_modules() ->
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:38
добавил.
Namdak Tonpa
@5HT
Apr 28 2017 10:38
и модуль первым параметром у тебя не стоял в wf:info(?MODULE,
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:38
изображение.png
Namdak Tonpa
@5HT
Apr 28 2017 10:38
ну я ж тебе запостил месаги с двух кнопок
все работает
Mike Shirokowsky
@Shirokowsky
Apr 28 2017 10:39
ок, пошел смотреть
Namdak Tonpa
@5HT
Apr 28 2017 10:40
ты пул реквест лучше зааплай и посмотри
я нахуя его делал :-)
вместо пиздежа — пул реквесты!
вот же хуйня у тебя wf:info("Message: ~p", [Message])
Namdak Tonpa
@5HT
Apr 28 2017 22:27
info({init,_Rest},Req,State = #cx{module = Module}) ->
    case try Elements = Module:main(),
             n2o:render(Elements),
             {ok,[]}
       catch X:Y -> Stack = n2o:stack(X,Y),
             n2o:error(?MODULE,"Event Main: ~p:~p~n~p", Stack),
             {error,Stack} end of
        {ok, Init} ->
             UserCx = try Module:event(init)
             catch C:E -> Error = n2o:stack(C,E),
                          n2o:error(?MODULE,"Event Init: ~p:~p~n~p",Error),
                          {stack,Error} end,
             Actions = render_actions(n2o:actions()),
             {reply,n2o:format({io,iolist_to_binary([Init,Actions]),<<>>}),
                    Req,n2o:context(State,?MODULE,{init,UserCx})};
        {error,E} ->
             {reply,n2o:format({io,<<>>,E}),
                    Req,n2o:context(State,?MODULE,{error,E})} end;
референсная имплементация NITRO INIT
$ cloc .
370
% JSON Encoder

format({Io,Eval,Data}, json) ->
    n2o:info(?MODULE,"JSON {~p,_,_}: ~tp~n",[Io,io(Eval)]),
    ?N2O_JSON:encode([{t,104},{v,[
                     [{t,100},{v,io}],
                     [{t,109},{v,io(Eval)}],
                     [{t,109},{v,list(Data)}]]}]);

format({Atom,Data}, json) ->
    n2o:info(?MODULE,"JSON {~p,_}: ~tp~n",[Atom,list(Data)]),
    ?N2O_JSON:encode([{t,104},{v,[
                     [{t,100},{v,Atom}],
                     [{t,109},{v,list(Data)}]]}]);
% BERT Encoder

format({Io,Eval,Data}, bert) ->
    n2o:info(?MODULE,"BERT {~p,_,_}: ~tp~n",[Io,{io,io(Eval),bin(Data)}]),
    {binary,term_to_binary({Io,io(Eval),bin(Data)})};

format({bin,Data}, bert) ->
    n2o:info(?MODULE,"BERT {bin,_}: ~tp~n",[Data]),
    {binary,term_to_binary({bin,Data})};

format({Atom,Data}, bert) ->
    n2o:info(?MODULE,"BERT {~p,_}: ~tp~n",[Atom,bin(Data)]),
    {binary,term_to_binary({Atom,bin(Data)})};

format(#ftp{}=FTP, bert) ->
    n2o:info(?MODULE,"BERT {ftp,_,_,_,_,_,_,_,_,_,_,_,_}: ~tp~n",
        [FTP#ftp{data= <<>>}]),
    {binary,term_to_binary(FTP)};

format(Term, bert) ->
    {binary,term_to_binary(Term)};

format(_,_) ->
    {binary,term_to_binary({error,<<>>,
            <<"Only JSON/BERT formatters are available.">>})}.