# # # # get_charset_dat() # # # include "templates.util.base_util"; subroutine(get_charset_dat, ( # We sort the charset groups but not the charset lists due mixed letters and numbers, so we use the order as defined in charset_structure. node charset_node = "templates.util.convert_charset.charset_structure"; sort(charset_node, "field:label,alphabetical,ascending"); node item; node subitem; string group_name; string group_label; string charset_string; string dat = "["; string set_dat; foreach item charset_node ( group_name = node_name(item); group_label = get_expanded_label(@item{"label"}); charset_string = node_value(subnode_by_name(item, "set")); charset_string = replace_all(charset_string, " ", ""); delete_node("volatile.temp.charset"); split(charset_string, ",", "volatile.temp.charset"); set_dat = "["; foreach subitem "volatile.temp.charset" ( set_dat .= '"' . encode_json(@subitem) . '",'; ); set_dat = replace_last(set_dat, ",", "]"); dat .= '{'; dat .= add_json("name", group_name, "string"); dat .= add_json("label", group_label, "string"); dat .= add_json("charsets", set_dat, "obj"); dat = close_json(dat) . ","; ); dat = replace_last(dat, ",", "]"); debug_message("\n#### charset_dat:\n" . dat . "\n\n"); dat; ));