first commit

This commit is contained in:
2024-07-15 12:33:27 +02:00
commit ce50ae282b
22084 changed files with 2623791 additions and 0 deletions

View File

@@ -0,0 +1,135 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Serializer\Context\Encoder;
use Symfony\Component\Serializer\Context\ContextBuilderInterface;
use Symfony\Component\Serializer\Context\ContextBuilderTrait;
use Symfony\Component\Serializer\Encoder\CsvEncoder;
use Symfony\Component\Serializer\Exception\InvalidArgumentException;
/**
* A helper providing autocompletion for available CsvEncoder options.
*
* @author Mathias Arlaud <mathias.arlaud@gmail.com>
*/
final class CsvEncoderContextBuilder implements ContextBuilderInterface
{
use ContextBuilderTrait;
/**
* Configures the column delimiter character.
*
* Must be a single character.
*
* @throws InvalidArgumentException
*/
public function withDelimiter(?string $delimiter): static
{
if (null !== $delimiter && 1 !== \strlen($delimiter)) {
throw new InvalidArgumentException(sprintf('The "%s" delimiter must be a single character.', $delimiter));
}
return $this->with(CsvEncoder::DELIMITER_KEY, $delimiter);
}
/**
* Configures the field enclosure character.
*
* Must be a single character.
*
* @throws InvalidArgumentException
*/
public function withEnclosure(?string $enclosure): static
{
if (null !== $enclosure && 1 !== \strlen($enclosure)) {
throw new InvalidArgumentException(sprintf('The "%s" enclosure must be a single character.', $enclosure));
}
return $this->with(CsvEncoder::ENCLOSURE_KEY, $enclosure);
}
/**
* Configures the escape character.
*
* Must be empty or a single character.
*
* @throws InvalidArgumentException
*/
public function withEscapeChar(?string $escapeChar): static
{
if (null !== $escapeChar && \strlen($escapeChar) > 1) {
throw new InvalidArgumentException(sprintf('The "%s" escape character must be empty or a single character.', $escapeChar));
}
return $this->with(CsvEncoder::ESCAPE_CHAR_KEY, $escapeChar);
}
/**
* Configures the key separator when (un)flattening arrays.
*/
public function withKeySeparator(?string $keySeparator): static
{
return $this->with(CsvEncoder::KEY_SEPARATOR_KEY, $keySeparator);
}
/**
* Configures the headers.
*
* @param list<mixed>|null $headers
*/
public function withHeaders(?array $headers): static
{
return $this->with(CsvEncoder::HEADERS_KEY, $headers);
}
/**
* Configures whether formulas should be escaped.
*/
public function withEscapedFormulas(?bool $escapedFormulas): static
{
return $this->with(CsvEncoder::ESCAPE_FORMULAS_KEY, $escapedFormulas);
}
/**
* Configures whether the decoded result should be considered as a collection
* or as a single element.
*/
public function withAsCollection(?bool $asCollection): static
{
return $this->with(CsvEncoder::AS_COLLECTION_KEY, $asCollection);
}
/**
* Configures whether the input (or output) is containing (or will contain) headers.
*/
public function withNoHeaders(?bool $noHeaders): static
{
return $this->with(CsvEncoder::NO_HEADERS_KEY, $noHeaders);
}
/**
* Configures the end of line characters.
*/
public function withEndOfLine(?string $endOfLine): static
{
return $this->with(CsvEncoder::END_OF_LINE, $endOfLine);
}
/**
* Configures whether to add the UTF-8 Byte Order Mark (BOM)
* at the beginning of the encoded result or not.
*/
public function withOutputUtf8Bom(?bool $outputUtf8Bom): static
{
return $this->with(CsvEncoder::OUTPUT_UTF8_BOM_KEY, $outputUtf8Bom);
}
}

View File

@@ -0,0 +1,72 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Serializer\Context\Encoder;
use Symfony\Component\Serializer\Context\ContextBuilderInterface;
use Symfony\Component\Serializer\Context\ContextBuilderTrait;
use Symfony\Component\Serializer\Encoder\JsonDecode;
use Symfony\Component\Serializer\Encoder\JsonEncode;
/**
* A helper providing autocompletion for available JsonEncoder options.
*
* @author Mathias Arlaud <mathias.arlaud@gmail.com>
*/
final class JsonEncoderContextBuilder implements ContextBuilderInterface
{
use ContextBuilderTrait;
/**
* Configures the json_encode flags bitmask.
*
* @see https://www.php.net/manual/en/json.constants.php
*
* @param positive-int|null $options
*/
public function withEncodeOptions(?int $options): static
{
return $this->with(JsonEncode::OPTIONS, $options);
}
/**
* Configures the json_decode flags bitmask.
*
* @see https://www.php.net/manual/en/json.constants.php
*
* @param positive-int|null $options
*/
public function withDecodeOptions(?int $options): static
{
return $this->with(JsonDecode::OPTIONS, $options);
}
/**
* Configures whether decoded objects will be given as
* associative arrays or as nested stdClass.
*/
public function withAssociative(?bool $associative): static
{
return $this->with(JsonDecode::ASSOCIATIVE, $associative);
}
/**
* Configures the maximum recursion depth.
*
* Must be strictly positive.
*
* @param positive-int|null $recursionDepth
*/
public function withRecursionDepth(?int $recursionDepth): static
{
return $this->with(JsonDecode::RECURSION_DEPTH, $recursionDepth);
}
}

View File

