159 |
$name .= qq|<sup title="$role_name">$nr</sup>|; |
$name .= qq|<sup title="$role_name">$nr</sup>|; |
160 |
} |
} |
161 |
qq|<td class="m">$name</td>| |
qq|<td class="m">$name</td>| |
162 |
} $self->class_methods( $class ); |
} sort $self->class_methods( $class ); |
163 |
|
|
164 |
my @attributes; |
my @attributes; |
165 |
if ( $meta->get_attribute_list ) { |
if ( $meta->get_attribute_list ) { |
201 |
eval { $properties = $attr->documentation . ' ' . $properties }; |
eval { $properties = $attr->documentation . ' ' . $properties }; |
202 |
|
|
203 |
qq|<td class="a">$html_name</td><td class="t">$type</td><td>$properties</td>| |
qq|<td class="a">$html_name</td><td class="t">$type</td><td>$properties</td>| |
204 |
} $meta->get_attribute_list |
} sort $meta->get_attribute_list |
205 |
} |
} |
206 |
|
|
207 |
my $table = qq|<table class="frey-introspect"><tr><th class="m">Methods</th><th class="a">Attributes</th><th>Type</th><th class="p">Properties</th></tr>|; |
my $table = qq|<table class="frey-introspect"><tr><th class="m">Methods</th><th class="a">Attributes</th><th>Type</th><th class="p">Properties</th></tr>|; |
213 |
} |
} |
214 |
$table .= qq|</table>|; |
$table .= qq|</table>|; |
215 |
|
|
216 |
|
my $path = $self->class_path( $class ); |
217 |
|
|
218 |
my $pod = Frey::Pod->new( class => $class, request_url => $self->request_url )->as_markup; |
my $pod = Frey::Pod->new( class => $class, request_url => $self->request_url )->as_markup; |
219 |
$pod = $pod->{body} if ref($pod); |
return $pod if $path =~ m{\.pod}; |
220 |
|
|
|
my $path = $self->class_path( $class ); |
|
221 |
my $Document = PPI::Document->new( $path ); |
my $Document = PPI::Document->new( $path ); |
222 |
|
|
223 |
# Create a reusable syntax highlighter |
# Create a reusable syntax highlighter |
242 |
my $runnable = join("\n", |
my $runnable = join("\n", |
243 |
map { |
map { |
244 |
$introspect->{runnable}->{$_}++; |
$introspect->{runnable}->{$_}++; |
245 |
qq|<a target="$class" href="/$class/$_">$_</a>| |
my $short = $_; |
246 |
|
$short =~ s{_as_(?:markup|data|sponge)$}{}; |
247 |
|
qq|<a target="$class" href="/$class/$_" title="/$class/$_">$short</a>| |
248 |
} $self->class_runnable( $class ) |
} $self->class_runnable( $class ) |
249 |
); |
); |
250 |
$runnable = " runnable: $runnable" if $runnable; |
$runnable = "<br>run: $runnable" if $runnable; |
251 |
|
|
252 |
$self->store( $introspect_path, $introspect ); |
$self->store( $introspect_path, $introspect ); |
253 |
|
|
266 |
return join("\n", |
return join("\n", |
267 |
qq|<h1>$class</h1>|, |
qq|<h1>$class</h1>|, |
268 |
qq|<div class="frey-introspect">$superclasses\n$roles\n$runnable\n|, |
qq|<div class="frey-introspect">$superclasses\n$roles\n$runnable\n|, |
269 |
|
$has_tests, |
270 |
$pod ? qq|<a class="frey-skip" href="#___top" title="Skip to POD" >pod</a>| : '', |
$pod ? qq|<a class="frey-skip" href="#___top" title="Skip to POD" >pod</a>| : '', |
271 |
$source ? qq|<a class="frey-skip" href="#source" title="Skip to source" >source</a>| : '', |
$source ? qq|<a class="frey-skip" href="#source" title="Skip to source" >source</a>| : '', |
|
$has_tests, |
|
272 |
qq|$table\n$pod\n</div>\n|, |
qq|$table\n$pod\n</div>\n|, |
273 |
qq|<h1>Source</h1><a name="source"></a><div class="frey-source">$source</div>|, |
qq|<h1>Source</h1><a name="source"></a><div class="frey-source">$source</div>|, |
274 |
); |
); |