1
0
mirror of https://github.com/erusev/parsedown.git synced 2025-09-03 03:42:38 +02:00

Compare commits

...

38 Commits

Author SHA1 Message Date
Emanuil Rusev
0b274ac959 Format installation command in README 2025-08-31 10:57:44 +03:00
Emanuil Rusev
5b74b74145 Update README.md 2025-06-05 08:59:58 +03:00
Emanuil Rusev
95c7e4c3d7 Update README.md 2025-05-20 21:25:06 +03:00
Emanuil Rusev
c9dc49f68f Update README.md 2024-12-01 18:36:17 +02:00
Emanuil Rusev
28a9b057c7 Update README.md 2024-12-01 17:27:57 +02:00
Emanuil Rusev
e0082193b1 Update README.md 2024-12-01 17:27:10 +02:00
Emanuil Rusev
999fcf7886 update version 2024-11-10 09:39:46 +02:00
Emanuil Rusev
582f9f9cd1 Merge pull request #881 from xPaw/merge-1.8.x
Merge `1.8.x-beta` into `master`
2024-10-12 10:06:08 +03:00
Emanuil Rusev
e76c4e44be Update README.md 2024-09-08 10:15:41 +03:00
Pavel Djundik
cfb313fb1f Revert "Merge pull request #876 from xabbuh/branch-alias"
This reverts commit 0476f3be5b, reversing
changes made to 9d00deadcd.
2024-08-28 11:19:02 +03:00
Pavel Djundik
9b14567c57 Fix commonmark test 2024-08-28 11:18:17 +03:00
Pavel Djundik
c65c451606 Merge branch '1.8.x-beta' 2024-08-28 11:15:16 +03:00
Emanuil Rusev
0476f3be5b Merge pull request #876 from xabbuh/branch-alias
add a branch alias to allow installing untagged 1.8 versions
2024-07-18 10:01:16 +03:00
Emanuil Rusev
9d00deadcd Merge pull request #872 from xabbuh/pr-868-1.8
[PHP 8.4] Fixes for implicit nullability deprecation
2024-07-17 09:19:21 +03:00
Emanuil Rusev
15048b0210 Merge pull request #875 from xabbuh/pr-874
fix GitHub Actions config file syntax
2024-07-17 09:15:20 +03:00
Christian Flothmann
e7a3bccbae add a branch alias to allow installing untagged 1.8 versions 2024-07-17 05:59:36 +02:00
Christian Flothmann
26362c5fe9 fix GitHub Actions config file syntax 2024-07-17 05:52:46 +02:00
Emanuil Rusev
89880dd0a9 Merge pull request #874 from xabbuh/ci-1.8
enable GitHub Actions and drop support for PHP < 7.1
2024-07-15 13:33:21 +03:00
Christian Flothmann
44fd383db7 run tests using GitHub actions 2024-07-15 10:51:54 +02:00
Christian Flothmann
54f1ffc214 drop support for PHP < 7.1 2024-07-15 10:46:34 +02:00
Ayesh Karunaratne
6ae01284b8 [PHP 8.4] Fixes for implicit nullability deprecation
Fixes all issues that emit deprecation notices on PHP 8.4 for implicit nullable parameter type declarations.