@@ -0,0 +1,155 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Serializer\Context\Encoder;
use Symfony\Component\Serializer\Context\ContextBuilderInterface;
use Symfony\Component\Serializer\Context\ContextBuilderTrait;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
/**
* A helper providing autocompletion for available XmlEncoder options.
*
* @author Mathias Arlaud <mathias.arlaud@gmail.com>
*/
final class XmlEncoderContextBuilder implements ContextBuilderInterface
{
use ContextBuilderTrait;
/**
* Configures whether the decoded result should be considered as a collection
* or as a single element.
*/
public function withAsCollection(?bool $asCollection): static
{
return $this->with(XmlEncoder::AS_COLLECTION, $asCollection);
}
/**
* Configures node types to ignore while decoding.
*
* @see https://www.php.net/manual/en/dom.constants.php
*
* @param list<int>|null $decoderIgnoredNodeTypes
*/
public function withDecoderIgnoredNodeTypes(?array $decoderIgnoredNodeTypes): static
{
return $this->with(XmlEncoder::DECODER_IGNORED_NODE_TYPES, $decoderIgnoredNodeTypes);
}
/**
* Configures node types to ignore while encoding.
*
* @see https://www.php.net/manual/en/dom.constants.php
*
* @param list<int>|null $encoderIgnoredNodeTypes
*/
public function withEncoderIgnoredNodeTypes(?array $encoderIgnoredNodeTypes): static
{
return $this->with(XmlEncoder::ENCODER_IGNORED_NODE_TYPES, $encoderIgnoredNodeTypes);
}
/**
* Configures the DOMDocument encoding.
*
* @see https://www.php.net/manual/en/class.domdocument.php#domdocument.props.encoding
*/
public function withEncoding(?string $encoding): static
{
return $this->with(XmlEncoder::ENCODING, $encoding);
}
/**
* Configures whether to encode with indentation and extra space.
*
* @see https://php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput
*/
public function withFormatOutput(?bool $formatOutput): static
{
return $this->with(XmlEncoder::FORMAT_OUTPUT, $formatOutput);
}
/**
* Configures the DOMDocument::loadXml options bitmask.
*
* @see https://www.php.net/manual/en/libxml.constants.php
*
* @param positive-int|null $loadOptions
*/
public function withLoadOptions(?int $loadOptions): static
{
return $this->with(XmlEncoder::LOAD_OPTIONS, $loadOptions);
}
/**
* Configures the DOMDocument::saveXml options bitmask.
*
* @see https://www.php.net/manual/en/libxml.constants.php
*
* @param positive-int|null $saveOptions
*/
public function withSaveOptions(?int $saveOptions): static
{
return $this->with(XmlEncoder::SAVE_OPTIONS, $saveOptions);
}
/**
* Configures whether to keep empty nodes.
*/
public function withRemoveEmptyTags(?bool $removeEmptyTags): static
{
return $this->with(XmlEncoder::REMOVE_EMPTY_TAGS, $removeEmptyTags);
}
/**
* Configures name of the root node.
*/
public function withRootNodeName(?string $rootNodeName): static
{
return $this->with(XmlEncoder::ROOT_NODE_NAME, $rootNodeName);
}
/**
* Configures whether the document will be standalone.
*
* @see https://php.net/manual/en/class.domdocument.php#domdocument.props.xmlstandalone
*/
public function withStandalone(?bool $standalone): static
{
return $this->with(XmlEncoder::STANDALONE, $standalone);
}
/**
* Configures whether casting numeric string attributes to integers or floats.
*/
public function withTypeCastAttributes(?bool $typeCastAttributes): static
{
return $this->with(XmlEncoder::TYPE_CAST_ATTRIBUTES, $typeCastAttributes);
}
/**
* Configures the version number of the document.
*
* @see https://php.net/manual/en/class.domdocument.php#domdocument.props.xmlversion
*/
public function withVersion(?string $version): static
{
return $this->with(XmlEncoder::VERSION, $version);
}
/**
* Configures whether to wrap strings within CDATA sections.
*/
public function withCdataWrapping(?bool $cdataWrapping): static
{
return $this->with(XmlEncoder::CDATA_WRAPPING, $cdataWrapping);
}
}

View File

@@ -0,0 +1,68 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Serializer\Context\Encoder;
use Symfony\Component\Serializer\Context\ContextBuilderInterface;
use Symfony\Component\Serializer\Context\ContextBuilderTrait;
use Symfony\Component\Serializer\Encoder\YamlEncoder;
/**
* A helper providing autocompletion for available YamlEncoder options.
*
* Note that the "indentation" setting is not offered in this builder because
* it can only be set during the construction of the YamlEncoder, but not per
* call.
*
* @author Mathias Arlaud <mathias.arlaud@gmail.com>
*/
final class YamlEncoderContextBuilder implements ContextBuilderInterface
{
use ContextBuilderTrait;
/**
* Configures the threshold to switch to inline YAML.
*/
public function withInlineThreshold(?int $inlineThreshold): static
{
return $this->with(YamlEncoder::YAML_INLINE, $inlineThreshold);
}
/**
* Configures the indentation level.
*
* Must be positive.
*
* @param int<0, max>|null $indentLevel
*/
public function withIndentLevel(?int $indentLevel): static
{
return $this->with(YamlEncoder::YAML_INDENT, $indentLevel);
}
/**
* Configures \Symfony\Component\Yaml\Dumper::dump flags bitmask.
*
* @see \Symfony\Component\Yaml\Yaml
*/
public function withFlags(?int $flags): static
{
return $this->with(YamlEncoder::YAML_FLAGS, $flags);
}
/**
* Configures whether to preserve empty objects "{}" or to convert them to null.
*/
public function withPreservedEmptyObjects(?bool $preserveEmptyObjects): static
{
return $this->with(YamlEncoder::PRESERVE_EMPTY_OBJECTS, $preserveEmptyObjects);
}
}