Large cleanup
parent
3f880f2014
commit
5484bd0592
@ -1,17 +0,0 @@
|
||||
COPYRIGHT (c) 2015 mmk2410
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
@ -1,29 +0,0 @@
|
||||
# android-studio-hidpi.sh
|
||||
|
||||
This is a small script for enabling and disabling HiDPI support in Android Studio. It works just like the one for IntelliJ IDEA since Android Studio is based upon this IDE.
|
||||
|
||||
## How to use
|
||||
|
||||
Download it from GitLab. To make it runnable execute:
|
||||
|
||||
```
|
||||
chmod +x android-studio-hidpi.sh
|
||||
```
|
||||
|
||||
For some help run
|
||||
|
||||
```
|
||||
./android-studio-hidpi.sh -h
|
||||
```
|
||||
|
||||
To enable HiDPI support
|
||||
|
||||
```
|
||||
./android-studio-hidpi.sh -e
|
||||
```
|
||||
|
||||
To disable it
|
||||
|
||||
```
|
||||
./android-studio-hidpi.sh -d
|
||||
```
|
@ -1,75 +0,0 @@
|
||||
#!/bin/bash
|
||||
# This is a small script for enabling and disabling HiDPI support in Android Stuido on every Linux distribution where Android Stuido is installed in /opt/android-studio. If the installation is somewhere else you have to change the variable STUDIO_PATH.
|
||||
# Marcel Michael Kapfer
|
||||
# 27 May 2015
|
||||
# GNU GPL v3.0 -> Feel free to re-distribute or fork it
|
||||
|
||||
## Android Stuido path
|
||||
STUDIO_PATH="/opt/android-studio/bin"
|
||||
|
||||
## Enable HiDPI
|
||||
function enable_hidpi {
|
||||
sudo echo "-Dhidpi=true" >> $STUDIO_PATH/stuido.vmoptions
|
||||
sudo echo "-Dhidpi=true" >> $STUDIO_PATH/studio64.vmoptions
|
||||
echo "HiDPI enabled"
|
||||
exit
|
||||
}
|
||||
|
||||
## Disable HiDPI
|
||||
function disable_hidpi {
|
||||
idea=$(sed '/-Dhidpi=true/d' $STUDIO_PATH/studio.vmoptions)
|
||||
idea64=$(sed '/-Dhidpi=true/d' $STUDIO_PATH/studio64.vmoptions)
|
||||
sudo echo "$idea" > $STUDIO_PATH/studio.vmoptions
|
||||
sudo echo "$idea64" > $STUDIO_PATH/studio64.vmoptions
|
||||
echo "HiDPI disabled"
|
||||
exit
|
||||
}
|
||||
|
||||
## Usage
|
||||
usage=$(
|
||||
cat <<EOF
|
||||
Usage:
|
||||
|
||||
Enable HiDPI support:
|
||||
--enable
|
||||
or
|
||||
-e
|
||||
|
||||
Disabling HiDPI support:
|
||||
--disable
|
||||
or
|
||||
-d
|
||||
|
||||
Help (prints this)
|
||||
--help
|
||||
or
|
||||
-h
|
||||
|
||||
EOF
|
||||
)
|
||||
|
||||
## Options
|
||||
### Runns if no argument is given
|
||||
if [[ -z "$1" ]]
|
||||
then
|
||||
echo
|
||||
echo "$usage"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
### Runs if an argument is given
|
||||
until [[ $1 == -- ]]; do
|
||||
case $1 in
|
||||
-e | --enable)
|
||||
enable_hidpi
|
||||
;;
|
||||
-d | --disable)
|
||||
disable_hidpi
|
||||
;;
|
||||
-h | --help)
|
||||
echo "$usage"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
done
|
@ -1,22 +0,0 @@
|
||||
COPYRIGHT (c) 2015 mmk2410
|
||||
|
||||
MIT License
|
||||
|
||||
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.
|
@ -1,31 +0,0 @@
|
||||
# blogger2rangitaki
|
||||
|
||||
This is a small PHP script for converting a Blogger XML to Rangitaki blog posts.
|
||||
|
||||
This script uses [html-to-markdown](https://github.com/thephpleague/html-to-markdown) to convert the blogposts.
|
||||
|
||||
## Usage
|
||||
|
||||
You don't need to install that script on your computer. It is enough to make it runnable:
|
||||
|
||||
```
|
||||
chmod +x blogger2rangitaki.php
|
||||
```
|
||||
|
||||
And to run it:
|
||||
|
||||
```
|
||||
./blogger2rangitaki.php blog.xml
|
||||
```
|
||||
|
||||
where `blog.xml` is your Blogger XML file (the exported blog).
|
||||
|
||||
**This script doesn't import your media files into Rangitaki.**
|
||||
|
||||
## HHVM
|
||||
|
||||
This script works also in HHVM. Just replace the first line with
|
||||
|
||||
```
|
||||
#!/bin/hhvm
|
||||
```
|
@ -1,106 +0,0 @@
|
||||
#!/bin/php
|
||||
<?php
|
||||
// This is a php script for converting a blogger atom feed into rangitaki blog posts
|
||||
require './vendor/autoload.php';
|
||||
use League\HTMLToMarkdown\HtmlConverter;
|
||||
if(in_array($argv[1], array("-h", "--help", "--usage", "-?"))) {
|
||||
help();
|
||||
} else if (isset($argv[1])) {
|
||||
$content = file_get_contents("$argv[1]");
|
||||
$xml = new SimpleXMLElement($content);
|
||||
$converter = new HtmlConverter(array('strip_tags' => true));
|
||||
$i = 0;
|
||||
foreach ($xml->entry as $entry) {
|
||||
if($i > 56) {
|
||||
|
||||
// TITLE
|
||||
$title = $entry->title;
|
||||
|
||||
// CONTENT
|
||||
$content = $entry->content;
|
||||
$content = $converter->convert($content);
|
||||
|
||||
// AUTHOR
|
||||
$author = $entry->author->name;
|
||||
|
||||
// TAGS
|
||||
if (isset($entry->categories)) {
|
||||
echo "YES!";
|
||||
foreach ($entry->categories->attributes as $tag) {
|
||||
if (!(substr_compare($tag->scheme, "http://schemas.google.com/", 0, 26))) {
|
||||
$tags = $tags . $tag->term . ", ";
|
||||
}
|
||||
$tags = substr($tags, 0, strlen($tags) - 2);
|
||||
}
|
||||
}
|
||||
|
||||
// Pubdate
|
||||
$pubdate = $entry->published;
|
||||
date_default_timezone_set("UTC");
|
||||
$pubdate = date("d F Y", strtotime($pubdate));
|
||||
|
||||
// FILENAME
|
||||
$date = $entry->published;
|
||||
$date = date("Y-m-d-H-i", strtotime($date));
|
||||
$filetitle = str_replace(" ", "-", $title);
|
||||
$filename = $date . "-" . $filetitle . ".md";
|
||||
|
||||
if(isset($tags)){
|
||||
$filecontent = <<<EOD
|
||||
%TITLE: $title
|
||||
%DATE: $pubdate
|
||||
%AUTHOR: $author
|
||||
%TAGS: $tags
|
||||
|
||||
$content
|
||||
EOD;
|
||||
} else {
|
||||
$filecontent = <<<EOD
|
||||
%TITLE: $title
|
||||
%DATE: $pubdate
|
||||
%AUTHOR: $author
|
||||
|
||||
$content
|
||||
EOD;
|
||||
}
|
||||
|
||||
|
||||
// Make a output directory
|
||||
if(!(file_exists("articles"))) {
|
||||
mkdir("articles");
|
||||
}
|
||||
|
||||
// Save the file
|
||||
$handle = fopen("articles/$filename", "c");
|
||||
fwrite($handle, $filecontent);
|
||||
fclose($handle);
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
help();
|
||||
}
|
||||
|
||||
function help() {
|
||||
$help = <<<EOD
|
||||
|
||||
blogger2rangitaki
|
||||
|
||||
A small PHP script which converts a Blogger XML export to Rangitaki blog posts.
|
||||
|
||||
COPYRIGHT © 2015 Rangitaki Project
|
||||
|
||||
MIT License
|
||||
|
||||
Usage:
|
||||
|
||||
./blogger2rangitaki filename.xml
|
||||
|
||||
Where filename.xml is the Blogger export.
|
||||
|
||||
The articels are saved in articles/
|
||||
|
||||
EOD;
|
||||
|
||||
echo $help;
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"require": {
|
||||
"league/html-to-markdown": "~4.0"
|
||||
}
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "58637a0fe75a453726c4f248ef834809",
|
||||
"packages": [
|
||||
{
|
||||
"name": "league/html-to-markdown",
|
||||
"version": "4.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/html-to-markdown.git",
|
||||
"reference": "16f0fe21c60e8a76a51bdf3b256cb7a54bb1cac4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/16f0fe21c60e8a76a51bdf3b256cb7a54bb1cac4",
|
||||
"reference": "16f0fe21c60e8a76a51bdf3b256cb7a54bb1cac4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-xml": "*",
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "4.*",
|
||||
"scrutinizer/ocular": "~1.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\HTMLToMarkdown\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Colin O'Dell",
|
||||
"email": "colinodell@gmail.com",
|
||||
"homepage": "http://www.colinodell.com",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Nick Cernis",
|
||||
"email": "nick@cern.is",
|
||||
"homepage": "http://modernnerd.net",
|
||||
"role": "Original Author"
|
||||
}
|
||||
],
|
||||
"description": "An HTML-to-markdown conversion helper for PHP",
|
||||
"homepage": "https://github.com/thephpleague/html-to-markdown",
|
||||
"keywords": [
|
||||
"html",
|
||||
"markdown"
|
||||
],
|
||||
"time": "2015-07-25 16:38:14"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": []
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit7f8e28eb5836e5d023a7e972b858cf6e::getLoader();
|
@ -1,413 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0 class loader
|
||||
*
|
||||
* See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
private $prefixesPsr0 = array();
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
private $useIncludePath = false;
|
||||
private $classMap = array();
|
||||
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $classMap Class to filename map
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return bool|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
|
||||
if ('\\' == $class[0]) {
|
||||
$class = substr($class, 1);
|
||||
}
|
||||
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if ($file === null && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if ($file === null) {
|
||||
// Remember that this class does not exist.
|
||||
return $this->classMap[$class] = false;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'League\\HTMLToMarkdown\\' => array($vendorDir . '/league/html-to-markdown/src'),
|
||||
);
|
@ -1,50 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit7f8e28eb5836e5d023a7e972b858cf6e
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit7f8e28eb5836e5d023a7e972b858cf6e', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit7f8e28eb5836e5d023a7e972b858cf6e', 'loadClassLoader'));
|
||||
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequire7f8e28eb5836e5d023a7e972b858cf6e($file)
|
||||
{
|
||||
require $file;
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "league/html-to-markdown",
|
||||
"version": "4.0.0",
|
||||
"version_normalized": "4.0.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/html-to-markdown.git",
|
||||
"reference": "16f0fe21c60e8a76a51bdf3b256cb7a54bb1cac4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/16f0fe21c60e8a76a51bdf3b256cb7a54bb1cac4",
|
||||
"reference": "16f0fe21c60e8a76a51bdf3b256cb7a54bb1cac4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-xml": "*",
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "4.*",
|
||||
"scrutinizer/ocular": "~1.1"
|
||||
},
|
||||
"time": "2015-07-25 16:38:14",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.1-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\HTMLToMarkdown\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Colin O'Dell",
|
||||
"email": "colinodell@gmail.com",
|
||||
"homepage": "http://www.colinodell.com",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Nick Cernis",
|
||||
"email": "nick@cern.is",
|
||||
"homepage": "http://modernnerd.net",
|
||||
"role": "Original Author"
|
||||
}
|
||||
],
|
||||
"description": "An HTML-to-markdown conversion helper for PHP",
|
||||
"homepage": "https://github.com/thephpleague/html-to-markdown",
|
||||
"keywords": [
|
||||
"html",
|
||||
"markdown"
|
||||
]
|
||||
}
|
||||
]
|
@ -1,12 +0,0 @@
|
||||
preset: recommended
|
||||
|
||||
enabled:
|
||||
- concat_with_spaces
|
||||
- strict
|
||||
|
||||
disabled:
|
||||
- concat_without_spaces
|
||||
- phpdoc_short_description
|
||||
- psr0
|
||||
- short_array_syntax
|
||||
|
@ -1,120 +0,0 @@
|
||||
# Change Log
|
||||
All notable changes to this project will be documented in this file.
|
||||
Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
|
||||
|
||||
## [Unreleased][unreleased]
|
||||
|
||||
## [4.0.0]
|
||||
|
||||
This release changes the visibility of several methods/properties. #42 and #43 brought to light that some visiblities were
|
||||
not ideally set, so this releases fixes that. Moving forwards this should reduce the chance of introducing BC-breaking changes.
|
||||
|
||||
### Added
|
||||
- Added new `HtmlConverter::getEnvironment()` method to expose the `Environment` (#42, #43)
|
||||
|
||||
### Changed
|
||||
- Changed `Environment::addConverter()` from `protected` to `public`, enabling custom converters to be added (#42, #43)
|
||||
- Changed `HtmlConverter::createDOMDocument()` from `protected` to `private`
|
||||
- Changed `Element::nextCached` from `protected` to `private`
|
||||
- Made the `Environment` class `final`
|
||||
|
||||
## [3.1.1]
|
||||
### Fixed
|
||||
- Empty HTML strings now result in empty Markdown documents (#40, #41)
|
||||
|
||||
## [3.1.0]
|
||||
### Added
|
||||
- Added new `equals` method to `Element` to check for equality
|
||||
|
||||
### Changes
|
||||
- Use Linux line endings consistently instead of plaform-specific line endings (#36)
|
||||
|
||||
### Fixed
|
||||
- Cleaned up code style
|
||||
|
||||
## [3.0.0]
|
||||
### Changed
|
||||
- Changed namespace to `League\HTMLToMarkdown`
|
||||
- Changed packagist name to `league/html-to-markdown`
|
||||
- Re-organized code into several separate classes
|
||||
- `<a>` tags with identical href and inner text are now rendered using angular bracket syntax (#31)
|
||||
- `<div>` elements are now treated as block-level elements (#33)
|
||||
|
||||
## [2.2.2]
|
||||
### Added
|
||||
- Added support for PHP 5.6 and HHVM
|
||||
- Enabled testing against PHP 7 nightlies
|
||||
- Added this CHANGELOG.md
|
||||
|
||||
### Fixed
|
||||
- Fixed whitespace preservation between inline elements (#9 and #10)
|
||||
|
||||
## [2.2.1]
|
||||
### Fixed
|
||||
- Preserve placeholder links (#22)
|
||||
|
||||
## [2.2.0]
|
||||
### Added
|
||||
- Added CircleCI config
|
||||
|
||||
### Changed
|
||||
- `<pre>` blocks are now treated as code elements
|
||||
|
||||
### Removed
|
||||
- Dropped support for PHP 5.2
|
||||
- Removed incorrect README comment regarding `#text` nodes (#17)
|
||||
|
||||
## [2.1.2]
|
||||
### Added
|
||||
- Added the ability to blacklist/remove specific node types (#11)
|
||||
|
||||
### Changed
|
||||
- Line breaks are now placed after divs instead of before them
|
||||
- Newlines inside of link texts are now removed
|
||||
- Updated the minimum PHPUnit version to 4.*
|
||||
|
||||
## [2.1.1]
|
||||
### Added
|
||||
- Added options to customize emphasis characters
|
||||
|
||||
## [2.1.0]
|
||||
### Added
|
||||
- Added option to strip HTML tags without Markdown equivalents
|
||||
- Added `convert()` method for converter reuse
|
||||
- Added ability to set options after instance construction
|
||||
- Documented the required PHP extensions (#4)
|
||||
|
||||
### Changed
|
||||
- ATX style now used for h1 and h2 tags inside blockquotes
|
||||
|
||||
### Fixed
|
||||
- Newlines inside blockquotes are now started with a bracket
|
||||
- Fixed some incorrect docblocks
|
||||
- `__toString()` now returns an empty string if input is empty
|
||||
- Convert head tag if body tag is empty (#7)
|
||||
- Preserve special characters inside tags without md equivalents (#6)
|
||||
|
||||
|
||||
## [2.0.1]
|
||||
### Fixed
|
||||
- Fixed first line indentation for multi-line code blocks
|
||||
- Fixed consecutive anchors get separating spaces stripped (#3)
|
||||
|
||||
## [2.0.0]
|
||||
### Added
|
||||
- Initial release
|
||||
|
||||
[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.0.0...master
|
||||
[4.0.0]: https://github.com/thephpleague/html-to-markdown/compare/3.1.1...4.0.0
|
||||
[3.1.1]: https://github.com/thephpleague/html-to-markdown/compare/3.1.0...3.1.1
|
||||
[3.1.0]: https://github.com/thephpleague/html-to-markdown/compare/3.0.0...3.1.0
|
||||
[3.0.0]: https://github.com/thephpleague/html-to-markdown/compare/2.2.2...3.0.0
|
||||
[2.2.2]: https://github.com/thephpleague/html-to-markdown/compare/2.2.1...2.2.2
|
||||
[2.2.1]: https://github.com/thephpleague/html-to-markdown/compare/2.2.0...2.2.1
|
||||
[2.2.0]: https://github.com/thephpleague/html-to-markdown/compare/2.1.2...2.2.0
|
||||
[2.1.2]: https://github.com/thephpleague/html-to-markdown/compare/2.1.1...2.1.2
|
||||
[2.1.1]: https://github.com/thephpleague/html-to-markdown/compare/2.1.0...2.1.1
|
||||
[2.1.0]: https://github.com/thephpleague/html-to-markdown/compare/2.0.1...2.1.0
|
||||
[2.0.1]: https://github.com/thephpleague/html-to-markdown/compare/2.0.0...2.0.1
|
||||
[2.0.0]: https://github.com/thephpleague/html-to-markdown/compare/775f91e...2.0.0
|
||||
|
@ -1,32 +0,0 @@
|
||||
# Contributing
|
||||
|
||||
Contributions are **welcome** and will be fully **credited**.
|
||||
|
||||
We accept contributions via Pull Requests on [Github](https://github.com/thephpleague/html-to-markdown).
|
||||
|
||||
|
||||
## Pull Requests
|
||||
|
||||
- **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - The easiest way to apply the conventions is to install [PHP Code Sniffer](http://pear.php.net/package/PHP_CodeSniffer).
|
||||
|
||||
- **Add tests!** - Your patch won't be accepted if it doesn't have tests.
|
||||
|
||||
- **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date.
|
||||
|
||||
- **Consider our release cycle** - We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option.
|
||||
|
||||
- **Create feature branches** - Don't ask us to pull from your master branch.
|
||||
|
||||
- **One pull request per feature** - If you want to do more than one thing, send multiple pull requests.
|
||||
|
||||
- **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting.
|
||||
|
||||
|
||||
## Running Tests
|
||||
|
||||
``` bash
|
||||
$ ./vendor/bin/phpunit
|
||||
```
|
||||
|
||||
|
||||
**Happy coding**!
|
@ -1,22 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Colin O'Dell
|
||||
|
||||
Originally created by Nick Cernis
|
||||
|
||||
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.
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
"name": "league/html-to-markdown",
|
||||
"type": "library",
|
||||
"description": "An HTML-to-markdown conversion helper for PHP",
|
||||
"keywords": ["markdown", "html"],
|
||||
"homepage": "https://github.com/thephpleague/html-to-markdown",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Colin O'Dell",
|
||||
"email": "colinodell@gmail.com",
|
||||
"homepage": "http://www.colinodell.com",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Nick Cernis",
|
||||
"email": "nick@cern.is",
|
||||
"homepage": "http://modernnerd.net",
|
||||
"role": "Original Author"
|
||||
}
|
||||
],
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\HTMLToMarkdown\\": "src/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"League\\HTMLToMarkdown\\Test\\": "tests"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"ext-dom": "*",
|
||||
"ext-xml": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "4.*",
|
||||
"scrutinizer/ocular": "~1.1"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.1-dev"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,180 +0,0 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/../vendor/autoload.php';
|
||||
|
||||
$markdown = '';
|
||||
$html = ($_POST) ? $_POST['html'] : null;
|
||||
|
||||
if (!is_null($html)) {
|
||||
if (get_magic_quotes_gpc()) {
|
||||
$html = stripslashes($html);
|
||||
}
|
||||
|
||||
$markdown = new \League\HTMLToMarkdown\HtmlConverter($html);
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>HTML To Markdown Demo</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: helvetica, arial, sans-serif;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div style="width:50%;float:left;">
|
||||
<h3>HTML</h3>
|
||||
|
||||
<form method="post" action="">
|
||||
|
||||
<?php if (!is_null($html)): ?>
|
||||
<textarea rows="30" style="width:95%" name="html" id="html"><?php echo $html ?></textarea><br/>
|
||||
<?php else: ?>
|
||||
<textarea rows="30" style="width:95%" name="html" id="html">
|
||||
<h1>A level one header</h1>
|
||||
|
||||
<p>Some paragraph text™ containing “UTF-8” chars…</p>
|
||||
|
||||
<h2>A longer level two header</h2>
|
||||
|
||||
<h3>Here's a <em>level 3</em> title</h3>
|
||||
|
||||
<p>Some text containing<br/>a forced break.</p>
|
||||
|
||||
<p>Some text containing an
|
||||
unforced break.</p>
|
||||
|
||||
<h2>Blockquotes and horizontal rules</h2>
|
||||
<blockquote>Here's a blockquote</blockquote>
|
||||
|
||||
<hr/>
|
||||
|
||||
<blockquote>
|
||||
<p>This should have a single arrow.</p>
|
||||
<blockquote>
|
||||
<p>A blockquote inside a blockquote, with a double arrow, on a new line.</p>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
||||
<hr/>
|
||||
|
||||
<blockquote>
|
||||
<p>A multi-paragraph blockquote.</p>
|
||||
|
||||
<p>Here's the second paragraph. (Should be inside blockquote.)</p>
|
||||
|
||||
<h4>A header inside a blockquote</h4>
|
||||
|
||||
<p><img src="/path/img.jpg" alt="Image in a blockquote" title="Image in a blockquote"/></p>
|
||||
|
||||
<ul>
|
||||
<li>List in a blockquote</li>
|
||||
<li>Second list item</li>
|
||||
</ul>
|
||||
|
||||
</blockquote>
|
||||
|
||||
<h2>Lists</h2>
|
||||
<ul>
|
||||
<li>An unordered list</li>
|
||||
<li>Appears with hyphens</li>
|
||||
</ul>
|
||||
|
||||
<ol>
|
||||
<li>An ordered list</li>
|
||||
<li>Appears with numbers.</li>
|
||||
<li>Automatically indexed.</li>
|
||||
</ol>
|
||||
|
||||
<h2>Links and images</h2>
|
||||
|
||||
<p><img src="/path/img.jpg" alt="alt text" title="Title"/></p>
|
||||
|
||||
<p>An example of a <a href="http://url.com/" title="Title">link.</a></p>
|
||||
|
||||
<p>An image inside a link:<br/>
|
||||
<a href="http://url.com/" title="Title"><img src="/path/img.jpg" alt="alt text" title="Title"/></a>
|
||||
</p>
|
||||
|
||||
<h2>Inline elements</h2>
|
||||
|
||||
<p><em>This text is in italics.</em></p>
|
||||
|
||||
<p><strong>This text is in bold.</strong></p>
|
||||
|
||||
<p>An <em>em</em> and a <strong>strong</strong> inside a paragraph.</p>
|
||||
|
||||
<p>A <em><span>span</span> inside</em> an em.</p>
|
||||
|
||||
<p>A <em><strong>strong</strong> inside</em> an em.</p>
|
||||
|
||||
<p>A <span><strong>strong</strong> inside</span> a span.</p>
|
||||
|
||||
|
||||
<h2>Code blocks and spans</h2>
|
||||
|
||||
<p><code>
|
||||
#sidebar h1 {
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
</code></p>
|
||||
|
||||
<p><code>A <strong>code</strong> span</code></p>
|
||||
|
||||
<h2>Bugs (tests from here on fail)</h2>
|
||||
|
||||
<h4>A list with multiple paragraphs</h4>
|
||||
<ul>
|
||||
<li><p>A list item.</p>
|
||||
|
||||
<p>With multiple paragraphs.</p></li>
|
||||
<li>List item two.</li>
|
||||
</ul>
|
||||
|
||||
<h4>Mixed ordered and unordered nested lists</h4>
|
||||
|
||||
<ul>
|
||||
<li>List 1
|
||||
<ul>
|
||||
<li>List 2</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>List 1b
|
||||
<ol>
|
||||
<li>List 3a</li>
|
||||
<li>List 3b
|
||||
<ul>
|
||||
<li>List 4</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>List 3c</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>List 1c</li>
|
||||
</ul>
|
||||
</textarea>
|
||||
<?php endif; ?>
|
||||
<input type="submit" value="Convert HTML to Markdown >>" name="submit">
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="width:50%;float:right;">
|
||||
<h3>Markdown</h3>
|
||||
<textarea rows="30" style="width:95%; font-family:monospace;" name="markdown" id="markdown"
|
||||
style="font-family:monospace"><?php
|
||||
echo htmlspecialchars($markdown); ?></textarea><br/>
|
||||
</div>
|
||||
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
<p>
|
||||
<small><a href="https://github.com/thephpleague/html-to-markdown">HTML To Markdown</a> is a library to convert HTML into Markdown with PHP.</small>
|
||||
</p>
|
||||
|