Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ES (Spanish) Translation #128

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
309 changes: 309 additions & 0 deletions translations/versions/v1.4.0/es/src/Attribute.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,309 @@
<?php

namespace Rakit\Validation;

class Attribute
{

/** @var array */
protected $rules = [];

/** @var string */
protected $key;

/** @var string|null */
protected $alias;

/** @var \Rakit\Validation\Validation */
protected $validation;

/** @var bool */
protected $required = false;

/** @var \Rakit\Validation\Validation|null */
protected $primaryAttribute = null;

/** @var array */
protected $otherAttributes = [];

/** @var array */
protected $keyIndexes = [];

/**
* Constructor
*
* @param \Rakit\Validation\Validation $validation
* @param string $key
* @param string|null $alias
* @param array $rules
* @return void
*/
public function __construct(
Validation $validation,
string $key,
$alias = null,
array $rules = []
) {
$this->validation = $validation;
$this->alias = $alias;
$this->key = $key;
foreach ($rules as $rule) {
$this->addRule($rule);
}
}

/**
* Set the primary attribute
*
* @param \Rakit\Validation\Attribute $primaryAttribute
* @return void
*/
public function setPrimaryAttribute(Attribute $primaryAttribute)
{
$this->primaryAttribute = $primaryAttribute;
}

/**
* Set key indexes
*
* @param array $keyIndexes
* @return void
*/
public function setKeyIndexes(array $keyIndexes)
{
$this->keyIndexes = $keyIndexes;
}

/**
* Get primary attributes
*
* @return \Rakit\Validation\Attribute|null
*/
public function getPrimaryAttribute()
{
return $this->primaryAttribute;
}

/**
* Set other attributes
*
* @param array $otherAttributes
* @return void
*/
public function setOtherAttributes(array $otherAttributes)
{
$this->otherAttributes = [];
foreach ($otherAttributes as $otherAttribute) {
$this->addOtherAttribute($otherAttribute);
}
}

/**
* Add other attributes
*
* @param \Rakit\Validation\Attribute $otherAttribute
* @return void
*/
public function addOtherAttribute(Attribute $otherAttribute)
{
$this->otherAttributes[] = $otherAttribute;
}

/**
* Get other attributes
*
* @return array
*/
public function getOtherAttributes(): array
{
return $this->otherAttributes;
}

/**
* Add rule
*
* @param \Rakit\Validation\Rule $rule
* @return void
*/
public function addRule(Rule $rule)
{
$rule->setAttribute($this);
$rule->setValidation($this->validation);
$this->rules[$rule->getKey()] = $rule;
}

/**
* Get rule
*
* @param string $ruleKey
* @return void
*/
public function getRule(string $ruleKey)
{
return $this->hasRule($ruleKey)? $this->rules[$ruleKey] : null;
}

/**
* Get rules
*
* @return array
*/
public function getRules(): array
{
return $this->rules;
}

/**
* Check the $ruleKey has in the rule
*
* @param string $ruleKey
* @return bool
*/
public function hasRule(string $ruleKey): bool
{
return isset($this->rules[$ruleKey]);
}

/**
* Set required
*
* @param boolean $required
* @return void
*/
public function setRequired(bool $required)
{
$this->required = $required;
}

/**
* Set rule is required
*
* @return boolean
*/
public function isRequired(): bool
{
return $this->required;
}

/**
* Get key
*
* @return string
*/
public function getKey(): string
{
return $this->key;
}

/**
* Get key indexes
*
* @return array
*/
public function getKeyIndexes(): array
{
return $this->keyIndexes;
}

/**
* Get value
*
* @param string|null $key
* @return mixed
*/
public function getValue(string $key = null)
{
if ($key && $this->isArrayAttribute()) {
$key = $this->resolveSiblingKey($key);
}

if (!$key) {
$key = $this->getKey();
}

return $this->validation->getValue($key);
}

/**
* Get that is array attribute
*
* @return boolean
*/
public function isArrayAttribute(): bool
{
return count($this->getKeyIndexes()) > 0;
}

/**
* Check this attribute is using dot notation
*
* @return boolean
*/
public function isUsingDotNotation(): bool
{
return strpos($this->getKey(), '.') !== false;
}

/**
* Resolve sibling key
*
* @param string $key
* @return string
*/
public function resolveSiblingKey(string $key): string
{
$indexes = $this->getKeyIndexes();
$keys = explode("*", $key);
$countAsterisks = count($keys) - 1;
if (count($indexes) < $countAsterisks) {
$indexes = array_merge($indexes, array_fill(0, $countAsterisks - count($indexes), "*"));
}
$args = array_merge([str_replace("*", "%s", $key)], $indexes);
return call_user_func_array('sprintf', $args);
}

/**
* Get humanize key
*
* @return string
*/
public function getHumanizedKey()
{
$primaryAttribute = $this->getPrimaryAttribute();
$key = str_replace('_', ' ', $this->key);

// Resolve key from array validation
if ($primaryAttribute) {
$split = explode('.', $key);
$key = implode(' ', array_map(function ($word) {
if (is_numeric($word)) {
$word = $word + 1;
}
return Helper::snakeCase($word, ' ');
}, $split));
}

return ucfirst($key);
}

/**
* Set alias
*
* @param string $alias
* @return void
*/
public function setAlias(string $alias)
{
$this->alias = $alias;
}

/**
* Get alias
*
* @return string|null
*/
public function getAlias()
{
return $this->alias;
}
}
Loading