Hello responsive web (markdown update)

This commit is contained in:
markseu 2013-06-02 22:58:52 +02:00
parent 41d2b4eac2
commit 1391315a90
4 changed files with 308 additions and 16 deletions

View file

@ -3,5 +3,6 @@ Title: Home
---
Yes, your Yellow installation works!
You can now [edit this page](@baselocation/wiki/) or use your favorite text editor.
See [Yellow documentation](https://github.com/markseu/yellowcms-extensions/tree/master/documentation) for more.
Visit [Yellow on Github](https://github.com/markseu/yellowcms).
Have fun making your website.

View file

@ -1,4 +1,4 @@
/* Yellow default style 0.1.0 */
/* Yellow default style 0.1.1 */
html, body, div, span { margin:0; padding:0; border:0; vertical-align:baseline; }
body {
@ -11,6 +11,7 @@ body {
}
h1, h2, h3, h4, h5, h6 { color:#07d; font-weight:normal; }
hr { height:1px; background:#ddd; border:0; }
code { font-size:1.1em; }
a, img { border:none; text-decoration:none; }
a { color:#717171; }
a:hover { color:#07d; }
@ -25,7 +26,11 @@ a:hover { color:#07d; }
.navigation ul { margin:0 -0.3em; padding:0; list-style:none; }
.content a { color:#07d; }
.content a:hover { color:#07d; text-decoration:underline; }
.content img { max-width:100%; height:auto; }
.footer { margin-top:0.5em; padding-top:0.5em; border-top:1px solid #ddd; }
.left { float:left; margin:0 1em 0 0; }
.center { display:block; margin:0 auto; }
.right { float:right; margin:0 0 0 1em; }
/* Responsive and print */

View file

@ -5,7 +5,7 @@
// Markdown parser core plugin
class Yellow_Markdown
{
const Version = "0.1.2";
const Version = "0.1.3";
var $markdown; //markdown parser
var $html; //generated HTML
@ -49,11 +49,13 @@ class Yellow_MarkdownExtraParser extends MarkdownExtra_Parser
list($width, $height) = $this->yellow->toolbox->detectImageDimensions($this->yellow->config->get("imageDir").$path);
$alt = $matches[2];
$title = $matches[7];
$attr = $this->doExtraAttributes("img", $dummy =& $matches[8]);
$result = "<img src=\"".$this->encodeAttribute($src)."\"";
if($width && $height) $result .= " width=\"$width\" height=\"$height\"";
if(isset($alt)) $result .= " alt=\"".$this->encodeAttribute($alt)."\"";
if(isset($title)) $result .= " title=\"".$this->encodeAttribute($title)."\"";
if(!empty($alt)) $result .= " alt=\"".$this->encodeAttribute($alt)."\"";
if(!empty($title)) $result .= " title=\"".$this->encodeAttribute($title)."\"";
$result .= $attr;
$result .= $this->empty_element_suffix;
return $this->hashPart($result);

View file

@ -12,8 +12,8 @@
#
define( 'MARKDOWN_VERSION', "1.0.1p" ); # Sun 13 Jan 2013
define( 'MARKDOWNEXTRA_VERSION', "1.2.6" ); # Sun 13 Jan 2013
define( 'MARKDOWN_VERSION', "1.0.1q" ); # 11 Apr 2013
define( 'MARKDOWNEXTRA_VERSION', "1.2.7" ); # 11 Apr 2013
#
@ -79,7 +79,7 @@ Plugin Name: Markdown Extra
Plugin Name: Markdown
Plugin URI: http://michelf.ca/projects/php-markdown/
Description: <a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a> allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by <a href="http://daringfireball.net/">John Gruber</a>. <a href="http://michelf.ca/projects/php-markdown/">More...</a>
Version: 1.2.6
Version: 1.2.7
Author: Michel Fortin
Author URI: http://michelf.ca/
*/
@ -295,7 +295,7 @@ class Markdown_Parser {
$this->titles = $this->predef_titles;
$this->html_hashes = array();
$in_anchor = false;
$this->in_anchor = false;
}
function teardown() {
@ -1816,7 +1816,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
if (empty($attr)) return "";
# Split on components
preg_match_all("/[.#][-_:a-zA-Z0-9]+/", $attr, $matches);
preg_match_all('/[#.][-_:a-zA-Z0-9]+/', $attr, $matches);
$elements = $matches[0];
# handle classes and ids (only first id taken into account)
@ -1842,6 +1842,51 @@ class MarkdownExtra_Parser extends Markdown_Parser {
}
function stripLinkDefinitions($text) {
#
# Strips link definitions from text, stores the URLs and titles in
# hash references.
#
$less_than_tab = $this->tab_width - 1;
# Link defs are in the form: ^[id]: url "optional title"
$text = preg_replace_callback('{
^[ ]{0,'.$less_than_tab.'}\[(.+)\][ ]?: # id = $1
[ ]*
\n? # maybe *one* newline
[ ]*
(?:
<(.+?)> # url = $2
|
(\S+?) # url = $3
)
[ ]*
\n? # maybe one newline
[ ]*
(?:
(?<=\s) # lookbehind for whitespace
["(]
(.*?) # title = $4
[")]
[ ]*
)? # title is optional
(?:[ ]* '.$this->id_class_attr_catch_re.' )? # $5 = extra id & class attr
(?:\n+|\Z)
}xm',
array(&$this, '_stripLinkDefinitions_callback'),
$text);
return $text;
}
function _stripLinkDefinitions_callback($matches) {
$link_id = strtolower($matches[1]);
$url = $matches[2] == '' ? $matches[3] : $matches[2];
$this->urls[$link_id] = $url;
$this->titles[$link_id] =& $matches[4];
$this->ref_attr[$link_id] = $this->doExtraAttributes("", $dummy =& $matches[5]);
return ''; # String that will replace the block
}
### HTML Block Parser ###
# Tags that are always treated as block tags:
@ -1968,7 +2013,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
[ ]{0,'.($indent+3).'}~{3,}
[ ]*
(?:
[.]?[-_:a-zA-Z0-9]+ # standalone class name
\.?[-_:a-zA-Z0-9]+ # standalone class name
|
'.$this->id_class_attr_nocatch_re.' # extra attributes
)?
@ -2309,6 +2354,244 @@ class MarkdownExtra_Parser extends Markdown_Parser {
}
function doAnchors($text) {
#
# Turn Markdown link shortcuts into XHTML <a> tags.
#
if ($this->in_anchor) return $text;
$this->in_anchor = true;
#
# First, handle reference-style links: [link text] [id]
#
$text = preg_replace_callback('{
( # wrap whole match in $1
\[
('.$this->nested_brackets_re.') # link text = $2
\]
[ ]? # one optional space
(?:\n[ ]*)? # one optional newline followed by spaces
\[
(.*?) # id = $3
\]
)
}xs',
array(&$this, '_doAnchors_reference_callback'), $text);
#
# Next, inline-style links: [link text](url "optional title")
#
$text = preg_replace_callback('{
( # wrap whole match in $1
\[
('.$this->nested_brackets_re.') # link text = $2
\]
\( # literal paren
[ \n]*
(?:
<(.+?)> # href = $3
|
('.$this->nested_url_parenthesis_re.') # href = $4
)
[ \n]*
( # $5
([\'"]) # quote char = $6
(.*?) # Title = $7
\6 # matching quote
[ \n]* # ignore any spaces/tabs between closing quote and )
)? # title is optional
\)
(?:[ ]? '.$this->id_class_attr_catch_re.' )? # $8 = id/class attributes
)
}xs',
array(&$this, '_doAnchors_inline_callback'), $text);
#
# Last, handle reference-style shortcuts: [link text]
# These must come last in case you've also got [link text][1]
# or [link text](/foo)
#
$text = preg_replace_callback('{
( # wrap whole match in $1
\[
([^\[\]]+) # link text = $2; can\'t contain [ or ]
\]
)
}xs',
array(&$this, '_doAnchors_reference_callback'), $text);
$this->in_anchor = false;
return $text;
}
function _doAnchors_reference_callback($matches) {
$whole_match = $matches[1];
$link_text = $matches[2];
$link_id =& $matches[3];
if ($link_id == "") {
# for shortcut links like [this][] or [this].
$link_id = $link_text;
}
# lower-case and turn embedded newlines into spaces
$link_id = strtolower($link_id);
$link_id = preg_replace('{[ ]?\n}', ' ', $link_id);
if (isset($this->urls[$link_id])) {
$url = $this->urls[$link_id];
$url = $this->encodeAttribute($url);
$result = "<a href=\"$url\"";
if ( isset( $this->titles[$link_id] ) ) {
$title = $this->titles[$link_id];
$title = $this->encodeAttribute($title);
$result .= " title=\"$title\"";
}
if (isset($this->ref_attr[$link_id]))
$result .= $this->ref_attr[$link_id];
$link_text = $this->runSpanGamut($link_text);
$result .= ">$link_text</a>";
$result = $this->hashPart($result);
}
else {
$result = $whole_match;
}
return $result;
}
function _doAnchors_inline_callback($matches) {
$whole_match = $matches[1];
$link_text = $this->runSpanGamut($matches[2]);
$url = $matches[3] == '' ? $matches[4] : $matches[3];
$title =& $matches[7];
$attr = $this->doExtraAttributes("a", $dummy =& $matches[8]);
$url = $this->encodeAttribute($url);
$result = "<a href=\"$url\"";
if (isset($title)) {
$title = $this->encodeAttribute($title);
$result .= " title=\"$title\"";
}
$result .= $attr;
$link_text = $this->runSpanGamut($link_text);
$result .= ">$link_text</a>";
return $this->hashPart($result);
}
function doImages($text) {
#
# Turn Markdown image shortcuts into <img> tags.
#
#
# First, handle reference-style labeled images: ![alt text][id]
#
$text = preg_replace_callback('{
( # wrap whole match in $1
!\[
('.$this->nested_brackets_re.') # alt text = $2
\]
[ ]? # one optional space
(?:\n[ ]*)? # one optional newline followed by spaces
\[
(.*?) # id = $3
\]
)
}xs',
array(&$this, '_doImages_reference_callback'), $text);
#
# Next, handle inline images: ![alt text](url "optional title")
# Don't forget: encode * and _
#
$text = preg_replace_callback('{
( # wrap whole match in $1
!\[
('.$this->nested_brackets_re.') # alt text = $2
\]
\s? # One optional whitespace character
\( # literal paren
[ \n]*
(?:
<(\S*)> # src url = $3
|
('.$this->nested_url_parenthesis_re.') # src url = $4
)
[ \n]*
( # $5
([\'"]) # quote char = $6
(.*?) # title = $7
\6 # matching quote
[ \n]*
)? # title is optional
\)
(?:[ ]? '.$this->id_class_attr_catch_re.' )? # $8 = id/class attributes
)
}xs',
array(&$this, '_doImages_inline_callback'), $text);
return $text;
}
function _doImages_reference_callback($matches) {
$whole_match = $matches[1];
$alt_text = $matches[2];
$link_id = strtolower($matches[3]);
if ($link_id == "") {
$link_id = strtolower($alt_text); # for shortcut links like ![this][].
}
$alt_text = $this->encodeAttribute($alt_text);
if (isset($this->urls[$link_id])) {
$url = $this->encodeAttribute($this->urls[$link_id]);
$result = "<img src=\"$url\" alt=\"$alt_text\"";
if (isset($this->titles[$link_id])) {
$title = $this->titles[$link_id];
$title = $this->encodeAttribute($title);
$result .= " title=\"$title\"";
}
if (isset($this->ref_attr[$link_id]))
$result .= $this->ref_attr[$link_id];
$result .= $this->empty_element_suffix;
$result = $this->hashPart($result);
}
else {
# If there's no such link ID, leave intact:
$result = $whole_match;
}
return $result;
}
function _doImages_inline_callback($matches) {
$whole_match = $matches[1];
$alt_text = $matches[2];
$url = $matches[3] == '' ? $matches[4] : $matches[3];
$title =& $matches[7];
$attr = $this->doExtraAttributes("img", $dummy =& $matches[8]);
$alt_text = $this->encodeAttribute($alt_text);
$url = $this->encodeAttribute($url);
$result = "<img src=\"$url\" alt=\"$alt_text\"";
if (isset($title)) {
$title = $this->encodeAttribute($title);
$result .= " title=\"$title\""; # $title already quoted
}
$result .= $attr;
$result .= $this->empty_element_suffix;
return $this->hashPart($result);
}
function doHeaders($text) {
#
# Redefined to add id and class attribute support.
@ -2460,6 +2743,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
$head = $this->parseSpan($head);
$headers = preg_split('/ *[|] */', $head);
$col_count = count($headers);
$attr = array_pad($attr, $col_count, '');
# Write column headers.
$text = "<table>\n";
@ -2564,7 +2848,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
(?>\A\n?|\n\n+) # leading line
( # definition terms = $1
[ ]{0,'.$less_than_tab.'} # leading whitespace
(?![:][ ]|[ ]) # negative lookahead for a definition
(?!\:[ ]|[ ]) # negative lookahead for a definition
# mark (colon) or more whitespace.
(?> \S.* \n)+? # actual term (not whitespace).
)
@ -2578,12 +2862,12 @@ class MarkdownExtra_Parser extends Markdown_Parser {
\n(\n+)? # leading line = $1
( # marker space = $2
[ ]{0,'.$less_than_tab.'} # whitespace before colon
[:][ ]+ # definition mark (colon)
\:[ ]+ # definition mark (colon)
)
((?s:.+?)) # definition text = $3
(?= \n+ # stop at next definition mark,
(?: # next term or end of text
[ ]{0,'.$less_than_tab.'} [:][ ] |
[ ]{0,'.$less_than_tab.'} \:[ ] |
<dt> | \z
)
)
@ -2639,7 +2923,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
)
[ ]*
(?:
[.]?([-_:a-zA-Z0-9]+) # 2: standalone class name
\.?([-_:a-zA-Z0-9]+) # 2: standalone class name
|
'.$this->id_class_attr_catch_re.' # 3: Extra attributes
)?