<?php

namespace Planaday\Html\Tags\Course;

use Planaday\Html\Tags\Course\Button\CourseButton;
use Planaday\Html\Tags\Course\CourseBookingForm\CourseBookingForm;
use Planaday\Html\Tags\Course\CourseCalendarShortcode\CourseCalendarShortcode;
use Planaday\Html\Tags\Course\CourseListItem\CourseListItem;
use Planaday\Html\Tags\Course\CourseListShortcode\CourseListShortcode;
use Planaday\Html\Tags\Course\CourseSearchForm\CourseSearchForm;
use Planaday\Html\Tags\Course\CourseSearchShortcode\CourseSearchShortcode;
use Planaday\Html\Tags\Course\CourseShortcode\CourseShortcode;
use Planaday\Html\Tags\Course\Dates\CourseDates;
use Planaday\Html\Tags\Course\Id\CourseId;
use Planaday\Html\Tags\Course\Name\CourseName;
use Planaday\Html\Tags\Course\NotFoundRedirect\NotFoundRedirect;
use Planaday\Html\Tags\Course\Price\CoursePrice;
use Planaday\Html\Tags\Course\PriceRemark\CoursePriceRemark;
use Planaday\Html\Tags\TagHandlerTemplate;
use Planaday\Utility\DependencyInjection\Container;

class CourseTagsHandler extends TagHandlerTemplate {
	public function __construct() {
		$this->tags = [
			CourseSearchForm::TAG        => function ( Container $registry ) {
				return new CourseSearchForm( $registry );
			},
			CourseListShortcode::TAG     => function ( Container $registry ) {
				return new CourseListShortcode( $registry );
			},
			CourseSearchShortcode::TAG   => function ( Container $registry ) {
				return new CourseSearchShortcode( $registry );
			},
			CourseListItem::TAG          => function ( Container $registry ) {
				return new CourseListItem( $registry );
			},
			CourseCalendarShortcode::TAG => function ( Container $registry ) {
				return new CourseCalendarShortcode( $registry );
			},
			CourseShortcode::TAG         => function ( Container $registry ) {
				return new CourseShortcode( $registry );
			},
			CourseBookingForm::TAG       => function ( Container $registry ) {
				return new CourseBookingForm( $registry );
			},
			CourseDates::TAG             => function ( Container $registry ) {
				return new CourseDates( $registry );
			},
			CourseButton::TAG           => function ( Container $registry ) {
				return new CourseButton( $registry );
			},
			CourseName::TAG             => function ( Container $registry ) {
				return new CourseName( $registry );
			},
			CoursePrice::TAG            => function ( Container $registry ) {
				return new CoursePrice( $registry );
			},
			CoursePriceRemark::TAG      => function ( Container $registry ) {
				return new CoursePriceRemark( $registry );
			},
			CourseId::TAG               => function ( Container $registry ) {
				return new CourseId( $registry );
			},
			NotFoundRedirect::TAG       => function ( Container $registry ) {
				return new NotFoundRedirect( $registry );
			}
		];
	}
}