3e801ecf1bbdd038cfd01399277d56fd35c3fe30
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / PPI / Token / Number / Hex.pm
1 package PPI::Token::Number::Hex;
2
3 =pod
4
5 =head1 NAME
6
7 PPI::Token::Number::Hex - Token class for a binary number
8
9 =head1 SYNOPSIS
10
11   $n = 0x1234;     # hexadecimal integer
12
13 =head1 INHERITANCE
14
15   PPI::Token::Number::Hex
16   isa PPI::Token::Number
17       isa PPI::Token
18           isa PPI::Element
19
20 =head1 DESCRIPTION
21
22 The C<PPI::Token::Number::Hex> class is used for tokens that
23 represent base-16 numbers.
24
25 =head1 METHODS
26
27 =cut
28
29 use strict;
30 use PPI::Token::Number ();
31
32 use vars qw{$VERSION @ISA};
33 BEGIN {
34         $VERSION = '1.206';
35         @ISA     = 'PPI::Token::Number';
36 }
37
38 =pod
39
40 =head2 base
41
42 Returns the base for the number: 16.
43
44 =cut
45
46 sub base () { 16 }
47
48 =pod
49
50 =head2 literal
51
52 Return the numeric value of this token.
53
54 =cut
55
56 sub literal {
57         my $self = shift;
58         my $str = $self->_literal;
59         my $neg = $str =~ s/^\-//;
60         my $val = hex $str;
61         return $neg ? -$val : $val;
62 }
63
64
65
66
67
68 #####################################################################
69 # Tokenizer Methods
70
71 sub __TOKENIZER__on_char {
72         my $class = shift;
73         my $t     = shift;
74         my $char  = substr( $t->{line}, $t->{line_cursor}, 1 );
75
76         # Allow underscores straight through
77         return 1 if $char eq '_';
78
79         if ( $char =~ /[\da-f]/ ) {
80                 return 1;
81         }
82
83         # Doesn't fit a special case, or is after the end of the token
84         # End of token.
85         $t->_finalize_token->__TOKENIZER__on_char( $t );
86 }
87
88 1;
89
90 =pod
91
92 =head1 SUPPORT
93
94 See the L<support section|PPI/SUPPORT> in the main module.
95
96 =head1 AUTHOR
97
98 Chris Dolan E<lt>cdolan@cpan.orgE<gt>
99
100 =head1 COPYRIGHT
101
102 Copyright 2006 Chris Dolan.
103
104 This program is free software; you can redistribute
105 it and/or modify it under the same terms as Perl itself.
106
107 The full text of the license can be found in the
108 LICENSE file included with this module.
109
110 =cut