*/
class Etym
{
    protected $baseURL;
    protected $domSearch;
    protected $pasteCmd;
    /**
     * Initalise with config options
     *
     * @param string $baseURL
     * @param string $domSearch
     * @param string $pasteCmd
     * @author Phil Burton 
     */
    public function __construct(string $baseURL, string $domSearch)
    {
        $this->baseURL = $baseURL;
        $this->domSearch = $domSearch;
    }
    /**
     * Search for and return etym defeiniton
     *
     * @return string
     * @author Phil Burton 
     */
    public function getDefinition(): string
    {
        $input = $this->readStdin();
        $targetURL = $this->baseURL . $input;
        $dom = new Dom;
        $dom->loadFromUrl($targetURL, [], new Curl);
        $html = $dom->find($this->domSearch);
        if (!$html instanceof \PHPHtmlParser\Dom\Collection || count($html) <= 0) {
            echo "No entry found for '$input'!\n";
            exit(2);
        }
        $definition = $this->cleanUpHtml($html[0]->innerHtml());
        // echo $definition . "\n";
        return $definition;
    }
    /**
     * Get and return the user input
     *
     * @return string
     * @author Phil Burton 
     */
    protected function readStdin(): string
    {
        $input = fgets(STDIN);
        if ($input === false) {
            echo "No input supplied!\n";
            exit(1);
        }
        $input = rtrim($input, "\n");
        return $input;
    }
    /**
     * Tidy and return the hmtl
     *
     * @param string $input
     * @return string
     * @author Phil Burton 
     */
    protected function cleanUpHtml(string $input): string
    {
        // Strip HTML Tags
        $clear = strip_tags($input);
        // Clean up things like &
        $clear = html_entity_decode($clear);
        // Strip out any url-encoded stuff
        $clear = urldecode($clear);
        // Replace Multiple spaces with single space
        $clear = preg_replace('/ +/', ' ', $clear);
        // Trim the string of leading/trailing space
        $clear = trim($clear);
        // Capitalise the first char.
        $clear = ucfirst($clear);
        return $clear;
    }
}