From 2c5428c82827dd72e25225a15ab39bb4874723ae Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Sun, 12 Apr 2020 22:46:16 +0200 Subject: [PATCH] Fix keylighter version switcher --- composer.json | 1 - composer.lock | 63 +++-------------------------- config/services.yaml | 3 +- src/Service/KeyLighterVersioner.php | 13 +++++- src/Twig/KeyLighterTwigAccess.php | 36 ++++++++++++----- symfony.lock | 3 -- 6 files changed, 44 insertions(+), 75 deletions(-) diff --git a/composer.json b/composer.json index 4a2f0b4..e95c010 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,6 @@ "ext-json": "*", "ext-curl": "*", "ext-zip": "*", - "kadet/keylighter": "dev-master", "league/commonmark": "^1.3", "sensio/framework-extra-bundle": "^5.5", "symfony/asset": "5.0.*", diff --git a/composer.lock b/composer.lock index 03128ec..7751cd2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "21e44e8aa90d4d7ae44c34fdfdee4f2c", + "content-hash": "ff5ad5d6a23af043f032470a0f69507e", "packages": [ { "name": "doctrine/annotations", @@ -1228,59 +1228,6 @@ ], "time": "2014-01-12T16:20:24+00:00" }, - { - "name": "kadet/keylighter", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/kadet1090/KeyLighter.git", - "reference": "f3f2804ba69766681f8df1887f8e7d58a5504642" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kadet1090/KeyLighter/zipball/f3f2804ba69766681f8df1887f8e7d58a5504642", - "reference": "f3f2804ba69766681f8df1887f8e7d58a5504642", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "require-dev": { - "easybook/geshi": "v1.0.8.19", - "ext-json": "*", - "phpunit/phpunit": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/console": "^4.4", - "symfony/var-exporter": "^4.4" - }, - "suggest": { - "symfony/console": "Allows usage of keylighters CLI utility." - }, - "bin": [ - "bin/keylighter" - ], - "type": "library", - "autoload": { - "psr-4": { - "Kadet\\Highlighter\\": "." - }, - "files": [ - "./functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kacper Donat", - "email": "contact@kadet.net" - } - ], - "description": "Yet another syntax highlighter for PHP", - "time": "2020-04-09T07:40:39+00:00" - }, { "name": "league/commonmark", "version": "1.3.3", @@ -4702,16 +4649,16 @@ "packages-dev": [], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "kadet/keylighter": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "^7.2.5", "ext-ctype": "*", "ext-iconv": "*", - "ext-json": "*" + "ext-json": "*", + "ext-curl": "*", + "ext-zip": "*" }, "platform-dev": [], "plugin-api-version": "1.1.0" diff --git a/config/services.yaml b/config/services.yaml index d9f34b0..9f9fcc0 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -53,8 +53,7 @@ services: $installed: "%keylighter_dir%/installed.json" Kadet\Highlighter\KeyLighter: - class: Kadet\Highlighter\KeyLighter - factory: 'Kadet\Highlighter\KeyLighter::get' + factory: ['@App\Service\KeyLighterVersioner', 'getKeyLighter'] League\CommonMark\Environment: factory: ['League\CommonMark\Environment', 'createGFMEnvironment'] diff --git a/src/Service/KeyLighterVersioner.php b/src/Service/KeyLighterVersioner.php index 86456b2..6bb6a28 100755 --- a/src/Service/KeyLighterVersioner.php +++ b/src/Service/KeyLighterVersioner.php @@ -3,6 +3,7 @@ namespace App\Service; use App\Message\UpdateKeylighterMessage; +use Kadet\Highlighter\KeyLighter; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Messenger\MessageBusInterface; @@ -21,7 +22,7 @@ class KeyLighterVersioner { $this->filesystem = $filesystem; $this->parameters = $parameters; - $this->bus = $bus; + $this->bus = $bus; } public function getAvailableVersions() @@ -83,6 +84,7 @@ class KeyLighterVersioner } require $this->getDirectory($version).'/vendor/autoload.php'; + $this->current = $version; } @@ -91,6 +93,15 @@ class KeyLighterVersioner return $this->current; } + public function getKeyLighter() + { + if (!class_exists(KeyLighter::class)) { + $this->load('dev-master'); + } + + return KeyLighter::get(); + } + public function getCurrentDir() { return $this->getDirectory($this->current); diff --git a/src/Twig/KeyLighterTwigAccess.php b/src/Twig/KeyLighterTwigAccess.php index 7b13033..82ec8a7 100755 --- a/src/Twig/KeyLighterTwigAccess.php +++ b/src/Twig/KeyLighterTwigAccess.php @@ -21,17 +21,33 @@ class KeyLighterTwigAccess public function getLanguages() { - $languages = require $this->versioner->getCurrentDir().'/Config/metadata.php'; - $languages = collect($languages); + switch (true) { + case version_compare(KeyLighter::VERSION, '0.9.0', '>'): + $languages = require $this->versioner->getCurrentDir().'/Config/metadata.php'; + $languages = collect($languages); - $languages = $languages->reduce(function (Collection $collection, $language) { - return $collection->merge(array_fill_keys($language['name'], [ - 'class' => $language[0], - 'standalone' => $language['standalone'], - 'embeddable' => $language['injectable'] - ])); - }, collect()); + $languages = $languages->reduce(function (Collection $collection, $language) { + return $collection->merge(array_fill_keys($language['name'], [ + 'class' => $language[0], + 'standalone' => $language['standalone'], + 'embeddable' => $language['injectable'] + ])); + }, collect()); - return $languages; + return $languages; + + default: + $languages = collect($this->keylighter->registeredLanguages('name', true)); + + return $languages->mapWithKeys(function ($class, $language) { + return [ + $language => [ + 'class' => $class, + 'standalone' => true, + 'embeddable' => true, + ] + ]; + }); + } } } diff --git a/symfony.lock b/symfony.lock index 89dd483..16669a3 100644 --- a/symfony.lock +++ b/symfony.lock @@ -78,9 +78,6 @@ "jdorn/sql-formatter": { "version": "v1.2.17" }, - "kadet/keylighter": { - "version": "dev-master" - }, "league/commonmark": { "version": "1.3.3" },