-sub select_tag {
- my $self = shift;
- my $name = shift;
- my $collection = shift;
- my %attributes = _hashify(@_);
-
- $attributes{id} ||= $self->name_to_id($name);
-
- my $value_key = delete($attributes{value_key}) || 'id';
- my $title_key = delete($attributes{title_key}) || $value_key;
- my $default_key = delete($attributes{default_key}) || 'selected';
-
-
- my $value_title_sub = delete($attributes{value_title_sub});
-
- my $value_sub = delete($attributes{value_sub});
- my $title_sub = delete($attributes{title_sub});
- my $default_sub = delete($attributes{default_sub});
-
-
- my %selected;
-
- if ( ref($attributes{default}) eq 'ARRAY' ) {
-
- foreach my $entry (@{$attributes{default}}) {
- $selected{$entry} = 1;
- }
- } elsif ( defined($attributes{default}) ) {
- $selected{$attributes{default}} = 1;
- }
-
- delete($attributes{default});
-
-
- my @options;
-
- if ( delete($attributes{with_empty}) ) {
- push(@options, [undef, $attributes{empty_title} || '']);
- }
-
- my $normalize_entry = sub {
-
- my ($type, $entry, $sub, $key) = @_;
-
- if ( $sub ) {
- return $sub->($entry);
- }
-
- my $ref = ref($entry);
-
- if ( !$ref ) {
-
- if ( $type eq 'value' || $type eq 'title' ) {
- return $entry;
- }
-
- return 0;
- }
-
- if ( $ref eq 'ARRAY' ) {
-
- if ( $type eq 'value' ) {
- return $entry->[0];
- }
-
- if ( $type eq 'title' ) {
- return $entry->[1];
- }
-
- return $entry->[2];
- }
-
- if ( $ref eq 'HASH' ) {
- return $entry->{$key};
- }
-
- if ( $type ne 'default' || $entry->can($key) ) {
- return $entry->$key;
- }
-
- return undef;
- };
-
- foreach my $entry ( @{ $collection } ) {
- my $value;
- my $title;
-
- if ( $value_title_sub ) {
- ($value, $title) = $value_title_sub->($entry);
- } else {
-
- $value = $normalize_entry->('value', $entry, $value_sub, $value_key);
- $title = $normalize_entry->('title', $entry, $title_sub, $title_key);
- }
-
- my $default = $normalize_entry->('default', $entry, $default_sub, $default_key);
+sub name_to_id { return _call_presenter('name_to_id', @_); }
+sub html_tag { return _call_presenter('html_tag', @_); }
+sub select_tag { return _call_presenter('select_tag', @_); }
+sub input_tag { return _call_presenter('input_tag', @_); }
+sub truncate { return _call_presenter('truncate', @_); }
+sub simple_format { return _call_presenter('simple_format', @_); }