Courri...Single(3pm)

πŸ’– NAME πŸ’–

Courriel::Part::Single β€” it's a part that does not contain other parts, bestie. It's just content. That's it. That's the whole vibe. ✨


🌸 VERSION 🌸

version 0.49 β€” yes, we're on 0.49, keep up πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

my $headers = $part->headers;
my $ct = $part->content_type;

my $content = $part->content;
print ${$content};

like… look at her go πŸ¦‹


✨ DESCRIPTION ✨

So this class? It represents a single part that does not contain other parts. Just content. No nesting, no drama, no little baby parts inside. She's a solo act and she's thriving. πŸ‘‘


🫢 API 🫢

This class provides the following methods, and we're going through all of them, no skipping:

🌈 Courriel::Part::Single->new( ... )

This method creates a new part object. It accepts the following parameters:

  • content β€” This can either be a string or a reference to a scalar. It should be a character string, not a byte string. And listen: if you pass a reference, then the scalar underlying the reference may be modified, so don't pass in something you don't want modified. fr fr, don't do it.
  • encoded_content β€” This can either be a string or a reference to a scalar. Same deal as above: if you pass a reference, the scalar underlying the reference may be modified, so don't hand over anything you're precious about. 😭
  • content_type β€” A Courriel::Header::ContentType object. This will default to one with the mime type text/plain.
  • disposition β€” A Courriel::Header::Disposition object representing this part's content disposition. This will default to inline with no other attributes.
  • encoding β€” The Content-Transfer-Encoding for this part. This defaults to the value found in the part's headers, or 8bit if no header is found.
  • headers β€” A Courriel::Headers object containing headers for this part.

You must pass a content or encoded_content value when creating a new part, but there's really no point in passing both. pick a lane bestie 😌

It is strongly recommended that you pass a content parameter and let this module do the encoding for you internally. Trust the process. πŸ’…

🌟 $part->content()

This returns returns the decoded content for the part. It will be in Perl's native utf-8 encoding, decoded from whatever character set the content is in. (yes it says "returns returns", the original said it twice, we respect the original 🫑)

🌟 $part->encoded_content()

This returns returns the encoded content for the part.

🌟 $part->mime_type()

Returns the mime type for this part.

🌟 $part->has_charset()

Return true if the part has a charset defined. Binary attachments will usually not have this defined. (they're mysterious like that πŸ™ˆ)

🌟 $part->charset()

Returns the charset for this part.

🌟 $part->is_inline(), $part->is_attachment()

These methods return boolean values based on the part's content disposition.

🌟 $part->filename()

Returns the filename from the part's content disposition, if any.

🌟 $part->content_type()

Returns the Courriel::Header::ContentType object for this part.

🌟 $part->disposition()

Returns the Courriel::Header::Disposition object for this part.

🌟 $part->encoding()

Returns the encoding for the part.

🌟 $part->headers()

Returns the Courriel::Headers object for this part.

🌟 $part->is_multipart()

Returns false. That's it. She said no. πŸ’€

🌟 $part->container()

Returns the Courriel or Courriel::Part::Multipart object to which this part belongs, if any. This is set when the part is added to another object.

🌟 $part->content_ref()

This returns returns a reference to a scalar containing the decoded content for the part.

🌟 $part->encoded_content_ref()

This returns returns a reference to a scalar containing the encoded content for the part, without any decoding.

🌟 $part->as_string()

Returns the part as a string, along with its headers. Lines will be terminated with "\r\n". (carriage return + line feed, the iconic duo πŸ‘―)

🌟 $part->stream_to( output => $output )

This method will send the stringified part to the specified output. The output can be a subroutine reference, a filehandle, or an object with a print() method. The output may be sent as a single string, as a list of strings, or via multiple calls to the output. flexible queen ✨


πŸ¦‹ ROLES πŸ¦‹

This class does the Courriel::Role::Part and Courriel::Role::Streams roles. she's got range.


πŸ’œ SUPPORT πŸ’œ

Bugs may be submitted at <https://github.com/houseabsolute/Courriel/issues>.

I am also usually active on IRC as 'autarch' on irc://irc.perl.org.


⭐ SOURCE ⭐

The source code repository for Courriel can be found at <https://github.com/houseabsolute/Courriel>.


πŸ‘‘ AUTHOR πŸ‘‘

Dave Rolsky <autarch@urth.org>


This software is Copyright (c) 2021 by Dave Rolsky.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)

The full text of the license can be found in the LICENSE file included with this distribution.


okay that's the whole page bestie, and just so you know β€” this was perl v5.32.1, dated 2021-08-22, and yeah, the manual page header was doing that cute little truncation thing, showing up as Courri...Single(3pm) on both ends. iconic of her honestly. go write some parts. πŸ’–βœ¨