summaryrefslogtreecommitdiff
path: root/doc/patchqueue/format_escape.mdwn
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-07-25 03:36:53 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-07-25 03:36:53 +0000
commitc96d672810ae524aedf9ffff08dcca773cd9a876 (patch)
tree4d06c15920e5b1b60acdba2e4cea9c680ca5dc43 /doc/patchqueue/format_escape.mdwn
parentd63068b669f5b5450b01a3142c2efca448d3dfc3 (diff)
massive patchqueue reorg
patches can now be anywhere and tagged patch to show up on the patch list. Moved all the patchqueue stuff to todo items; some of it was merged into existing todo items.
Diffstat (limited to 'doc/patchqueue/format_escape.mdwn')
-rw-r--r--doc/patchqueue/format_escape.mdwn225
1 files changed, 0 insertions, 225 deletions
diff --git a/doc/patchqueue/format_escape.mdwn b/doc/patchqueue/format_escape.mdwn
deleted file mode 100644
index ba65b7072..000000000
--- a/doc/patchqueue/format_escape.mdwn
+++ /dev/null
@@ -1,225 +0,0 @@
-Since some preprocessor directives insert raw HTML, it would be good to
-specify, per-format, how to pass HTML so that it goes through the format
-OK. With Markdown we cross our fingers; with reST we use the "raw"
-directive.
-
-I added an extra named parameter to the htmlize hook, which feels sort of
-wrong, since none of the other hooks take parameters. Let me know what
-you think. --Ethan
-
-Seems fairly reasonable, actually. Shouldn't the `$type` come from `$page`
-instead of `$destpage` though? Only other obvious change is to make the
-escape parameter optional, and only call it if set. --[[Joey]]
-
-> I couldn't figure out what to make it from, but thinking it through,
-> yeah, it should be $page. Revised patch follows. --Ethan
-
->> I've updated the patch some more, but I think it's incomplete. ikiwiki
->> emits raw html when expanding WikiLinks too, and it would need to escape
->> those. Assuming that escaping html embedded in the middle of a sentence
->> works.. --[[Joey]]
-
->>> Revised again. I get around this by making another hook, htmlescapelink,
->>> which is called to generate links in whatever language. In addition, it
->>> doesn't (can't?) generate
->>> spans, and it doesn't handle inlineable image links. If these were
->>> desired, the approach to take would probably be to use substitution
->>> definitions, which would require generating two bits of code for each
->>> link/html snippet, and putting one at the end of the paragraph (or maybe
->>> the document?).
->>> To specify that (for example) Discussion links are meant to be HTML and
->>> not rst or whatever, I added a "genhtml" parameter to htmllink. It seems
->>> to work -- see <http://ikidev.betacantrips.com/blah.html> for an example.
->>> --Ethan
-
-<pre>
-Index: debian/changelog
-===================================================================
---- debian/changelog (revision 3197)
-+++ debian/changelog (working copy)
-@@ -24,6 +24,9 @@
- than just a suggests, since OpenID is enabled by default.
- * Fix a bug that caused link(foo) to succeed if page foo did not exist.
- * Fix tags to page names that contain special characters.
-+ * Based on a patch by Ethan, add a new htmlescape hook, that is called
-+ when a preprocssor directive emits inline html. The rst plugin uses this
-+ hook to support inlined raw html.
-
- [ Josh Triplett ]
- * Use pngcrush and optipng on all PNG files.
-Index: IkiWiki/Render.pm
-===================================================================
---- IkiWiki/Render.pm (revision 3197)
-+++ IkiWiki/Render.pm (working copy)
-@@ -96,7 +96,7 @@
- if ($page !~ /.*\/\Q$discussionlink\E$/ &&
- (length $config{cgiurl} ||
- exists $links{$page."/".$discussionlink})) {
-- $template->param(discussionlink => htmllink($page, $page, gettext("Discussion"), noimageinline => 1, forcesubpage => 1));
-+ $template->param(discussionlink => htmllink($page, $page, gettext("Discussion"), noimageinline => 1, forcesubpage => 1, genhtml => 1));
- $actions++;
- }
- }
-Index: IkiWiki/Plugin/rst.pm
-===================================================================
---- IkiWiki/Plugin/rst.pm (revision 3197)
-+++ IkiWiki/Plugin/rst.pm (working copy)
-@@ -30,15 +30,36 @@
- html = publish_string(stdin.read(), writer_name='html',
- settings_overrides = { 'halt_level': 6,
- 'file_insertion_enabled': 0,
-- 'raw_enabled': 0 }
-+ 'raw_enabled': 1 }
- );
- print html[html.find('<body>')+6:html.find('</body>')].strip();
- ";
-
- sub import { #{{{
- hook(type => "htmlize", id => "rst", call => \&htmlize);
-+ hook(type => "htmlescape", id => "rst", call => \&htmlescape);
-+ hook(type => "htmlescapelink", id => "rst", call => \&htmlescapelink);
- } # }}}
-
-+sub htmlescapelink ($$;@) { #{{{
-+ my $url = shift;
-+ my $text = shift;
-+ my %params = @_;
-+
-+ if ($params{broken}){
-+ return "`? <$url>`_\ $text";
-+ }
-+ else {
-+ return "`$text <$url>`_";
-+ }
-+} # }}}
-+
-+sub htmlescape ($) { #{{{
-+ my $html=shift;
-+ $html=~s/^/ /mg;
-+ return ".. raw:: html\n\n".$html;
-+} # }}}
-+
- sub htmlize (@) { #{{{
- my %params=@_;
- my $content=$params{content};
-Index: doc/plugins/write.mdwn
-===================================================================
---- doc/plugins/write.mdwn (revision 3197)
-+++ doc/plugins/write.mdwn (working copy)
-@@ -121,6 +121,26 @@
- The function is passed named parameters: "page" and "content" and should
- return the htmlized content.
-
-+### htmlescape
-+
-+ hook(type => "htmlescape", id => "ext", call => \&htmlescape);
-+
-+Some markup languages do not allow raw html to be mixed in with the markup
-+language, and need it to be escaped in some way. This hook is a companion
-+to the htmlize hook, and is called when ikiwiki detects that a preprocessor
-+directive is inserting raw html. It is passed the chunk of html in
-+question, and should return the escaped chunk.
-+
-+### htmlescapelink
-+
-+ hook(type => "htmlescapelink", id => "ext", call => \&htmlescapelink);
-+
-+Some markup languages have special syntax to link to other pages. This hook
-+is a companion to the htmlize and htmlescape hooks, and it is called when a
-+link is inserted. It is passed the target of the link and the text of the
-+link, and an optional named parameter "broken" if a broken link is being
-+generated. It should return the correctly-formatted link.
-+
- ### pagetemplate
-
- hook(type => "pagetemplate", id => "foo", call => \&pagetemplate);
-@@ -355,6 +375,7 @@
- * forcesubpage - set to force a link to a subpage
- * linktext - set to force the link text to something
- * anchor - set to make the link include an anchor
-+* genhtml - set to generate HTML and not escape for correct format
-
- #### `readfile($;$)`
-
-Index: doc/plugins/rst.mdwn
-===================================================================
---- doc/plugins/rst.mdwn (revision 3197)
-+++ doc/plugins/rst.mdwn (working copy)
-@@ -10,10 +10,8 @@
- Note that this plugin does not interoperate very well with the rest of
- ikiwiki. Limitations include:
-
--* reStructuredText does not allow raw html to be inserted into
-- documents, but ikiwiki does so in many cases, including
-- [[WikiLinks|WikiLink]] and many
-- [[PreprocessorDirectives|PreprocessorDirective]].
-+* Some bits of ikiwiki may still assume that markdown is used or embed html
-+ in ways that break reStructuredText. (Report bugs if you find any.)
- * It's slow; it forks a copy of python for each page. While there is a
- perl version of the reStructuredText processor, it is not being kept in
- sync with the standard version, so is not used.
-Index: IkiWiki.pm
-===================================================================
---- IkiWiki.pm (revision 3197)
-+++ IkiWiki.pm (working copy)
-@@ -469,6 +469,10 @@
- my $page=shift; # the page that will contain the link (different for inline)
- my $link=shift;
- my %opts=@_;
-+ # we are processing $lpage and so we need to format things in accordance
-+ # with the formatting language of $lpage. inline generates HTML so links
-+ # will be escaped seperately.
-+ my $type=pagetype($pagesources{$lpage});
-
- my $bestlink;
- if (! $opts{forcesubpage}) {
-@@ -494,12 +498,17 @@
- }
- if (! grep { $_ eq $bestlink } map { @{$_} } values %renderedfiles) {
- return $linktext unless length $config{cgiurl};
-- return "<span><a href=\"".
-- cgiurl(
-- do => "create",
-- page => pagetitle(lc($link), 1),
-- from => $lpage
-- ).
-+ my $url = cgiurl(
-+ do => "create",
-+ page => pagetitle(lc($link), 1),
-+ from => $lpage
-+ );
-+
-+ if ($hooks{htmlescapelink}{$type} && ! $opts{genhtml}){
-+ return $hooks{htmlescapelink}{$type}{call}->($url, $linktext,
-+ broken => 1);
-+ }
-+ return "<span><a href=\"". $url.
- "\">?</a>$linktext</span>"
- }
-
-@@ -514,6 +523,9 @@
- $bestlink.="#".$opts{anchor};
- }
-
-+ if ($hooks{htmlescapelink}{$type} && !$opts{genhtml}) {
-+ return $hooks{htmlescapelink}{$type}{call}->($bestlink, $linktext);
-+ }
- return "<a href=\"$bestlink\">$linktext</a>";
- } #}}}
-
-@@ -628,6 +640,14 @@
- preview => $preprocess_preview,
- );
- $preprocessing{$page}--;
-+
-+ # Handle escaping html if the htmlizer needs it.
-+ if ($ret =~ /[<>]/ && $pagesources{$page}) {
-+ my $type=pagetype($pagesources{$page});
-+ if ($hooks{htmlescape}{$type}) {
-+ return $hooks{htmlescape}{$type}{call}->($ret);
-+ }
-+ }
- return $ret;
- }
- else {
-</pre>