Yaml.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * @package Grav\Common
  4. *
  5. * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved.
  6. * @license MIT License; see LICENSE file for details.
  7. */
  8. namespace Grav\Common;
  9. use Grav\Framework\File\Formatter\YamlFormatter;
  10. /**
  11. * Class Yaml
  12. * @package Grav\Common
  13. */
  14. abstract class Yaml
  15. {
  16. /** @var YamlFormatter|null */
  17. protected static $yaml;
  18. /**
  19. * @param string $data
  20. * @return array
  21. */
  22. public static function parse($data)
  23. {
  24. if (null === static::$yaml) {
  25. static::init();
  26. }
  27. return static::$yaml->decode($data);
  28. }
  29. /**
  30. * @param array $data
  31. * @param int|null $inline
  32. * @param int|null $indent
  33. * @return string
  34. */
  35. public static function dump($data, $inline = null, $indent = null)
  36. {
  37. if (null === static::$yaml) {
  38. static::init();
  39. }
  40. return static::$yaml->encode($data, $inline, $indent);
  41. }
  42. /**
  43. * @return void
  44. */
  45. protected static function init()
  46. {
  47. $config = [
  48. 'inline' => 5,
  49. 'indent' => 2,
  50. 'native' => true,
  51. 'compat' => true
  52. ];
  53. static::$yaml = new YamlFormatter($config);
  54. }
  55. }