The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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