├── boot.php ├── .gitignore ├── .php-cs-fixer.dist.php ├── .tools ├── bootstrap.php └── rexstan.php ├── .github └── workflows │ ├── publish-to-redaxo.yml │ ├── code-style.yml │ ├── tests.yml │ └── rexstan.yml ├── lib ├── content_template.php ├── console │ ├── content_generate.php │ ├── content_language.php │ ├── content_category.php │ └── content_article.php ├── content_slice.php ├── content_module.php └── content.php ├── composer.json ├── package.yml ├── phpunit.xml.dist ├── LICENSE ├── .eslintrc.js ├── tests └── unit │ └── rex_content_test.php ├── README.md └── .editorconfig /boot.php: -------------------------------------------------------------------------------- 1 | in(__DIR__) 7 | ->notPath('tests') 8 | ; 9 | 10 | return (new Redaxo\PhpCsFixerConfig\Config()) 11 | ->setFinder($finder) 12 | ; 13 | -------------------------------------------------------------------------------- /.tools/bootstrap.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | ' . $title . ' 13 | 14 | 15 | 16 | 17 | REX_ARTICLE[] 18 | 19 | '; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "license": "MIT", 3 | "scripts": { 4 | "lint": "phplint ./ --exclude=vendor --no-cache lib", 5 | "cs-dry": "php-cs-fixer fix -v --ansi --dry-run --config=.php-cs-fixer.dist.php", 6 | "cs-fix": "php-cs-fixer fix -v --ansi --config=.php-cs-fixer.dist.php", 7 | "test": "./vendor/bin/pest --testdox" 8 | }, 9 | "require-dev": { 10 | "redaxo/php-cs-fixer-config": "^2.0", 11 | "friendsofphp/php-cs-fixer": "^3.14", 12 | "overtrue/phplint": "^4.1", 13 | "pestphp/pest": "^1.22", 14 | "psr/log": "1.1.4", 15 | "symfony/console": "5.4" 16 | }, 17 | "config": { 18 | "allow-plugins": { 19 | "pestphp/pest-plugin": true 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /package.yml: -------------------------------------------------------------------------------- 1 | package: content 2 | version: "0.0.1" 3 | name: REDAXO Content Helper 4 | author: FriendsOfREDAXO 5 | supportpage: https://github.com/FriendsOfREDAXO/content 6 | 7 | requires: 8 | redaxo: ^5.14.0 9 | php: 10 | version: '>=8.0' 11 | 12 | console_commands: 13 | content:generate: content_generate 14 | content:article: content_article 15 | content:category: content_category 16 | content:language: content_language 17 | 18 | installer_ignore: 19 | - .git 20 | - .github 21 | - node_modules 22 | - tests 23 | - tests_output 24 | - .editorconfig 25 | - .eslintrc.js 26 | - .gitignore 27 | - .stylelintrc.js 28 | - composer.json 29 | - composer.lock 30 | - nightwatch.conf.js 31 | - package.json 32 | - package-lock.json 33 | - yarn.lock 34 | - phpcs.xml 35 | - phpunit.xml 36 | - resources 37 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | tests/unit 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /.github/workflows/code-style.yml: -------------------------------------------------------------------------------- 1 | name: PHP CS Fixer 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | code-style: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write # for Git to git apply 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | - name: Setup PHP 23 | uses: shivammathur/setup-php@v2 24 | with: 25 | php-version: '8.1' 26 | extensions: gd, intl, pdo_mysql 27 | coverage: none # disable xdebug, pcov 28 | 29 | # install dependencies from composer.json 30 | - name: Install test dependencies 31 | run: composer install --prefer-dist --no-progress 32 | 33 | - name: Run PHP CS Fixer 34 | run: composer cs-dry 35 | 36 | # - uses: stefanzweifel/git-auto-commit-action@v4 37 | # with: 38 | # commit_message: Apply php-cs-fixer changes 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 FriendsOfREDAXO 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'root': true, 3 | 'extends': 'eslint:recommended', 4 | 'globals': { 5 | 'wp': true, 6 | }, 7 | 'env': { 8 | 'node': true, 9 | 'es6': true, 10 | 'amd': true, 11 | 'browser': true, 12 | 'jquery': true, 13 | }, 14 | 'parserOptions': { 15 | 'ecmaFeatures': { 16 | 'globalReturn': true, 17 | 'generators': false, 18 | 'objectLiteralDuplicateProperties': false, 19 | 'experimentalObjectRestSpread': true, 20 | }, 21 | 'ecmaVersion': 2018, 22 | 'sourceType': 'module', 23 | }, 24 | 'plugins': [ 25 | 'import', 26 | ], 27 | 'settings': { 28 | 'import/core-modules': [], 29 | 'import/ignore': [ 30 | 'node_modules', 31 | '\\.(coffee|scss|css|less|hbs|svg|json)$', 32 | ], 33 | }, 34 | 'rules': { 35 | 'no-console': 0, 36 | 'quotes': ['error', 'single'], 37 | 'comma-dangle': [ 38 | 'error', 39 | { 40 | 'arrays': 'always-multiline', 41 | 'objects': 'always-multiline', 42 | 'imports': 'always-multiline', 43 | 'exports': 'always-multiline', 44 | 'functions': 'ignore', 45 | }, 46 | ], 47 | }, 48 | }; 49 | -------------------------------------------------------------------------------- /lib/console/content_generate.php: -------------------------------------------------------------------------------- 1 | setName('content:generate') 16 | ->setDescription('Generate content from a php file') 17 | ->addArgument('filepath', InputArgument::REQUIRED, 'Filepath to generate content from'); 18 | } 19 | 20 | protected function execute(InputInterface $input, OutputInterface $output) 21 | { 22 | $filePath = rex_path::backend($input->getArgument('filepath')); 23 | 24 | if (!file_exists($filePath)) { 25 | throw new InvalidArgumentException(sprintf('File "%s" not found!', $filePath)); 26 | } 27 | 28 | if ('php' !== pathinfo($filePath, PATHINFO_EXTENSION)) { 29 | throw new InvalidArgumentException(sprintf('File "%s" is not a php file!', $filePath)); 30 | } 31 | 32 | require_once $filePath; 33 | 34 | return 0; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /.tools/rexstan.php: -------------------------------------------------------------------------------- 1 | setName('content:language'); 16 | } 17 | 18 | /** 19 | * @throws rex_exception 20 | * @throws rex_api_exception 21 | * @throws rex_sql_exception 22 | */ 23 | protected function execute(InputInterface $input, OutputInterface $output) 24 | { 25 | $helper = $this->getHelper('question'); 26 | $codeQuestion = new Question('Enter a language code: ', ''); 27 | $codeQuestion->setValidator(static function ($answer) { 28 | if (!is_string($answer) || '' === $answer) { 29 | throw new \RuntimeException('You must enter a language code.'); 30 | } 31 | 32 | return $answer; 33 | }); 34 | $code = $helper->ask($input, $output, $codeQuestion); 35 | 36 | $nameQuestion = new Question('Enter a language name: ', ''); 37 | $nameQuestion->setValidator(static function ($answer) { 38 | if (!is_string($answer) || '' === $answer) { 39 | throw new \RuntimeException('You must enter a language name.'); 40 | } 41 | 42 | return $answer; 43 | }); 44 | $name = $helper->ask($input, $output, $nameQuestion); 45 | 46 | $priorityQuestion = new Question('Enter a priority: ', ''); 47 | $priorityQuestion->setValidator(static function ($answer) { 48 | if (!is_numeric($answer) || '' === $answer) { 49 | throw new \RuntimeException('You must enter a priority.'); 50 | } 51 | 52 | return $answer; 53 | }); 54 | $priority = $helper->ask($input, $output, $priorityQuestion); 55 | 56 | $statusQuestion = new Question('Enter a status (optional - default: false): ', false); 57 | $status = (bool) $helper->ask($input, $output, $statusQuestion); 58 | 59 | $id = content::createLanguage($code, $name, $priority, $status); 60 | $output->writeln(sprintf('Created language "%s" [%s]', $name, $id)); 61 | 62 | return 0; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /lib/console/content_category.php: -------------------------------------------------------------------------------- 1 | setName('content:category'); 16 | } 17 | 18 | /** 19 | * @throws rex_exception 20 | * @throws rex_api_exception 21 | * @throws rex_sql_exception 22 | */ 23 | protected function execute(InputInterface $input, OutputInterface $output) 24 | { 25 | $helper = $this->getHelper('question'); 26 | 27 | $nameQuestion = new Question('Please enter a category name: ', ''); 28 | $nameQuestion->setValidator(static function ($answer) { 29 | if (!is_string($answer) || '' === $answer) { 30 | throw new \RuntimeException('You must enter a category name.'); 31 | } 32 | 33 | return $answer; 34 | }); 35 | $name = $helper->ask($input, $output, $nameQuestion); 36 | 37 | $categoryQuestion = new Question('Enter a category id (optional - default: ""): ', ''); 38 | $categoryQuestion->setValidator(static function ($answer) { 39 | if (!is_numeric($answer) && '' !== $answer) { 40 | throw new \RuntimeException('The category id needs to be a number.'); 41 | } 42 | 43 | return $answer; 44 | }); 45 | $categoryId = $helper->ask($input, $output, $categoryQuestion); 46 | 47 | $priorityQuestion = new Question('Enter a priority (optional - default: -1): ', -1); 48 | $priorityQuestion->setValidator(static function ($answer) { 49 | if (!is_numeric($answer)) { 50 | throw new \RuntimeException('The priority needs to be a number.'); 51 | } 52 | 53 | return $answer; 54 | }); 55 | $priority = $helper->ask($input, $output, $priorityQuestion); 56 | 57 | $statusQuestion = new Question('Enter a status (optional - default: null): ', null); 58 | $statusQuestion->setValidator(static function ($answer) { 59 | if (!is_numeric($answer) && null !== $answer) { 60 | throw new \RuntimeException('The status needs to be a number.'); 61 | } 62 | 63 | return $answer; 64 | }); 65 | $status = $helper->ask($input, $output, $statusQuestion); 66 | 67 | $id = content::createCategory($name, $categoryId, $priority, $status); 68 | $output->writeln(sprintf('Created category "%s" [%s]', $name, $id)); 69 | 70 | return 0; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /lib/console/content_article.php: -------------------------------------------------------------------------------- 1 | setName('content:article'); 16 | } 17 | 18 | /** 19 | * @throws rex_exception 20 | * @throws rex_api_exception 21 | * @throws rex_sql_exception 22 | */ 23 | protected function execute(InputInterface $input, OutputInterface $output) 24 | { 25 | $helper = $this->getHelper('question'); 26 | 27 | $articleNameQuestion = new Question('Please enter an article name: ', ''); 28 | $articleNameQuestion->setValidator(static function ($answer) { 29 | if (!is_string($answer) || '' === $answer) { 30 | throw new \RuntimeException('You must enter an article name.'); 31 | } 32 | 33 | return $answer; 34 | }); 35 | $articleName = $helper->ask($input, $output, $articleNameQuestion); 36 | 37 | $categoryQuestion = new Question('Enter a category id (optional - default: 0): ', 0); 38 | $categoryQuestion->setValidator(static function ($answer) { 39 | if (!is_numeric($answer)) { 40 | throw new \RuntimeException('The category id needs to be a number.'); 41 | } 42 | 43 | return $answer; 44 | }); 45 | $categoryId = $helper->ask($input, $output, $categoryQuestion); 46 | 47 | $priorityQuestion = new Question('Enter a priority (optional - default: -1): ', -1); 48 | $priorityQuestion->setValidator(static function ($answer) { 49 | if (!is_numeric($answer)) { 50 | throw new \RuntimeException('The priority needs to be a number.'); 51 | } 52 | 53 | return $answer; 54 | }); 55 | $priority = $helper->ask($input, $output, $priorityQuestion); 56 | 57 | $templateQuestion = new Question('Enter a template id (optional - default: null): ', null); 58 | $templateQuestion->setValidator(static function ($answer) { 59 | if (!is_numeric($answer) && null !== $answer) { 60 | throw new \RuntimeException('The priority needs to be a number.'); 61 | } 62 | 63 | return $answer; 64 | }); 65 | $templateId = $helper->ask($input, $output, $templateQuestion); 66 | 67 | $articleId = content::createArticle($articleName, $categoryId, $priority, $templateId); 68 | $output->writeln(sprintf('Created article "%s" [%s]', $articleName, $articleId)); 69 | 70 | return 0; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | phpunit: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write # for Git to git apply 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | - name: Setup PHP 23 | uses: shivammathur/setup-php@v2 24 | with: 25 | php-version: '8.1' 26 | extensions: gd, intl, pdo_mysql 27 | coverage: none # disable xdebug, pcov 28 | 29 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 30 | - name: Download latest REDAXO release 31 | run: | 32 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 33 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 34 | echo "Downloaded REDAXO $REDAXO_VERSION" 35 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 36 | unzip -oq redaxo.zip -d redaxo_cms 37 | rm redaxo.zip 38 | 39 | - name: Init database 40 | run: | 41 | sudo /etc/init.d/mysql start 42 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 43 | 44 | - name: Setup REDAXO 45 | run: | 46 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 47 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 48 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 49 | # copy Addon files, ignore some directories... 50 | # install the addon 51 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 52 | - name: Copy and install Addons 53 | run: | 54 | rsync -av --exclude='vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 55 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 56 | 57 | - name: Install test dependencies 58 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 59 | env: 60 | COMPOSER: composer.json 61 | run: composer install --prefer-dist --no-progress 62 | 63 | - name: Setup Problem Matchers for PHPUnit 64 | run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" 65 | 66 | - name: Run phpunit 67 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 68 | run: composer test 69 | -------------------------------------------------------------------------------- /lib/content_slice.php: -------------------------------------------------------------------------------- 1 | data array if not empty 21 | */ 22 | public function get(): array 23 | { 24 | if (0 === count($this->data)) { 25 | throw new \rex_exception('Data is empty'); 26 | } 27 | 28 | return $this->data; 29 | } 30 | 31 | /** 32 | * @throws rex_exception 33 | */ 34 | public function value(int $id, string $content): self 35 | { 36 | $this->checkId($id, 20); 37 | $this->checkValue(self::VALUE, $id); 38 | 39 | $this->data[$this->getKey(self::VALUE, $id)] = $content; 40 | return $this; 41 | } 42 | 43 | /** 44 | * @throws rex_exception 45 | * @api 46 | */ 47 | public function media(int $id, string $media): self 48 | { 49 | $this->checkId($id, 10); 50 | $this->checkValue(self::MEDIA, $id); 51 | 52 | $this->data[$this->getKey(self::MEDIA, $id)] = $media; 53 | return $this; 54 | } 55 | 56 | /** 57 | * @param array $mediaList 58 | * @throws rex_exception 59 | * @api 60 | */ 61 | public function mediaList(int $id, array $mediaList): self 62 | { 63 | $this->checkId($id, 10); 64 | $this->checkValue(self::MEDIA_LIST, $id); 65 | 66 | $this->data[$this->getKey(self::MEDIA_LIST, $id)] = implode(',', $mediaList); 67 | return $this; 68 | } 69 | 70 | /** 71 | * @throws rex_exception 72 | * @api 73 | */ 74 | public function link(int $id, int $link): self 75 | { 76 | $this->checkId($id, 10); 77 | $this->checkValue(self::LINK, $id); 78 | 79 | $this->data[$this->getKey(self::LINK, $id)] = $link; 80 | return $this; 81 | } 82 | 83 | /** 84 | * @param array $linkList 85 | * @throws rex_exception 86 | * @api 87 | */ 88 | public function linkList(int $id, array $linkList): self 89 | { 90 | $this->checkId($id, 10); 91 | $this->checkValue(self::LINK_LIST, $id); 92 | 93 | $this->data[$this->getKey(self::LINK_LIST, $id)] = implode(',', $linkList); 94 | return $this; 95 | } 96 | 97 | /** 98 | * @throws rex_exception 99 | */ 100 | private function checkId(int $id, int $max): void 101 | { 102 | if ($id > $max) { 103 | throw new rex_exception('ID to high...'); 104 | } 105 | 106 | if ($id < 0) { 107 | throw new rex_exception('ID to low...'); 108 | } 109 | } 110 | 111 | /** 112 | * @throws rex_exception 113 | */ 114 | private function checkValue(string $type, int $id): void 115 | { 116 | if ($this->valueExists($type, $id)) { 117 | throw new rex_exception('Value already exists'); 118 | } 119 | } 120 | 121 | private function valueExists(string $type, int $id): bool 122 | { 123 | return array_key_exists($this->getKey($type, $id), $this->data); 124 | } 125 | 126 | private function getKey(string $type, int $id): string 127 | { 128 | return $type . $id; 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /tests/unit/rex_content_test.php: -------------------------------------------------------------------------------- 1 | namespace = $uid; 9 | // $this->key = $uid; 10 | // $this->value = 'value'; 11 | }); 12 | 13 | /** 14 | * template 15 | */ 16 | test('expect template content to be string', function () 17 | { 18 | expect(content::getTemplateContent(1))->toBeString(); 19 | }); 20 | 21 | test('expect template content to be false', function () 22 | { 23 | expect(content::getTemplateContent(99))->toBeFalse(); 24 | }); 25 | 26 | test('expect template id', function () use ($templateKey) 27 | { 28 | expect(content::createTemplate('Template Name', $templateKey))->toBeInt(); 29 | }); 30 | 31 | test('expect template key already exists exception', function () use ($templateKey) 32 | { 33 | content::createTemplate('Template Name 2', $templateKey); 34 | })->throws(rex_exception::class, 'Template key already exists'); 35 | 36 | test('expect to set template content', function () use ($templateKey) 37 | { 38 | $template = rex_template::forKey($templateKey); 39 | expect(content::setTemplateContent($template->getId(), 'Lorem Ipsum')) 40 | ->not->toThrow(rex_sql_exception::class); 41 | }); 42 | 43 | /** 44 | * article 45 | */ 46 | test('expect category does not exists exception', function () 47 | { 48 | content::createArticle('Article Name', 99); 49 | })->throws(rex_exception::class, 'Category does not exist'); 50 | 51 | test('expect article id', function () 52 | { 53 | expect(content::createArticle('Article Name'))->toBeInt(); 54 | }); 55 | 56 | /** 57 | * category 58 | */ 59 | test('expect category id', function () 60 | { 61 | expect(content::createCategory('Category Name'))->toBeInt(); 62 | }); 63 | 64 | /** 65 | * language 66 | */ 67 | test('expect clang id', function () 68 | { 69 | expect(content::createLanguage('xy', 'XY', 2))->toBeInt(); 70 | }); 71 | 72 | /** 73 | * media 74 | */ 75 | test('expect media array from GD', function () 76 | { 77 | expect(content::createMediaFromGD('gd_image.jpg'))->toBeArray(); 78 | }); 79 | 80 | test('expect media array from URL', function () 81 | { 82 | expect(content::createMediaFromUrl('https://raw.githubusercontent.com/FriendsOfREDAXO/friendsofredaxo.github.io/assets/v2/FOR-avatar-03.png', 'url_image.jpg'))->toBeArray(); 83 | }); 84 | 85 | /** 86 | * content slice 87 | */ 88 | test('expect array from content slice', function () 89 | { 90 | $slice = content_slice::factory(); 91 | $slice->value(1, 'Lorem Ipsum'); 92 | expect($slice->get())->toBeArray(); 93 | }); 94 | 95 | test('expect content_slice value already exists exception', function () 96 | { 97 | $slice = content_slice::factory(); 98 | $slice->value(1, 'Lorem Ipsum'); 99 | $slice->value(1, 'Lorem Ipsum'); 100 | })->throws(rex_exception::class, 'Value already exists'); 101 | 102 | /** 103 | * content module 104 | */ 105 | test('expect input string from content module', function () 106 | { 107 | $module = content_module::factory(); 108 | $module->value(1); 109 | $module->getInput(); 110 | expect($module->getInput())->toBeString(); 111 | }); 112 | 113 | test('expect output string from content module', function () 114 | { 115 | $module = content_module::factory(); 116 | $module->value(1); 117 | $module->getInput(); 118 | expect($module->getOutput())->toBeString(); 119 | }); 120 | 121 | test('expect content_module value already exists exception', function () 122 | { 123 | $module = content_module::factory(); 124 | $module->value(1); 125 | $module->value(1); 126 | })->throws(rex_exception::class, 'Value already exists'); 127 | 128 | afterEach(function () 129 | { 130 | }); 131 | -------------------------------------------------------------------------------- /.github/workflows/rexstan.yml: -------------------------------------------------------------------------------- 1 | name: rexstan 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | rexstan: 14 | env: 15 | ADDON_KEY: ${{ github.event.repository.name }} 16 | 17 | runs-on: ubuntu-latest 18 | permissions: 19 | contents: write # for Git to git apply 20 | 21 | steps: 22 | - uses: actions/checkout@v3 23 | 24 | # setup PHP v8, install some extensions 25 | - name: Setup PHP 26 | uses: shivammathur/setup-php@v2 27 | with: 28 | php-version: '8.2' 29 | extensions: gd, intl, pdo_mysql 30 | coverage: none # disable xdebug, pcov 31 | 32 | # download the latest REDAXO release and unzip it 33 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 34 | - name: Download latest REDAXO release 35 | run: | 36 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 37 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 38 | echo "Downloaded REDAXO $REDAXO_VERSION" 39 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 40 | unzip -oq redaxo.zip -d redaxo_cms 41 | rm redaxo.zip 42 | 43 | # start mysql service, create a database called redaxo5, apply config patch 44 | - name: Init database 45 | run: | 46 | sudo /etc/init.d/mysql start 47 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 48 | 49 | # run REDAXO setup with the following parameters 50 | # Language: de 51 | # DB password: root 52 | # Create DB: no 53 | # Admin username: admin 54 | # Admin password: adminpassword 55 | # Error E-mail: test@redaxo.invalid 56 | - name: Setup REDAXO 57 | run: | 58 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 59 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 60 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 61 | 62 | # copy Addon files, ignore some directories... 63 | # install the addon 64 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 65 | # install latest rexstan 66 | # if additional addons are needed, they can be installed via the console commands 67 | # see: https://www.redaxo.org/doku/main/basis-addons#console 68 | - name: Copy and install Addons 69 | run: | 70 | rsync -av --exclude='./vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 71 | redaxo_cms/redaxo/bin/console install:download 'rexstan' '1.*' 72 | redaxo_cms/redaxo/bin/console package:install 'rexstan' 73 | redaxo_cms/redaxo/bin/console install:download 'yform' '4.*' 74 | redaxo_cms/redaxo/bin/console package:install 'yform' 75 | redaxo_cms/redaxo/bin/console package:install 'cronjob' 76 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 77 | 78 | # execute rexstan.php to create the needed user-config.neon 79 | - name: Execute .tools/rexstan.php 80 | run: php -f redaxo/src/addons/${{ github.event.repository.name }}/.tools/rexstan.php 81 | working-directory: redaxo_cms 82 | 83 | # run rexstan 84 | - id: rexstan 85 | name: Run rexstan 86 | run: redaxo_cms/redaxo/bin/console rexstan:analyze 87 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Helfer-Addon um Inhalte für REDAXO 5 zu erstellen 2 | 3 | Über das Addon __content__ lassen sich Inhalte für eine REDAXO-Instanz einfach und schnell programmatisch erstellen. 4 | 5 | ## Methoden 6 | 7 | ### Article 8 | 9 | ```php 10 | /** 11 | * Erstellen eines Artikel 12 | * return int(Article ID)|null 13 | * @param string $name 14 | * @param int $categoryId (optional) 15 | * @param int|string $priority (optional) 16 | * @param int|null $templateId (optional) 17 | */ 18 | content::createArticle('Article Name', int $categoryId = 0, int|string $priority = -1, int|null $templateId = null); 19 | ``` 20 | 21 | ### Category 22 | 23 | ```php 24 | /** 25 | * Erstellen einer Kategorie 26 | * return int(Category ID)|null 27 | * @param string $name 28 | * @param int|string $categoryId (optional) 29 | * @param int|string $priority (optional) 30 | * @param int|null $status (optional) 31 | */ 32 | content::createCategory('Category Name', int|string $categoryId = '', int|string $priority = -1, int|null $status = null); 33 | ``` 34 | 35 | ### Module 36 | 37 | ```php 38 | /** 39 | * Erstellen eines Modules 40 | * return int(Module ID) 41 | * @param string $name 42 | * @param string|null $key (optional) 43 | * @param string $input (optional) 44 | * @param string $output (optional) 45 | */ 46 | content::createModule('Module Name', string|null $key = null, string $input = '', string $output = ''); 47 | ``` 48 | 49 | ### Template 50 | 51 | ```php 52 | /** 53 | * Erstellen eines Templates 54 | * return int(Template ID) 55 | * @param string $name 56 | * @param string|null $key (optional) 57 | * @param string $content (optional) 58 | * @param int $active (optional) 59 | */ 60 | content::createTemplate('Template Name', string|null $key = null, string $content = '', int $active = 1); 61 | 62 | /** 63 | * Inhalte eines Templates holen 64 | * return false|string 65 | * @param int $id 66 | */ 67 | content::getTemplateContent($templateID); 68 | 69 | /** 70 | * Inhalte eines Templates setzen 71 | * @param int $id 72 | * @param string $content 73 | */ 74 | content::setTemplateContent(1, '
Template Inhaltvalue(1); 120 | $module->value(2, 'textarea'); 121 | $module->link(1); 122 | $module->linkList(1); 123 | $module->media(1); 124 | $module->mediaList(1); 125 | 126 | $moduleInput = $module->getInput(); 127 | $moduleOutput = $module->getOutput(); 128 | ``` 129 | 130 | #### $moduleInput 131 | 132 | ```html 133 |
134 | 135 |
136 |
137 | 138 |
139 |
140 | REX_LINK[id=1 widget=1] 141 |
142 |
143 | REX_LINKLIST[id=1 widget=1] 144 |
145 |
146 | REX_MEDIA[id=1 widget=1] 147 |
148 |
149 | REX_MEDIALIST[id=1 widget=1] 150 |
151 | ``` 152 | 153 | #### $moduleOutput 154 | 155 | ```html 156 |
REX_VALUE[1]
157 |
REX_VALUE[id=2 output="html"]
158 |
Article ID: REX_LINK[id=1]
159 | 160 |
Article ID:
161 | 162 | 163 | 164 |
165 | 166 | ``` 167 | 168 | ### Slice content 169 | 170 | ```php 171 | $slice = content_slice::factory(); 172 | $slice->value(1, 'Lorem Ipsum'); 173 | $slice->value(2, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'); 174 | $slice->link(1, 5); 175 | $slice->linkList(1, [2,3,4,5]); 176 | $slice->media(1, 'for.png'); 177 | $slice->mediaList(1, ['for.png', 'for_1.png', 'for_2.png']); 178 | $sliceContent = $slice->get(); 179 | 180 | //content::createSlice($articleId, $moduleId, $clangId, $ctypeId, $sliceContent); 181 | ``` 182 | 183 | #### $sliceContent 184 | 185 | ```php 186 | array(6) { 187 | ["value1"]=> 188 | string(11) "Lorem Ipsum" 189 | ["value2"]=> 190 | string(231) "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." 191 | ["link1"]=> 192 | int(5) 193 | ["linklist1"]=> 194 | string(7) "2,3,4,5" 195 | ["media1"]=> 196 | string(7) "for.png" 197 | ["medialist1"]=> 198 | string(27) "for.png,for_1.png,for_2.png" 199 | } 200 | ``` 201 | -------------------------------------------------------------------------------- /lib/content_module.php: -------------------------------------------------------------------------------- 1 | inputData)) { 27 | throw new \rex_exception('Input is empty'); 28 | } 29 | 30 | return implode("\n", $this->inputData); 31 | } 32 | 33 | /** 34 | * @throws rex_exception 35 | * @return string output as string if not empty 36 | */ 37 | public function getOutput(): string 38 | { 39 | if (0 === count($this->outputData)) { 40 | throw new \rex_exception('Output is empty'); 41 | } 42 | 43 | return implode("\n", $this->outputData); 44 | } 45 | 46 | /** 47 | * @throws rex_exception 48 | */ 49 | public function value(int $id, string $type = 'text'): self 50 | { 51 | $this->checkId($id, 20); 52 | $this->checkValue(self::VALUE, $id); 53 | 54 | $output = '
REX_VALUE[' . $id . ']
'; 55 | $input = ''; 56 | 57 | if ('textarea' === $type) { 58 | $input = ''; 59 | $output = '
REX_VALUE[id=' . $id . ' output="html"]
'; 60 | } 61 | 62 | $this->inputData[$this->getKey(self::VALUE, $id)] = self::wrapInput($input); 63 | $this->outputData[$this->getKey(self::VALUE, $id)] = $output; 64 | return $this; 65 | } 66 | 67 | /** 68 | * @throws rex_exception 69 | * @api 70 | */ 71 | public function media(int $id): self 72 | { 73 | $this->checkId($id, 10); 74 | $this->checkValue(self::MEDIA, $id); 75 | 76 | $input = 'REX_MEDIA[id=1 widget=1]'; 77 | $output = ''; 78 | 79 | $this->inputData[$this->getKey(self::MEDIA, $id)] = self::wrapInput($input); 80 | $this->outputData[$this->getKey(self::MEDIA, $id)] = $output; 81 | return $this; 82 | } 83 | 84 | /** 85 | * @throws rex_exception 86 | * @api 87 | */ 88 | public function mediaList(int $id): self 89 | { 90 | $this->checkId($id, 10); 91 | $this->checkValue(self::MEDIA_LIST, $id); 92 | 93 | $input = 'REX_MEDIALIST[id=' . $id . ' widget=1]'; 94 | $output = ' 95 |
96 | '; 97 | 98 | $this->inputData[$this->getKey(self::MEDIA_LIST, $id)] = self::wrapInput($input); 99 | $this->outputData[$this->getKey(self::MEDIA_LIST, $id)] = $output; 100 | return $this; 101 | } 102 | 103 | /** 104 | * @throws rex_exception 105 | * @api 106 | */ 107 | public function link(int $id): self 108 | { 109 | $this->checkId($id, 10); 110 | $this->checkValue(self::LINK, $id); 111 | 112 | $input = 'REX_LINK[id=' . $id . ' widget=1]'; 113 | $output = '
Article ID: REX_LINK[id=' . $id . ']
'; 114 | 115 | $this->inputData[$this->getKey(self::LINK, $id)] = self::wrapInput($input); 116 | $this->outputData[$this->getKey(self::LINK, $id)] = $output; 117 | return $this; 118 | } 119 | 120 | /** 121 | * @throws rex_exception 122 | * @api 123 | */ 124 | public function linkList(int $id): self 125 | { 126 | $this->checkId($id, 10); 127 | $this->checkValue(self::LINK_LIST, $id); 128 | 129 | $input = 'REX_LINKLIST[id=' . $id . ' widget=1]'; 130 | $output = ' 131 |
Article ID:
132 | '; 133 | 134 | $this->inputData[$this->getKey(self::LINK_LIST, $id)] = self::wrapInput($input); 135 | $this->outputData[$this->getKey(self::LINK_LIST, $id)] = $output; 136 | return $this; 137 | } 138 | 139 | /** 140 | * @return string the wrapped input 141 | */ 142 | private function wrapInput(string $input): string 143 | { 144 | return '
145 | ' . $input . ' 146 |
'; 147 | } 148 | 149 | /** 150 | * @throws rex_exception 151 | */ 152 | private function checkId(int $id, int $max): void 153 | { 154 | if ($id > $max) { 155 | throw new rex_exception('ID to high...'); 156 | } 157 | 158 | if ($id < 0) { 159 | throw new rex_exception('ID to low...'); 160 | } 161 | } 162 | 163 | /** 164 | * @throws rex_exception 165 | */ 166 | private function checkValue(string $type, int $id): void 167 | { 168 | if ($this->valueExists($type, $id)) { 169 | throw new rex_exception('Value already exists'); 170 | } 171 | } 172 | 173 | private function valueExists(string $type, int $id): bool 174 | { 175 | return array_key_exists($this->getKey($type, $id), $this->inputData); 176 | } 177 | 178 | private function getKey(string $type, int $id): string 179 | { 180 | return $type . $id; 181 | } 182 | } 183 | -------------------------------------------------------------------------------- /lib/content.php: -------------------------------------------------------------------------------- 1 | rex_string::sanitizeHtml(trim($name)), 16 | 'catname' => rex_string::sanitizeHtml(trim($name)), 17 | 'catpriority' => $priority, 18 | 'status' => $status, 19 | ]; 20 | 21 | rex_category_service::addCategory($categoryId, $data); 22 | 23 | $sql = rex_sql::factory(); 24 | $sql->setQuery('SELECT id FROM ' . rex::getTable('article') . ' WHERE catname = ? ORDER BY id DESC LIMIT 1', [$name]); 25 | 26 | if (1 === $sql->getRows()) { 27 | return $sql->getValue('id'); 28 | } 29 | 30 | return null; 31 | } 32 | 33 | /** 34 | * create an article. 35 | * 36 | * @param int|null $templateId 37 | * @throws rex_sql_exception|rex_api_exception|rex_exception 38 | * @return int|null article id on success null on failure 39 | */ 40 | public static function createArticle(string $name, int $categoryId = 0, int|string $priority = -1, int|null $templateId = null): int|null 41 | { 42 | $data = [ 43 | 'name' => rex_string::sanitizeHtml(trim($name)), 44 | 'category_id' => $categoryId, 45 | ]; 46 | 47 | if (null === rex_category::get($categoryId) && $categoryId > 0) { 48 | throw new rex_exception('Category does not exist'); 49 | } 50 | 51 | if (is_int($priority)) { 52 | $data['priority'] = $priority; 53 | } elseif ('last' === $priority) { 54 | $sql = rex_sql::factory(); 55 | $sql->setQuery('SELECT priority FROM ' . rex::getTable('article') . ' WHERE parent_id = ? ORDER BY priority DESC LIMIT 1', [$categoryId]); 56 | 57 | if ($sql->getRows() > 0) { 58 | $priority = $sql->getValue('priority') + 1; 59 | } else { 60 | $priority = 1; 61 | } 62 | 63 | $data['priority'] = $priority; 64 | } else { 65 | $data['priority'] = -1; 66 | } 67 | 68 | if (null !== $templateId) { 69 | $data['template_id'] = $templateId; 70 | } else { 71 | $data['template_id'] = rex_template::getDefaultId(); 72 | } 73 | 74 | rex_article_service::addArticle($data); 75 | 76 | $sql = rex_sql::factory(); 77 | $sql->setQuery('SELECT id FROM ' . rex::getTable('article') . ' WHERE name = ? ORDER BY id DESC LIMIT 1', [$name]); 78 | 79 | if (1 === $sql->getRows()) { 80 | return $sql->getValue('id'); 81 | } 82 | 83 | return null; 84 | } 85 | 86 | /** 87 | * create a module. 88 | * 89 | * @param string|null $key 90 | * @throws rex_sql_exception 91 | * @return int the id of the created module 92 | */ 93 | public static function createModule(string $name, string|null $key = null, string $input = '', string $output = ''): int 94 | { 95 | $sql = rex_sql::factory(); 96 | $sql->setTable(rex::getTable('module')); 97 | $sql->setValue('name', rex_string::sanitizeHtml(trim($name))); 98 | $sql->setValue('key', $key); 99 | $sql->setValue('input', rex_string::sanitizeHtml($input)); 100 | $sql->setValue('output', rex_string::sanitizeHtml($output)); 101 | $sql->addGlobalCreateFields(); 102 | 103 | $sql->insert(); 104 | $moduleId = (int) $sql->getLastId(); 105 | rex_module_cache::delete($moduleId); 106 | 107 | return $moduleId; 108 | } 109 | 110 | /** 111 | * create a template. 112 | * 113 | * @param string|null $key 114 | * @throws rex_sql_exception|rex_exception 115 | * @return int the id of the created template 116 | */ 117 | public static function createTemplate(string $name, string|null $key = null, string $content = '', int $active = 1): int 118 | { 119 | $attributes = []; 120 | $attributes['ctype'] = []; 121 | $attributes['modules'] = [1 => ['all' => '1']]; 122 | $attributes['categories'] = ['all' => '1']; 123 | 124 | if (null !== $key && self::templateKeyExists($key)) { 125 | throw new rex_exception('Template key already exists'); 126 | } 127 | 128 | $sql = rex_sql::factory(); 129 | $sql->setTable(rex::getTable('template')); 130 | $sql->setValue('key', $key); 131 | $sql->setValue('name', rex_string::sanitizeHtml(trim($name))); 132 | $sql->setValue('active', $active); 133 | $sql->setValue('content', $content); 134 | $sql->addGlobalCreateFields(); 135 | $sql->setArrayValue('attributes', $attributes); 136 | 137 | $sql->insert(); 138 | 139 | $templateId = (int) $sql->getLastId(); 140 | rex_template_cache::delete($templateId); 141 | 142 | return $templateId; 143 | } 144 | 145 | /** 146 | * get the contents from an template by id. 147 | * 148 | * @throws rex_sql_exception 149 | * @return false|string string on success false on failure 150 | */ 151 | public static function getTemplateContent(int $id): false|string 152 | { 153 | $templateSql = rex_sql::factory(); 154 | $templateSql->setQuery('SELECT content FROM ' . rex::getTable('template') . ' WHERE id = ?', [$id]); 155 | 156 | if (0 === $templateSql->getRows()) { 157 | return false; 158 | } 159 | 160 | return $templateSql->getValue('content'); 161 | } 162 | 163 | /** 164 | * update content of an existing template. 165 | * 166 | * @throws rex_sql_exception 167 | */ 168 | public static function setTemplateContent(int $id, string $content): void 169 | { 170 | $template = new rex_template($id); 171 | $templateSql = rex_sql::factory(); 172 | $templateSql->setQuery('SELECT * FROM ' . rex::getTable('template') . ' WHERE id = ?', [$template->getId()]); 173 | 174 | if (1 === $templateSql->getRows()) { 175 | $sql = rex_sql::factory(); 176 | $sql->setTable(rex::getTable('template')); 177 | $sql->setWhere(['id' => $template->getId()]); 178 | $sql->setValue('content', $content); 179 | $sql->addGlobalUpdateFields(); 180 | 181 | try { 182 | $sql->update(); 183 | rex_template_cache::delete($template->getId()); 184 | } catch (rex_sql_exception $error) { 185 | if (rex_sql::ERROR_VIOLATE_UNIQUE_KEY === $error->getErrorCode()) { 186 | throw new rex_sql_exception(rex_i18n::msg('template_key_exists')); 187 | } 188 | 189 | throw new rex_sql_exception($error->getMessage()); 190 | } 191 | } 192 | } 193 | 194 | /** 195 | * create a slice. 196 | * 197 | * @param array $data 198 | * @throws rex_api_exception 199 | */ 200 | public static function createSlice(int $articleId, int $moduleId, int $clangId, int $ctypeId = 1, array $data = []): void 201 | { 202 | rex_content_service::addSlice($articleId, $clangId, $ctypeId, $moduleId, $data); 203 | } 204 | 205 | /** 206 | * create a language. 207 | * 208 | * @throws rex_sql_exception 209 | */ 210 | public static function createLanguage(string $code, string $name, int $priority, bool $status = false): false|int 211 | { 212 | rex_clang_service::addCLang($code, $name, $priority, $status); 213 | 214 | $sql = rex_sql::factory(); 215 | $sql->setQuery('SELECT id FROM ' . rex::getTable('clang') . ' WHERE `code` = ? LIMIT 1', [$code]); 216 | 217 | if ($sql->getRows() > 0) { 218 | return $sql->getValue('id'); 219 | } 220 | 221 | return false; 222 | } 223 | 224 | /** 225 | * upload media from url. 226 | * 227 | * @throws rex_functional_exception 228 | * @throws rex_socket_exception 229 | * @return array|false 230 | */ 231 | public static function createMediaFromUrl(string $url, string $fileName, int $category = 0): array|false 232 | { 233 | if (null === rex_media::get($fileName)) { 234 | $path = rex_path::media($fileName); 235 | $media = rex_socket::factoryUrl($url)->doGet(); 236 | $media->writeBodyTo($path); 237 | 238 | return self::createMedia($fileName, $category, $path); 239 | } 240 | 241 | return false; 242 | } 243 | 244 | /** 245 | * create a placeholder image via GD. 246 | * 247 | * @throws rex_functional_exception 248 | * @return array|false 249 | */ 250 | public static function createMediaFromGD(string $fileName, int $category = 0, int $width = 500, int $height = 500): array|false 251 | { 252 | if (null === rex_media::get($fileName)) { 253 | $path = rex_path::media($fileName); 254 | $image = @imagecreate($width, $height); 255 | imagecolorallocate($image, 255, 0, 255); 256 | imagejpeg($image, rex_path::media($fileName)); 257 | imagedestroy($image); 258 | 259 | return self::createMedia($fileName, $category, $path); 260 | } 261 | 262 | return false; 263 | } 264 | 265 | /** 266 | * @throws rex_functional_exception 267 | * @return array 268 | */ 269 | private static function createMedia(string $fileName, int $category, string $path): array 270 | { 271 | $data = []; 272 | $data['title'] = ''; 273 | $data['category_id'] = $category; 274 | $data['file'] = [ 275 | 'name' => $fileName, 276 | 'path' => $path, 277 | ]; 278 | 279 | try { 280 | return rex_media_service::addMedia($data, false); 281 | } catch (rex_api_exception $e) { 282 | throw new rex_functional_exception($e->getMessage()); 283 | } 284 | } 285 | 286 | /** 287 | * @param string|null $key 288 | * @throws rex_sql_exception 289 | */ 290 | private static function templateKeyExists(string|null $key = null): bool 291 | { 292 | if (null === $key) { 293 | return false; 294 | } 295 | 296 | $templateSql = rex_sql::factory(); 297 | $templateSql->setQuery('SELECT id FROM ' . rex::getTable('template') . ' WHERE `key` = ?', [$key]); 298 | 299 | return 0 !== $templateSql->getRows(); 300 | } 301 | } 302 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | end_of_line = lf 4 | indent_size = 4 5 | indent_style = space 6 | insert_final_newline = false 7 | max_line_length = 120 8 | tab_width = 4 9 | ij_continuation_indent_size = 8 10 | ij_formatter_off_tag = @formatter:off 11 | ij_formatter_on_tag = @formatter:on 12 | ij_formatter_tags_enabled = false 13 | ij_smart_tabs = false 14 | ij_visual_guides = none 15 | ij_wrap_on_typing = false 16 | 17 | [*.blade.php] 18 | ij_blade_keep_indents_on_empty_lines = false 19 | 20 | [*.css] 21 | ij_css_align_closing_brace_with_properties = false 22 | ij_css_blank_lines_around_nested_selector = 1 23 | ij_css_blank_lines_between_blocks = 1 24 | ij_css_block_comment_add_space = false 25 | ij_css_brace_placement = end_of_line 26 | ij_css_enforce_quotes_on_format = true 27 | ij_css_hex_color_long_format = true 28 | ij_css_hex_color_lower_case = true 29 | ij_css_hex_color_short_format = false 30 | ij_css_hex_color_upper_case = false 31 | ij_css_keep_blank_lines_in_code = 2 32 | ij_css_keep_indents_on_empty_lines = false 33 | ij_css_keep_single_line_blocks = false 34 | ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 35 | ij_css_space_after_colon = true 36 | ij_css_space_before_opening_brace = true 37 | ij_css_use_double_quotes = true 38 | ij_css_value_alignment = do_not_align 39 | 40 | [*.feature] 41 | indent_size = 2 42 | ij_gherkin_keep_indents_on_empty_lines = false 43 | 44 | [*.haml] 45 | indent_size = 2 46 | ij_haml_keep_indents_on_empty_lines = false 47 | 48 | [*.less] 49 | indent_size = 2 50 | ij_less_align_closing_brace_with_properties = false 51 | ij_less_blank_lines_around_nested_selector = 1 52 | ij_less_blank_lines_between_blocks = 1 53 | ij_less_block_comment_add_space = false 54 | ij_less_brace_placement = 0 55 | ij_less_enforce_quotes_on_format = false 56 | ij_less_hex_color_long_format = false 57 | ij_less_hex_color_lower_case = false 58 | ij_less_hex_color_short_format = false 59 | ij_less_hex_color_upper_case = false 60 | ij_less_keep_blank_lines_in_code = 2 61 | ij_less_keep_indents_on_empty_lines = false 62 | ij_less_keep_single_line_blocks = false 63 | ij_less_line_comment_add_space = false 64 | ij_less_line_comment_at_first_column = false 65 | ij_less_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 66 | ij_less_space_after_colon = true 67 | ij_less_space_before_opening_brace = true 68 | ij_less_use_double_quotes = true 69 | ij_less_value_alignment = 0 70 | 71 | [*.sass] 72 | indent_size = 2 73 | ij_sass_align_closing_brace_with_properties = false 74 | ij_sass_blank_lines_around_nested_selector = 1 75 | ij_sass_blank_lines_between_blocks = 1 76 | ij_sass_brace_placement = 0 77 | ij_sass_enforce_quotes_on_format = false 78 | ij_sass_hex_color_long_format = false 79 | ij_sass_hex_color_lower_case = false 80 | ij_sass_hex_color_short_format = false 81 | ij_sass_hex_color_upper_case = false 82 | ij_sass_keep_blank_lines_in_code = 2 83 | ij_sass_keep_indents_on_empty_lines = false 84 | ij_sass_keep_single_line_blocks = false 85 | ij_sass_line_comment_add_space = false 86 | ij_sass_line_comment_at_first_column = false 87 | ij_sass_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 88 | ij_sass_space_after_colon = true 89 | ij_sass_space_before_opening_brace = true 90 | ij_sass_use_double_quotes = true 91 | ij_sass_value_alignment = 0 92 | 93 | [*.scss] 94 | indent_size = 2 95 | ij_scss_align_closing_brace_with_properties = false 96 | ij_scss_blank_lines_around_nested_selector = 1 97 | ij_scss_blank_lines_between_blocks = 1 98 | ij_scss_block_comment_add_space = false 99 | ij_scss_brace_placement = 0 100 | ij_scss_enforce_quotes_on_format = true 101 | ij_scss_hex_color_long_format = true 102 | ij_scss_hex_color_lower_case = true 103 | ij_scss_hex_color_short_format = false 104 | ij_scss_hex_color_upper_case = false 105 | ij_scss_keep_blank_lines_in_code = 2 106 | ij_scss_keep_indents_on_empty_lines = false 107 | ij_scss_keep_single_line_blocks = false 108 | ij_scss_line_comment_add_space = false 109 | ij_scss_line_comment_at_first_column = false 110 | ij_scss_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 111 | ij_scss_space_after_colon = true 112 | ij_scss_space_before_opening_brace = true 113 | ij_scss_use_double_quotes = true 114 | ij_scss_value_alignment = 0 115 | 116 | [*.twig] 117 | ij_twig_keep_indents_on_empty_lines = false 118 | ij_twig_spaces_inside_comments_delimiters = true 119 | ij_twig_spaces_inside_delimiters = true 120 | ij_twig_spaces_inside_variable_delimiters = true 121 | 122 | [*.vue] 123 | indent_size = 2 124 | tab_width = 2 125 | ij_continuation_indent_size = 4 126 | ij_vue_indent_children_of_top_level = template 127 | ij_vue_interpolation_new_line_after_start_delimiter = true 128 | ij_vue_interpolation_new_line_before_end_delimiter = true 129 | ij_vue_interpolation_wrap = off 130 | ij_vue_keep_indents_on_empty_lines = false 131 | ij_vue_spaces_within_interpolation_expressions = true 132 | 133 | [{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.pom,*.rng,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul,phpunit.xml.dist}] 134 | ij_xml_align_attributes = true 135 | ij_xml_align_text = false 136 | ij_xml_attribute_wrap = normal 137 | ij_xml_block_comment_add_space = false 138 | ij_xml_block_comment_at_first_column = true 139 | ij_xml_keep_blank_lines = 2 140 | ij_xml_keep_indents_on_empty_lines = false 141 | ij_xml_keep_line_breaks = true 142 | ij_xml_keep_line_breaks_in_text = true 143 | ij_xml_keep_whitespaces = false 144 | ij_xml_keep_whitespaces_around_cdata = preserve 145 | ij_xml_keep_whitespaces_inside_cdata = false 146 | ij_xml_line_comment_at_first_column = true 147 | ij_xml_space_after_tag_name = false 148 | ij_xml_space_around_equals_in_attribute = false 149 | ij_xml_space_inside_empty_tag = false 150 | ij_xml_text_wrap = normal 151 | 152 | [{*.ats,*.cts,*.mts,*.ts}] 153 | ij_continuation_indent_size = 4 154 | ij_typescript_align_imports = false 155 | ij_typescript_align_multiline_array_initializer_expression = false 156 | ij_typescript_align_multiline_binary_operation = false 157 | ij_typescript_align_multiline_chained_methods = false 158 | ij_typescript_align_multiline_extends_list = false 159 | ij_typescript_align_multiline_for = true 160 | ij_typescript_align_multiline_parameters = true 161 | ij_typescript_align_multiline_parameters_in_calls = false 162 | ij_typescript_align_multiline_ternary_operation = false 163 | ij_typescript_align_object_properties = 0 164 | ij_typescript_align_union_types = false 165 | ij_typescript_align_var_statements = 0 166 | ij_typescript_array_initializer_new_line_after_left_brace = false 167 | ij_typescript_array_initializer_right_brace_on_new_line = false 168 | ij_typescript_array_initializer_wrap = off 169 | ij_typescript_assignment_wrap = off 170 | ij_typescript_binary_operation_sign_on_next_line = false 171 | ij_typescript_binary_operation_wrap = off 172 | ij_typescript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/** 173 | ij_typescript_blank_lines_after_imports = 1 174 | ij_typescript_blank_lines_around_class = 1 175 | ij_typescript_blank_lines_around_field = 0 176 | ij_typescript_blank_lines_around_field_in_interface = 0 177 | ij_typescript_blank_lines_around_function = 1 178 | ij_typescript_blank_lines_around_method = 1 179 | ij_typescript_blank_lines_around_method_in_interface = 1 180 | ij_typescript_block_brace_style = end_of_line 181 | ij_typescript_block_comment_add_space = false 182 | ij_typescript_block_comment_at_first_column = true 183 | ij_typescript_call_parameters_new_line_after_left_paren = false 184 | ij_typescript_call_parameters_right_paren_on_new_line = false 185 | ij_typescript_call_parameters_wrap = off 186 | ij_typescript_catch_on_new_line = false 187 | ij_typescript_chained_call_dot_on_new_line = true 188 | ij_typescript_class_brace_style = end_of_line 189 | ij_typescript_comma_on_new_line = false 190 | ij_typescript_do_while_brace_force = never 191 | ij_typescript_else_on_new_line = false 192 | ij_typescript_enforce_trailing_comma = keep 193 | ij_typescript_enum_constants_wrap = on_every_item 194 | ij_typescript_extends_keyword_wrap = off 195 | ij_typescript_extends_list_wrap = off 196 | ij_typescript_field_prefix = _ 197 | ij_typescript_file_name_style = relaxed 198 | ij_typescript_finally_on_new_line = false 199 | ij_typescript_for_brace_force = never 200 | ij_typescript_for_statement_new_line_after_left_paren = false 201 | ij_typescript_for_statement_right_paren_on_new_line = false 202 | ij_typescript_for_statement_wrap = off 203 | ij_typescript_force_quote_style = false 204 | ij_typescript_force_semicolon_style = false 205 | ij_typescript_function_expression_brace_style = end_of_line 206 | ij_typescript_if_brace_force = never 207 | ij_typescript_import_merge_members = global 208 | ij_typescript_import_prefer_absolute_path = global 209 | ij_typescript_import_sort_members = true 210 | ij_typescript_import_sort_module_name = false 211 | ij_typescript_import_use_node_resolution = true 212 | ij_typescript_imports_wrap = on_every_item 213 | ij_typescript_indent_case_from_switch = true 214 | ij_typescript_indent_chained_calls = true 215 | ij_typescript_indent_package_children = 0 216 | ij_typescript_jsdoc_include_types = false 217 | ij_typescript_jsx_attribute_value = braces 218 | ij_typescript_keep_blank_lines_in_code = 2 219 | ij_typescript_keep_first_column_comment = true 220 | ij_typescript_keep_indents_on_empty_lines = false 221 | ij_typescript_keep_line_breaks = true 222 | ij_typescript_keep_simple_blocks_in_one_line = false 223 | ij_typescript_keep_simple_methods_in_one_line = false 224 | ij_typescript_line_comment_add_space = true 225 | ij_typescript_line_comment_at_first_column = false 226 | ij_typescript_method_brace_style = end_of_line 227 | ij_typescript_method_call_chain_wrap = off 228 | ij_typescript_method_parameters_new_line_after_left_paren = false 229 | ij_typescript_method_parameters_right_paren_on_new_line = false 230 | ij_typescript_method_parameters_wrap = off 231 | ij_typescript_object_literal_wrap = on_every_item 232 | ij_typescript_parentheses_expression_new_line_after_left_paren = false 233 | ij_typescript_parentheses_expression_right_paren_on_new_line = false 234 | ij_typescript_place_assignment_sign_on_next_line = false 235 | ij_typescript_prefer_as_type_cast = false 236 | ij_typescript_prefer_explicit_types_function_expression_returns = false 237 | ij_typescript_prefer_explicit_types_function_returns = false 238 | ij_typescript_prefer_explicit_types_vars_fields = false 239 | ij_typescript_prefer_parameters_wrap = false 240 | ij_typescript_reformat_c_style_comments = false 241 | ij_typescript_space_after_colon = true 242 | ij_typescript_space_after_comma = true 243 | ij_typescript_space_after_dots_in_rest_parameter = false 244 | ij_typescript_space_after_generator_mult = true 245 | ij_typescript_space_after_property_colon = true 246 | ij_typescript_space_after_quest = true 247 | ij_typescript_space_after_type_colon = true 248 | ij_typescript_space_after_unary_not = false 249 | ij_typescript_space_before_async_arrow_lparen = true 250 | ij_typescript_space_before_catch_keyword = true 251 | ij_typescript_space_before_catch_left_brace = true 252 | ij_typescript_space_before_catch_parentheses = true 253 | ij_typescript_space_before_class_lbrace = true 254 | ij_typescript_space_before_class_left_brace = true 255 | ij_typescript_space_before_colon = true 256 | ij_typescript_space_before_comma = false 257 | ij_typescript_space_before_do_left_brace = true 258 | ij_typescript_space_before_else_keyword = true 259 | ij_typescript_space_before_else_left_brace = true 260 | ij_typescript_space_before_finally_keyword = true 261 | ij_typescript_space_before_finally_left_brace = true 262 | ij_typescript_space_before_for_left_brace = true 263 | ij_typescript_space_before_for_parentheses = true 264 | ij_typescript_space_before_for_semicolon = false 265 | ij_typescript_space_before_function_left_parenth = true 266 | ij_typescript_space_before_generator_mult = false 267 | ij_typescript_space_before_if_left_brace = true 268 | ij_typescript_space_before_if_parentheses = true 269 | ij_typescript_space_before_method_call_parentheses = false 270 | ij_typescript_space_before_method_left_brace = true 271 | ij_typescript_space_before_method_parentheses = false 272 | ij_typescript_space_before_property_colon = false 273 | ij_typescript_space_before_quest = true 274 | ij_typescript_space_before_switch_left_brace = true 275 | ij_typescript_space_before_switch_parentheses = true 276 | ij_typescript_space_before_try_left_brace = true 277 | ij_typescript_space_before_type_colon = false 278 | ij_typescript_space_before_unary_not = false 279 | ij_typescript_space_before_while_keyword = true 280 | ij_typescript_space_before_while_left_brace = true 281 | ij_typescript_space_before_while_parentheses = true 282 | ij_typescript_spaces_around_additive_operators = true 283 | ij_typescript_spaces_around_arrow_function_operator = true 284 | ij_typescript_spaces_around_assignment_operators = true 285 | ij_typescript_spaces_around_bitwise_operators = true 286 | ij_typescript_spaces_around_equality_operators = true 287 | ij_typescript_spaces_around_logical_operators = true 288 | ij_typescript_spaces_around_multiplicative_operators = true 289 | ij_typescript_spaces_around_relational_operators = true 290 | ij_typescript_spaces_around_shift_operators = true 291 | ij_typescript_spaces_around_unary_operator = false 292 | ij_typescript_spaces_within_array_initializer_brackets = false 293 | ij_typescript_spaces_within_brackets = false 294 | ij_typescript_spaces_within_catch_parentheses = false 295 | ij_typescript_spaces_within_for_parentheses = false 296 | ij_typescript_spaces_within_if_parentheses = false 297 | ij_typescript_spaces_within_imports = false 298 | ij_typescript_spaces_within_interpolation_expressions = false 299 | ij_typescript_spaces_within_method_call_parentheses = false 300 | ij_typescript_spaces_within_method_parentheses = false 301 | ij_typescript_spaces_within_object_literal_braces = false 302 | ij_typescript_spaces_within_object_type_braces = true 303 | ij_typescript_spaces_within_parentheses = false 304 | ij_typescript_spaces_within_switch_parentheses = false 305 | ij_typescript_spaces_within_type_assertion = false 306 | ij_typescript_spaces_within_union_types = true 307 | ij_typescript_spaces_within_while_parentheses = false 308 | ij_typescript_special_else_if_treatment = true 309 | ij_typescript_ternary_operation_signs_on_next_line = false 310 | ij_typescript_ternary_operation_wrap = off 311 | ij_typescript_union_types_wrap = on_every_item 312 | ij_typescript_use_chained_calls_group_indents = false 313 | ij_typescript_use_double_quotes = true 314 | ij_typescript_use_explicit_js_extension = auto 315 | ij_typescript_use_path_mapping = always 316 | ij_typescript_use_public_modifier = false 317 | ij_typescript_use_semicolon_after_statement = true 318 | ij_typescript_var_declaration_wrap = normal 319 | ij_typescript_while_brace_force = never 320 | ij_typescript_while_on_new_line = false 321 | ij_typescript_wrap_comments = false 322 | 323 | [{*.cjs,*.js,Form}] 324 | ij_continuation_indent_size = 4 325 | ij_javascript_align_imports = false 326 | ij_javascript_align_multiline_array_initializer_expression = false 327 | ij_javascript_align_multiline_binary_operation = false 328 | ij_javascript_align_multiline_chained_methods = false 329 | ij_javascript_align_multiline_extends_list = false 330 | ij_javascript_align_multiline_for = true 331 | ij_javascript_align_multiline_parameters = true 332 | ij_javascript_align_multiline_parameters_in_calls = false 333 | ij_javascript_align_multiline_ternary_operation = false 334 | ij_javascript_align_object_properties = 0 335 | ij_javascript_align_union_types = false 336 | ij_javascript_align_var_statements = 0 337 | ij_javascript_array_initializer_new_line_after_left_brace = false 338 | ij_javascript_array_initializer_right_brace_on_new_line = false 339 | ij_javascript_array_initializer_wrap = off 340 | ij_javascript_assignment_wrap = off 341 | ij_javascript_binary_operation_sign_on_next_line = false 342 | ij_javascript_binary_operation_wrap = off 343 | ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/** 344 | ij_javascript_blank_lines_after_imports = 1 345 | ij_javascript_blank_lines_around_class = 1 346 | ij_javascript_blank_lines_around_field = 0 347 | ij_javascript_blank_lines_around_function = 1 348 | ij_javascript_blank_lines_around_method = 1 349 | ij_javascript_block_brace_style = end_of_line 350 | ij_javascript_block_comment_add_space = false 351 | ij_javascript_block_comment_at_first_column = true 352 | ij_javascript_call_parameters_new_line_after_left_paren = false 353 | ij_javascript_call_parameters_right_paren_on_new_line = false 354 | ij_javascript_call_parameters_wrap = off 355 | ij_javascript_catch_on_new_line = false 356 | ij_javascript_chained_call_dot_on_new_line = true 357 | ij_javascript_class_brace_style = end_of_line 358 | ij_javascript_comma_on_new_line = false 359 | ij_javascript_do_while_brace_force = never 360 | ij_javascript_else_on_new_line = false 361 | ij_javascript_enforce_trailing_comma = keep 362 | ij_javascript_extends_keyword_wrap = off 363 | ij_javascript_extends_list_wrap = off 364 | ij_javascript_field_prefix = _ 365 | ij_javascript_file_name_style = relaxed 366 | ij_javascript_finally_on_new_line = false 367 | ij_javascript_for_brace_force = never 368 | ij_javascript_for_statement_new_line_after_left_paren = false 369 | ij_javascript_for_statement_right_paren_on_new_line = false 370 | ij_javascript_for_statement_wrap = off 371 | ij_javascript_force_quote_style = false 372 | ij_javascript_force_semicolon_style = false 373 | ij_javascript_function_expression_brace_style = end_of_line 374 | ij_javascript_if_brace_force = never 375 | ij_javascript_import_merge_members = global 376 | ij_javascript_import_prefer_absolute_path = global 377 | ij_javascript_import_sort_members = true 378 | ij_javascript_import_sort_module_name = false 379 | ij_javascript_import_use_node_resolution = true 380 | ij_javascript_imports_wrap = on_every_item 381 | ij_javascript_indent_case_from_switch = true 382 | ij_javascript_indent_chained_calls = true 383 | ij_javascript_indent_package_children = 0 384 | ij_javascript_jsx_attribute_value = braces 385 | ij_javascript_keep_blank_lines_in_code = 2 386 | ij_javascript_keep_first_column_comment = true 387 | ij_javascript_keep_indents_on_empty_lines = false 388 | ij_javascript_keep_line_breaks = true 389 | ij_javascript_keep_simple_blocks_in_one_line = false 390 | ij_javascript_keep_simple_methods_in_one_line = false 391 | ij_javascript_line_comment_add_space = true 392 | ij_javascript_line_comment_at_first_column = false 393 | ij_javascript_method_brace_style = end_of_line 394 | ij_javascript_method_call_chain_wrap = off 395 | ij_javascript_method_parameters_new_line_after_left_paren = false 396 | ij_javascript_method_parameters_right_paren_on_new_line = false 397 | ij_javascript_method_parameters_wrap = off 398 | ij_javascript_object_literal_wrap = on_every_item 399 | ij_javascript_parentheses_expression_new_line_after_left_paren = false 400 | ij_javascript_parentheses_expression_right_paren_on_new_line = false 401 | ij_javascript_place_assignment_sign_on_next_line = false 402 | ij_javascript_prefer_as_type_cast = false 403 | ij_javascript_prefer_explicit_types_function_expression_returns = false 404 | ij_javascript_prefer_explicit_types_function_returns = false 405 | ij_javascript_prefer_explicit_types_vars_fields = false 406 | ij_javascript_prefer_parameters_wrap = false 407 | ij_javascript_reformat_c_style_comments = false 408 | ij_javascript_space_after_colon = true 409 | ij_javascript_space_after_comma = true 410 | ij_javascript_space_after_dots_in_rest_parameter = false 411 | ij_javascript_space_after_generator_mult = true 412 | ij_javascript_space_after_property_colon = true 413 | ij_javascript_space_after_quest = true 414 | ij_javascript_space_after_type_colon = true 415 | ij_javascript_space_after_unary_not = false 416 | ij_javascript_space_before_async_arrow_lparen = true 417 | ij_javascript_space_before_catch_keyword = true 418 | ij_javascript_space_before_catch_left_brace = true 419 | ij_javascript_space_before_catch_parentheses = true 420 | ij_javascript_space_before_class_lbrace = true 421 | ij_javascript_space_before_class_left_brace = true 422 | ij_javascript_space_before_colon = true 423 | ij_javascript_space_before_comma = false 424 | ij_javascript_space_before_do_left_brace = true 425 | ij_javascript_space_before_else_keyword = true 426 | ij_javascript_space_before_else_left_brace = true 427 | ij_javascript_space_before_finally_keyword = true 428 | ij_javascript_space_before_finally_left_brace = true 429 | ij_javascript_space_before_for_left_brace = true 430 | ij_javascript_space_before_for_parentheses = true 431 | ij_javascript_space_before_for_semicolon = false 432 | ij_javascript_space_before_function_left_parenth = true 433 | ij_javascript_space_before_generator_mult = false 434 | ij_javascript_space_before_if_left_brace = true 435 | ij_javascript_space_before_if_parentheses = true 436 | ij_javascript_space_before_method_call_parentheses = false 437 | ij_javascript_space_before_method_left_brace = true 438 | ij_javascript_space_before_method_parentheses = false 439 | ij_javascript_space_before_property_colon = false 440 | ij_javascript_space_before_quest = true 441 | ij_javascript_space_before_switch_left_brace = true 442 | ij_javascript_space_before_switch_parentheses = true 443 | ij_javascript_space_before_try_left_brace = true 444 | ij_javascript_space_before_type_colon = false 445 | ij_javascript_space_before_unary_not = false 446 | ij_javascript_space_before_while_keyword = true 447 | ij_javascript_space_before_while_left_brace = true 448 | ij_javascript_space_before_while_parentheses = true 449 | ij_javascript_spaces_around_additive_operators = true 450 | ij_javascript_spaces_around_arrow_function_operator = true 451 | ij_javascript_spaces_around_assignment_operators = true 452 | ij_javascript_spaces_around_bitwise_operators = true 453 | ij_javascript_spaces_around_equality_operators = true 454 | ij_javascript_spaces_around_logical_operators = true 455 | ij_javascript_spaces_around_multiplicative_operators = true 456 | ij_javascript_spaces_around_relational_operators = true 457 | ij_javascript_spaces_around_shift_operators = true 458 | ij_javascript_spaces_around_unary_operator = false 459 | ij_javascript_spaces_within_array_initializer_brackets = false 460 | ij_javascript_spaces_within_brackets = false 461 | ij_javascript_spaces_within_catch_parentheses = false 462 | ij_javascript_spaces_within_for_parentheses = false 463 | ij_javascript_spaces_within_if_parentheses = false 464 | ij_javascript_spaces_within_imports = false 465 | ij_javascript_spaces_within_interpolation_expressions = false 466 | ij_javascript_spaces_within_method_call_parentheses = false 467 | ij_javascript_spaces_within_method_parentheses = false 468 | ij_javascript_spaces_within_object_literal_braces = false 469 | ij_javascript_spaces_within_object_type_braces = true 470 | ij_javascript_spaces_within_parentheses = false 471 | ij_javascript_spaces_within_switch_parentheses = false 472 | ij_javascript_spaces_within_type_assertion = false 473 | ij_javascript_spaces_within_union_types = true 474 | ij_javascript_spaces_within_while_parentheses = false 475 | ij_javascript_special_else_if_treatment = true 476 | ij_javascript_ternary_operation_signs_on_next_line = false 477 | ij_javascript_ternary_operation_wrap = off 478 | ij_javascript_union_types_wrap = on_every_item 479 | ij_javascript_use_chained_calls_group_indents = false 480 | ij_javascript_use_double_quotes = true 481 | ij_javascript_use_explicit_js_extension = auto 482 | ij_javascript_use_path_mapping = always 483 | ij_javascript_use_public_modifier = false 484 | ij_javascript_use_semicolon_after_statement = true 485 | ij_javascript_var_declaration_wrap = normal 486 | ij_javascript_while_brace_force = never 487 | ij_javascript_while_on_new_line = false 488 | ij_javascript_wrap_comments = false 489 | 490 | [{*.ctp,*.hphp,*.inc,*.module,*.php,*.php4,*.php5,*.phtml,SimpleXLS}] 491 | ij_continuation_indent_size = 4 492 | ij_php_align_assignments = false 493 | ij_php_align_class_constants = false 494 | ij_php_align_group_field_declarations = false 495 | ij_php_align_inline_comments = false 496 | ij_php_align_key_value_pairs = false 497 | ij_php_align_match_arm_bodies = false 498 | ij_php_align_multiline_array_initializer_expression = false 499 | ij_php_align_multiline_binary_operation = false 500 | ij_php_align_multiline_chained_methods = false 501 | ij_php_align_multiline_extends_list = false 502 | ij_php_align_multiline_for = true 503 | ij_php_align_multiline_parameters = true 504 | ij_php_align_multiline_parameters_in_calls = false 505 | ij_php_align_multiline_ternary_operation = false 506 | ij_php_align_named_arguments = false 507 | ij_php_align_phpdoc_comments = false 508 | ij_php_align_phpdoc_param_names = false 509 | ij_php_anonymous_brace_style = next_line 510 | ij_php_api_weight = 28 511 | ij_php_array_initializer_new_line_after_left_brace = false 512 | ij_php_array_initializer_right_brace_on_new_line = false 513 | ij_php_array_initializer_wrap = off 514 | ij_php_assignment_wrap = off 515 | ij_php_attributes_wrap = off 516 | ij_php_author_weight = 28 517 | ij_php_binary_operation_sign_on_next_line = false 518 | ij_php_binary_operation_wrap = off 519 | ij_php_blank_lines_after_class_header = 0 520 | ij_php_blank_lines_after_function = 1 521 | ij_php_blank_lines_after_imports = 1 522 | ij_php_blank_lines_after_opening_tag = 0 523 | ij_php_blank_lines_after_package = 0 524 | ij_php_blank_lines_around_class = 1 525 | ij_php_blank_lines_around_constants = 0 526 | ij_php_blank_lines_around_field = 0 527 | ij_php_blank_lines_around_method = 1 528 | ij_php_blank_lines_before_class_end = 0 529 | ij_php_blank_lines_before_imports = 1 530 | ij_php_blank_lines_before_method_body = 0 531 | ij_php_blank_lines_before_package = 1 532 | ij_php_blank_lines_before_return_statement = 0 533 | ij_php_blank_lines_between_imports = 0 534 | ij_php_block_brace_style = end_of_line 535 | ij_php_call_parameters_new_line_after_left_paren = false 536 | ij_php_call_parameters_right_paren_on_new_line = false 537 | ij_php_call_parameters_wrap = off 538 | ij_php_catch_on_new_line = true 539 | ij_php_category_weight = 28 540 | ij_php_class_brace_style = next_line 541 | ij_php_comma_after_last_argument = false 542 | ij_php_comma_after_last_array_element = false 543 | ij_php_comma_after_last_closure_use_var = false 544 | ij_php_comma_after_last_parameter = false 545 | ij_php_concat_spaces = true 546 | ij_php_copyright_weight = 28 547 | ij_php_deprecated_weight = 28 548 | ij_php_do_while_brace_force = never 549 | ij_php_else_if_style = combine 550 | ij_php_else_on_new_line = true 551 | ij_php_example_weight = 28 552 | ij_php_extends_keyword_wrap = off 553 | ij_php_extends_list_wrap = off 554 | ij_php_fields_default_visibility = private 555 | ij_php_filesource_weight = 28 556 | ij_php_finally_on_new_line = true 557 | ij_php_for_brace_force = never 558 | ij_php_for_statement_new_line_after_left_paren = false 559 | ij_php_for_statement_right_paren_on_new_line = false 560 | ij_php_for_statement_wrap = off 561 | ij_php_force_empty_methods_in_one_line = false 562 | ij_php_force_short_declaration_array_style = false 563 | ij_php_getters_setters_naming_style = camel_case 564 | ij_php_getters_setters_order_style = getters_first 565 | ij_php_global_weight = 28 566 | ij_php_group_use_wrap = on_every_item 567 | ij_php_if_brace_force = never 568 | ij_php_if_lparen_on_next_line = false 569 | ij_php_if_rparen_on_next_line = false 570 | ij_php_ignore_weight = 28 571 | ij_php_import_sorting = alphabetic 572 | ij_php_indent_break_from_case = true 573 | ij_php_indent_case_from_switch = true 574 | ij_php_indent_code_in_php_tags = false 575 | ij_php_internal_weight = 28 576 | ij_php_keep_blank_lines_after_lbrace = 2 577 | ij_php_keep_blank_lines_before_right_brace = 2 578 | ij_php_keep_blank_lines_in_code = 2 579 | ij_php_keep_blank_lines_in_declarations = 2 580 | ij_php_keep_control_statement_in_one_line = true 581 | ij_php_keep_first_column_comment = true 582 | ij_php_keep_indents_on_empty_lines = false 583 | ij_php_keep_line_breaks = true 584 | ij_php_keep_rparen_and_lbrace_on_one_line = false 585 | ij_php_keep_simple_classes_in_one_line = false 586 | ij_php_keep_simple_methods_in_one_line = false 587 | ij_php_lambda_brace_style = next_line 588 | ij_php_license_weight = 28 589 | ij_php_line_comment_add_space = false 590 | ij_php_line_comment_at_first_column = true 591 | ij_php_link_weight = 28 592 | ij_php_lower_case_boolean_const = false 593 | ij_php_lower_case_keywords = true 594 | ij_php_lower_case_null_const = false 595 | ij_php_method_brace_style = next_line 596 | ij_php_method_call_chain_wrap = off 597 | ij_php_method_parameters_new_line_after_left_paren = false 598 | ij_php_method_parameters_right_paren_on_new_line = false 599 | ij_php_method_parameters_wrap = off 600 | ij_php_method_weight = 28 601 | ij_php_modifier_list_wrap = false 602 | ij_php_multiline_chained_calls_semicolon_on_new_line = false 603 | ij_php_namespace_brace_style = 2 604 | ij_php_new_line_after_php_opening_tag = false 605 | ij_php_null_type_position = in_the_end 606 | ij_php_package_weight = 28 607 | ij_php_param_weight = 0 608 | ij_php_parameters_attributes_wrap = off 609 | ij_php_parentheses_expression_new_line_after_left_paren = false 610 | ij_php_parentheses_expression_right_paren_on_new_line = false 611 | ij_php_phpdoc_blank_line_before_tags = false 612 | ij_php_phpdoc_blank_lines_around_parameters = false 613 | ij_php_phpdoc_keep_blank_lines = true 614 | ij_php_phpdoc_param_spaces_between_name_and_description = 1 615 | ij_php_phpdoc_param_spaces_between_tag_and_type = 1 616 | ij_php_phpdoc_param_spaces_between_type_and_name = 1 617 | ij_php_phpdoc_use_fqcn = false 618 | ij_php_phpdoc_wrap_long_lines = false 619 | ij_php_place_assignment_sign_on_next_line = false 620 | ij_php_place_parens_for_constructor = 0 621 | ij_php_property_read_weight = 28 622 | ij_php_property_weight = 28 623 | ij_php_property_write_weight = 28 624 | ij_php_return_type_on_new_line = false 625 | ij_php_return_weight = 1 626 | ij_php_see_weight = 28 627 | ij_php_since_weight = 28 628 | ij_php_sort_phpdoc_elements = true 629 | ij_php_space_after_colon = true 630 | ij_php_space_after_colon_in_enum_backed_type = true 631 | ij_php_space_after_colon_in_named_argument = true 632 | ij_php_space_after_colon_in_return_type = true 633 | ij_php_space_after_comma = true 634 | ij_php_space_after_for_semicolon = true 635 | ij_php_space_after_quest = true 636 | ij_php_space_after_type_cast = false 637 | ij_php_space_after_unary_not = false 638 | ij_php_space_before_array_initializer_left_brace = false 639 | ij_php_space_before_catch_keyword = true 640 | ij_php_space_before_catch_left_brace = true 641 | ij_php_space_before_catch_parentheses = true 642 | ij_php_space_before_class_left_brace = true 643 | ij_php_space_before_closure_left_parenthesis = true 644 | ij_php_space_before_colon = true 645 | ij_php_space_before_colon_in_enum_backed_type = false 646 | ij_php_space_before_colon_in_named_argument = false 647 | ij_php_space_before_colon_in_return_type = false 648 | ij_php_space_before_comma = false 649 | ij_php_space_before_do_left_brace = true 650 | ij_php_space_before_else_keyword = true 651 | ij_php_space_before_else_left_brace = true 652 | ij_php_space_before_finally_keyword = true 653 | ij_php_space_before_finally_left_brace = true 654 | ij_php_space_before_for_left_brace = true 655 | ij_php_space_before_for_parentheses = true 656 | ij_php_space_before_for_semicolon = false 657 | ij_php_space_before_if_left_brace = true 658 | ij_php_space_before_if_parentheses = true 659 | ij_php_space_before_method_call_parentheses = false 660 | ij_php_space_before_method_left_brace = true 661 | ij_php_space_before_method_parentheses = false 662 | ij_php_space_before_quest = true 663 | ij_php_space_before_short_closure_left_parenthesis = false 664 | ij_php_space_before_switch_left_brace = true 665 | ij_php_space_before_switch_parentheses = true 666 | ij_php_space_before_try_left_brace = true 667 | ij_php_space_before_unary_not = false 668 | ij_php_space_before_while_keyword = true 669 | ij_php_space_before_while_left_brace = true 670 | ij_php_space_before_while_parentheses = true 671 | ij_php_space_between_ternary_quest_and_colon = false 672 | ij_php_spaces_around_additive_operators = true 673 | ij_php_spaces_around_arrow = false 674 | ij_php_spaces_around_assignment_in_declare = false 675 | ij_php_spaces_around_assignment_operators = true 676 | ij_php_spaces_around_bitwise_operators = true 677 | ij_php_spaces_around_equality_operators = true 678 | ij_php_spaces_around_logical_operators = true 679 | ij_php_spaces_around_multiplicative_operators = true 680 | ij_php_spaces_around_null_coalesce_operator = true 681 | ij_php_spaces_around_pipe_in_union_type = false 682 | ij_php_spaces_around_relational_operators = true 683 | ij_php_spaces_around_shift_operators = true 684 | ij_php_spaces_around_unary_operator = false 685 | ij_php_spaces_around_var_within_brackets = false 686 | ij_php_spaces_within_array_initializer_braces = false 687 | ij_php_spaces_within_brackets = false 688 | ij_php_spaces_within_catch_parentheses = false 689 | ij_php_spaces_within_for_parentheses = false 690 | ij_php_spaces_within_if_parentheses = false 691 | ij_php_spaces_within_method_call_parentheses = false 692 | ij_php_spaces_within_method_parentheses = false 693 | ij_php_spaces_within_parentheses = false 694 | ij_php_spaces_within_short_echo_tags = true 695 | ij_php_spaces_within_switch_parentheses = false 696 | ij_php_spaces_within_while_parentheses = false 697 | ij_php_special_else_if_treatment = true 698 | ij_php_subpackage_weight = 28 699 | ij_php_ternary_operation_signs_on_next_line = false 700 | ij_php_ternary_operation_wrap = off 701 | ij_php_throws_weight = 2 702 | ij_php_todo_weight = 28 703 | ij_php_treat_multiline_arrays_and_lambdas_multiline = false 704 | ij_php_unknown_tag_weight = 28 705 | ij_php_upper_case_boolean_const = false 706 | ij_php_upper_case_null_const = false 707 | ij_php_uses_weight = 28 708 | ij_php_var_weight = 28 709 | ij_php_variable_naming_style = mixed 710 | ij_php_version_weight = 28 711 | ij_php_while_brace_force = never 712 | ij_php_while_on_new_line = true 713 | 714 | [{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,bowerrc,composer.lock,jest.config}] 715 | indent_size = 2 716 | ij_json_array_wrapping = split_into_lines 717 | ij_json_keep_blank_lines_in_code = 0 718 | ij_json_keep_indents_on_empty_lines = false 719 | ij_json_keep_line_breaks = true 720 | ij_json_keep_trailing_comma = false 721 | ij_json_object_wrapping = split_into_lines 722 | ij_json_property_alignment = do_not_align 723 | ij_json_space_after_colon = true 724 | ij_json_space_after_comma = true 725 | ij_json_space_before_colon = false 726 | ij_json_space_before_comma = false 727 | ij_json_spaces_within_braces = false 728 | ij_json_spaces_within_brackets = false 729 | ij_json_wrap_long_lines = false 730 | 731 | [{*.htm,*.html,*.ng,*.sht,*.shtm,*.shtml}] 732 | ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 733 | ij_html_align_attributes = true 734 | ij_html_align_text = false 735 | ij_html_attribute_wrap = off 736 | ij_html_block_comment_add_space = false 737 | ij_html_block_comment_at_first_column = true 738 | ij_html_do_not_align_children_of_min_lines = 0 739 | ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p 740 | ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot 741 | ij_html_enforce_quotes = false 742 | ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var 743 | ij_html_keep_blank_lines = 2 744 | ij_html_keep_indents_on_empty_lines = false 745 | ij_html_keep_line_breaks = true 746 | ij_html_keep_line_breaks_in_text = true 747 | ij_html_keep_whitespaces = false 748 | ij_html_keep_whitespaces_inside = span,pre,textarea 749 | ij_html_line_comment_at_first_column = true 750 | ij_html_new_line_after_last_attribute = never 751 | ij_html_new_line_before_first_attribute = never 752 | ij_html_quote_style = double 753 | ij_html_remove_new_line_before_tags = br 754 | ij_html_space_after_tag_name = false 755 | ij_html_space_around_equality_in_attribute = false 756 | ij_html_space_inside_empty_tag = false 757 | ij_html_text_wrap = normal 758 | 759 | [{*.markdown,*.md}] 760 | ij_markdown_force_one_space_after_blockquote_symbol = true 761 | ij_markdown_force_one_space_after_header_symbol = true 762 | ij_markdown_force_one_space_after_list_bullet = true 763 | ij_markdown_force_one_space_between_words = true 764 | ij_markdown_insert_quote_arrows_on_wrap = true 765 | ij_markdown_keep_indents_on_empty_lines = false 766 | ij_markdown_keep_line_breaks_inside_text_blocks = true 767 | ij_markdown_max_lines_around_block_elements = 1 768 | ij_markdown_max_lines_around_header = 1 769 | ij_markdown_max_lines_between_paragraphs = 1 770 | ij_markdown_min_lines_around_block_elements = 1 771 | ij_markdown_min_lines_around_header = 1 772 | ij_markdown_min_lines_between_paragraphs = 1 773 | ij_markdown_wrap_text_if_long = true 774 | ij_markdown_wrap_text_inside_blockquotes = true 775 | 776 | [{*.yaml,*.yml}] 777 | indent_size = 2 778 | ij_yaml_align_values_properties = do_not_align 779 | ij_yaml_autoinsert_sequence_marker = true 780 | ij_yaml_block_mapping_on_new_line = false 781 | ij_yaml_indent_sequence_value = true 782 | ij_yaml_keep_indents_on_empty_lines = false 783 | ij_yaml_keep_line_breaks = true 784 | ij_yaml_sequence_on_new_line = false 785 | ij_yaml_space_before_colon = false 786 | ij_yaml_spaces_within_braces = true 787 | ij_yaml_spaces_within_brackets = true 788 | --------------------------------------------------------------------------------