On May 1, 2006, at 4:41 PM, Leif Andersson wrote:
+1
"count" can possibly be complemented or replaced with occurrence as
suggested.
It'd be nice to be able to denote last occurrence [-1].
And I suppose the indexing should be based on ordinary perl
subscript indexing - i.e. governed by the value of special variable $[
$field->delete_subfield( code => $code, # of course
occur => [0,2,3], # "occur" or "pos" or
whatever...
match => qr/pat/, # doesn't need to be
repeatable
);
I actually like 'pos' better than 'occur' -- but alas
$field->delete_subfield(pos => 2);
won't work because 'pos' is a perl keyword--which is why I like using
it I suppose :-) How about:
$field->delete_subfield(position => 2);
A bit more wordy I guess, but I still like it better than occur. Nice
tip on the use of $[ by the way! I also like Tim's suggestion to
allow 'code' to take multiple values too:
$field->delete_subfield(code => ['a','b','c'])
So if you check out the CVS you should find this implemented. If you
are interested in adding any tests or documentation let me know and
I'll add you as a sf.net developer.
The current documentation for the new method reads like this:
--
delete_subfield() allows you to remove subfields from a field:
# delete any subfield a in the field
$field->delete_subfield(code => 'a');
# delete any subfield a or u in the field
$field->delete_subfield(code => ['a', 'u']);
If you want to only delete subfields at a particular position
you can
use the position parameter:
# delete subfield u at the first position
$field->delete_subfield(code => 'u', position => 0);
# delete subfield u at first or second position
$field->delete_subfield(code => 'u', position => [0,1]);
You can specify a regex to for only deleting subfields that
match:
# delete any subfield u that matches zombo.com
$field->delete_subfield(code => 'u', match => qr/zombo.com/);
--
Sound ok?
//Ed