Re: Create and individual with a specific xref?

[email protected] (Paul Johnson) Fri, 11 Jan 2013 21:29:48 +0100
Newsgroups perl.gedcom
Message-ID <[email protected]>
On Fri, Jan 11, 2013 at 08:07:08PM +0100, Mikkel Eide Eriksen wrote:
> Hi Steve
> 
> AFAIK the gedcom standard does not impose any restrictions on whether an app may modify an xref, so there's no guarantee that an xref will survive being opened in "some app". You're probably only using your own code for these files, though, so that might not be an issue. Anyway, maybe you can use one of the following tags:
> 
>     +1 RFN <PERMANENT_RECORD_FILE_NUMBER>  {0:1}
>     +1 REFN <USER_REFERENCE_NUMBER>  {0:M}
>       +2 TYPE <USER_REFERENCE_TYPE>  {0:1}
>     +1 RIN <AUTOMATED_RECORD_ID>  {0:1}
> 
> Regards,
> Mikkel
> 
> On 11/01/2013, at 15.46, Stephen Woodbridge <[email protected]> wrote:
> 
> > Hi All,
> > 
> > Is it possible to create and individual and set the xref to a specific value?
> > 
> > The use case for this is to maintain consistent references between various files and/or when the xref is used as a persistent reference for a web application.
> > 
> > For example, I am parsing some web pages that use the xref for individuals in the url. I would like to maintain these in the Gedcom file I create so when I later regenerate the pages I can maintain the same url to individuals relationship.
> > 
> > Thoughts?

But if you're talking about Gedcom.pm, in versions previous to 1.17 you
could add a parameter to add_individual which would be the xref you
wanted.

Now forget all that.  I had never documented it, and in 1.17 I changed
it and added some documentation:

  Normally you will not want to pass any arguments to the function.  Those
  functions which have an xref (ie not header or trailer) accept an optional
  first argument { xref => $x } which will use $x as the xref rather than
  letting the module automatically choose the xref.

So now you can call:

  my $individual = $ged->add_individual({ xref => "I123" });

There's an example using add_note() in t/ged_create.t

This is less than a fortnight old, so if you go this way you may be the
first person to use this feature.

-- 
Paul Johnson - [email protected]
http://www.pjcj.net