return self;
}
+/*
+ * call-seq:
+ * object.shift(hash) -> array or nil
+ *
+ * Removes the first key-value pair from *object* and returns it
+ * as the two-item array [key, value].
+ * If *object* is empty, +nil+ is returned.
+ */
+static VALUE
+c_shift (VALUE self)
+{
+ return rb_ary_shift (rb_iv_get (self, "items"));
+}
+
/*
* call-seq:
* object <=> other -> -1, 0 or 1
rb_define_method (c, "keys", c_keys, 0);
rb_define_method (c, "values", c_values, 0);
rb_define_method (c, "merge!", c_merge, 1);
+ rb_define_method (c, "shift", c_shift, 0);
rb_include_module (c, rb_mComparable);
rb_define_method (c, "<=>", c_compare, 1);
t.comments.values)
end
end
+
+ def test_shift
+ Ogg::Vorbis::Tagger.open(OGG_FILE) do |t|
+ assert_equal(["artist", "Bolt Thrower"], t.comments.shift)
+ assert_equal(["album", "...For Victory"], t.comments.shift)
+ assert_equal(["date", "1994"], t.comments.shift)
+ assert_equal(nil, t.comments.shift)
+ end
+ end
end