Astro-App-Satpass2

 view release on metacpan or  search on metacpan

t/format_template.t  view on Meta::CPAN

    Ephemeris Type: 0
    Inclination: 72.8435 degrees
    Ascending Node: 07:43:53 in right ascension
    Eccentricity: 0.0086731
    Argument Of Perigee: 52.6988 degrees from ascending node
    Mean Anomaly: 110.5714 degrees
    Element Number: 8
    Revolutions At Epoch: 105
    Period: 01:29:37
    Semimajor Axis: 6634.0 kilometers
    Perigee: 198.3 kilometers
    Apogee: 313.4 kilometers
EOD

eval {
    my $magic_word = 'Plugh';
    $ft->add_formatter_method( {
	    default	=> {
		width	=> 6,
	    },
	    dimension	=> {
		dimension	=> 'string_pseudo_units',
	    },
	    fetch	=> sub {
##		my ( $self, $name, $arg ) = @_;
		my ( $self ) = @_;	# Arguments unused
		return qq["$self->{data}{magic_word}"];
	    },
	    name	=> 'magic_word',
	} );
    $ft->template( advent => q<A hollow voice says [% data.magic_word( width = '' ) %]> );
    is $ft->format(
	template	=> 'advent',
	data		=> {
	    magic_word	=> $magic_word,
	}
    ), qq{A hollow voice says "$magic_word"}, 'Add a formatter';
    1;
} or fail "Added formatter failed: $@";

SKIP: {

    load_or_skip( 'DateTime::Calendar::Christian', 1 );

    eval {
	require DateTime::TimeZone;
	my $tz = DateTime::TimeZone->new( name => 'local' );
	1;
    } or do {
	my $err = $@;
	defined $err
		or $err = 'Cannot determine local time zone';
	chomp $err;
	skip "$err under $^O", 1;
    };


    $ft->template( fubar => q<[% data.date( width = '' ) %]> );
    $ft->time_formatter(
	q<DateTime::Strftime,back_end=DateTime::Calendar::Christian> );
    $ft->date_format( '%{year_with_christian_era}-%m-%d %{calendar_name}' );

    my $dt = DateTime::Calendar::Christian->new(
	year		=> -43,
	month		=> 3,
	day		=> 15,
	time_zone	=> 'UTC',
    );

    is $ft->format(
	template	=> 'fubar',
	data		=> {
	    time	=> $dt->epoch(),
	},
    ), q{44BC-03-15 Julian}, 'Julian dates';

}

done_testing;

1;

# ex: set textwidth=72 :



( run in 1.450 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )