<commit_before><?php
/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

namespace Zend\Json\Server;

class Error
{
    const ERROR_PARSE = -32700;
    const ERROR_INVALID_REQUEST = -32600;
    const ERROR_INVALID_METHOD = -32601;
    const ERROR_INVALID_PARAMS = -32602;
    const ERROR_INTERNAL = -32603;
    const ERROR_OTHER = -32000;

    /**
     * Current code
     * @var int
     */
    protected $code = self::ERROR_OTHER;

    /**
     * Error data
     * @var mixed
     */
    protected $data;

    /**
     * Error message
     * @var string
     */
    protected $message;

    /**
     * Constructor
     *
     * @param  string $message
     * @param  int $code
     * @param  mixed $data
     */
    public function __construct(
        $message = null,
        $code = self::ERROR_OTHER,
        $data = null
    ) {
        $this->setMessage($message)
            ->setCode($code)
            ->setData($data);
    }

    /**
     * Set error code
     *
     * @param  int $code
     * @return \Zend\Json\Server\Error
     */
    public function setCode($code)
    {
        if (!is_scalar($code) || is_bool($code) || is_float($code)) {
            return $this;
        }

        if (is_string($code) && !is_numeric($code)) {
            return $this;
        }

        $code = (int)$code;
        $this->code = $code;

        return $this;
    }

    /**
     * Get error code
     *
     * @return int|null
     */
    public function getCode()
    {
        return $this->code;
    }

    /**
     * Set error message
     *
     * @param  string $message
     * @return \Zend\Json\Server\Error
     */
    public function setMessage($message)
    {
        if (!is_scalar($message)) {
            return $this;
        }

        $this->message = (string)$message;
        return $this;
    }

    /**
     * Get error message
     *
     * @return string
     */
    public function getMessage()
    {
        return $this->message;
    }

    /**
     * Set error data
     *
     * @param  mixed $data
     * @return \Zend\Json\Server\Error
     */
    public function setData($data)
    {
        $this->data = $data;
        return $this;
    }

    /**
     * Get error data
     *
     * @return mixed
     */
    public function getData()
    {
        return $this->data;
    }

    /**
     * Cast error to array
     *
     * @return array
     */
    public function toArray()
    {
        return array(
            'code' => $this->getCode(),
            'message' => $this->getMessage(),
            'data' => $this->getData(),
        );
    }

    /**
     * Cast error to JSON
     *
     * @return string
     */<commit_msg>fix CS<commit_after><?php
/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

namespace Zend\Json\Server;

class Error
{
    const ERROR_PARSE           = -32700;
    const ERROR_INVALID_REQUEST = -32600;
    const ERROR_INVALID_METHOD  = -32601;
    const ERROR_INVALID_PARAMS  = -32602;
    const ERROR_INTERNAL        = -32603;
    const ERROR_OTHER           = -32000;

    /**
     * Current code
     * @var int
     */
    protected $code = self::ERROR_OTHER;

    /**
     * Error data
     * @var mixed
     */
    protected $data;

    /**
     * Error message
     * @var string
     */
    protected $message;

    /**
     * Constructor
     *
     * @param  string $message
     * @param  int $code
     * @param  mixed $data
     */
    public function __construct($message = null, $code = self::ERROR_OTHER, $data = null) {
        $this->setMessage($message)
              ->setCode($code)
              ->setData($data);
    }

    /**
     * Set error code
     *
     * @param  int $code
     * @return \Zend\Json\Server\Error
     */
    public function setCode($code)
    {
        if (!is_scalar($code) || is_bool($code) || is_float($code)) {
            return $this;
        }

        if (is_string($code) && !is_numeric($code)) {
            return $this;
        }

        $code = (int) $code;
        $this->code = $code;

        return $this;
    }

    /**
     * Get error code
     *
     * @return int|null
     */
    public function getCode()
    {
        return $this->code;
    }

    /**
     * Set error message
     *
     * @param  string $message
     * @return \Zend\Json\Server\Error
     */
    public function setMessage($message)
    {
        if (!is_scalar($message)) {
            return $this;
        }

        $this->message = (string) $message;
        return $this;
    }

    /**
     * Get error message
     *
     * @return string
     */
    public function getMessage()
    {
        return $this->message;
    }

    /**
     * Set error data
     *
     * @param  mixed $data
     * @return \Zend\Json\Server\Error
     */
    public function setData($data)
    {
        $this->data = $data;
        return $this;
    }

    /**
     * Get error data
     *
     * @return mixed
     */
    public function getData()
    {
        return $this->data;
    }

    /**
     * Cast error to array
     *
     * @return array
     */
    public function toArray()
    {
        return array(
            'code'    => $this->getCode(),
            'message' => $this->getMessage(),
            'data'    => $this->getData(),
        );
    }

    /**
     * Cast error to JSON
     *
     * @return string
     */
{'fraction_non_alphanumeric': 0.1367053998632946, 'fraction_numerical': 0.013328776486671223, 'mean_word_length': 1.5614879649890592, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '769548', 'n_tokens_mistral': 1898, 'n_tokens_neox': 1803, 'n_words': 408}