diff --git a/generic/session.anubis b/generic/session.anubis index 6703fc7..0a2ba96 100644 --- a/generic/session.anubis +++ b/generic/session.anubis @@ -1059,6 +1059,70 @@ public define One remove_any(_fields, fields_set_t, _field_name) . + /*************** Serialized Type *****************/ + +public define One + put_Serialized_type + ( + Var(List(Session_Field)) fields, + String _field_name, + $T _field_value + )= + put_ByteArray(fields, _field_name, serialize(_field_value)) +. + +public define One + replace_Serialized_type + ( + Var(List(Session_Field)) _fields, + String _field_name, + $T _field_value + )= + replace_any(_fields, byte_array_t, _field_name, byte_array(serialize(_field_value))) +. + +public define One + remove_Serialized_type + ( + Var(List(Session_Field)) _fields, + String _field_name + )= + remove_any(_fields, byte_array_t, _field_name) +. + +public define Maybe($T) + get_Serialized_type + ( + Var(List(Session_Field)) fields, + String _field_name, + ) = + + if get_ByteArray(fields, _field_name) is + { + failure then failure, + success(ba_type) then unserialize(ba_type) + } +. + +public define $T + get_Serialized_type + ( + Var(List(Session_Field)) fields, + String _field_name, + $T default + ) = + + if get_ByteArray(fields, _field_name) is + { + failure then default, + success(ba_type) then + if unserialize(ba_type) is + { + failure then default, + success(value) then value + } + } +. /************************************************/ diff --git a/web/CXM_web_session.anubis b/web/CXM_web_session.anubis index 1ba9b7a..d011239 100644 --- a/web/CXM_web_session.anubis +++ b/web/CXM_web_session.anubis @@ -89,14 +89,19 @@ public define One set_page(WEB_Session s, String n)= replace_String(s.fields public define One set_page(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_PAGE", n). public define String get_page(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE", ""). -public define One set_page_title(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_PAGE_TITLE", n). -public define One set_page_title(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_PAGE_TITLE", n). -public define String get_page_title(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE_TITLE", ""). - -public define One set_renderer(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_PAGE_RENDERER", n). -public define One set_renderer(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_PAGE_RENDERER", n). -public define String get_renderer(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE_RENDERER", ""). - +public define One set_page_title(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_PAGE_TITLE", n). +public define One set_page_title(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_PAGE_TITLE", n). +public define String get_page_title(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE_TITLE", ""). + +public define One set_renderer(WEB_Session s, String n) = replace_String(s.fields, "AWS_CURRENT_PAGE_RENDERER", n). +public define One set_renderer(Var(List(Session_Field)) fields, String n) = replace_String(fields, "AWS_CURRENT_PAGE_RENDERER", n). +public define String get_renderer(WEB_Session s) = get_String (s.fields, "AWS_CURRENT_PAGE_RENDERER", ""). + +public define One put_Serialized_type(WEB_Session s, String n, $T type) = put_Serialized_type(s.fields, n, type). +public define One replace_Serialized_type(WEB_Session s, String n, $T type) = replace_Serialized_type(s.fields, n, type). +public define Maybe($T) get_Serialized_type(WEB_Session s, String n) = get_Serialized_type(s.fields, n). +public define $T get_Serialized_type(WEB_Session s, String n, $T default) = get_Serialized_type(s.fields, n, default). +public define One remove_Serialized_type(WEB_Session s, String n) = remove_Serialized_type(s.fields, n). public define String dump_WEB_Session_Fields -- libgit2 0.21.4