See:
 - [RFC](https://wiki.php.net/rfc/deprecate-implicitly-nullable-types)
 - [PHP 8.4: Implicitly nullable parameter declarations deprecated](https://php.watch/versions/8.4/implicitly-marking-parameter-type-nullable-deprecated)
2024-07-09 10:54:53 +02:00
Emanuil Rusev
26cfde9dbf Merge pull request #868 from Ayesh/php84/nullability
[PHP 8.4] Fixes for implicit nullability deprecation
2024-07-09 09:15:45 +03:00
Emanuil Rusev
232c57201e Update README.md 2024-06-10 10:08:19 +03:00
Emanuil Rusev
5362f4cbe3 Update README.md 2024-05-11 08:10:21 +03:00
Emanuil Rusev
b3e2fa192c Update README.md 2024-04-11 08:59:50 +03:00
Ayesh Karunaratne
908754bcdd [PHP 8.4] Fixes for implicit nullability deprecation
Fixes all issues that emit deprecation notices on PHP 8.4 for implicit nullable parameter type declarations.

See:
 - [RFC](https://wiki.php.net/rfc/deprecate-implicitly-nullable-types)
 - [PHP 8.4: Implicitly nullable parameter declarations deprecated](https://php.watch/versions/8.4/implicitly-marking-parameter-type-nullable-deprecated)
2024-03-16 02:44:40 +07:00
Emanuil Rusev
1ff0382739 Update README.md 2024-03-12 07:27:45 +02:00
Emanuil Rusev
f5aa6fd1ca Update README.md 2024-02-11 11:36:09 +02:00
Emanuil Rusev
77947eda2f Update README.md 2023-10-13 11:10:28 +03:00
Emanuil Rusev
0586729b46 Update README.md 2023-10-13 11:09:51 +03:00
Emanuil Rusev
a86a4e19da Update README.md 2023-10-13 11:08:28 +03:00
Emanuil Rusev
6598f3860c update readme 2020-08-09 17:12:21 +03:00
Emanuil Rusev
1e5080190c update readme
we already say "warning" in bold and upper case — the warning emoji feels unnecessary
2020-08-09 17:06:19 +03:00
Emanuil Rusev
1610e4747c Merge pull request #741 from GrahamCampbell/patch-1
Update .travis.yml
2020-02-18 12:38:52 +02:00
Emanuil Rusev
3159a9d3cd Merge pull request #751 from jeanmonod/patch-1
Update GitHub flavored markdown url
2020-01-22 09:53:45 +02:00
Jeanmonod David
dbee8ab4f2 Update GitHub flavored markdown url 2020-01-21 22:07:12 +01:00
Graham Campbell
dba4125b59 Update .travis.yml 2019-12-20 00:05:10 +00:00
Aidan Woods
87b57bf3cb Add test to prevent regression 2019-04-10 21:54:34 +01:00
10 changed files with 76 additions and 58 deletions

37
.github/workflows/unit-tests.yaml vendored Normal file
View File

@@ -0,0 +1,37 @@
on:
- push
- pull_request
jobs:
phpunit:
runs-on: ubuntu-latest
strategy:
matrix:
php:
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
- '8.4'
steps:
- name: Checkout the source code
uses: actions/checkout@v4
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '${{ matrix.php }}'
- name: Install dependencies
run: composer install
- name: Run tests
run: |
vendor/bin/phpunit
vendor/bin/phpunit test/CommonMarkTestWeak.php || true

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
composer.lock
vendor/
.phpunit.result.cache

View File

@@ -1,28 +0,0 @@
language: php
dist: trusty
sudo: false
matrix:
include:
- php: 5.3
dist: precise
- php: 5.4
- php: 5.5
- php: 5.6
- php: 7.0
- php: 7.1
- php: 7.2
- php: 7.3
- php: nightly
fast_finish: true
allow_failures:
- php: nightly
install:
- composer install --prefer-dist --no-interaction --no-progress
script:
- vendor/bin/phpunit
- vendor/bin/phpunit test/CommonMarkTestWeak.php || true
- '[ -z "$TRAVIS_TAG" ] || [ "$TRAVIS_TAG" == "$(php -r "require(\"Parsedown.php\"); echo Parsedown::version;")" ]'

View File

@@ -17,7 +17,7 @@ class Parsedown
{
# ~
const version = '1.8.0-beta-7';
const version = '1.8.0';
# ~
@@ -571,7 +571,7 @@ class Parsedown
#
# List
protected function blockList($Line, array $CurrentBlock = null)
protected function blockList($Line, ?array $CurrentBlock = null)
{
list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]{1,9}+[.\)]');
@@ -808,7 +808,7 @@ class Parsedown
#
# Setext
protected function blockSetextHeader($Line, array $Block = null)
protected function blockSetextHeader($Line, ?array $Block = null)
{
if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted']))
{
@@ -894,7 +894,7 @@ class Parsedown
#
# Table
protected function blockTable($Line, array $Block = null)
protected function blockTable($Line, ?array $Block = null)
{
if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted']))
{

View File

@@ -1,31 +1,28 @@
<!-- ![Parsedown](https://i.imgur.com/yE8afYV.png) -->
# Parsedown
<p align="center"><img alt="Parsedown" src="https://i.imgur.com/fKVY6Kz.png" width="240" /></p>
<h1>Parsedown</h1>
[![Build Status](https://travis-ci.org/erusev/parsedown.svg)](https://travis-ci.org/erusev/parsedown)
[![Total Downloads](https://poser.pugx.org/erusev/parsedown/d/total.svg)](https://packagist.org/packages/erusev/parsedown)
[![Version](https://poser.pugx.org/erusev/parsedown/v/stable.svg)](https://packagist.org/packages/erusev/parsedown)
[![License](https://poser.pugx.org/erusev/parsedown/license.svg)](https://packagist.org/packages/erusev/parsedown)
Better Markdown Parser in PHP - <a href="http://parsedown.org/demo">Demo</a>.
Better Markdown Parser in PHP <a href="https://parsedown.org/demo">demo</a>
## Features
* One File
* No Dependencies
* [Super Fast](http://parsedown.org/speed)
* Extensible
* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
* [Tested](http://parsedown.org/tests/) in 5.3 to 7.3
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
- One file
- No dependencies
- [Super fast](http://parsedown.org/speed)
- Extensible
- [GitHub flavored](https://github.github.com/gfm)
- [Tested](http://parsedown.org/tests/) in 5.3 to 7.3
- [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
## Installation
Install the [composer package]:
composer require erusev/parsedown
```sh
composer require erusev/parsedown
```
Or download the [latest release] and include `Parsedown.php`
@@ -62,21 +59,19 @@ If instead, you wish to allow HTML within untrusted user-input, but still want o
In both cases you should strongly consider employing defence-in-depth measures, like [deploying a Content-Security-Policy](https://scotthelme.co.uk/content-security-policy-an-introduction/) (a browser security feature) so that your page is likely to be safe even if an attacker finds a vulnerability in one of the first lines of defence above.
#### Security of Parsedown Extensions
Safe mode does not necessarily yield safe results when using extensions to Parsedown. Extensions should be evaluated on their own to determine their specific safety against XSS.
## Escaping HTML
> ⚠️  **WARNING:** This method isn't safe from XSS!
> WARNING: This method is not safe from XSS!
If you wish to escape HTML **in trusted input**, you can use the following:
If you wish to escape HTML in trusted input, you can use the following:
```php
$Parsedown->setMarkupEscaped(true);
```
Beware that this still allows users to insert unsafe scripting vectors, such as links like `[xss](javascript:alert%281%29)`.
Beware that this still allows users to insert unsafe scripting vectors, ex: `[xss](javascript:alert%281%29)`.
## Questions
@@ -97,3 +92,7 @@ It passes most of the CommonMark tests. Most of the tests that don't pass deal w
**How can I help?**
Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
**What else should I know?**
I also make [Nota](https://nota.md/) — a notes app designed for local Markdown files.

View File

@@ -13,11 +13,11 @@
}
],
"require": {
"php": ">=5.3.0",
"php": ">=7.1",
"ext-mbstring": "*"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
"phpunit/phpunit": "^7.5|^8.5|^9.6"
},
"autoload": {
"psr-0": {"Parsedown": ""}

View File

@@ -1,17 +1,19 @@
<?php
use PHPUnit\Framework\TestCase;
/**
* Test Parsedown against the CommonMark spec
*
* @link http://commonmark.org/ CommonMark
*/
class CommonMarkTestStrict extends PHPUnit_Framework_TestCase
class CommonMarkTestStrict extends TestCase
{
const SPEC_URL = 'https://raw.githubusercontent.com/jgm/CommonMark/master/spec.txt';
protected $parsedown;
protected function setUp()
protected function setUp() : void
{
$this->parsedown = new TestParsedown();
$this->parsedown->setUrlsLinked(false);

View File

@@ -17,7 +17,7 @@ class CommonMarkTestWeak extends CommonMarkTestStrict
{
protected $textLevelElementRegex;
protected function setUp()
protected function setUp() : void
{
parent::setUp();

View File

@@ -15,4 +15,6 @@ still a fenced code block</code></pre>
<pre><code>foo
bar</code></pre>
bar</code></pre>
<pre><code class="language-php">&lt;?php
echo "Hello World";</code></pre>

View File

@@ -35,4 +35,9 @@ foo
bar
```
```php some-class
<?php
echo "Hello World";
```