diff --git a/mrbgems/mruby-data/src/data.c b/mrbgems/mruby-data/src/data.c index 42e1c55c2..f07046003 100644 --- a/mrbgems/mruby-data/src/data.c +++ b/mrbgems/mruby-data/src/data.c @@ -69,6 +69,16 @@ data_members(mrb_state *mrb, mrb_value obj) return members; } +/* + * call-seq: + * DataClass.members -> array + * + * Returns an array of symbols representing the names of the data + * structure members for this class. + * + * Customer = Data.define(:name, :address, :zip) + * Customer.members #=> [:name, :address, :zip] + */ static mrb_value mrb_data_s_members(mrb_state *mrb, mrb_value klass) { @@ -175,6 +185,19 @@ make_data_define_accessors(mrb_state *mrb, mrb_value members, struct RClass *c) static mrb_value mrb_data_initialize(mrb_state *mrb, mrb_value self); +/* + * call-seq: + * DataClass.new(*args) -> data_instance + * DataClass.new(**kwargs) -> data_instance + * + * Creates a new instance of the data structure. Arguments can be provided + * either positionally (in the order the members were defined) or as + * keyword arguments using member names. + * + * Customer = Data.define(:name, :address, :zip) + * Customer.new("Joe", "123 Main St", 12345) + * Customer.new(name: "Joe", address: "123 Main St", zip: 12345) + */ static mrb_value mrb_data_new(mrb_state *mrb, mrb_value self) { @@ -244,7 +267,7 @@ make_data_class(mrb_state *mrb, mrb_value members, struct RClass *klass) /* * call-seq: - * DataClass.new(arg, ...) -> obj + * DataClass.define(arg, ...) -> obj * * Data::define returns a new Class object, * which can then be used to create specific instances of the new @@ -291,6 +314,16 @@ mrb_data_s_def(mrb_state *mrb, mrb_value klass) return data; } +/* + * call-seq: + * data.initialize(hash) -> data + * + * Initializes the data structure with values from a hash. + * This is typically called internally when creating data instances + * with custom initialize methods. + * + * # Usually called internally, not directly by user code + */ static mrb_value mrb_data_initialize(mrb_state *mrb, mrb_value self) { @@ -315,6 +348,16 @@ mrb_data_initialize(mrb_state *mrb, mrb_value self) return self; } +/* + * call-seq: + * data.initialize_copy(other_data) -> data + * + * Initializes this data structure as a copy of another data structure. + * This is a private method used internally by dup and clone. + * + * customer = Customer.new("Joe", "123 Main St", 12345) + * copy = customer.dup # calls initialize_copy internally + */ static mrb_value mrb_data_init_copy(mrb_state *mrb, mrb_value copy) {