Carsten Brandt
10 years ago
7 changed files with 191 additions and 3 deletions
@ -0,0 +1,94 @@
|
||||
<?php |
||||
/** |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
namespace yii\apidoc\templates\pdf; |
||||
|
||||
use cebe\markdown\latex\GithubMarkdown; |
||||
use Yii; |
||||
use yii\apidoc\helpers\ApiIndexer; |
||||
use yii\helpers\Console; |
||||
use yii\helpers\FileHelper; |
||||
|
||||
/** |
||||
* |
||||
* @author Carsten Brandt <mail@cebe.cc> |
||||
* @since 2.0 |
||||
*/ |
||||
class GuideRenderer extends \yii\apidoc\templates\html\GuideRenderer |
||||
{ |
||||
/** |
||||
* @inheritDoc |
||||
*/ |
||||
public function render($files, $targetDir) |
||||
{ |
||||
// $types = array_merge($this->apiContext->classes, $this->apiContext->interfaces, $this->apiContext->traits); |
||||
// |
||||
// $extTypes = []; |
||||
// foreach ($this->extensions as $k => $ext) { |
||||
// $extType = $this->filterTypes($types, $ext); |
||||
// if (empty($extType)) { |
||||
// unset($this->extensions[$k]); |
||||
// continue; |
||||
// } |
||||
// $extTypes[$ext] = $extType; |
||||
// } |
||||
|
||||
$fileCount = count($files) + 1; |
||||
if ($this->controller !== null) { |
||||
Console::startProgress(0, $fileCount, 'Rendering markdown files: ', false); |
||||
} |
||||
$done = 0; |
||||
$fileData = []; |
||||
// $headlines = []; |
||||
foreach ($files as $file) { |
||||
if (basename($file) == 'README.md') { |
||||
continue; // to not add index file to nav |
||||
} |
||||
if (basename($file) == 'tutorial-i18n.md') { |
||||
continue; // TODO avoid i18n tut because of non displayable characters right now. need to fix it. |
||||
} |
||||
$fileData[$file] = file_get_contents($file); |
||||
// if (preg_match("/^(.*)\n=+/", $fileData[$file], $matches)) { |
||||
// $headlines[$file] = $matches[1]; |
||||
// } else { |
||||
// $headlines[$file] = basename($file); |
||||
// } |
||||
} |
||||
|
||||
$md = new GithubMarkdown(); |
||||
$output = ''; |
||||
foreach ($fileData as $file => $content) { |
||||
$output .= $md->parse($content) . "\n\n"; // TODO generate links to yiiframework.com by default |
||||
// $output = $this->fixMarkdownLinks($output); |
||||
// if ($this->layout !== false) { |
||||
// $params = [ |
||||
//// 'headlines' => $headlines, |
||||
// 'currentFile' => $file, |
||||
// 'content' => $output, |
||||
// ]; |
||||
// $output = $this->getView()->renderFile($this->layout, $params, $this); |
||||
// } |
||||
// $fileName = $this->generateGuideFileName($file); |
||||
// file_put_contents($targetDir . '/' . $fileName, $output); |
||||
|
||||
if ($this->controller !== null) { |
||||
Console::updateProgress(++$done, $fileCount); |
||||
} |
||||
} |
||||
file_put_contents($targetDir . '/guide.tex', $output); |
||||
copy(__DIR__ . '/main.tex', $targetDir . '/main.tex'); |
||||
copy(__DIR__ . '/Makefile', $targetDir . '/Makefile'); |
||||
|
||||
if ($this->controller !== null) { |
||||
Console::updateProgress(++$done, $fileCount); |
||||
Console::endProgress(true); |
||||
$this->controller->stdout('done.' . PHP_EOL, Console::FG_GREEN); |
||||
} |
||||
|
||||
echo "\nnow run `make pdf` in $targetDir (you need pdflatex to compile pdf file)\n\n"; |
||||
} |
||||
} |
@ -0,0 +1,7 @@
|
||||
|
||||
|
||||
pdf: |
||||
# run pdflatex twice to generate TOC correctly
|
||||
pdflatex -halt-on-error main.tex
|
||||
pdflatex -halt-on-error main.tex
|
||||
mv main.pdf guide.pdf
|
@ -0,0 +1,84 @@
|
||||
\documentclass[a4paper, 10pt]{article} |
||||
|
||||
|
||||
% english and utf8 |
||||
%\usepackage[T1]{fontenc} |
||||
\usepackage[utf8]{inputenc} |
||||
%\usepackage[british,russian]{babel} |
||||
\usepackage[british]{babel} |
||||
|
||||
% url support |
||||
\usepackage{url} |
||||
|
||||
% make links clickable |
||||
\usepackage{hyperref} |
||||
|
||||
% code listings |
||||
\usepackage{listings} |
||||
\usepackage{color} |
||||
|
||||
\definecolor{codebg}{rgb}{0.9,0.9,0.9} |
||||
\definecolor{mygreen}{rgb}{0,0.6,0} |
||||
\definecolor{mygray}{rgb}{0.5,0.5,0.5} |
||||
\definecolor{mymauve}{rgb}{0.58,0,0.82} |
||||
|
||||
\lstset{% |
||||
backgroundcolor=\color{codebg}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor} |
||||
basicstyle=\footnotesize, % the size of the fonts that are used for the code |
||||
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace |
||||
breaklines=true, % sets automatic line breaking |
||||
captionpos=b, % sets the caption-position to bottom |
||||
commentstyle=\color{mygreen}, % comment style |
||||
% deletekeywords={...}, % if you want to delete keywords from the given language |
||||
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code |
||||
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 |
||||
% frame=single, % adds a frame around the code |
||||
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) |
||||
keywordstyle=\color{blue}, % keyword style |
||||
% language=Octave, % the language of the code |
||||
% morekeywords={*,...}, % if you want to add more keywords to the set |
||||
numbers=left, % where to put the line-numbers; possible values are (none, left, right) |
||||
numbersep=5pt, % how far the line-numbers are from the code |
||||
numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers |
||||
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) |
||||
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' |
||||
showstringspaces=false, % underline spaces within strings only |
||||
showtabs=false, % show tabs within strings adding particular underscores |
||||
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered |
||||
stringstyle=\color{mymauve}, % string literal style |
||||
tabsize=2, % sets default tabsize to 2 spaces |
||||
title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title |
||||
} |
||||
|
||||
\lstdefinelanguage{json}{ |
||||
morekeywords={}, |
||||
sensitive=false, |
||||
morestring=[b]", |
||||
} |
||||
|
||||
\lstdefinelanguage{css}{ |
||||
morekeywords={}, |
||||
sensitive=false, |
||||
morestring=[b]", |
||||
} |
||||
|
||||
\lstdefinelanguage{javascript}{ |
||||
morekeywords={}, |
||||
sensitive=false, |
||||
morestring=[b]", |
||||
} |
||||
|
||||
% include images |
||||
\usepackage{graphicx} |
||||
|
||||
% support github markdown strikethrough |
||||
% http://tex.stackexchange.com/questions/23711/strikethrough-text |
||||
\usepackage{ulem} |
||||
|
||||
\begin{document} |
||||
|
||||
\tableofcontents |
||||
|
||||
\include{guide} |
||||
|
||||
\end{document} |
Loading…
Reference in new issue