From f5ba7e31fab688b8c03a9337b42fe2efa1437967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Andr=C3=A9?= Date: Sat, 16 Dec 2023 08:55:09 +0100 Subject: [PATCH] Move & adapt "emoji code" from Intl into its own component Transfert emoji data from Intl to emoji component Update main composer.json Fix phpunit config Update composer and README descriptions Fix LICENCE date Update src/Symfony/Component/Intl/CHANGELOG.md Co-authored-by: Oskar Stark Fix Changelog I feel that cool resolve some of the recent issues linked to the Profiler. Rename component Emoji + unlink from Intl (no shared resp/code) Isolated commit to move data Update Github worflows Use Emoji in String component Update src/Symfony/Component/Emoji/CHANGELOG.md Co-authored-by: Nicolas Grekas Update src/Symfony/Component/Emoji/README.md Co-authored-by: Nicolas Grekas Present the compress command in both README's Update src/Symfony/Component/Intl/CHANGELOG.md Co-authored-by: Nicolas Grekas Fix main composer.json Revert symfony/intl requires symfony/emoji Remove EmojiTransliteratorTrait Move emoji data Add "symfony/deprecation-contracts" to Intl Revert data test split Add symfony/emoji to String (dev) Fix String Test namespace Fix .gitattributes hides "bin/compress" script Please Psalm ? Compute quickCheck once Update LICENCE Add Intl conflict with string < 7.1 Fix Int changelog Fix composer.json CS Throw exception in Intl BC layer when symfony/emoji is not installed Test Intl & Emoji in the same job Remove useless check Remove useless check (without breaking things) --- .github/workflows/intl-data-tests.yml | 28 +++- .github/workflows/package-tests.yml | 2 +- .github/workflows/unit-tests.yml | 2 +- .php-cs-fixer.dist.php | 1 + composer.json | 1 + psalm.xml | 3 +- src/Symfony/Component/Emoji/.gitattributes | 8 + src/Symfony/Component/Emoji/.gitignore | 3 + src/Symfony/Component/Emoji/CHANGELOG.md | 7 + .../Component/Emoji/EmojiTransliterator.php | 141 ++++++++++++++++++ src/Symfony/Component/Emoji/LICENSE | 19 +++ src/Symfony/Component/Emoji/README.md | 18 +++ .../emoji => Emoji/Resources/bin}/Makefile | 0 .../emoji => Emoji/Resources/bin}/README.md | 0 .../emoji => Emoji/Resources/bin}/build.php | 4 +- .../Resources/bin}/composer.json | 0 .../Component/Emoji/Resources/bin/compress | 36 +++++ .../Resources/data}/emoji-af.php | 0 .../Resources/data}/emoji-am.php | 0 .../Resources/data}/emoji-ar.php | 0 .../Resources/data}/emoji-ar_sa.php | 0 .../Resources/data}/emoji-as.php | 0 .../Resources/data}/emoji-ast.php | 0 .../Resources/data}/emoji-az.php | 0 .../Resources/data}/emoji-be.php | 0 .../Resources/data}/emoji-bew.php | 0 .../Resources/data}/emoji-bg.php | 0 .../Resources/data}/emoji-bgn.php | 0 .../Resources/data}/emoji-bn.php | 0 .../Resources/data}/emoji-br.php | 0 .../Resources/data}/emoji-bs.php | 0 .../Resources/data}/emoji-ca.php | 0 .../Resources/data}/emoji-ccp.php | 0 .../Resources/data}/emoji-ceb.php | 0 .../Resources/data}/emoji-chr.php | 0 .../Resources/data}/emoji-ckb.php | 0 .../Resources/data}/emoji-cs.php | 0 .../Resources/data}/emoji-cv.php | 0 .../Resources/data}/emoji-cy.php | 0 .../Resources/data}/emoji-da.php | 0 .../Resources/data}/emoji-de.php | 0 .../Resources/data}/emoji-de_ch.php | 0 .../Resources/data}/emoji-dsb.php | 0 .../Resources/data}/emoji-el.php | 0 .../Resources/data}/emoji-en.php | 0 .../Resources/data}/emoji-en_001.php | 0 .../Resources/data}/emoji-en_au.php | 0 .../Resources/data}/emoji-en_ca.php | 0 .../Resources/data}/emoji-en_gb.php | 0 .../Resources/data}/emoji-en_in.php | 0 .../Resources/data}/emoji-es.php | 0 .../Resources/data}/emoji-es_419.php | 0 .../Resources/data}/emoji-es_mx.php | 0 .../Resources/data}/emoji-es_us.php | 0 .../Resources/data}/emoji-et.php | 0 .../Resources/data}/emoji-eu.php | 0 .../Resources/data}/emoji-fa.php | 0 .../Resources/data}/emoji-ff_adlm.php | 0 .../Resources/data}/emoji-fi.php | 0 .../Resources/data}/emoji-fil.php | 0 .../Resources/data}/emoji-fo.php | 0 .../Resources/data}/emoji-fr.php | 0 .../Resources/data}/emoji-fr_ca.php | 0 .../Resources/data}/emoji-ga.php | 0 .../Resources/data}/emoji-gd.php | 0 .../Resources/data}/emoji-github.php | 0 .../Resources/data}/emoji-gl.php | 0 .../Resources/data}/emoji-gu.php | 0 .../Resources/data}/emoji-ha.php | 0 .../Resources/data}/emoji-ha_ne.php | 0 .../Resources/data}/emoji-he.php | 0 .../Resources/data}/emoji-hi.php | 0 .../Resources/data}/emoji-hi_latn.php | 0 .../Resources/data}/emoji-hr.php | 0 .../Resources/data}/emoji-hsb.php | 0 .../Resources/data}/emoji-hu.php | 0 .../Resources/data}/emoji-hy.php | 0 .../Resources/data}/emoji-ia.php | 0 .../Resources/data}/emoji-id.php | 0 .../Resources/data}/emoji-ig.php | 0 .../Resources/data}/emoji-is.php | 0 .../Resources/data}/emoji-it.php | 0 .../Resources/data}/emoji-ja.php | 0 .../Resources/data}/emoji-jv.php | 0 .../Resources/data}/emoji-ka.php | 0 .../Resources/data}/emoji-kab.php | 0 .../Resources/data}/emoji-kk.php | 0 .../Resources/data}/emoji-kl.php | 0 .../Resources/data}/emoji-km.php | 0 .../Resources/data}/emoji-kn.php | 0 .../Resources/data}/emoji-ko.php | 0 .../Resources/data}/emoji-kok.php | 0 .../Resources/data}/emoji-ku.php | 0 .../Resources/data}/emoji-ky.php | 0 .../Resources/data}/emoji-lb.php | 0 .../Resources/data}/emoji-lij.php | 0 .../Resources/data}/emoji-lo.php | 0 .../Resources/data}/emoji-lt.php | 0 .../Resources/data}/emoji-lv.php | 0 .../Resources/data}/emoji-mi.php | 0 .../Resources/data}/emoji-mk.php | 0 .../Resources/data}/emoji-ml.php | 0 .../Resources/data}/emoji-mn.php | 0 .../Resources/data}/emoji-mni.php | 0 .../Resources/data}/emoji-mr.php | 0 .../Resources/data}/emoji-ms.php | 0 .../Resources/data}/emoji-mt.php | 0 .../Resources/data}/emoji-my.php | 0 .../Resources/data}/emoji-ne.php | 0 .../Resources/data}/emoji-nl.php | 0 .../Resources/data}/emoji-nn.php | 0 .../Resources/data}/emoji-no.php | 0 .../Resources/data}/emoji-nso.php | 0 .../Resources/data}/emoji-oc.php | 0 .../Resources/data}/emoji-or.php | 0 .../Resources/data}/emoji-pa.php | 0 .../Resources/data}/emoji-pa_arab.php | 0 .../Resources/data}/emoji-pcm.php | 0 .../Resources/data}/emoji-pl.php | 0 .../Resources/data}/emoji-ps.php | 0 .../Resources/data}/emoji-pt.php | 0 .../Resources/data}/emoji-pt_pt.php | 0 .../Resources/data}/emoji-qu.php | 0 .../Resources/data}/emoji-quc.php | 0 .../Resources/data}/emoji-rhg.php | 0 .../Resources/data}/emoji-rm.php | 0 .../Resources/data}/emoji-ro.php | 0 .../Resources/data}/emoji-root.php | 0 .../Resources/data}/emoji-ru.php | 0 .../Resources/data}/emoji-rw.php | 0 .../Resources/data}/emoji-sat.php | 0 .../Resources/data}/emoji-sc.php | 0 .../Resources/data}/emoji-sd.php | 0 .../Resources/data}/emoji-si.php | 0 .../Resources/data}/emoji-sk.php | 0 .../Resources/data}/emoji-sl.php | 0 .../Resources/data}/emoji-slack.php | 0 .../Resources/data}/emoji-so.php | 0 .../Resources/data}/emoji-sq.php | 0 .../Resources/data}/emoji-sr.php | 0 .../Resources/data}/emoji-sr_cyrl.php | 0 .../Resources/data}/emoji-sr_cyrl_ba.php | 0 .../Resources/data}/emoji-sr_latn.php | 0 .../Resources/data}/emoji-sr_latn_ba.php | 0 .../Resources/data}/emoji-strip.php | 0 .../Resources/data}/emoji-sv.php | 0 .../Resources/data}/emoji-sw.php | 0 .../Resources/data}/emoji-sw_ke.php | 0 .../Resources/data}/emoji-ta.php | 0 .../Resources/data}/emoji-te.php | 0 .../Resources/data}/emoji-tg.php | 0 .../Resources/data}/emoji-th.php | 0 .../Resources/data}/emoji-ti.php | 0 .../Resources/data}/emoji-tk.php | 0 .../Resources/data}/emoji-tn.php | 0 .../Resources/data}/emoji-to.php | 0 .../Resources/data}/emoji-tr.php | 0 .../Resources/data}/emoji-ug.php | 0 .../Resources/data}/emoji-uk.php | 0 .../Resources/data}/emoji-ur.php | 0 .../Resources/data}/emoji-uz.php | 0 .../Resources/data}/emoji-vi.php | 0 .../Resources/data}/emoji-wo.php | 0 .../Resources/data}/emoji-xh.php | 0 .../Resources/data}/emoji-yo.php | 0 .../Resources/data}/emoji-yo_bj.php | 0 .../Resources/data}/emoji-yue.php | 0 .../Resources/data}/emoji-yue_hans.php | 0 .../Resources/data}/emoji-zh.php | 0 .../Resources/data}/emoji-zh_hant.php | 0 .../Resources/data}/emoji-zh_hant_hk.php | 0 .../Resources/data}/emoji-zu.php | 0 .../Resources/data}/github-emoji.php | 0 .../Resources/data}/slack-emoji.php | 0 .../Tests}/EmojiTransliteratorTest.php | 6 +- .../Emoji/Util/GzipStreamWrapper.php | 83 +++++++++++ src/Symfony/Component/Emoji/composer.json | 34 +++++ src/Symfony/Component/Emoji/phpunit.xml.dist | 31 ++++ src/Symfony/Component/Intl/CHANGELOG.md | 8 +- src/Symfony/Component/Intl/README.md | 4 + .../Transliterator/EmojiTransliterator.php | 136 ++--------------- src/Symfony/Component/Intl/composer.json | 7 +- .../Component/String/Slugger/AsciiSlugger.php | 4 +- .../String/Tests/Slugger/AsciiSluggerTest.php | 2 +- src/Symfony/Component/String/composer.json | 3 +- 185 files changed, 445 insertions(+), 146 deletions(-) create mode 100644 src/Symfony/Component/Emoji/.gitattributes create mode 100644 src/Symfony/Component/Emoji/.gitignore create mode 100644 src/Symfony/Component/Emoji/CHANGELOG.md create mode 100644 src/Symfony/Component/Emoji/EmojiTransliterator.php create mode 100644 src/Symfony/Component/Emoji/LICENSE create mode 100644 src/Symfony/Component/Emoji/README.md rename src/Symfony/Component/{Intl/Resources/emoji => Emoji/Resources/bin}/Makefile (100%) rename src/Symfony/Component/{Intl/Resources/emoji => Emoji/Resources/bin}/README.md (100%) rename src/Symfony/Component/{Intl/Resources/emoji => Emoji/Resources/bin}/build.php (98%) rename src/Symfony/Component/{Intl/Resources/emoji => Emoji/Resources/bin}/composer.json (100%) create mode 100755 src/Symfony/Component/Emoji/Resources/bin/compress rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-af.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-am.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ar.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ar_sa.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-as.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ast.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-az.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-be.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-bew.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-bg.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-bgn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-bn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-br.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-bs.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ca.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ccp.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ceb.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-chr.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ckb.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-cs.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-cv.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-cy.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-da.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-de.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-de_ch.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-dsb.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-el.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-en.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-en_001.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-en_au.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-en_ca.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-en_gb.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-en_in.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-es.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-es_419.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-es_mx.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-es_us.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-et.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-eu.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-fa.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ff_adlm.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-fi.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-fil.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-fo.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-fr.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-fr_ca.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ga.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-gd.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-github.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-gl.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-gu.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ha.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ha_ne.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-he.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-hi.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-hi_latn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-hr.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-hsb.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-hu.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-hy.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ia.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-id.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ig.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-is.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-it.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ja.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-jv.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ka.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-kab.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-kk.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-kl.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-km.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-kn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ko.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-kok.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ku.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ky.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-lb.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-lij.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-lo.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-lt.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-lv.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-mi.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-mk.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ml.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-mn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-mni.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-mr.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ms.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-mt.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-my.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ne.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-nl.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-nn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-no.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-nso.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-oc.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-or.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-pa.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-pa_arab.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-pcm.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-pl.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ps.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-pt.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-pt_pt.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-qu.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-quc.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-rhg.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-rm.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ro.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-root.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ru.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-rw.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sat.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sc.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sd.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-si.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sk.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sl.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-slack.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-so.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sq.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sr.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sr_cyrl.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sr_cyrl_ba.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sr_latn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sr_latn_ba.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-strip.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sv.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sw.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-sw_ke.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ta.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-te.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-tg.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-th.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ti.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-tk.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-tn.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-to.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-tr.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ug.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-uk.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-ur.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-uz.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-vi.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-wo.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-xh.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-yo.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-yo_bj.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-yue.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-yue_hans.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-zh.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-zh_hant.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-zh_hant_hk.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/emoji-zu.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/github-emoji.php (100%) rename src/Symfony/Component/{Intl/Resources/data/transliterator/emoji => Emoji/Resources/data}/slack-emoji.php (100%) rename src/Symfony/Component/{Intl/Tests/Transliterator => Emoji/Tests}/EmojiTransliteratorTest.php (96%) create mode 100644 src/Symfony/Component/Emoji/Util/GzipStreamWrapper.php create mode 100644 src/Symfony/Component/Emoji/composer.json create mode 100644 src/Symfony/Component/Emoji/phpunit.xml.dist diff --git a/.github/workflows/intl-data-tests.yml b/.github/workflows/intl-data-tests.yml index 01401fedc232f..a02bd73ac5b8f 100644 --- a/.github/workflows/intl-data-tests.yml +++ b/.github/workflows/intl-data-tests.yml @@ -1,8 +1,11 @@ -name: Intl data +name: Intl/Emoji data on: push: paths: + - 'src/Symfony/Component/Emoji/*.php' + - 'src/Symfony/Component/Emoji/Resources/data/**' + - 'src/Symfony/Component/Emoji/Tests/*Test.php' - 'src/Symfony/Component/Intl/*.php' - 'src/Symfony/Component/Intl/Util/GitRepository.php' - 'src/Symfony/Component/Intl/Resources/data/**' @@ -10,6 +13,9 @@ on: - 'src/Symfony/Component/Intl/Tests/Util/GitRepositoryTest.php' pull_request: paths: + - 'src/Symfony/Component/Emoji/*.php' + - 'src/Symfony/Component/Emoji/Resources/data/**' + - 'src/Symfony/Component/Emoji/Tests/*Test.php' - 'src/Symfony/Component/Intl/*.php' - 'src/Symfony/Component/Intl/Util/GitRepository.php' - 'src/Symfony/Component/Intl/Resources/data/**' @@ -29,7 +35,7 @@ permissions: jobs: tests: - name: Intl data + name: Intl/Emoji data runs-on: Ubuntu-20.04 steps: @@ -80,15 +86,23 @@ jobs: - name: Run intl-data tests run: ./phpunit --group intl-data -v - - name: Test with compressed data + - name: Test intl-data with compressed data run: | [ -f src/Symfony/Component/Intl/Resources/data/locales/en.php ] [ ! -f src/Symfony/Component/Intl/Resources/data/locales/en.php.gz ] - [ -f src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en.php ] - [ ! -f src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en.php.gz ] src/Symfony/Component/Intl/Resources/bin/compress [ ! -f src/Symfony/Component/Intl/Resources/data/locales/en.php ] [ -f src/Symfony/Component/Intl/Resources/data/locales/en.php.gz ] - [ ! -f src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en.php ] - [ -f src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en.php.gz ] ./phpunit src/Symfony/Component/Intl + + - name: Run Emoji tests + run: ./phpunit src/Symfony/Component/Emoji -v + + - name: Test Emoji with compressed data + run: | + [ -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php ] + [ ! -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php.gz ] + src/Symfony/Component/Emoji/Resources/bin/compress + [ ! -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php ] + [ -f src/Symfony/Component/Emoji/Resources/data/emoji-en.php.gz ] + ./phpunit src/Symfony/Component/Emoji diff --git a/.github/workflows/package-tests.yml b/.github/workflows/package-tests.yml index 96b7451b7f945..bc6f8eec683c7 100644 --- a/.github/workflows/package-tests.yml +++ b/.github/workflows/package-tests.yml @@ -21,7 +21,7 @@ jobs: - name: Find packages id: find-packages - run: echo "packages=$(php .github/get-modified-packages.php $(find src/Symfony -mindepth 2 -type f -name composer.json -printf '%h\n' | grep -v src/Symfony/Component/Intl/Resources/emoji |jq -R -s -c 'split("\n")[:-1]') $(git diff --name-only origin/${{ github.base_ref }} HEAD | grep src/ | jq -R -s -c 'split("\n")[:-1]'))" >> $GITHUB_OUTPUT + run: echo "packages=$(php .github/get-modified-packages.php $(find src/Symfony -mindepth 2 -type f -name composer.json -printf '%h\n' | grep -v src/Symfony/Component/Emoji/Resources/bin |jq -R -s -c 'split("\n")[:-1]') $(git diff --name-only origin/${{ github.base_ref }} HEAD | grep src/ | jq -R -s -c 'split("\n")[:-1]'))" >> $GITHUB_OUTPUT - name: Verify meta files are correct run: | diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 9daf71108dcaa..0dfc798c94fac 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -95,7 +95,7 @@ jobs: echo SYMFONY_DEPRECATIONS_HELPER=weak >> $GITHUB_ENV cp composer.json composer.json.orig echo -e '{\n"require":{'"$(grep phpunit-bridge composer.json)"'"php":"*"},"minimum-stability":"dev"}' > composer.json - php .github/build-packages.php HEAD^ $SYMFONY_VERSION $(find src/Symfony -mindepth 2 -type f -name composer.json -printf '%h\n' | grep -v src/Symfony/Component/Intl/Resources/emoji) + php .github/build-packages.php HEAD^ $SYMFONY_VERSION $(find src/Symfony -mindepth 2 -type f -name composer.json -printf '%h\n' | grep -v src/Symfony/Component/Emoji/Resources/bin) mv composer.json composer.json.phpunit mv composer.json.orig composer.json fi diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 48c4f276b34a5..b5712f07b352d 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -53,6 +53,7 @@ 'Symfony/Bundle/FrameworkBundle/Resources/views/Form', // explicit trigger_error tests 'Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/', + 'Symfony/Component/Emoji/Resources/', 'Symfony/Component/Intl/Resources/data/', ]) // explicit tests for ommited @param type, against `no_superfluous_phpdoc_tags` diff --git a/composer.json b/composer.json index 1894d70b6ccfb..710625257988a 100644 --- a/composer.json +++ b/composer.json @@ -71,6 +71,7 @@ "symfony/doctrine-bridge": "self.version", "symfony/dom-crawler": "self.version", "symfony/dotenv": "self.version", + "symfony/emoji": "self.version", "symfony/error-handler": "self.version", "symfony/event-dispatcher": "self.version", "symfony/expression-language": "self.version", diff --git a/psalm.xml b/psalm.xml index a21be22fe248f..f5f9c5b4c4e88 100644 --- a/psalm.xml +++ b/psalm.xml @@ -17,7 +17,8 @@ - + + diff --git a/src/Symfony/Component/Emoji/.gitattributes b/src/Symfony/Component/Emoji/.gitattributes new file mode 100644 index 0000000000000..9e72316d442f0 --- /dev/null +++ b/src/Symfony/Component/Emoji/.gitattributes @@ -0,0 +1,8 @@ +/Resources/bin/build.php export-ignore +/Resources/bin/composer.json export-ignore +/Resources/bin/Makefile export-ignore +/Resources/bin/README.md export-ignore +/Tests export-ignore +/phpunit.xml.dist export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Emoji/.gitignore b/src/Symfony/Component/Emoji/.gitignore new file mode 100644 index 0000000000000..c49a5d8df5c65 --- /dev/null +++ b/src/Symfony/Component/Emoji/.gitignore @@ -0,0 +1,3 @@ +vendor/ +composer.lock +phpunit.xml diff --git a/src/Symfony/Component/Emoji/CHANGELOG.md b/src/Symfony/Component/Emoji/CHANGELOG.md new file mode 100644 index 0000000000000..5f941ae21a99a --- /dev/null +++ b/src/Symfony/Component/Emoji/CHANGELOG.md @@ -0,0 +1,7 @@ +CHANGELOG +========= + +7.1 +--- + + * Add the component diff --git a/src/Symfony/Component/Emoji/EmojiTransliterator.php b/src/Symfony/Component/Emoji/EmojiTransliterator.php new file mode 100644 index 0000000000000..2a19f89cfc548 --- /dev/null +++ b/src/Symfony/Component/Emoji/EmojiTransliterator.php @@ -0,0 +1,141 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Emoji; + +use Symfony\Component\Emoji\Util\GzipStreamWrapper; + +if (!class_exists(\Transliterator::class)) { + throw new \LogicException(sprintf('You cannot use the "%s\EmojiTransliterator" class as the "intl" extension is not installed. See https://php.net/intl.', __NAMESPACE__)); +} + +final class EmojiTransliterator extends \Transliterator +{ + private const QUICK_CHECK = "\xA9\xAE\xE2\xE3\xF0"; + private const REVERSEABLE_IDS = [ + 'emoji-github' => 'github-emoji', + 'emoji-slack' => 'slack-emoji', + 'github-emoji' => 'emoji-github', + 'slack-emoji' => 'emoji-slack', + ]; + + public readonly string $id; + + private array $map; + + private string $quickCheck; + + private \Transliterator $transliterator; + + public static function create(string $id, int $direction = self::FORWARD): self + { + $id = strtolower($id); + + if (!isset(self::REVERSEABLE_IDS[$id]) && !str_starts_with($id, 'emoji-')) { + $id = 'emoji-'.$id; + } + + if (self::REVERSE === $direction) { + if (!isset(self::REVERSEABLE_IDS[$id])) { + // Create a failing reverse-transliterator to populate intl_get_error_*() + \Transliterator::createFromRules('A > B')->createInverse(); + + throw new \IntlException(intl_get_error_message(), intl_get_error_code()); + } + $id = self::REVERSEABLE_IDS[$id]; + } + + $file = __DIR__."/Resources/data/{$id}.php"; + if (!preg_match('/^[a-z0-9@_\\.\\-]*$/', $id) || !is_file($file) && !is_file($file .= '.gz')) { + \Transliterator::create($id); // Populate intl_get_error_*() + + throw new \IntlException(intl_get_error_message(), intl_get_error_code()); + } + + /** + * @var array $maps + */ + static $maps; + + // Create an instance of \Transliterator with a custom id; that's the only way + static $newInstance; + $instance = ($newInstance ??= (new \ReflectionClass(self::class))->newInstanceWithoutConstructor(...))(); + $instance->id = $id; + $instance->map = $maps[$id] ??= str_ends_with($file, '.gz') ? GzipStreamWrapper::require($file) : require $file; + + return $instance; + } + + public function createInverse(): self + { + return self::create($this->id, \Transliterator::REVERSE); + } + + public function getErrorCode(): int|false + { + return $this->transliterator?->getErrorCode() ?? 0; + } + + public function getErrorMessage(): string|false + { + return $this->transliterator?->getErrorMessage() ?? false; + } + + public static function listIDs(): array + { + static $ids = []; + + if ($ids) { + return $ids; + } + + foreach (scandir(__DIR__.'/Resources/data/') as $file) { + if (str_ends_with($file, '.php.gz')) { + $ids[] = substr($file, 0, -7); + } elseif (str_ends_with($file, '.php')) { + $ids[] = substr($file, 0, -4); + } + } + + return $ids; + } + + public function transliterate(string $string, int $start = 0, int $end = -1): string|false + { + $this->quickCheck ??= str_starts_with(array_key_first($this->map), ':') ? ':' : self::QUICK_CHECK; + + if (0 === $start && -1 === $end && preg_match('//u', $string)) { + return \strlen($string) === strcspn($string, $this->quickCheck) ? $string : strtr($string, $this->map); + } + + // Here we rely on intl to validate the $string, $start and $end arguments + // and to slice the string. Slicing is done by replacing the part if $string + // between $start and $end by a unique cookie that can be reliably used to + // identify which part of $string should be transliterated. + + static $cookie; + static $transliterator; + + $cookie ??= hash('xxh128', random_bytes(8)); + $this->transliterator ??= clone $transliterator ??= \Transliterator::createFromRules('[:any:]* > '.$cookie); + + if (false === $result = $this->transliterator->transliterate($string, $start, $end)) { + return false; + } + + $parts = explode($cookie, $result); + $start = \strlen($parts[0]); + $length = -\strlen($parts[1]) ?: null; + $string = substr($string, $start, $length); + + return $parts[0].(\strlen($string) === strcspn($string, $this->quickCheck) ? $string : strtr($string, $this->map)).$parts[1]; + } +} diff --git a/src/Symfony/Component/Emoji/LICENSE b/src/Symfony/Component/Emoji/LICENSE new file mode 100644 index 0000000000000..e374a5c8339d3 --- /dev/null +++ b/src/Symfony/Component/Emoji/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2024-present Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/Symfony/Component/Emoji/README.md b/src/Symfony/Component/Emoji/README.md new file mode 100644 index 0000000000000..b5027369514d6 --- /dev/null +++ b/src/Symfony/Component/Emoji/README.md @@ -0,0 +1,18 @@ +Emoji Component +=============== + +The Emoji component provides access to emoji characters and sequences from +the [Unicode CLDR](https://cldr.unicode.org/index). + +If you have the zlib extension enabled, you can compress the data by running: + + php vendor/symfony/emoji/Resources/bin/compress + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/emoji.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/src/Symfony/Component/Intl/Resources/emoji/Makefile b/src/Symfony/Component/Emoji/Resources/bin/Makefile similarity index 100% rename from src/Symfony/Component/Intl/Resources/emoji/Makefile rename to src/Symfony/Component/Emoji/Resources/bin/Makefile diff --git a/src/Symfony/Component/Intl/Resources/emoji/README.md b/src/Symfony/Component/Emoji/Resources/bin/README.md similarity index 100% rename from src/Symfony/Component/Intl/Resources/emoji/README.md rename to src/Symfony/Component/Emoji/Resources/bin/README.md diff --git a/src/Symfony/Component/Intl/Resources/emoji/build.php b/src/Symfony/Component/Emoji/Resources/bin/build.php similarity index 98% rename from src/Symfony/Component/Intl/Resources/emoji/build.php rename to src/Symfony/Component/Emoji/Resources/bin/build.php index a3546815865cf..088838cdd0466 100755 --- a/src/Symfony/Component/Intl/Resources/emoji/build.php +++ b/src/Symfony/Component/Emoji/Resources/bin/build.php @@ -25,7 +25,7 @@ final class Builder { - private const TARGET_DIR = __DIR__.'/../data/transliterator/emoji/'; + private const TARGET_DIR = __DIR__.'/../data/'; public static function getEmojisCodePoints(): array { @@ -233,7 +233,7 @@ public static function saveRules(iterable $rulesByLocale): void sort($firstChars); $quickCheck = '"'.str_replace('%', '\\x', rawurlencode(implode('', $firstChars))).'"'; - $file = dirname(__DIR__, 2).'/Transliterator/EmojiTransliterator.php'; + $file = dirname(__DIR__, 2).'/EmojiTransliterator.php'; file_put_contents($file, preg_replace('/QUICK_CHECK = .*;/m', "QUICK_CHECK = {$quickCheck};", file_get_contents($file))); } diff --git a/src/Symfony/Component/Intl/Resources/emoji/composer.json b/src/Symfony/Component/Emoji/Resources/bin/composer.json similarity index 100% rename from src/Symfony/Component/Intl/Resources/emoji/composer.json rename to src/Symfony/Component/Emoji/Resources/bin/composer.json diff --git a/src/Symfony/Component/Emoji/Resources/bin/compress b/src/Symfony/Component/Emoji/Resources/bin/compress new file mode 100755 index 0000000000000..174cbca59b041 --- /dev/null +++ b/src/Symfony/Component/Emoji/Resources/bin/compress @@ -0,0 +1,36 @@ +#!/usr/bin/env php + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if ('cli' !== PHP_SAPI) { + throw new Exception('This script must be run from the command line.'); +} +if (!extension_loaded('zlib')) { + throw new Exception('This script requires the zlib extension.'); +} + +$iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator( + dirname(__DIR__).'/data', + FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS + ) +); + +foreach ($iterator as $file) { + if ('php' !== $file->getExtension()) { + continue; + } + + $data = file_get_contents($file); + file_put_contents('compress.zlib://'.$file.'.gz', $data); + + unlink($file.(filesize($file.'.gz') >= strlen($data) ? '.gz' : '')); +} diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-af.php b/src/Symfony/Component/Emoji/Resources/data/emoji-af.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-af.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-af.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-am.php b/src/Symfony/Component/Emoji/Resources/data/emoji-am.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-am.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-am.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ar.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ar.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ar.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ar.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ar_sa.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ar_sa.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ar_sa.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ar_sa.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-as.php b/src/Symfony/Component/Emoji/Resources/data/emoji-as.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-as.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-as.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ast.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ast.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ast.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ast.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-az.php b/src/Symfony/Component/Emoji/Resources/data/emoji-az.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-az.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-az.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-be.php b/src/Symfony/Component/Emoji/Resources/data/emoji-be.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-be.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-be.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bew.php b/src/Symfony/Component/Emoji/Resources/data/emoji-bew.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bew.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-bew.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bg.php b/src/Symfony/Component/Emoji/Resources/data/emoji-bg.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bg.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-bg.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bgn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-bgn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bgn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-bgn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-bn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-bn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-br.php b/src/Symfony/Component/Emoji/Resources/data/emoji-br.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-br.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-br.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bs.php b/src/Symfony/Component/Emoji/Resources/data/emoji-bs.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-bs.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-bs.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ca.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ca.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ca.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ca.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ccp.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ccp.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ccp.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ccp.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ceb.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ceb.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ceb.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ceb.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-chr.php b/src/Symfony/Component/Emoji/Resources/data/emoji-chr.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-chr.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-chr.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ckb.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ckb.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ckb.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ckb.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cs.php b/src/Symfony/Component/Emoji/Resources/data/emoji-cs.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cs.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-cs.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cv.php b/src/Symfony/Component/Emoji/Resources/data/emoji-cv.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cv.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-cv.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cy.php b/src/Symfony/Component/Emoji/Resources/data/emoji-cy.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-cy.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-cy.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-da.php b/src/Symfony/Component/Emoji/Resources/data/emoji-da.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-da.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-da.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-de.php b/src/Symfony/Component/Emoji/Resources/data/emoji-de.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-de.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-de.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-de_ch.php b/src/Symfony/Component/Emoji/Resources/data/emoji-de_ch.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-de_ch.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-de_ch.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-dsb.php b/src/Symfony/Component/Emoji/Resources/data/emoji-dsb.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-dsb.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-dsb.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-el.php b/src/Symfony/Component/Emoji/Resources/data/emoji-el.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-el.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-el.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en.php b/src/Symfony/Component/Emoji/Resources/data/emoji-en.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-en.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_001.php b/src/Symfony/Component/Emoji/Resources/data/emoji-en_001.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_001.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-en_001.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_au.php b/src/Symfony/Component/Emoji/Resources/data/emoji-en_au.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_au.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-en_au.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_ca.php b/src/Symfony/Component/Emoji/Resources/data/emoji-en_ca.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_ca.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-en_ca.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_gb.php b/src/Symfony/Component/Emoji/Resources/data/emoji-en_gb.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_gb.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-en_gb.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_in.php b/src/Symfony/Component/Emoji/Resources/data/emoji-en_in.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-en_in.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-en_in.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es.php b/src/Symfony/Component/Emoji/Resources/data/emoji-es.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-es.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_419.php b/src/Symfony/Component/Emoji/Resources/data/emoji-es_419.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_419.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-es_419.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_mx.php b/src/Symfony/Component/Emoji/Resources/data/emoji-es_mx.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_mx.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-es_mx.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_us.php b/src/Symfony/Component/Emoji/Resources/data/emoji-es_us.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-es_us.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-es_us.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-et.php b/src/Symfony/Component/Emoji/Resources/data/emoji-et.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-et.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-et.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-eu.php b/src/Symfony/Component/Emoji/Resources/data/emoji-eu.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-eu.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-eu.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fa.php b/src/Symfony/Component/Emoji/Resources/data/emoji-fa.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fa.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-fa.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ff_adlm.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ff_adlm.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ff_adlm.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ff_adlm.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fi.php b/src/Symfony/Component/Emoji/Resources/data/emoji-fi.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fi.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-fi.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fil.php b/src/Symfony/Component/Emoji/Resources/data/emoji-fil.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fil.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-fil.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fo.php b/src/Symfony/Component/Emoji/Resources/data/emoji-fo.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fo.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-fo.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fr.php b/src/Symfony/Component/Emoji/Resources/data/emoji-fr.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fr.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-fr.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fr_ca.php b/src/Symfony/Component/Emoji/Resources/data/emoji-fr_ca.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-fr_ca.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-fr_ca.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ga.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ga.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ga.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ga.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gd.php b/src/Symfony/Component/Emoji/Resources/data/emoji-gd.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gd.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-gd.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-github.php b/src/Symfony/Component/Emoji/Resources/data/emoji-github.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-github.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-github.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gl.php b/src/Symfony/Component/Emoji/Resources/data/emoji-gl.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gl.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-gl.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gu.php b/src/Symfony/Component/Emoji/Resources/data/emoji-gu.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-gu.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-gu.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ha.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ha.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ha.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ha.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ha_ne.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ha_ne.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ha_ne.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ha_ne.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-he.php b/src/Symfony/Component/Emoji/Resources/data/emoji-he.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-he.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-he.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hi.php b/src/Symfony/Component/Emoji/Resources/data/emoji-hi.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hi.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-hi.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hi_latn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-hi_latn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hi_latn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-hi_latn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hr.php b/src/Symfony/Component/Emoji/Resources/data/emoji-hr.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hr.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-hr.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hsb.php b/src/Symfony/Component/Emoji/Resources/data/emoji-hsb.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hsb.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-hsb.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hu.php b/src/Symfony/Component/Emoji/Resources/data/emoji-hu.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hu.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-hu.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hy.php b/src/Symfony/Component/Emoji/Resources/data/emoji-hy.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-hy.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-hy.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ia.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ia.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ia.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ia.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-id.php b/src/Symfony/Component/Emoji/Resources/data/emoji-id.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-id.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-id.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ig.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ig.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ig.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ig.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-is.php b/src/Symfony/Component/Emoji/Resources/data/emoji-is.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-is.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-is.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-it.php b/src/Symfony/Component/Emoji/Resources/data/emoji-it.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-it.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-it.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ja.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ja.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ja.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ja.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-jv.php b/src/Symfony/Component/Emoji/Resources/data/emoji-jv.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-jv.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-jv.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ka.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ka.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ka.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ka.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kab.php b/src/Symfony/Component/Emoji/Resources/data/emoji-kab.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kab.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-kab.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kk.php b/src/Symfony/Component/Emoji/Resources/data/emoji-kk.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kk.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-kk.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kl.php b/src/Symfony/Component/Emoji/Resources/data/emoji-kl.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kl.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-kl.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-km.php b/src/Symfony/Component/Emoji/Resources/data/emoji-km.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-km.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-km.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-kn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-kn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ko.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ko.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ko.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ko.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kok.php b/src/Symfony/Component/Emoji/Resources/data/emoji-kok.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-kok.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-kok.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ku.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ku.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ku.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ku.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ky.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ky.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ky.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ky.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lb.php b/src/Symfony/Component/Emoji/Resources/data/emoji-lb.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lb.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-lb.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lij.php b/src/Symfony/Component/Emoji/Resources/data/emoji-lij.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lij.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-lij.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lo.php b/src/Symfony/Component/Emoji/Resources/data/emoji-lo.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lo.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-lo.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lt.php b/src/Symfony/Component/Emoji/Resources/data/emoji-lt.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lt.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-lt.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lv.php b/src/Symfony/Component/Emoji/Resources/data/emoji-lv.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-lv.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-lv.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mi.php b/src/Symfony/Component/Emoji/Resources/data/emoji-mi.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mi.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-mi.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mk.php b/src/Symfony/Component/Emoji/Resources/data/emoji-mk.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mk.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-mk.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ml.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ml.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ml.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ml.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-mn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-mn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mni.php b/src/Symfony/Component/Emoji/Resources/data/emoji-mni.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mni.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-mni.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mr.php b/src/Symfony/Component/Emoji/Resources/data/emoji-mr.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mr.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-mr.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ms.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ms.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ms.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ms.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mt.php b/src/Symfony/Component/Emoji/Resources/data/emoji-mt.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-mt.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-mt.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-my.php b/src/Symfony/Component/Emoji/Resources/data/emoji-my.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-my.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-my.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ne.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ne.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ne.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ne.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nl.php b/src/Symfony/Component/Emoji/Resources/data/emoji-nl.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nl.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-nl.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-nn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-nn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-no.php b/src/Symfony/Component/Emoji/Resources/data/emoji-no.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-no.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-no.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nso.php b/src/Symfony/Component/Emoji/Resources/data/emoji-nso.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-nso.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-nso.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-oc.php b/src/Symfony/Component/Emoji/Resources/data/emoji-oc.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-oc.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-oc.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-or.php b/src/Symfony/Component/Emoji/Resources/data/emoji-or.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-or.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-or.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pa.php b/src/Symfony/Component/Emoji/Resources/data/emoji-pa.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pa.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-pa.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pa_arab.php b/src/Symfony/Component/Emoji/Resources/data/emoji-pa_arab.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pa_arab.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-pa_arab.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pcm.php b/src/Symfony/Component/Emoji/Resources/data/emoji-pcm.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pcm.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-pcm.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pl.php b/src/Symfony/Component/Emoji/Resources/data/emoji-pl.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pl.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-pl.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ps.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ps.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ps.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ps.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pt.php b/src/Symfony/Component/Emoji/Resources/data/emoji-pt.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pt.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-pt.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pt_pt.php b/src/Symfony/Component/Emoji/Resources/data/emoji-pt_pt.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-pt_pt.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-pt_pt.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-qu.php b/src/Symfony/Component/Emoji/Resources/data/emoji-qu.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-qu.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-qu.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-quc.php b/src/Symfony/Component/Emoji/Resources/data/emoji-quc.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-quc.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-quc.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rhg.php b/src/Symfony/Component/Emoji/Resources/data/emoji-rhg.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rhg.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-rhg.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rm.php b/src/Symfony/Component/Emoji/Resources/data/emoji-rm.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rm.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-rm.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ro.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ro.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ro.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ro.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-root.php b/src/Symfony/Component/Emoji/Resources/data/emoji-root.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-root.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-root.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ru.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ru.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ru.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ru.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rw.php b/src/Symfony/Component/Emoji/Resources/data/emoji-rw.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-rw.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-rw.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sat.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sat.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sat.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sat.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sc.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sc.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sc.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sc.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sd.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sd.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sd.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sd.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-si.php b/src/Symfony/Component/Emoji/Resources/data/emoji-si.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-si.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-si.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sk.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sk.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sk.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sk.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sl.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sl.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sl.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sl.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-slack.php b/src/Symfony/Component/Emoji/Resources/data/emoji-slack.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-slack.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-slack.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-so.php b/src/Symfony/Component/Emoji/Resources/data/emoji-so.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-so.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-so.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sq.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sq.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sq.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sq.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sr.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sr.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_cyrl.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sr_cyrl.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_cyrl.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sr_cyrl.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_cyrl_ba.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sr_cyrl_ba.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_cyrl_ba.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sr_cyrl_ba.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_latn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sr_latn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_latn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sr_latn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_latn_ba.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sr_latn_ba.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sr_latn_ba.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sr_latn_ba.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-strip.php b/src/Symfony/Component/Emoji/Resources/data/emoji-strip.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-strip.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-strip.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sv.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sv.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sv.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sv.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sw.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sw.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sw.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sw.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sw_ke.php b/src/Symfony/Component/Emoji/Resources/data/emoji-sw_ke.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-sw_ke.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-sw_ke.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ta.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ta.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ta.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ta.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-te.php b/src/Symfony/Component/Emoji/Resources/data/emoji-te.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-te.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-te.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tg.php b/src/Symfony/Component/Emoji/Resources/data/emoji-tg.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tg.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-tg.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-th.php b/src/Symfony/Component/Emoji/Resources/data/emoji-th.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-th.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-th.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ti.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ti.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ti.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ti.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tk.php b/src/Symfony/Component/Emoji/Resources/data/emoji-tk.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tk.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-tk.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tn.php b/src/Symfony/Component/Emoji/Resources/data/emoji-tn.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tn.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-tn.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-to.php b/src/Symfony/Component/Emoji/Resources/data/emoji-to.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-to.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-to.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tr.php b/src/Symfony/Component/Emoji/Resources/data/emoji-tr.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-tr.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-tr.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ug.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ug.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ug.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ug.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-uk.php b/src/Symfony/Component/Emoji/Resources/data/emoji-uk.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-uk.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-uk.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ur.php b/src/Symfony/Component/Emoji/Resources/data/emoji-ur.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-ur.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-ur.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-uz.php b/src/Symfony/Component/Emoji/Resources/data/emoji-uz.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-uz.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-uz.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-vi.php b/src/Symfony/Component/Emoji/Resources/data/emoji-vi.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-vi.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-vi.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-wo.php b/src/Symfony/Component/Emoji/Resources/data/emoji-wo.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-wo.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-wo.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-xh.php b/src/Symfony/Component/Emoji/Resources/data/emoji-xh.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-xh.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-xh.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yo.php b/src/Symfony/Component/Emoji/Resources/data/emoji-yo.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yo.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-yo.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yo_bj.php b/src/Symfony/Component/Emoji/Resources/data/emoji-yo_bj.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yo_bj.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-yo_bj.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yue.php b/src/Symfony/Component/Emoji/Resources/data/emoji-yue.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yue.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-yue.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yue_hans.php b/src/Symfony/Component/Emoji/Resources/data/emoji-yue_hans.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-yue_hans.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-yue_hans.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh.php b/src/Symfony/Component/Emoji/Resources/data/emoji-zh.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-zh.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh_hant.php b/src/Symfony/Component/Emoji/Resources/data/emoji-zh_hant.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh_hant.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-zh_hant.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh_hant_hk.php b/src/Symfony/Component/Emoji/Resources/data/emoji-zh_hant_hk.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zh_hant_hk.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-zh_hant_hk.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zu.php b/src/Symfony/Component/Emoji/Resources/data/emoji-zu.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/emoji-zu.php rename to src/Symfony/Component/Emoji/Resources/data/emoji-zu.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/github-emoji.php b/src/Symfony/Component/Emoji/Resources/data/github-emoji.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/github-emoji.php rename to src/Symfony/Component/Emoji/Resources/data/github-emoji.php diff --git a/src/Symfony/Component/Intl/Resources/data/transliterator/emoji/slack-emoji.php b/src/Symfony/Component/Emoji/Resources/data/slack-emoji.php similarity index 100% rename from src/Symfony/Component/Intl/Resources/data/transliterator/emoji/slack-emoji.php rename to src/Symfony/Component/Emoji/Resources/data/slack-emoji.php diff --git a/src/Symfony/Component/Intl/Tests/Transliterator/EmojiTransliteratorTest.php b/src/Symfony/Component/Emoji/Tests/EmojiTransliteratorTest.php similarity index 96% rename from src/Symfony/Component/Intl/Tests/Transliterator/EmojiTransliteratorTest.php rename to src/Symfony/Component/Emoji/Tests/EmojiTransliteratorTest.php index ccc379b09ac2d..12a3682b16769 100644 --- a/src/Symfony/Component/Intl/Tests/Transliterator/EmojiTransliteratorTest.php +++ b/src/Symfony/Component/Emoji/Tests/EmojiTransliteratorTest.php @@ -9,11 +9,11 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\Intl\Tests\Transliterator; +namespace Symfony\Component\Emoji\Tests; use PHPUnit\Framework\TestCase; +use Symfony\Component\Emoji\EmojiTransliterator; use Symfony\Component\Finder\Finder; -use Symfony\Component\Intl\Transliterator\EmojiTransliterator; /** * @requires extension intl @@ -95,7 +95,7 @@ public function testAllTransliterator(string $locale) public static function provideLocaleTest(): iterable { $file = (new Finder()) - ->in(__DIR__.'/../../Resources/data/transliterator/emoji') + ->in(__DIR__.'/../Resources/data') ->name('*.php') ->notName('emoji-strip.php') ->files() diff --git a/src/Symfony/Component/Emoji/Util/GzipStreamWrapper.php b/src/Symfony/Component/Emoji/Util/GzipStreamWrapper.php new file mode 100644 index 0000000000000..1ae158dd9cc38 --- /dev/null +++ b/src/Symfony/Component/Emoji/Util/GzipStreamWrapper.php @@ -0,0 +1,83 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Emoji\Util; + +/** + * @internal + */ +class GzipStreamWrapper +{ + /** @var resource|null */ + public $context; + + /** @var resource */ + private $handle; + private string $path; + + public static function require(string $path): array + { + if (!\extension_loaded('zlib')) { + throw new \LogicException(sprintf('The "zlib" extension is required to load the "%s/%s" map, please enable it in your php.ini file.', basename(\dirname($path)), basename($path))); + } + + if (!\function_exists('opcache_is_script_cached') || !@opcache_is_script_cached($path)) { + stream_wrapper_unregister('file'); + stream_wrapper_register('file', self::class); + } + + return require $path; + } + + public function stream_open(string $path, string $mode): bool + { + stream_wrapper_restore('file'); + $this->path = $path; + + return false !== $this->handle = fopen('compress.zlib://'.$path, $mode); + } + + public function stream_read(int $count): string|false + { + return fread($this->handle, $count); + } + + public function stream_eof(): bool + { + return feof($this->handle); + } + + public function stream_set_option(int $option, int $arg1, int $arg2): bool + { + return match ($option) { + \STREAM_OPTION_BLOCKING => stream_set_blocking($this->handle, $arg1), + \STREAM_OPTION_READ_TIMEOUT => stream_set_timeout($this->handle, $arg1, $arg2), + \STREAM_OPTION_WRITE_BUFFER => 0 === stream_set_write_buffer($this->handle, $arg2), + default => false, + }; + } + + public function stream_stat(): array|false + { + if (!$stat = stat($this->path)) { + return false; + } + + $h = fopen($this->path, 'r'); + fseek($h, -4, \SEEK_END); + $size = unpack('V', fread($h, 4)); + fclose($h); + + $stat[7] = $stat['size'] = end($size); + + return $stat; + } +} diff --git a/src/Symfony/Component/Emoji/composer.json b/src/Symfony/Component/Emoji/composer.json new file mode 100644 index 0000000000000..c4997c1b32b92 --- /dev/null +++ b/src/Symfony/Component/Emoji/composer.json @@ -0,0 +1,34 @@ +{ + "name": "symfony/emoji", + "type": "library", + "description": "Provides access to emoji characters and sequences from the Unicode CLDR", + "keywords": ["cldr", "emoji", "intl", "transliterator", "unicode"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=8.2", + "ext-intl": "*" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "autoload": { + "psr-4": { "Symfony\\Component\\Emoji\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "minimum-stability": "dev" +} diff --git a/src/Symfony/Component/Emoji/phpunit.xml.dist b/src/Symfony/Component/Emoji/phpunit.xml.dist new file mode 100644 index 0000000000000..5c74dab50b3ca --- /dev/null +++ b/src/Symfony/Component/Emoji/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + + + + + ./Tests/ + + + + + + ./ + + + ./Resources + ./Tests + ./vendor + + + diff --git a/src/Symfony/Component/Intl/CHANGELOG.md b/src/Symfony/Component/Intl/CHANGELOG.md index 1f372c4e46545..ed7abd49647ea 100644 --- a/src/Symfony/Component/Intl/CHANGELOG.md +++ b/src/Symfony/Component/Intl/CHANGELOG.md @@ -1,10 +1,16 @@ CHANGELOG ========= +7.1 +--- + + * Move all emoji code & data to a new `symfony/emoji` component + * Deprecate `EmojiTransliterator` in favor of `Symfony\Component\Emoji\EmojiTransliterator` + 6.4 --- - * Add support for ISO-3166-1 numeric codes with `Countries::getNumericCode()`, `Countries::getNumericCodes()`, + * Add support for ISO-3166-1 numeric codes with `Countries::getNumericCode()`, `Countries::getNumericCodes()`, `Countries::numericCodeExists()` and `Countries::getAlpha2FromNumeric()` 6.3 diff --git a/src/Symfony/Component/Intl/README.md b/src/Symfony/Component/Intl/README.md index a5d55ea40b63d..333e2fe80a812 100644 --- a/src/Symfony/Component/Intl/README.md +++ b/src/Symfony/Component/Intl/README.md @@ -3,6 +3,10 @@ Intl Component The Intl component provides access to the localization data of the ICU library. +If you have the zlib extension enabled, you can compress the data by running: + + php vendor/symfony/intl/Resources/bin/compress + Resources --------- diff --git a/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php b/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php index daa114316af74..7c36fe6abd7b9 100644 --- a/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php +++ b/src/Symfony/Component/Intl/Transliterator/EmojiTransliterator.php @@ -11,133 +11,21 @@ namespace Symfony\Component\Intl\Transliterator; -use Symfony\Component\Intl\Util\GzipStreamWrapper; +use Symfony\Component\Emoji\EmojiTransliterator as EmojiEmojiTransliterator; -if (!class_exists(\Transliterator::class)) { - throw new \LogicException(sprintf('You cannot use the "%s\EmojiTransliterator" class as the "intl" extension is not installed. See https://php.net/intl.', __NAMESPACE__)); -} else { - /** - * @internal - */ - trait EmojiTransliteratorTrait - { - private array $map; - private \Transliterator $transliterator; - - public static function create(string $id, int $direction = self::FORWARD): self - { - $id = strtolower($id); - - if (!isset(self::REVERSEABLE_IDS[$id]) && !str_starts_with($id, 'emoji-')) { - $id = 'emoji-'.$id; - } - - if (self::REVERSE === $direction) { - if (!isset(self::REVERSEABLE_IDS[$id])) { - // Create a failing reverse-transliterator to populate intl_get_error_*() - \Transliterator::createFromRules('A > B')->createInverse(); - - throw new \IntlException(intl_get_error_message(), intl_get_error_code()); - } - $id = self::REVERSEABLE_IDS[$id]; - } - - $file = \dirname(__DIR__)."/Resources/data/transliterator/emoji/{$id}.php"; - if (!preg_match('/^[a-z0-9@_\\.\\-]*$/', $id) || !is_file($file) && !is_file($file .= '.gz')) { - \Transliterator::create($id); // Populate intl_get_error_*() - - throw new \IntlException(intl_get_error_message(), intl_get_error_code()); - } - - static $maps; - - // Create an instance of \Transliterator with a custom id; that's the only way - static $newInstance; - $instance = ($newInstance ??= (new \ReflectionClass(self::class))->newInstanceWithoutConstructor(...))(); - $instance->id = $id; - $instance->map = $maps[$id] ??= str_ends_with($file, '.gz') ? GzipStreamWrapper::require($file) : require $file; - - return $instance; - } - - public function createInverse(): self - { - return self::create($this->id, self::REVERSE); - } - - public function getErrorCode(): int|false - { - return $this->transliterator?->getErrorCode() ?? 0; - } - - public function getErrorMessage(): string|false - { - return $this->transliterator?->getErrorMessage() ?? false; - } - - public static function listIDs(): array - { - static $ids = []; +trigger_deprecation('symfony/intl', '7.1', 'The "%s" class is deprecated, use "%s" instead.', EmojiTransliterator::class, EmojiEmojiTransliterator::class); - if ($ids) { - return $ids; - } - - foreach (scandir(\dirname(__DIR__).'/Resources/data/transliterator/emoji/') as $file) { - if (str_ends_with($file, '.php.gz')) { - $ids[] = substr($file, 0, -7); - } elseif (str_ends_with($file, '.php')) { - $ids[] = substr($file, 0, -4); - } - } - - return $ids; - } - - public function transliterate(string $string, int $start = 0, int $end = -1): string|false - { - $quickCheck = ':' === array_key_first($this->map)[0] ? ':' : self::QUICK_CHECK; - - if (0 === $start && -1 === $end && preg_match('//u', $string)) { - return \strlen($string) === strcspn($string, $quickCheck) ? $string : strtr($string, $this->map); - } - - // Here we rely on intl to validate the $string, $start and $end arguments - // and to slice the string. Slicing is done by replacing the part if $string - // between $start and $end by a unique cookie that can be reliably used to - // identify which part of $string should be transliterated. - - static $cookie; - static $transliterator; - - $cookie ??= hash('xxh128', random_bytes(8)); - $this->transliterator ??= clone $transliterator ??= \Transliterator::createFromRules('[:any:]* > '.$cookie); - - if (false === $result = $this->transliterator->transliterate($string, $start, $end)) { - return false; - } - - $parts = explode($cookie, $result); - $start = \strlen($parts[0]); - $length = -\strlen($parts[1]) ?: null; - $string = substr($string, $start, $length); - - return $parts[0].(\strlen($string) === strcspn($string, $quickCheck) ? $string : strtr($string, $this->map)).$parts[1]; - } - } +if (!class_exists(EmojiEmojiTransliterator::class)) { + throw new \LogicException(sprintf('You cannot use the "%s" if the Emoji component is not available. Try running "composer require symfony/emoji".', EmojiEmojiTransliterator::class)); } -final class EmojiTransliterator extends \Transliterator -{ - use EmojiTransliteratorTrait; - - private const QUICK_CHECK = "\xA9\xAE\xE2\xE3\xF0"; - private const REVERSEABLE_IDS = [ - 'emoji-github' => 'github-emoji', - 'emoji-slack' => 'slack-emoji', - 'github-emoji' => 'emoji-github', - 'slack-emoji' => 'emoji-slack', - ]; +class_alias(EmojiEmojiTransliterator::class, EmojiTransliterator::class); - public readonly string $id; +if (false) { + /** + * @deprecated since Symfony 7.1, use Symfony\Component\Emoji\EmojiTransliterator instead + */ + class EmojiTransliterator extends \Transliterator + { + } } diff --git a/src/Symfony/Component/Intl/composer.json b/src/Symfony/Component/Intl/composer.json index 360918baa6df9..f1d1fbf9bfe24 100644 --- a/src/Symfony/Component/Intl/composer.json +++ b/src/Symfony/Component/Intl/composer.json @@ -24,13 +24,16 @@ } ], "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { "symfony/filesystem": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", "symfony/var-exporter": "^6.4|^7.0" }, + "conflict": { + "symfony/string": "<7.1" + }, "autoload": { "psr-4": { "Symfony\\Component\\Intl\\": "" }, "exclude-from-classmap": [ diff --git a/src/Symfony/Component/String/Slugger/AsciiSlugger.php b/src/Symfony/Component/String/Slugger/AsciiSlugger.php index 4f428da9603f0..c93731866f4bf 100644 --- a/src/Symfony/Component/String/Slugger/AsciiSlugger.php +++ b/src/Symfony/Component/String/Slugger/AsciiSlugger.php @@ -11,7 +11,7 @@ namespace Symfony\Component\String\Slugger; -use Symfony\Component\Intl\Transliterator\EmojiTransliterator; +use Symfony\Component\Emoji\EmojiTransliterator; use Symfony\Component\String\AbstractUnicodeString; use Symfony\Component\String\UnicodeString; use Symfony\Contracts\Translation\LocaleAwareInterface; @@ -92,7 +92,7 @@ public function getLocale(): string public function withEmoji(bool|string $emoji = true): static { if (false !== $emoji && !class_exists(EmojiTransliterator::class)) { - throw new \LogicException(sprintf('You cannot use the "%s()" method as the "symfony/intl" package is not installed. Try running "composer require symfony/intl".', __METHOD__)); + throw new \LogicException(sprintf('You cannot use the "%s()" method as the "symfony/emoji" package is not installed. Try running "composer require symfony/emoji".', __METHOD__)); } $new = clone $this; diff --git a/src/Symfony/Component/String/Tests/Slugger/AsciiSluggerTest.php b/src/Symfony/Component/String/Tests/Slugger/AsciiSluggerTest.php index 3544367b647fc..ab4b7990b1b24 100644 --- a/src/Symfony/Component/String/Tests/Slugger/AsciiSluggerTest.php +++ b/src/Symfony/Component/String/Tests/Slugger/AsciiSluggerTest.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\String; +namespace Symfony\Component\String\Tests\Slugger; use PHPUnit\Framework\TestCase; use Symfony\Component\String\Slugger\AsciiSlugger; diff --git a/src/Symfony/Component/String/composer.json b/src/Symfony/Component/String/composer.json index 26ce26da3fe47..1959f5d2c277a 100644 --- a/src/Symfony/Component/String/composer.json +++ b/src/Symfony/Component/String/composer.json @@ -24,8 +24,9 @@ }, "require-dev": { "symfony/error-handler": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.0", "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^6.4|^7.0" },