GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Venus::Type(3) User Contributed Perl Documentation Venus::Type(3)

Venus::Type - Type Class

Type Class for Perl 5

  package main;
  use Venus::Type;
  my $type = Venus::Type->new([]);
  # $type->code;

This package provides methods for casting native data types to objects and the reverse.

This package inherits behaviors from:

Venus::Kind::Utility

This package integrates behaviors from:

Venus::Role::Accessible

Venus::Role::Buildable

Venus::Role::Valuable

This package provides the following methods:

  code() (string | undef)

The code method returns the name of the value's data type.

Since 0.01

code example 1
  # given: synopsis;
  my $code = $type->code;
  # "ARRAY"
    
code example 2
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => {});
  my $code = $type->code;
  # "HASH"
    
code example 3
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => qr//);
  my $code = $type->code;
  # "REGEXP"
    

  coded(string $code) (boolean)

The coded method return true or false if the data type name provided matches the result of "code".

Since 1.23

coded example 1
  # given: synopsis;
  my $coded = $type->coded('ARRAY');
  # 1
    
coded example 2
  # given: synopsis;
  my $coded = $type->coded('HASH');
  # 0
    

  deduce() (object)

The deduce methods returns the argument as a data type object.

Since 0.01

deduce example 1
  # given: synopsis;
  my $deduce = $type->deduce;
  # bless({ value => [] }, "Venus::Array")
    
deduce example 2
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => {});
  my $deduce = $type->deduce;
  # bless({ value => {} }, "Venus::Hash")
    
deduce example 3
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => qr//);
  my $deduce = $type->deduce;
  # bless({ value => qr// }, "Venus::Regexp")
    
deduce example 4
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => '1.23');
  my $deduce = $type->deduce;
  # bless({ value => "1.23" }, "Venus::Float")
    

  deduce_deep() (object)

The deduce_deep function returns any arguments as data type objects, including nested data.

Since 0.01

deduce_deep example 1
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => [1..4]);
  my $deduce_deep = $type->deduce_deep;
  # bless({
  #   value => [
  #     bless({ value => 1 }, "Venus::Number"),
  #     bless({ value => 2 }, "Venus::Number"),
  #     bless({ value => 3 }, "Venus::Number"),
  #     bless({ value => 4 }, "Venus::Number"),
  #   ],
  # }, "Venus::Array")
    
deduce_deep example 2
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => {1..4});
  my $deduce_deep = $type->deduce_deep;
  # bless({
  #   value => {
  #     1 => bless({ value => 2 }, "Venus::Number"),
  #     3 => bless({ value => 4 }, "Venus::Number"),
  #   },
  # }, "Venus::Hash")
    

  detract() (any)

The detract method returns the argument as native Perl data type value.

Since 0.01

detract example 1
  package main;
  use Venus::Type;
  use Venus::Hash;
  my $type = Venus::Type->new(Venus::Hash->new({1..4}));
  my $detract = $type->detract;
  # { 1 => 2, 3 => 4 }
    
detract example 2
  package main;
  use Venus::Type;
  use Venus::Array;
  my $type = Venus::Type->new(Venus::Array->new([1..4]));
  my $detract = $type->detract;
  # [1..4]
    
detract example 3
  package main;
  use Venus::Type;
  use Venus::Regexp;
  my $type = Venus::Type->new(Venus::Regexp->new(qr/\w+/));
  my $detract = $type->detract;
  # qr/\w+/
    
detract example 4
  package main;
  use Venus::Type;
  use Venus::Float;
  my $type = Venus::Type->new(Venus::Float->new('1.23'));
  my $detract = $type->detract;
  # "1.23"
    

  detract_deep() (any)

The detract_deep method returns any arguments as native Perl data type values, including nested data.

Since 0.01

detract_deep example 1
  package main;
  use Venus::Type;
  use Venus::Hash;
  my $type = Venus::Type->new(Venus::Hash->new({1..4}));
  my $detract_deep = Venus::Type->new($type->deduce_deep)->detract_deep;
  # { 1 => 2, 3 => 4 }
    
detract_deep example 2
  package main;
  use Venus::Type;
  use Venus::Array;
  my $type = Venus::Type->new(Venus::Array->new([1..4]));
  my $detract_deep = Venus::Type->new($type->deduce_deep)->detract_deep;
  # [1..4]
    

  identify() (boolean, boolean, string)

The identify method returns the value's data type, or "code", in scalar context. In list context, this method will return a tuple with (defined, blessed, and data type) elements. Note: For globs and file handles this method will return "scalar" as the data type.

Since 1.23

identify example 1
  # given: synopsis
  package main;
  my ($defined, $blessed, $typename) = $type->identify;
  # (1, 0, 'ARRAY')
    
identify example 2
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => {});
  my ($defined, $blessed, $typename) = $type->identify;
  # (1, 0, 'HASH')
    
identify example 3
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => qr//);
  my ($defined, $blessed, $typename) = $type->identify;
  # (1, 1, 'REGEXP')
    
identify example 4
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => bless{});
  my ($defined, $blessed, $typename) = $type->identify;
  # (1, 1, 'OBJECT')
    

  package() (string)

The code method returns the package name of the objectified value, i.e. ref().

Since 0.01

package example 1
  # given: synopsis;
  my $package = $type->package;
  # "Venus::Array"
    
package example 2
  package main;
  use Venus::Type;
  my $type = Venus::Type->new(value => {});
  my $package = $type->package;
  # "Venus::Hash"
    

Awncorp, "awncorp@cpan.org"

Copyright (C) 2022, Awncorp, "awncorp@cpan.org".

This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.

2023-11-27 perl v5.40.2

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.