anchor.diff:  
       mo_repo ?= lcl_app=>repo_srv( )->get( iv_repo_key ).
       mo_stage = lcl_app=>repo_srv( )->get_stage( iv_repo_key ).
  -  ENDMETHOD.
  -
  -  METHOD update_userdata.
  -
  -    DATA: lo_user TYPE REF TO lcl_persistence_user.
  -
  -    lo_user = lcl_app=>user( ).
  -    lo_user->set_username( is_fields-username ).
  -    lo_user->set_email( is_fields-email ).
  -
  -  ENDMETHOD.
  -
  -  METHOD lif_gui_page~on_event.
  -
  -    CASE iv_action.
  -      WHEN 'commit_post'.
  -        push( it_postdata ).
  -        "lcl_app=>repo_srv( )->free_stage( ??? ).
  -*        MESSAGE 'POST PUSHED' TYPE 'S' DISPLAY LIKE 'S'.
  -        rv_state = gc_event_state-go_back_to_bookmark.
  -      WHEN 'commit_cancel'.
  -        rv_state = gc_event_state-go_back.
  -    ENDCASE.
  -
  -  ENDMETHOD.
  -
  -  METHOD push.
  -
  -    DATA: ls_fields  TYPE ty_fields,
  -          ls_comment TYPE ty_comment.
  -
  -
  -    ls_fields = parse( it_postdata ).
  -
  -    update_userdata( ls_fields ).
  -
  -    IF ls_fields-username IS INITIAL.
  -      _raise 'empty username'.
  -    ENDIF.
  -    IF ls_fields-email IS INITIAL.
  -      _raise 'empty email'.
  -    ENDIF.
  -    IF ls_fields-comment IS INITIAL.
  -      _raise 'empty comment'.
  -    ENDIF.
  -
  -    ls_comment-username = ls_fields-username.
  -    ls_comment-email    = ls_fields-email.
  -    ls_comment-comment  = ls_fields-comment.
  -
  -    IF NOT ls_fields-body IS INITIAL.
  -      CONCATENATE ls_comment-comment gc_newline ls_fields-body
  -        INTO ls_comment-comment.
  -    ENDIF.
  -
  -    mo_repo->push( is_comment = ls_comment
  -                   io_stage   = mo_stage ).
  -
  -    COMMIT WORK.
  -
  -  ENDMETHOD.
  -
  -  METHOD parse.
  -
  -    CONSTANTS: lc_replace TYPE string VALUE '<<new>>'.
  -
  -    DATA: lv_string TYPE string,
  -          lt_fields TYPE tihttpnvp.
  -
  -    FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
  -
  -
  -    CONCATENATE LINES OF it_postdata INTO lv_string.
  -
  -    REPLACE ALL OCCURRENCES OF gc_newline IN lv_string WITH lc_replace.
  -
  -    lt_fields = cl_http_utility=>if_http_utility~string_to_fields( lv_string ).
  -
  -    READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'username' ##NO_TEXT.
  -    ASSERT sy-subrc = 0.
  -    rs_fields-username = <ls_field>-value.
  -
  -    READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'email' ##NO_TEXT.
  -    ASSERT sy-subrc = 0.
  -    rs_fields-email = <ls_field>-value.
  -
  -    READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'comment' ##NO_TEXT.
  -    ASSERT sy-subrc = 0.
  -    rs_fields-comment = <ls_field>-value.
  -
  -    READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'body' ##NO_TEXT.
  -    ASSERT sy-subrc = 0.
  -    rs_fields-body = <ls_field>-value.
  -    REPLACE ALL OCCURRENCES OF lc_replace IN rs_fields-body WITH gc_newline.
  -
     ENDMETHOD.
   
     METHOD render_stage.
  
positive.code:       IMPORTING iv_string        TYPE clike
        RETURNING VALUE(rs_key)    TYPE lcl_persistence_db=>ty_content.
  
  ENDCLASS.       "lcl_html_action_utils DEFINITION
  
  *----------------------------------------------------------------------*
  
negative.code:     ENDIF.
  
    ENDMETHOD.                    "dbkey_decode
  
    METHOD parse_commit_request.
  
      CONSTANTS: lc_replace TYPE string VALUE '<<new>>'.
  
      DATA: lv_string TYPE string,
            lt_fields TYPE tihttpnvp.
  
      FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
  
  
      CONCATENATE LINES OF it_postdata INTO lv_string.
  
      REPLACE ALL OCCURRENCES OF gc_newline IN lv_string WITH lc_replace.
  
      lt_fields = cl_http_utility=>if_http_utility~string_to_fields( lv_string ).
  
      READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'username' ##NO_TEXT.
      ASSERT sy-subrc = 0.
      rs_fields-username = <ls_field>-value.
  
      READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'email' ##NO_TEXT.
      ASSERT sy-subrc = 0.
      rs_fields-email = <ls_field>-value.
  
      READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'comment' ##NO_TEXT.
      ASSERT sy-subrc = 0.
      rs_fields-comment = <ls_field>-value.
  
      READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'body' ##NO_TEXT.
      ASSERT sy-subrc = 0.
      rs_fields-body = <ls_field>-value.
      REPLACE ALL OCCURRENCES OF lc_replace IN rs_fields-body WITH gc_newline.
  
    ENDMETHOD.                    "parse_commit_request
  
  
  ENDCLASS.       "lcl_html_action_utils IMPLEMENTATION
  
  