/+
  object setter
  ao_object_setter.d
+/
template ObjectSetter() {
  struct ObjectAbstractSet {
    import std.conv : to;
    string[string] contents_comment(in string object) {
      string[string] object_set;
      object_set["use"]           = "comment";
      object_set["of"]            = "comment";
      object_set["is"]            = "comment";
      object_set["obj"]           = object;
      // object_set["attrib"]     = attrib;
      return object_set;
    }
    string[string] contents_heading(
      in int type,
      in string object,
      in string attrib,
      in int obj_cite_number,
      in string lev,
      in string lev_markup_number,
      in string lev_collapsed_number,
    ) {
      string[string] object_set;
      object_set["use"]                  = "content";
      object_set["of"]                   = "para";
      object_set["is"]                   = "heading";
      object_set["type"]                 = to!string(type);
      // object_set["is"]                = type; // "heading" "heading_dummy"
      object_set["obj"]                  = object;
      object_set["obj_cite_number"]      = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
      object_set["lev"]                  = to!string(lev);
      object_set["lev_markup_number"]    = to!string(lev_markup_number);
      object_set["lev_collapsed_number"] = to!string(lev_collapsed_number);
      object_set["attrib"]               = attrib;
      // object_set["children"]          = children;
      return object_set;
    }
    string[string] contents_para(
      in string is_a,
      in string object,
      in string attrib,
      in int obj_cite_number,
      in string[string] indent,
      in bool bullet
    ) {
      string[string] object_set;
      object_set["use"]              = "content";
      object_set["of"]               = "para";
      object_set["is"]               = is_a;
      // object_set["status"]        = status;
      object_set["obj"]              = object;
      object_set["obj_cite_number"]  = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
      object_set["indent_first"]     = indent["first"];
      object_set["indent_second"]    = indent["second"];
      object_set["bullet"]           = to!string(bullet);
      object_set["attrib"]           = attrib;
      return object_set;
    }
    string[string] contents_block(
      in string type,
      in string object,
      in string attrib,
      in int obj_cite_number
    ) {
      string[string] object_set;
      object_set["use"]             = "content";
      object_set["of"]              = "block";
      object_set["is"]              = type;
      object_set["obj"]             = object;
      object_set["obj_cite_number"] = (obj_cite_number==0) ? "" : to!string(obj_cite_number);
      object_set["attrib"]          = attrib;
      return object_set;
    }
    string[string] contents_block_obj_cite_number_string(
      in string type,
      in string object,
      in string obj_cite_number,
      in string node
    ) {
      string[string] object_set;
      object_set["use"]             = "content";
      object_set["of"]              = "block";
      object_set["is"]              = type;
      object_set["obj"]             = object;
      object_set["obj_cite_number"] = obj_cite_number;
      object_set["node"]            = node;
      // object_set["attrib"]       = "";
      return object_set;
    }
  }
}