diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 74b1a8bae9..ac959d69b0 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,4 +13,4 @@ jobs: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} snapshot: true - tags: 'latest, 3, 3.2' + tags: 'latest, 3, 3.3' diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 1f9992c07d..62366a6d21 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -3,13 +3,13 @@ on: branches: - master pull_request: - # Allow manually triggering the workflow. +# Allow manually triggering the workflow. workflow_dispatch: name: Qa workflow env: extensions: mbstring, intl, iconv, libxml, dom, json, simplexml, zlib, fileinfo key: cache-v1 # can be any string, change to clear the extension cache. - defaultPHPVersion: '7.2' + defaultPHPVersion: '7.4' phiveGPGKeys: 4AA394086372C20A,D2CCAC42F6295E7D,E82B2FB314E9906E,8A03EA3B385DBAA1,12CE0F1D262429A5 phiveHome: $GITHUB_WORKSPACE/.phive jobs: @@ -51,7 +51,7 @@ jobs: phpunit-with-coverage: runs-on: ubuntu-latest - name: Unit tests [7.2 | ubuntu-latest] + name: Unit tests [7.4 | ubuntu-latest] needs: setup steps: - uses: actions/checkout@v2 @@ -87,12 +87,11 @@ jobs: - name: Install PHAR dependencies env: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: phive --no-progress install --copy --trust-gpg-keys ${{ env.phiveGPGKeys }} --force-accept-unsigned phpunit + run: phive --no-progress install --copy --trust-gpg-keys ${{ env.phiveGPGKeys }} --force-accept-unsigned - name: PHPUnit - uses: docker://phpdoc/phpunit-ga:latest - with: - args: --testsuite=unit + run: php tools/phpunit --testsuite=unit + - name: Quick check code coverage level run: php tests/coverage-checker.php 65 @@ -167,7 +166,7 @@ jobs: id: cache-env uses: shivammathur/cache-extensions@v1 with: - php-version: 7.3 + php-version: ${{ env.defaultPHPVersion }} extensions: ${{ env.extensions }} key: ${{ env.key }} @@ -181,7 +180,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.3 + php-version: ${{ env.defaultPHPVersion }} extensions: ${{ env.extensions }} ini-values: memory_limit=2G, display_errors=On, error_reporting=-1 tools: pecl, psalm @@ -333,13 +332,12 @@ jobs: - windows-latest - macOS-latest php-versions: - - '7.2' - - '7.3' - '7.4' - '8.0' + - '8.1' exclude: # already covered in pre-test with coverage above - operating-system: 'ubuntu-latest' - php-versions: '7.2' + php-versions: '7.4' name: Unit tests [${{ matrix.php-versions }} | ${{ matrix.operating-system }}] needs: @@ -382,12 +380,6 @@ jobs: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: phive --no-progress install --copy --trust-gpg-keys ${{ env.phiveGPGKeys }} --force-accept-unsigned - - name: Install phpunit 8 for php 7.2 - if: matrix.php-versions == '7.2' - env: - GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: phive --no-progress install --copy --trust-gpg-keys ${{ env.phiveGPGKeys }} phpunit:^8.5 - - name: Run PHPUnit run: php tools/phpunit --testsuite=unit,integration @@ -397,10 +389,9 @@ jobs: strategy: matrix: php-versions: - - '7.2' - - '7.3' - '7.4' - '8.0' + - '8.1' operating-system: - ubuntu-latest - windows-latest diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index b79d6dfee8..fd48d96a37 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -5,7 +5,7 @@ name: Website env: extensions: mbstring, intl, iconv, libxml, dom, json, simplexml, zlib, fileinfo, gnupg key: cache-v1 # can be any string, change to clear the extension cache. - defaultPHPVersion: '7.2' + defaultPHPVersion: '7.4' jobs: docs: runs-on: ubuntu-latest diff --git a/Dockerfile b/Dockerfile index c508b69346..cb8bfe2ab7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM composer:2 AS composer -FROM php:7.2 +FROM php:8.0 # /usr/share/man/man1 needs to be created before installing openjdk-11-jre lest it will fail # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863199#23 diff --git a/Makefile b/Makefile index 582a087676..606318fbc1 100644 --- a/Makefile +++ b/Makefile @@ -67,8 +67,7 @@ setup: install-phive pull-containers: docker pull phpdoc/phpcs-ga docker pull phpdoc/phpstan-ga - docker pull phpdoc/phpunit-ga - docker pull php:7.2 + docker pull php:7.4 docker pull node .PHONY: phpcs @@ -85,14 +84,14 @@ phpstan: .PHONY: psalm psalm: - docker run -it --rm -v${CURDIR}:/data -w /data php:7.3 ./tools/psalm + docker run -it --rm -v${CURDIR}:/data -w /data php:7.4 ./tools/psalm .PHONY: lint lint: phpcs .PHONY: test test: unit-test - docker run -it --rm -v${CURDIR}:/data -w /data php:7.2 -f ./tests/coverage-checker.php 65 + docker run -it --rm -v${CURDIR}:/data -w /data php:7.4 -f ./tests/coverage-checker.php 65 .PHONY: unit-test unit-test: SUITE=--testsuite=unit @@ -104,7 +103,7 @@ integration-test: SUITE=--testsuite=integration --no-coverage functional-test: SUITE=--testsuite=functional --no-coverage unit-test integration-test functional-test: - docker run -it --rm -v${CURDIR}:/github/workspace phpdoc/phpunit-ga $(SUITE) $(ARGS) + docker run -it --rm -v${CURDIR}:/project -w=/project php:7.4 tools/phpunit $(SUITE) $(ARGS) .PHONY: e2e-test e2e-test: node_modules/.bin/cypress build/default/index.html build/clean/index.html diff --git a/README.md b/README.md index 399e5ca997..91d6e5c706 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ phpDocumentor supports the following: Installation ------------ -PhpDocumentor requires PHP 7.2 or higher to run. +PhpDocumentor requires PHP 7.4 or higher to run. However, code of earlier PHP versions can be analyzed. All templates provided with phpDocumentor have support for Class diagrams based on the read code base. diff --git a/composer.json b/composer.json index 2acd32c6be..5b78dd0acb 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ { "type": "path", "url": "incubator/guides-markdown" } ], "require": { - "php": ">=7.2.5||^8.0", + "php": "^7.4.0||^8.0", "ext-ctype": "*", "ext-hash": "*", "ext-iconv": "*", @@ -37,7 +37,7 @@ "ext-xml": "*", "jawira/plantuml": "^1.27", "jean85/pretty-package-versions": "^1.5 || ^2.0.1", - "league/commonmark": "^1.5", + "league/commonmark": "^2.1", "league/flysystem": "^1.0", "league/pipeline": "^1.0", "league/tactician": "^1.0", @@ -93,7 +93,7 @@ }, "sort-packages": true, "platform": { - "php": "7.2.5" + "php": "7.4.0" } }, "replace": { @@ -110,7 +110,7 @@ }, "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.4-dev" }, "symfony": { "id": "01C32VS9393M1CP9R8TEJMH62G", diff --git a/composer.lock b/composer.lock index cfcd370756..1ca0d6bc2a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,83 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e275e67e2fec6fd66a5be6e8dda2992c", + "content-hash": "9e2d5bb134926dd730bec9ff590ddc3c", "packages": [ + { + "name": "dflydev/dot-access-data", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^3.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + }, + "time": "2021-08-13T13:06:58+00:00" + }, { "name": "doctrine/event-manager", "version": "1.1.1", @@ -282,42 +357,51 @@ }, { "name": "league/commonmark", - "version": "1.6.6", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf" + "reference": "819276bc54e83c160617d3ac0a436c239e479928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c4228d11e30d7493c6836d20872f9582d8ba6dcf", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/819276bc54e83c160617d3ac0a436c239e479928", + "reference": "819276bc54e83c160617d3ac0a436c239e479928", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "scrutinizer/ocular": "1.7.*" + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { - "cebe/markdown": "~1.0", - "commonmark/commonmark.js": "0.29.2", - "erusev/parsedown": "~1.0", + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "erusev/parsedown": "^1.0", "ext-json": "*", "github/gfm": "0.29.0", - "michelf/php-markdown": "~1.4", - "mikehaertl/php-shellcommand": "^1.4", - "phpstan/phpstan": "^0.12.90", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2", - "scrutinizer/ocular": "^1.5", - "symfony/finder": "^4.2" + "michelf/php-markdown": "^1.4", + "phpstan/phpstan": "^0.12.88 || ^1.0.0", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" }, - "bin": [ - "bin/commonmark" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.2-dev" + } + }, "autoload": { "psr-4": { "League\\CommonMark\\": "src" @@ -335,7 +419,7 @@ "role": "Lead Developer" } ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", "homepage": "https://commonmark.thephpleague.com", "keywords": [ "commonmark", @@ -349,15 +433,12 @@ ], "support": { "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", "issues": "https://github.com/thephpleague/commonmark/issues", "rss": "https://github.com/thephpleague/commonmark/releases.atom", "source": "https://github.com/thephpleague/commonmark" }, "funding": [ - { - "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark", - "type": "custom" - }, { "url": "https://www.colinodell.com/sponsor", "type": "custom" @@ -370,16 +451,94 @@ "url": "https://github.com/colinodell", "type": "github" }, - { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" - }, { "url": "https://tidelift.com/funding/github/packagist/league/commonmark", "type": "tidelift" } ], - "time": "2021-07-17T17:13:23+00:00" + "time": "2021-12-05T18:25:20+00:00" + }, + { + "name": "league/config", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.90", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2021-08-14T12:15:32+00:00" }, { "name": "league/flysystem", @@ -1100,6 +1259,153 @@ ], "time": "2021-10-01T21:08:31+00:00" }, + { + "name": "nette/schema", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": ">=7.1 <8.2" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^0.12", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.2" + }, + "time": "2021-10-15T11:40:02+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "2f261e55bd6a12057442045bf2c249806abc1d02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/2f261e55bd6a12057442045bf2c249806abc1d02", + "reference": "2f261e55bd6a12057442045bf2c249806abc1d02", + "shasum": "" + }, + "require": { + "php": ">=7.2 <8.2" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.6" + }, + "time": "2021-11-24T15:47:23+00:00" + }, { "name": "nikic/php-parser", "version": "v4.13.0", @@ -1262,7 +1568,7 @@ }, { "name": "phpdocumentor/guides", - "version": "dev-master", + "version": "dev-drop_old_php", "dist": { "type": "path", "url": "incubator/guides", @@ -1298,15 +1604,15 @@ }, { "name": "phpdocumentor/guides-markdown", - "version": "dev-master", + "version": "dev-drop_old_php", "dist": { "type": "path", "url": "incubator/guides-markdown", - "reference": "1c4634b201274918d7d23711410dc7114ae68a87" + "reference": "424eeced9b4152084424ce8a9b6c6518272efd30" }, "require": { - "league/commonmark": "^1.5", - "php": ">=7.2.5||^8.0" + "league/commonmark": "^2.1", + "php": "^7.4.0||^8.0" }, "type": "library", "autoload": { @@ -1331,7 +1637,7 @@ }, { "name": "phpdocumentor/guides-restructured-text", - "version": "dev-master", + "version": "dev-drop_old_php", "dist": { "type": "path", "url": "incubator/guides-restructured-text", @@ -4912,7 +5218,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.2.5||^8.0", + "php": "^7.4.0||^8.0", "ext-ctype": "*", "ext-hash": "*", "ext-iconv": "*", @@ -4923,7 +5229,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "7.2.5" + "php": "7.4.0" }, "plugin-api-version": "2.1.0" } diff --git a/docs/getting-started/installing.rst b/docs/getting-started/installing.rst index 786b6c34e0..b306dee999 100644 --- a/docs/getting-started/installing.rst +++ b/docs/getting-started/installing.rst @@ -12,7 +12,7 @@ System Requirements phpDocumentor has several dependencies on other software packages. Please make sure that you have these available before installing phpDocumentor. -- `PHP 7.2.5`_ or higher +- `PHP 7.4.0`_ or higher - Graphviz_ (optional) - PlantUML_ (optional) @@ -67,7 +67,7 @@ And next .. _Docker image: https://hub.docker.com/r/phpdoc/phpdoc .. _Composer: https://getcomposer.org -.. _`PHP 7.2.5`: https://www.php.net +.. _`PHP 7.4.0`: https://www.php.net .. _Graphviz: https://graphviz.org/download/ .. _PlantUML: https://plantuml.com/download .. _Twig: https://twig.symfony.com/ diff --git a/incubator/guides-markdown/composer.json b/incubator/guides-markdown/composer.json index 496c378f86..0051fd2613 100644 --- a/incubator/guides-markdown/composer.json +++ b/incubator/guides-markdown/composer.json @@ -17,7 +17,7 @@ }, "minimum-stability": "stable", "require": { - "php": ">=7.2.5||^8.0", - "league/commonmark": "^1.5" + "php": "^7.4.0||^8.0", + "league/commonmark": "^2.1" } } diff --git a/incubator/guides-markdown/src/Markdown/MarkupLanguageParser.php b/incubator/guides-markdown/src/Markdown/MarkupLanguageParser.php index f049436735..ec8664ad7a 100644 --- a/incubator/guides-markdown/src/Markdown/MarkupLanguageParser.php +++ b/incubator/guides-markdown/src/Markdown/MarkupLanguageParser.php @@ -4,16 +4,17 @@ namespace phpDocumentor\Guides\Markdown; -use League\CommonMark\Block\Element\Document; -use League\CommonMark\Block\Element\FencedCode; -use League\CommonMark\Block\Element\Heading; -use League\CommonMark\Block\Element\HtmlBlock; -use League\CommonMark\DocParser; -use League\CommonMark\Environment as CommonMarkEnvironment; -use League\CommonMark\Inline\Element\Code; -use League\CommonMark\Inline\Element\Link; -use League\CommonMark\Inline\Element\Text; +use League\CommonMark\Environment\Environment as CommonMarkEnvironment; +use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; +use League\CommonMark\Extension\CommonMark\Node\Block\FencedCode; +use League\CommonMark\Extension\CommonMark\Node\Block\Heading; +use League\CommonMark\Extension\CommonMark\Node\Block\HtmlBlock; +use League\CommonMark\Extension\CommonMark\Node\Inline\Code; +use League\CommonMark\Extension\CommonMark\Node\Inline\Link; +use League\CommonMark\Node\Block\Document; +use League\CommonMark\Node\Inline\Text; use League\CommonMark\Node\NodeWalker; +use League\CommonMark\Parser\MarkdownParser; use phpDocumentor\Guides\Markdown\Parsers\AbstractBlock; use phpDocumentor\Guides\MarkupLanguageParser as ParserInterface; use phpDocumentor\Guides\Nodes\AnchorNode; @@ -34,7 +35,7 @@ final class MarkupLanguageParser implements ParserInterface { - /** @var DocParser */ + /** @var MarkdownParser */ private $markdownParser; /** @var ParserContext|null */ @@ -53,10 +54,9 @@ public function __construct(ReferenceBuilder $referenceRegistry) { $this->referenceRegistry = $referenceRegistry; - $cmEnvironment = CommonMarkEnvironment::createCommonMarkEnvironment(); - $cmEnvironment->setConfig(['html_input' => 'strip']); - - $this->markdownParser = new DocParser($cmEnvironment); + $cmEnvironment = new CommonMarkEnvironment(['html_input' => 'strip']); + $cmEnvironment->addExtension(new CommonMarkCoreExtension()); + $this->markdownParser = new MarkdownParser($cmEnvironment); $this->parsers = [ new Parsers\Paragraph(), new Parsers\ListBlock(), @@ -108,9 +108,13 @@ public function parseDocument(NodeWalker $walker, string $hash): DocumentNode } if ($node instanceof Heading) { - $content = $node->getStringContent(); + $content = $node->firstChild(); + if ($content instanceof Text === false) { + continue; + } + $title = new TitleNode( - SpanNode::create($this, $content), + new SpanNode($content->getLiteral(), []), $node->getLevel() ); $document->addNode($title); @@ -118,13 +122,13 @@ public function parseDocument(NodeWalker $walker, string $hash): DocumentNode } if ($node instanceof Text) { - $spanNode = SpanNode::create($this, $node->getContent()); + $spanNode = SpanNode::create($this, $node->getLiteral()); $document->addNode($spanNode); continue; } if ($node instanceof Code) { - $spanNode = new CodeNode([$node->getContent()]); + $spanNode = new CodeNode([$node->getLiteral()]); $document->addNode($spanNode); continue; } @@ -136,13 +140,13 @@ public function parseDocument(NodeWalker $walker, string $hash): DocumentNode } if ($node instanceof FencedCode) { - $spanNode = new CodeNode([$node->getStringContent()]); + $spanNode = new CodeNode([$node->getLiteral()]); $document->addNode($spanNode); continue; } if ($node instanceof HtmlBlock) { - $spanNode = new RawNode($node->getStringContent()); + $spanNode = new RawNode($node->getLiteral()); $document->addNode($spanNode); continue; } diff --git a/incubator/guides-markdown/src/Markdown/Parsers/ListBlock.php b/incubator/guides-markdown/src/Markdown/Parsers/ListBlock.php index f9a6b295eb..9a81996b31 100644 --- a/incubator/guides-markdown/src/Markdown/Parsers/ListBlock.php +++ b/incubator/guides-markdown/src/Markdown/Parsers/ListBlock.php @@ -4,7 +4,7 @@ namespace phpDocumentor\Guides\Markdown\Parsers; -use League\CommonMark\Block\Element\ListBlock as CommonMarkListBlock; +use League\CommonMark\Extension\CommonMark\Node\Block\ListBlock as CommonMarkListBlock; use League\CommonMark\Node\NodeWalker; use League\CommonMark\Node\NodeWalkerEvent; use phpDocumentor\Guides\MarkupLanguageParser; diff --git a/incubator/guides-markdown/src/Markdown/Parsers/Paragraph.php b/incubator/guides-markdown/src/Markdown/Parsers/Paragraph.php index e4dd541054..bd0e9504cf 100644 --- a/incubator/guides-markdown/src/Markdown/Parsers/Paragraph.php +++ b/incubator/guides-markdown/src/Markdown/Parsers/Paragraph.php @@ -4,7 +4,7 @@ namespace phpDocumentor\Guides\Markdown\Parsers; -use League\CommonMark\Block\Element\Paragraph as CommonMarkParagraph; +use League\CommonMark\Node\Block\Paragraph as CommonMarkParagraph; use League\CommonMark\Node\NodeWalker; use League\CommonMark\Node\NodeWalkerEvent; use phpDocumentor\Guides\MarkupLanguageParser; diff --git a/incubator/guides-markdown/src/Markdown/Parsers/ThematicBreak.php b/incubator/guides-markdown/src/Markdown/Parsers/ThematicBreak.php index a1b3105a6a..ea25104c05 100644 --- a/incubator/guides-markdown/src/Markdown/Parsers/ThematicBreak.php +++ b/incubator/guides-markdown/src/Markdown/Parsers/ThematicBreak.php @@ -4,7 +4,7 @@ namespace phpDocumentor\Guides\Markdown\Parsers; -use League\CommonMark\Block\Element\ThematicBreak as CommonMark; +use League\CommonMark\Extension\CommonMark\Node\Block\ThematicBreak as CommonMark; use League\CommonMark\Node\NodeWalker; use League\CommonMark\Node\NodeWalkerEvent; use phpDocumentor\Guides\MarkupLanguageParser; diff --git a/src/phpDocumentor/Transformer/Writer/Twig/CommonMarkFactory.php b/src/phpDocumentor/Transformer/Writer/Twig/CommonMarkFactory.php index 1e046a5e2f..4c75a19bb2 100644 --- a/src/phpDocumentor/Transformer/Writer/Twig/CommonMarkFactory.php +++ b/src/phpDocumentor/Transformer/Writer/Twig/CommonMarkFactory.php @@ -5,7 +5,6 @@ namespace phpDocumentor\Transformer\Writer\Twig; use League\CommonMark\CommonMarkConverter; -use League\CommonMark\Environment; use League\CommonMark\Extension\ExtensionInterface; final class CommonMarkFactory @@ -13,11 +12,11 @@ final class CommonMarkFactory /** @param iterable $extensions */ public function createConverter(iterable $extensions): CommonMarkConverter { - $environment = Environment::createCommonMarkEnvironment(); + $converter = new CommonMarkConverter([]); foreach ($extensions as $extension) { - $environment->addExtension($extension); + $converter->getEnvironment()->addExtension($extension); } - return new CommonMarkConverter([], $environment); + return $converter; } } diff --git a/src/phpDocumentor/Transformer/Writer/Twig/Extension.php b/src/phpDocumentor/Transformer/Writer/Twig/Extension.php index cb101e2400..2c4d6e3e88 100644 --- a/src/phpDocumentor/Transformer/Writer/Twig/Extension.php +++ b/src/phpDocumentor/Transformer/Writer/Twig/Extension.php @@ -301,7 +301,7 @@ function (?string $value): string { return str_replace( ['
', ''],
                         ['
', ''],
-                        $this->markdownConverter->convertToHtml($value ?? '')
+                        $this->markdownConverter->convertToHtml($value ?? '')->getContent()
                     );
                 },
                 ['is_safe' => ['all']]
diff --git a/symfony.lock b/symfony.lock
index 5d8e7c1517..b4b8ca9692 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -1,4 +1,7 @@
 {
+    "dflydev/dot-access-data": {
+        "version": "v3.0.1"
+    },
     "doctrine/event-manager": {
         "version": "1.1.1"
     },
@@ -20,6 +23,9 @@
     "league/commonmark": {
         "version": "1.5.6"
     },
+    "league/config": {
+        "version": "v1.1.1"
+    },
     "league/flysystem": {
         "version": "1.0.41"
     },
@@ -62,6 +68,12 @@
     "monolog/monolog": {
         "version": "1.23.0"
     },
+    "nette/schema": {
+        "version": "v1.2.2"
+    },
+    "nette/utils": {
+        "version": "v3.2.6"
+    },
     "nikic/php-parser": {
         "version": "v3.1.3"
     },