File Coverage

blib/lib/PGObject/Type/BigFloat.pm
Criterion Covered Total %
statement 13 15 86.6
branch n/a
condition n/a
subroutine 5 5 100.0
pod n/a
total 18 20 90.0


line stmt bran cond sub pod time code
1             package PGObject::Type::BigFloat;
2              
3 1     1   20340 use 5.006;
  1         3  
  1         40  
4 1     1   8 use strict;
  1         2  
  1         32  
5 1     1   5 use warnings;
  1         6  
  1         35  
6 1     1   5 use base qw(Math::BigFloat);
  1         1  
  1         1634  
7 1     1   26649 use PGObject;
  0            
  0            
8             use Carp;
9              
10             =head1 NAME
11              
12             PGObject::Type::BigFloat - Math::BigFloat wrappers for PGObject classes
13              
14             =head1 VERSION
15              
16             Version 1.0.1
17              
18             =cut
19              
20             our $VERSION = '1.0.1';
21              
22              
23             =head1 SYNOPSIS
24              
25             use PGObject::Type::BigFloat;
26             PGObject::Type::BigFloat->register(); # Get all numeric and float types
27              
28             my $self->{foo} = PGObject::Type::BigFloat->new(0);
29              
30             $self->call_dbmethod(funcname => 'bar'); # will use this as a numeric
31            
32              
33             =head1 SUBROUTINES/METHODS
34              
35             =head2 register(registry => 'default', types => ['float4', 'float8', 'numeric'])
36              
37              
38             =cut
39              
40             sub register{
41             my $self = shift @_;
42             croak "Can't pass reference to register \n".
43             "Hint: use the class instead of the object" if ref $self;
44             my %args = @_;
45             my $registry = $args{registry};
46             $registry ||= 'default';
47             my $types = $args{types};
48             $types = ['float4', 'float8', 'numeric'] unless defined $types and @$types;
49             for my $type (@$types){
50             my $ret =
51             PGObject->register_type(registry => $registry, pg_type => $type,
52             perl_class => $self);
53             return $ret unless $ret;
54             }
55             return 1;
56             }
57              
58             =head2 to_db
59              
60             This serializes this into a simple db-friendly form.
61              
62             =cut
63              
64             sub to_db {
65             my $self = shift @_;
66             return undef if $self->is_undef;
67             return $self->bstr;
68             }
69              
70             =head2 from_db
71              
72             take simple normalized db floats and turn them into numeric representations.
73              
74             =cut
75              
76             sub from_db {
77             my ($self, $value) = @_;
78             my $obj = "$self"->new($value);
79             $obj->is_undef(1) if ! defined $value;
80             return $obj;
81             }
82              
83             =head2 is_undef(optionally $set);
84              
85             Return undef to the db or user interface. Can be set through apps.
86              
87             =cut
88              
89             sub is_undef {
90             my ($self, $set) = @_;
91             $self->{_pgobject_undef} = $set if defined $set;
92             return $self->{_pgobject_undef};
93             }
94              
95             =head1 AUTHOR
96              
97             Chris Travers, C<< >>
98              
99             =head1 BUGS
100              
101             Please report any bugs or feature requests to C, or through
102             the web interface at L. I will be notified, and then you'll
103             automatically be notified of progress on your bug as I make changes.
104              
105              
106              
107              
108             =head1 SUPPORT
109              
110             You can find documentation for this module with the perldoc command.
111              
112             perldoc PGObject::Type::BigFloat
113              
114              
115             You can also look for information at:
116              
117             =over 4
118              
119             =item * RT: CPAN's request tracker (report bugs here)
120              
121             L
122              
123             =item * AnnoCPAN: Annotated CPAN documentation
124              
125             L
126              
127             =item * CPAN Ratings
128              
129             L
130              
131             =item * Search CPAN
132              
133             L
134              
135             =back
136              
137              
138             =head1 ACKNOWLEDGEMENTS
139              
140              
141             =head1 LICENSE AND COPYRIGHT
142              
143             Copyright 2013-2014 Chris Travers.
144              
145             This program is released under the following license: BSD
146              
147              
148             =cut
149              
150             1; # End of PGObject::Type::BigFloat