diff options
Diffstat (limited to 'src/doc_reform/meta/metadoc_from_src_functions.d')
-rw-r--r-- | src/doc_reform/meta/metadoc_from_src_functions.d | 149 |
1 files changed, 75 insertions, 74 deletions
diff --git a/src/doc_reform/meta/metadoc_from_src_functions.d b/src/doc_reform/meta/metadoc_from_src_functions.d index 557bfef..56d5db5 100644 --- a/src/doc_reform/meta/metadoc_from_src_functions.d +++ b/src/doc_reform/meta/metadoc_from_src_functions.d @@ -51,6 +51,7 @@ // abstraction of sisu markup for downstream processing // metadoc_from_src.d module doc_reform.meta.metadoc_from_src_functions; +@safe: template docAbstractionFunctions() { // ↓ abstraction imports import @@ -111,11 +112,11 @@ template docAbstractionFunctions() { auto node_construct = NodeStructureMetadata(); // ↓ abstraction function emitters // ↓ - emitters - @safe pure struct OCNemitter { + pure struct OCNemitter { int ocn_digit, ocn_object_number, ocn_on_, ocn_off_, ocn_bkidx, ocn_bkidx_; string object_identifier; bool ocn_is_off; - @safe auto ocn_emitter(int ocn_status_flag) { + auto ocn_emitter(int ocn_status_flag) { OCNset ocn; assert(ocn_status_flag <= eN.ocn.reset); ocn_object_number = ocn_bkidx = 0; @@ -159,7 +160,7 @@ template docAbstractionFunctions() { invariant() { } } - @safe pure ObjGenericComposite obj_heading_ancestors()( + pure ObjGenericComposite obj_heading_ancestors()( ObjGenericComposite obj, string[] lv_ancestors_txt, ) { @@ -200,10 +201,10 @@ template docAbstractionFunctions() { } return obj; } - @safe static OCNset ocn_emit(int ocn_status_flag) { + static OCNset ocn_emit(int ocn_status_flag) { return object_citation_number.ocn_emitter(ocn_status_flag); } - @safe static uint[string] _check_ocn_status_()( + static uint[string] _check_ocn_status_()( char[] line, uint[string] pith, ) { @@ -272,7 +273,7 @@ template docAbstractionFunctions() { return ret; } // ↓ - reset object - @safe static string[string] object_reset()(string[string] an_object) { + static string[string] object_reset()(string[string] an_object) { an_object.remove("body_nugget"); an_object.remove("substantive"); an_object.remove("is"); @@ -282,7 +283,7 @@ template docAbstractionFunctions() { } // ↑ - resets // ↓ - markup text by line - @safe char[] font_faces_line()(char[] textline) { + char[] font_faces_line()(char[] textline) { static auto rgx = RgxI(); static auto mkup = InlineMarkup(); if (textline.match(rgx.inline_faces_line)) { @@ -302,7 +303,7 @@ template docAbstractionFunctions() { } return textline; } - @safe auto inline_markup_faces(L)(L line) { + auto inline_markup_faces(L)(L line) { static auto rgx = RgxI(); static auto mkup = InlineMarkup(); line = replaceAll!(m => mkup.quote_o ~ m[1] ~ mkup.quote_c)(line, rgx.within_quotes); @@ -313,7 +314,7 @@ template docAbstractionFunctions() { } return line; } - @safe static string links_and_images()(string obj_txt) { + static string links_and_images()(string obj_txt) { static auto rgx = RgxI(); static auto mkup = InlineMarkup(); if (obj_txt.match(rgx.smid_inline_url_generic)) { @@ -353,7 +354,7 @@ template docAbstractionFunctions() { } return obj_txt; } - @safe char[] _doc_header_and_make_substitutions_(CMM)( + char[] _doc_header_and_make_substitutions_(CMM)( char[] line, CMM conf_make_meta, ) { @@ -368,7 +369,7 @@ template docAbstractionFunctions() { } return line; } - @safe char[] _doc_header_and_make_substitutions_fontface_(CMM)( + char[] _doc_header_and_make_substitutions_fontface_(CMM)( char[] line, CMM conf_make_meta, ) { @@ -395,7 +396,7 @@ template docAbstractionFunctions() { } // ↑ - markup by line // ↓ - text by line (blocks etc.) - @safe ST_txt_by_line_block_start txt_by_line_block_start()( + ST_txt_by_line_block_start txt_by_line_block_start()( char[] line, uint[string] pith, uint[string] dochas, @@ -529,7 +530,7 @@ template docAbstractionFunctions() { } return ret; } - @safe ST_txt_by_line_block_generic txt_by_line_block_group()( + ST_txt_by_line_block_generic txt_by_line_block_group()( char[] line, string[string] an_object, uint[string] pith, @@ -567,7 +568,7 @@ template docAbstractionFunctions() { } return ret; } - @safe ST_txt_by_line_block_generic txt_by_line_block_block()( + ST_txt_by_line_block_generic txt_by_line_block_block()( char[] line, string[string] an_object, uint[string] pith, @@ -605,7 +606,7 @@ template docAbstractionFunctions() { } return ret; } - @safe ST_txt_by_line_block_poem txt_by_line_block_poem(CMM)( + ST_txt_by_line_block_poem txt_by_line_block_poem(CMM)( char[] line, string[string] an_object, uint[string] pith, @@ -807,7 +808,7 @@ template docAbstractionFunctions() { } return ret; } - @safe ST_txt_by_line_block_generic txt_by_line_block_code()( + ST_txt_by_line_block_generic txt_by_line_block_code()( char[] line, string[string] an_object, uint[string] pith, @@ -920,7 +921,7 @@ template docAbstractionFunctions() { } return ret; } - @safe ST_txt_by_line_block_generic txt_by_line_block_quote()( + ST_txt_by_line_block_generic txt_by_line_block_quote()( char[] line, string[string] an_object, uint[string] pith, @@ -1095,7 +1096,7 @@ template docAbstractionFunctions() { } // ↑ - text by line // ↓ - para - @safe string[string][string] inline_para_link_anchor()( + string[string][string] inline_para_link_anchor()( string[string] an_object, string[string] tag_in_seg, string[string][string] tag_assoc @@ -1111,7 +1112,7 @@ template docAbstractionFunctions() { } return tag_assoc; } - @safe ST_flow_para_match flow_para_match_()( + ST_flow_para_match flow_para_match_()( char[] line, string[string] an_object, string an_object_key, @@ -1167,7 +1168,7 @@ template docAbstractionFunctions() { } // ↑ - para // ↓ - heading - @safe ST_flow_heading_found flow_heading_found_()( + ST_flow_heading_found flow_heading_found_()( char[] line, string[string] heading_match_str, string[] _make_unmarked_headings, @@ -1252,7 +1253,7 @@ template docAbstractionFunctions() { } return ret; } - @safe ST_flow_heading_make_set flow_heading_make_set_()( + ST_flow_heading_make_set flow_heading_make_set_()( char[] line, int[string] line_occur, return ref Regex!(char)[string] heading_match_rgx, @@ -1300,7 +1301,7 @@ template docAbstractionFunctions() { } return ret; } - @safe auto flow_heading_matched_(CMM)( + auto flow_heading_matched_(CMM)( char[] line, string[string] an_object, int[string] line_occur, @@ -1491,7 +1492,7 @@ template docAbstractionFunctions() { } // ↑ - heading // ↓ - table - @safe ObjGenericComposite flow_table_instructions(H)( + ObjGenericComposite flow_table_instructions(H)( ObjGenericComposite table_object, H table_head, ) { @@ -1516,7 +1517,7 @@ template docAbstractionFunctions() { } return table_object; } - @safe ST_flow_table_array_munge flow_table_array_munge()( + ST_flow_table_array_munge flow_table_array_munge()( ObjGenericComposite table_object, string[][] table_array, ) { @@ -2045,7 +2046,7 @@ template docAbstractionFunctions() { return ret; } // ↓ - object set - @safe ObjGenericComposite set_object_heading()( + ObjGenericComposite set_object_heading()( string level, string part, string section, @@ -2076,7 +2077,7 @@ template docAbstractionFunctions() { } return comp_obj; } - @safe ObjGenericComposite set_object_generic()( + ObjGenericComposite set_object_generic()( string part, string section, string type, @@ -2098,7 +2099,7 @@ template docAbstractionFunctions() { } // ↑ - object set // ↓ - object inline munge - @safe static struct ObjInlineMarkupMunge { + static struct ObjInlineMarkupMunge { string[string] obj_txt; int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus; string asterisks_, plus_; @@ -2112,7 +2113,7 @@ template docAbstractionFunctions() { n_foot_sp_asterisk = 0; n_foot_sp_plus = 0; } - @safe static auto images()(string obj_txt_in) { + static auto images()(string obj_txt_in) { static auto mng = InlineMarkup(); // url matched obj_txt_in = obj_txt_in.replaceAll(rgx.inline_notes_al_special, ""); // TODO reinstate when special footnotes are implemented @@ -2136,7 +2137,7 @@ template docAbstractionFunctions() { } return obj_txt_in; } - @safe ST_txtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) { + ST_txtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) { // endnotes (regular) bool flg_notes_reg = false; bool flg_notes_star = false; @@ -2208,7 +2209,7 @@ template docAbstractionFunctions() { } return ret; } - @safe private ST_txtPlusHasFootnotesUrlsImages object_notes_and_links_()( + private ST_txtPlusHasFootnotesUrlsImages object_notes_and_links_()( string obj_txt_in, bool reset_note_numbers = false ) { @@ -2263,7 +2264,7 @@ template docAbstractionFunctions() { } return ret; } - @safe private ST_txtPlusHasFootnotesUrlsImages object_only_()( + private ST_txtPlusHasFootnotesUrlsImages object_only_()( string obj_txt_in, bool reset_note_numbers = false ) { @@ -2284,7 +2285,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe ST_txtPlusHasFootnotesUrlsImages munge_heading()( + ST_txtPlusHasFootnotesUrlsImages munge_heading()( string obj_txt_in, bool reset_note_numbers = false ) { @@ -2299,7 +2300,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe ST_txtPlusHasFootnotesUrlsImages munge_para()(string obj_txt_in) { + ST_txtPlusHasFootnotesUrlsImages munge_para()(string obj_txt_in) { obj_txt["munge"] = (obj_txt_in) .replaceFirst(rgx.para_attribs, "") .replaceFirst(rgx.object_number_off_all, "") @@ -2311,44 +2312,44 @@ template docAbstractionFunctions() { } return ret; } - @safe ST_txtPlusHasFootnotesUrlsImages munge_quote()(string obj_txt_in) { + ST_txtPlusHasFootnotesUrlsImages munge_quote()(string obj_txt_in) { ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in.split("\n\n").join(" \\\\\n \\\\\n")); return ret; } invariant() { } - @safe ST_txtPlusHasFootnotesUrlsImages munge_group(string obj_txt_in) { + ST_txtPlusHasFootnotesUrlsImages munge_group(string obj_txt_in) { ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in.split("\n\n").join("\n" ~ mkup.br_line_spaced ~ "\n")); return ret; } invariant() { } - @safe ST_txtPlusHasFootnotesUrlsImages munge_block()(string obj_txt_in) { + ST_txtPlusHasFootnotesUrlsImages munge_block()(string obj_txt_in) { ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in); return ret; } invariant() { } - @safe auto munge_verse()(string obj_txt_in) { + auto munge_verse()(string obj_txt_in) { ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in); return ret; } invariant() { } - @safe ST_txtPlusHasFootnotesUrlsImages munge_code()(string obj_txt_in) { + ST_txtPlusHasFootnotesUrlsImages munge_code()(string obj_txt_in) { obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp); ST_txtPlusHasFootnotesUrlsImages ret = object_only_(obj_txt_in); return ret; } invariant() { } - @safe ST_txtPlusHasFootnotesUrlsImages munge_table()(string obj_txt_in) { + ST_txtPlusHasFootnotesUrlsImages munge_table()(string obj_txt_in) { ST_txtPlusHasFootnotesUrlsImages ret = object_notes_and_links_(obj_txt_in); return ret; } invariant() { } - @safe ST_txtPlusHasFootnotesUrlsImages munge_comment()(string obj_txt_in) { + ST_txtPlusHasFootnotesUrlsImages munge_comment()(string obj_txt_in) { ST_txtPlusHasFootnotesUrlsImages ret = object_only_(obj_txt_in); return ret; } @@ -2362,7 +2363,7 @@ template docAbstractionFunctions() { static auto munge = ObjInlineMarkupMunge(); string[string] obj_txt; string anchor_tag = ""; - @safe ST_txtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( + ST_txtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( string[string] obj_, string obj_key_, CMM conf_make_meta, @@ -2451,14 +2452,14 @@ template docAbstractionFunctions() { } invariant() { } - @safe auto _clean_heading_toc_()( + auto _clean_heading_toc_()( char[] heading_toc_, ) { auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading); heading_toc_ = (m.post).replaceAll(rgx.inline_notes_curly_gen, ""); return heading_toc_; }; - @safe ST_flow_table_of_contents_gather_headings flow_table_of_contents_gather_headings(CMM)( // + ST_flow_table_of_contents_gather_headings flow_table_of_contents_gather_headings(CMM)( // string[string] obj_, CMM conf_make_meta, string[string] tag_in_seg, @@ -2549,7 +2550,7 @@ template docAbstractionFunctions() { static string heading_number_auto_composite = ""; static string heading_number_auto_composite_segname = ""; static bool[] auto_heading_numbering = [ true, true, true, true]; - @safe static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( + static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( string munge_, string[string] obj_, CMM conf_make_meta, @@ -2691,7 +2692,7 @@ template docAbstractionFunctions() { return munge_; } static int heading_num_lev1 = 0; - @safe static string _make_segment_anchor_tags_if_none_provided()( + static string _make_segment_anchor_tags_if_none_provided()( string munge_, string lev_, bool _new_doc @@ -2729,7 +2730,7 @@ template docAbstractionFunctions() { // ↓ - object attributes struct ObjAttributes { string[string] _obj_attrib; - @safe string obj_attributes()( + string obj_attributes()( string obj_is_, string obj_raw, ObjGenericComposite comp_obj_, @@ -2792,7 +2793,7 @@ template docAbstractionFunctions() { } private: string _obj_attributes; - @safe string txt_para_and_blocks()(string obj_txt_in) { + string txt_para_and_blocks()(string obj_txt_in) { if (obj_txt_in.matchFirst(rgx.para_bullet)) { _obj_attributes =" \"bullet\": \"true\"," ~ " \"indent_hang\": 0," @@ -2816,7 +2817,7 @@ template docAbstractionFunctions() { } return _obj_attributes; } - @safe string txt_heading()(string obj_txt_in) { + string txt_heading()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," ~ " \"is\": \"heading\""; @@ -2824,7 +2825,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_para()(string obj_txt_in) { + string txt_para()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"para\"," ~ " \"is\": \"para\""; @@ -2832,7 +2833,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_quote()(string obj_txt_in) { + string txt_quote()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"quote\""; @@ -2840,7 +2841,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_group()(string obj_txt_in) { + string txt_group()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"group\""; @@ -2848,7 +2849,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_block()(string obj_txt_in) { + string txt_block()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"block\""; @@ -2856,7 +2857,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_verse()(string obj_txt_in) { + string txt_verse()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"verse\""; @@ -2864,7 +2865,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_code()(string obj_txt_in) { + string txt_code()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"code\""; @@ -2872,7 +2873,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_table()(string obj_txt_in) { + string txt_table()(string obj_txt_in) { _obj_attributes = " \"use\": \"content\"," ~ " \"of\": \"block\"," ~ " \"is\": \"table\""; @@ -2880,7 +2881,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string txt_comment()(string obj_txt_in) { + string txt_comment()(string obj_txt_in) { _obj_attributes = " \"use\": \"comment\"," ~ " \"of\": \"comment\"," ~ " \"is\": \"comment\""; @@ -2888,7 +2889,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe string _set_additional_values_parse_as_json()( + string _set_additional_values_parse_as_json()( string _obj_attrib, string obj_is_, ObjGenericComposite comp_obj_, @@ -2912,7 +2913,7 @@ template docAbstractionFunctions() { } // ↑ - object attributes // ↓ - object tags - @safe pure ObjGenericComposite obj_dom_structure_set_markup_tags()( + pure ObjGenericComposite obj_dom_structure_set_markup_tags()( ObjGenericComposite obj, int[] dom, int lev @@ -2954,7 +2955,7 @@ template docAbstractionFunctions() { obj.metainfo.dom_structure_markedup_tags_status = dom.dup; return obj; } - @safe pure ObjGenericComposite obj_dom_set_collapsed_tags()( + pure ObjGenericComposite obj_dom_set_collapsed_tags()( ObjGenericComposite obj, int[] dom, int lev @@ -3105,7 +3106,7 @@ template docAbstractionFunctions() { int previous_count; int mkn; static auto rgx = RgxI(); - @safe private auto gather_notes_for_endnote_section( + private auto gather_notes_for_endnote_section( ObjGenericComposite[] contents_am, string[string] tag_in_seg, int cntr, @@ -3183,7 +3184,7 @@ template docAbstractionFunctions() { } return object_notes; } - @safe private auto gathered_notes() { + private auto gathered_notes() { string[][string] endnotes_; if (object_notes.length > 1) { endnotes_["notes"] = (object_notes["notes"].split(rgx.break_string))[0..$-1]; @@ -3194,7 +3195,7 @@ template docAbstractionFunctions() { } return endnotes_; } - @safe private ST_endnotes backmatter_endnote_objects(O)( + private ST_endnotes backmatter_endnote_objects(O)( OCNset obj_cite_digits, O opt_action, ) { @@ -3327,7 +3328,7 @@ template docAbstractionFunctions() { string[] object_numbers; string[][string][string] bi_hash_nugget; string[] bi_main_terms_split_arr; - @safe string[][string][string] bookindex_nugget_hash(S)( + string[][string][string] bookindex_nugget_hash(S)( string bookindex_section, OCNset obj_cite_digits, S tag_in_seg, @@ -3395,7 +3396,7 @@ template docAbstractionFunctions() { } struct BookIndexReportIndent { int mkn, skn; - @safe void bookindex_report_indented()( + void bookindex_report_indented()( string[][string][string] bookindex_unordered_hashes ) { auto mainkeys @@ -3421,7 +3422,7 @@ template docAbstractionFunctions() { int mkn, skn; static auto rgx = RgxI(); static auto munge = ObjInlineMarkupMunge(); - @safe void bookindex_write_section()( + void bookindex_write_section()( string[][string][string] bookindex_unordered_hashes ) { auto mainkeys = @@ -3957,7 +3958,7 @@ template docAbstractionFunctions() { } // ↑ - section blurb // ↓ - images - @safe string[] extract_images()(string content_block) { + string[] extract_images()(string content_block) { static auto rgx = RgxI(); string[] images_; if (auto m = content_block.matchAll(rgx.image)) { @@ -4005,7 +4006,7 @@ template docAbstractionFunctions() { } // ↑ - images // ↓ - links - @safe auto _links(O)(O obj) { + auto _links(O)(O obj) { static auto rgx = RgxI(); if (auto m = obj.text.match(rgx.inline_link_stow_uri)) { debug(links) { @@ -4126,7 +4127,7 @@ template docAbstractionFunctions() { int obj_cite_digit; int[string] p_; // p_ parent_ static auto rgx = RgxI(); - @safe ObjGenericComposite node_location_emitter(La,Ta)( + ObjGenericComposite node_location_emitter(La,Ta)( string lev_markup_number, string[string] tag_in_seg, La lev_anchor_tag, @@ -4175,7 +4176,7 @@ template docAbstractionFunctions() { } invariant() { } - @safe ObjGenericComposite node_emitter_heading(O,TaL,TA,SOAT)( + ObjGenericComposite node_emitter_heading(O,TaL,TA,SOAT)( O an_object, string[string] tag_in_seg, TaL lev_anchor_tag, @@ -4374,7 +4375,7 @@ template docAbstractionFunctions() { ObjGenericComposite[] the_document_bookindex_section, ObjGenericComposite[] the_document_blurb_section, ) { - @safe int[] _get_ancestors_markup(ObjGenericComposite obj, int[] _ancestors_markup) { + int[] _get_ancestors_markup(ObjGenericComposite obj, int[] _ancestors_markup) { if (obj.metainfo.is_a == "heading") { debug(dom) { writeln(obj.text); } if (obj.metainfo.heading_lev_markup == 1) { @@ -4457,7 +4458,7 @@ template docAbstractionFunctions() { debug(ancestor_markup) { writeln("marked up: ", _ancestors_markup); } return _ancestors_markup; } - @safe int[] _get_ancestors_collapsed(ObjGenericComposite obj, int[] _ancestors_collapsed) { + int[] _get_ancestors_collapsed(ObjGenericComposite obj, int[] _ancestors_collapsed) { if (obj.metainfo.is_a == "heading") { if (obj.metainfo.heading_lev_collapsed == 1) { _ancestors_collapsed = [ @@ -4573,7 +4574,7 @@ template docAbstractionFunctions() { // ↑ - ancestors // ↓ - descendants // descendants - @safe auto after_doc_get_descendants()(ObjGenericComposite[] document_sections) { + auto after_doc_get_descendants()(ObjGenericComposite[] document_sections) { int[string] _heading_ocn_descendants; string[] _ocn_open_key = ["","","","","","","",""]; auto _doc_sect_length = document_sections.length - 1; @@ -4622,7 +4623,7 @@ template docAbstractionFunctions() { } // ↑ - descendants // ↓ - assertions - @safe pure void assertions_doc_structure()( + pure void assertions_doc_structure()( string[string] an_object, string an_object_key, int[string] lv @@ -5195,7 +5196,7 @@ template docAbstractionFunctions() { // ↑ - assertions } template docSectKeysSeq() { - @safe auto docSectKeysSeq(string[][string] document_section_keys_sequenced) { + auto docSectKeysSeq(string[][string] document_section_keys_sequenced) { struct doc_sect_keys_seq { string[] scroll() { return document_section_keys_sequenced["scroll"]; |