1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Walden

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Document.php 3.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
wushuiyong Отправлено 27.11.2015 17:41 dc79eaa
<?php
/* *****************************************************************
* @Author: wushuiyong@huamanshu.com
* @Created Time : 日 8/30 23:30:24 2015
*
* @File Name: Document.php
* @Description:
* *****************************************************************/
require_once 'Bootstrap.php';
class Document extends DirectoryIterator {
/**
* 文件类型:目录
*/
const TYPE_DIR = 'folder';
/**
* 文件类型:文件
*/
const TYPE_FILE = 'item';
const MODE_READ = 'r';
const MODE_WRITE = 'w';
public static $MARKDOWN_ROOT;
public static $EXCLUDES = array('.git', 'upload', 'README.md',);
public function __construct($path) {
parent::__construct($path);
}
/**
* 列出当前目录下的目录和文件
*
* @param string $dir
* @param string $mode
* @param bool $recourse
* @return array
*/
public static function listDirectory($dir = 'markdown', $mode = self::MODE_READ, $recourse = false) {
$list = array();
if (is_file($dir)) {
return array($dir => static::TYPE_FILE);
}
if (!file_exists($dir)) {
return $list;
}
$self = new static($dir);
foreach ($self as $fileInfo) {
if ($fileInfo->isDot() || in_array($fileInfo->__toString(), static::$EXCLUDES)) continue;
$file = sprintf('%s/%s', rtrim($dir, '/'), $fileInfo->__toString());
$url = static::file2Url($file, $mode);
$title = basename($url);
$item = array(
'type' => $fileInfo->isFile() ? self::TYPE_FILE : self::TYPE_DIR,
'name' => $fileInfo->isFile() ? static::trimFileExtension($title) : $title,
'link' => $url,
);
if ($recourse && $fileInfo->isDir()) {
$item['children'] = static::listDirectory(Bootstrap::route2file($url), self::MODE_READ, $recourse);
}
$list[] = $item;
}
sort($list);
return $list;
}
/**
* 获取markdown下的所有项目projects
*
* @return array
*/
public static function getProjects() {
$projects = static::listDirectory(Bootstrap::MARKDOWN_ROOT);
foreach ($projects as $key => &$project) {
if ($project['type'] == Document::TYPE_FILE) {
unset($projects[$key]);
}
}
return $projects;
}
/**
* 一个md文件映射成可访问的url
*
* @param $file
* @param string $mode
* @return bool|string
*/
public static function file2Url($file, $mode = self::MODE_READ) {
$file = Bootstrap::getSafeFile($file);
if (strpos($file, Bootstrap::MARKDOWN_ROOT) === 0) {
$file = substr($file, strlen(Bootstrap::MARKDOWN_ROOT));
}
return $mode == self::MODE_READ && Bootstrap::isMarkDownFile($file) ? Bootstrap::md2HtmlFile($file) : $file;
}
/**
* 去掉.md, .html后缀
*
* @param $file
* @return string
*/
public static function trimFileExtension($file) {
$len = strlen($file);
if (substr($file, $len - strlen(Bootstrap::TYPE_HTML)) == Bootstrap::TYPE_HTML) {
$file = substr($file, 0, $len - strlen(Bootstrap::TYPE_HTML));
}
if (substr($file, $len - strlen(Bootstrap::TYPE_MD)) == Bootstrap::TYPE_MD) {
$file = substr($file, 0, $len - strlen(Bootstrap::TYPE_MD));
}
return $file;
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Walden.git
git@api.gitlife.ru:oschina-mirror/mirrors-Walden.git
oschina-mirror
mirrors-Walden
mirrors-Walden
master