Windows NT KAMIDAKI 10.0 build 19045 (Windows 10) AMD64
Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.3.9
Server IP : 192.168.3.16 & Your IP : 216.73.216.52
Domains :
Cant Read [ /etc/named.conf ]
User : SISTEMA
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
C: /
xampp /
perl /
vendor /
lib /
PPI /
Token /
Delete
Unzip
Name
Size
Permission
Date
Action
Number
[ DIR ]
drwxrwxrwx
2024-07-26 17:38
Quote
[ DIR ]
drwxrwxrwx
2024-07-26 17:38
QuoteLike
[ DIR ]
drwxrwxrwx
2024-07-26 17:38
Regexp
[ DIR ]
drwxrwxrwx
2024-07-26 17:38
_QuoteEngine
[ DIR ]
drwxrwxrwx
2024-07-26 17:38
ArrayIndex.pm
1.33
KB
-rw-rw-rw-
2019-07-09 19:15
Attribute.pm
3.74
KB
-rw-rw-rw-
2019-07-09 19:15
BOM.pm
2.46
KB
-rw-rw-rw-
2019-07-09 19:15
Cast.pm
1.7
KB
-rw-rw-rw-
2019-07-09 19:15
Comment.pm
3.36
KB
-rw-rw-rw-
2019-07-09 19:15
DashedWord.pm
1.93
KB
-rw-rw-rw-
2019-07-09 19:15
Data.pm
1.93
KB
-rw-rw-rw-
2019-07-09 19:15
End.pm
2.39
KB
-rw-rw-rw-
2019-07-09 19:15
HereDoc.pm
8.79
KB
-rw-rw-rw-
2019-07-09 19:15
Label.pm
1.08
KB
-rw-rw-rw-
2019-07-09 19:15
Magic.pm
5.57
KB
-rw-rw-rw-
2019-07-09 19:15
Number.pm
3.21
KB
-rw-rw-rw-
2019-07-09 19:15
Operator.pm
2.9
KB
-rw-rw-rw-
2019-07-09 19:15
Pod.pm
3.03
KB
-rw-rw-rw-
2019-07-09 19:15
Prototype.pm
2.47
KB
-rw-rw-rw-
2019-07-09 19:15
Quote.pm
2.43
KB
-rw-rw-rw-
2019-07-09 19:15
QuoteLike.pm
1.59
KB
-rw-rw-rw-
2019-07-09 19:15
Regexp.pm
2.48
KB
-rw-rw-rw-
2019-07-09 19:15
Separator.pm
1.29
KB
-rw-rw-rw-
2019-07-09 19:15
Structure.pm
4.7
KB
-rw-rw-rw-
2019-07-09 19:15
Symbol.pm
5.24
KB
-rw-rw-rw-
2019-07-09 19:15
Unknown.pm
12.33
KB
-rw-rw-rw-
2019-07-09 19:15
Whitespace.pm
11.72
KB
-rw-rw-rw-
2019-07-09 19:15
Word.pm
9.13
KB
-rw-rw-rw-
2019-07-09 19:15
_QuoteEngine.pm
5.86
KB
-rw-rw-rw-
2019-07-09 19:15
Save
Rename
package PPI::Token::Attribute; =pod =head1 NAME PPI::Token::Attribute - A token for a subroutine attribute =head1 INHERITANCE PPI::Token::Attribute isa PPI::Token isa PPI::Element =head1 DESCRIPTION In Perl, attributes are a relatively recent addition to the language. Given the code C< sub foo : bar(something) {} >, the C<bar(something)> part is the attribute. A C<PPI::Token::Attribute> token represents the entire of the attribute, as the braces and its contents are not parsed into the tree, and are treated by Perl (and thus by us) as a single string. =head1 METHODS This class provides some additional methods beyond those provided by its L<PPI::Token> and L<PPI::Element> parent classes. =cut use strict; use PPI::Token (); our $VERSION = '1.270'; # VERSION our @ISA = "PPI::Token"; ##################################################################### # PPI::Token::Attribute Methods =pod =head2 identifier The C<identifier> attribute returns the identifier part of the attribute. That is, for the attribute C<foo(bar)>, the C<identifier> method would return C<"foo">. =cut sub identifier { my $self = shift; $self->{content} =~ /^(.+?)\(/ ? $1 : $self->{content}; } =pod =head2 parameters The C<parameters> method returns the parameter string for the attribute. That is, for the attribute C<foo(bar)>, the C<parameters> method would return C<"bar">. Returns the parameters as a string (including the null string C<''> for the case of an attribute such as C<foo()>.) Returns C<undef> if the attribute does not have parameters. =cut sub parameters { my $self = shift; $self->{content} =~ /\((.*)\)$/ ? $1 : undef; } ##################################################################### # Tokenizer Methods sub __TOKENIZER__on_char { my $class = shift; my $t = shift; my $char = substr( $t->{line}, $t->{line_cursor}, 1 ); # Unless this is a '(', we are finished. unless ( $char eq '(' ) { # Finalise and recheck return $t->_finalize_token->__TOKENIZER__on_char( $t ); } # This is a bar(...) style attribute. # We are currently on the ( so scan in until the end. # We finish on the character AFTER our end my $string = $class->__TOKENIZER__scan_for_end( $t ); if ( ref $string ) { # EOF $t->{token}->{content} .= $$string; $t->_finalize_token; return 0; } # Found the end of the attribute $t->{token}->{content} .= $string; $t->_finalize_token->__TOKENIZER__on_char( $t ); } # Scan for a close braced, and take into account both escaping, # and open close bracket pairs in the string. When complete, the # method leaves the line cursor on the LAST character found. sub __TOKENIZER__scan_for_end { my $t = $_[1]; # Loop as long as we can get new lines my $string = ''; my $depth = 0; while ( exists $t->{line} ) { # Get the search area pos $t->{line} = $t->{line_cursor}; # Look for a match unless ( $t->{line} =~ /\G((?:\\.|[^()])*?[()])/gc ) { # Load in the next line and push to first character $string .= substr( $t->{line}, $t->{line_cursor} ); $t->_fill_line(1) or return \$string; $t->{line_cursor} = 0; next; } # Add to the string $string .= $1; $t->{line_cursor} += length $1; # Alter the depth and continue if we aren't at the end $depth += ($1 =~ /\($/) ? 1 : -1 and next; # Found the end return $string; } # Returning the string as a reference indicates EOF \$string; } 1; =pod =head1 SUPPORT See the L<support section|PPI/SUPPORT> in the main module. =head1 AUTHOR Adam Kennedy E<lt>adamk@cpan.orgE<gt> =head1 COPYRIGHT Copyright 2001 - 2011 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. =cut