The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Data::Object::Cast

ABSTRACT

Data Type Casting for Perl 5

SYNOPSIS

package main;

use Data::Object::Cast;

local $Data::Object::Cast::To = 'Test::Object';

# Data::Object::Cast::Deduce([1..4]); # Test::Object::Array

DESCRIPTION

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

LIBRARIES

This package uses type constraints from:

Types::Standard

FUNCTIONS

This package implements the following functions:

deduce

Deduce(Any $value) : Object

The Deduce function returns the argument as a data type object.

Deduce example #1
# given: synopsis

Data::Object::Cast::Deduce([1..4])

# $array
Deduce example #2
# given: synopsis

Data::Object::Cast::Deduce(sub { shift })

# $code
Deduce example #3
# given: synopsis

Data::Object::Cast::Deduce(1.23)

# $float
Deduce example #4
# given: synopsis

Data::Object::Cast::Deduce({1..4})

# $hash
Deduce example #5
# given: synopsis

Data::Object::Cast::Deduce(123)

# $number
Deduce example #6
# given: synopsis

Data::Object::Cast::Deduce(qr/.*/)

# $regexp
Deduce example #7
# given: synopsis

Data::Object::Cast::Deduce(\'abc')

# $scalar
Deduce example #8
# given: synopsis

Data::Object::Cast::Deduce('abc')

# $string
Deduce example #9
# given: synopsis

Data::Object::Cast::Deduce(undef)

# $undef

deducedeep

DeduceDeep(Any @args) : (Object)

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

DeduceDeep example #1
# given: synopsis

Data::Object::Cast::DeduceDeep([1..4])

# $array <$number>
DeduceDeep example #2
# given: synopsis

Data::Object::Cast::DeduceDeep({1..4})

# $hash <$number>

detract

Detract(Any $value) : Any

The Detract function returns the argument as native Perl data type value.

Detract example #1
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    [1..4]
  )
)

# $arrayref
Detract example #2
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    sub { shift }
  )
)

# $coderef
Detract example #3
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    1.23
  )
)

# $number
Detract example #4
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    {1..4}
  )
)

# $hashref
Detract example #5
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    123
  )
)

# $number
Detract example #6
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    qr/.*/
  )
)

# $regexp
Detract example #7
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    \'abc'
  )
)

# $scalarref
Detract example #8
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    'abc'
  )
)

# $string
Detract example #9
# given: synopsis

Data::Object::Cast::Detract(
  Data::Object::Cast::Deduce(
    undef
  )
)

# $undef

detractdeep

DetractDeep(Any @args) : (Any)

The DetractDeep function returns any arguments as native Perl data type values, including nested data.

DetractDeep example #1
# given: synopsis

Data::Object::Cast::DetractDeep(
  Data::Object::Cast::DeduceDeep(
    [1..4]
  )
)
DetractDeep example #2
# given: synopsis

Data::Object::Cast::DetractDeep(
  Data::Object::Cast::DeduceDeep(
    {1..4}
  )
)

typename

TypeName(Any $value) : Maybe[Str]

The TypeName function returns the name of the value's data type.

TypeName example #1
# given: synopsis

Data::Object::Cast::TypeName([1..4])

# 'ARRAY'
TypeName example #2
# given: synopsis

Data::Object::Cast::TypeName(sub { shift })

# 'CODE'
TypeName example #3
# given: synopsis

Data::Object::Cast::TypeName(1.23)

# 'FLOAT'
TypeName example #4
# given: synopsis

Data::Object::Cast::TypeName({1..4})

# 'HASH'
TypeName example #5
# given: synopsis

Data::Object::Cast::TypeName(123)

# 'NUMBER'
TypeName example #6
# given: synopsis

Data::Object::Cast::TypeName(qr/.*/)

# 'REGEXP'
TypeName example #7
# given: synopsis

Data::Object::Cast::TypeName(\'abc')

# 'STRING'
TypeName example #8
# given: synopsis

Data::Object::Cast::TypeName('abc')

# 'STRING'
TypeName example #9
# given: synopsis

Data::Object::Cast::TypeName(undef)

# 'UNDEF'

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues