<?php

namespace FML\Script;

/**
 * Class representing an Include of the ManiaLink Script
 *
 * @author    steeffeen
 * @copyright FancyManiaLinks Copyright © 2014 Steffen Schröder
 * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 */
class ScriptInclude {
	/*
	 * Constants
	 */
	const MATHLIB = 'MathLib';
	const TEXTLIB = 'TextLib';

	/*
	 * Protected properties
	 */
	protected $file = null;
	protected $namespace = null;

	/**
	 * Construct a new Script Include
	 *
	 * @param string $file      (optional) Include file
	 * @param string $namespace (optional) Include namespace
	 */
	public function __construct($file = null, $namespace = null) {
		$this->setFile($file);
		$this->setNamespace($namespace);
	}

	/**
	 * Set the file
	 *
	 * @param string $file Include file
	 * @return static
	 */
	public function setFile($file) {
		$this->file = (string)$file;
		return $this;
	}

	/**
	 * Set the namespace
	 *
	 * @param string $namespace Include namespace
	 * @return static
	 */
	public function setNamespace($namespace) {
		$this->namespace = (string)$namespace;
		return $this;
	}

	/**
	 * Get the namespace
	 *
	 * @return string
	 */
	public function getNamespace() {
		return $this->namespace;
	}

	/**
	 * Build the Script Include text
	 *
	 * @return string
	 */
	public function __toString() {
		return Builder::getInclude($this->file, $this->namespace);
	}
}