bump version to 1.25
[gitmo/Moose.git] / lib / Moose / Meta / Attribute / Native / Trait / String.pm
1 package Moose::Meta::Attribute::Native::Trait::String;
2 use Moose::Role;
3
4 our $VERSION   = '1.25';
5 $VERSION = eval $VERSION;
6 our $AUTHORITY = 'cpan:STEVAN';
7
8 use Moose::Meta::Method::Accessor::Native::String::append;
9 use Moose::Meta::Method::Accessor::Native::String::chomp;
10 use Moose::Meta::Method::Accessor::Native::String::chop;
11 use Moose::Meta::Method::Accessor::Native::String::clear;
12 use Moose::Meta::Method::Accessor::Native::String::inc;
13 use Moose::Meta::Method::Accessor::Native::String::length;
14 use Moose::Meta::Method::Accessor::Native::String::match;
15 use Moose::Meta::Method::Accessor::Native::String::prepend;
16 use Moose::Meta::Method::Accessor::Native::String::replace;
17 use Moose::Meta::Method::Accessor::Native::String::substr;
18
19 with 'Moose::Meta::Attribute::Native::Trait';
20
21 sub _default_default { q{} }
22 sub _default_is { 'rw' }
23 sub _helper_type { 'Str' }
24
25 no Moose::Role;
26
27 1;
28
29 __END__
30
31 =pod
32
33 =head1 NAME
34
35 Moose::Meta::Attribute::Native::Trait::String - Helper trait for Str attributes
36
37 =head1 SYNOPSIS
38
39   package MyHomePage;
40   use Moose;
41
42   has 'text' => (
43       traits  => ['String'],
44       is      => 'rw',
45       isa     => 'Str',
46       default => q{},
47       handles => {
48           add_text     => 'append',
49           replace_text => 'replace',
50       },
51   );
52
53   my $page = MyHomePage->new();
54   $page->add_text("foo");    # same as $page->text($page->text . "foo");
55
56 =head1 DESCRIPTION
57
58 This trait provides native delegation methods for strings.
59
60 =head1 DEFAULT TYPE
61
62 If you don't provide an C<isa> value for your attribute, it will default to
63 C<Str>.
64
65 =head1 PROVIDED METHODS
66
67 =over 4
68
69 =item * B<inc>
70
71 Increments the value stored in this slot using the magical string autoincrement
72 operator. Note that Perl doesn't provide analogous behavior in C<-->, so
73 C<dec> is not available. This method returns the new value.
74
75 This method does not accept any arguments.
76
77 =item * B<append($string)>
78
79 Appends to the string, like C<.=>, and returns the new value.
80
81 This method requires a single argument.
82
83 =item * B<prepend($string)>
84
85 Prepends to the string and returns the new value.
86
87 This method requires a single argument.
88
89 =item * B<replace($pattern, $replacement)>
90
91 Performs a regexp substitution (L<perlop/s>). There is no way to provide the
92 C<g> flag, but code references will be accepted for the replacement, causing
93 the regex to be modified with a single C<e>. C</smxi> can be applied using the
94 C<qr> operator. This method returns the new value.
95
96 This method requires two arguments.
97
98 =item * B<match($pattern)>
99
100 Runs the regex against the string and returns the matching value(s).
101
102 This method requires a single argument.
103
104 =item * B<chop>
105
106 Just like L<perlfunc/chop>. This method returns the chopped character.
107
108 This method does not accept any arguments.
109
110 =item * B<chomp>
111
112 Just like L<perlfunc/chomp>. This method returns the number of characters
113 removed.
114
115 This method does not accept any arguments.
116
117 =item * B<clear>
118
119 Sets the string to the empty string (not the value passed to C<default>).
120
121 This method does not have a defined return value.
122
123 This method does not accept any arguments.
124
125 =item * B<length>
126
127 Just like L<perlfunc/length>, returns the length of the string.
128
129 =item * B<substr>
130
131 This acts just like L<perlfunc/substr>. When called as a writer, it returns
132 the substring that was replaced, just like the Perl builtin.
133
134 This method requires at least one argument, and accepts no more than three.
135
136 =back
137
138 =head1 BUGS
139
140 See L<Moose/BUGS> for details on reporting bugs.
141
142 =head1 AUTHOR
143
144 Stevan Little E<lt>stevan@iinteractive.comE<gt>
145
146 =head1 COPYRIGHT AND LICENSE
147
148 Copyright 2007-2010 by Infinity Interactive, Inc.
149
150 L<http://www.iinteractive.com>
151
152 This library is free software; you can redistribute it and/or modify
153 it under the same terms as Perl itself.
154
155 =cut