Catman...c_paste(3pm)

πŸ“¦
version 1.320 Β· 4 versions
, in debian trixie, ubuntu resolute, ubuntu stonking

πŸ’– Catman...c_paste(3pm) β€” the manual page, but make it cute πŸ’–

okay bestie, welcome to the group chat. this is the docs for Catmandu::Fix::marc_paste, and honestly? she's a little legend. buckle up πŸŽ€


✨ NAME ✨

Catmandu::Fix::marc_paste β€” paste a MARC structured field back into the MARC record 🫢


🌸 SYNOPSIS 🌸

# Copy and paste to the end of the record
marc_copy(001, fixed001)
set_fieldfixed001.$first.tag,002)
marc_paste(fixed001)

# Copy and paste in place (rename a field)
do marc_each(var:this)
  if all_match(this.tag,001)
    # Change it
    set_field(this.tag,002)

    # Paste it back into the record
    marc_paste(this)
  end
end

πŸ¦‹ DESCRIPTION πŸ¦‹

so basically: you take a MARC structure that was made by Catmandu::Fix::marc_struc, and you paste it back at the end of a MARC record. that's the whole vibe. it's giving copy-paste but for library data πŸ’…

(and yes, the original says "stucture" β€” we keep it real around here, no cap. 🫑)


πŸ‘‘ METHODS πŸ‘‘

πŸ’œ marc_paste(JSON_PATH, [at: MARC_PATH , [equals: REGEX]])

Paste a MARC struct PATH back in the MARC record, bestie. by default the MARC structure gets pasted at the end of the record β€” chill, no drama.

want it somewhere specific? optionally hand over an at option to set the MARC field after which the structure needs to be pasted. 🎯

and optionally you can give a regex that should match the content of that at field.

⚠️ heads up: the equals parameter requires an at parameter. like, they're a package deal. when both are provided, then the value of JSON_PATH will only be pasted if the string value of the MARC_PATH in at matches the regular expression equals. πŸ‘―

okay now the examples, because examples ate and left no crumbs:

# Paste mycopy at the end of the record
marc_paste(mycopy)

# Paste mycopy after the last 300 field
marc_paste(mycopy, at:300)

# Paste mycopy after the last 300 field with indicator1 = 1
marc_paste(mycopy, at:300[1])

# Paste mycopy after the last 300 field which has an 'a' subfield
marc_paste(mycopy, at:300a)

# Paste mycopy after the last 300 field which has an 'a' subfield equal to 'ABC'
marc_paste(mycopy, at:300a, equals:'^ABC$')

# Paste mycopy after the last 300 field with all concatinated subfields equal to 'ABC'
marc_paste(mycopy, at:300, equals:'^ABC$')

🌈 INLINE 🌈

not me dropping this Fix directly into a Perl script β€” it's giving main character energy fr fr:

use Catmandu::Fix::marc_copy as => 'marc_copy';
use Catmandu::Fix::marc_paste as => 'marc_paste';

my $data = { record => ['650', ' ', 0, 'a', 'Perl'] };

$data = marc_copy($data,'650','subject');
$data = marc_paste($data,'subject');

🌟 SEE ALSO 🌟

  • Catmandu::Fix::marc_copy πŸ’–
  • Catmandu::Fix::marc_cut βœ‚οΈ

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information. 🫢


and that's the whole page, bestie β€” no notes, obsessed. this one shipped with perl v5.38.2 on 2024-08-03. iykyk πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from