116 lines
4.3 KiB
Markdown
116 lines
4.3 KiB
Markdown
[[!template id=gitbranch branch=wtk/raw_inline author="[[wtk]]"]]
|
|
|
|
summary
|
|
=======
|
|
|
|
Extend inlining to handle raw files (files with unrecognized extensions).
|
|
|
|
Also raise an error in `IkiWiki::pagetype($file)` if `$file` is blank, which avoids trying to do much with missing files, etc.
|
|
|
|
I'm using the new code in my [blog][].
|
|
|
|
[blog]: http://blog.tremily.us/posts/yacc2dot/
|
|
|
|
usage
|
|
=====
|
|
|
|
\[[!inline pagenames="somefile.txt" template="raw" feeds="no"]]
|
|
|
|
|
|
> But inline already supports raw files in two ways:
|
|
>
|
|
> * setting raw=yes will cause a page to be inlined raw without
|
|
> using any template, as if it were part of the page at the location
|
|
> of the inline
|
|
> * otherwise, the file becomes an enclosure in the rss feed, for use with
|
|
> podcasting.
|
|
>
|
|
> So I don't see the point of your patch. Although since your text
|
|
> editor seems to like to make lots of whitespace changes, it's possible
|
|
> I missed something in the large quantity of noise introduced by it.
|
|
> --[[Joey]]
|
|
|
|
>> As I understand it, setting `raw=yes` causes the page to be inlined
|
|
>> as if the page contents had appeared in place of the directive. The
|
|
>> content is then processed by whatever `htmlize()` applies to the
|
|
>> inlining page. I want the inlined page to be unprocessed, and
|
|
>> wrapped in `<pre><code>...</code></pre>` (as they are on the blog
|
|
>> post I link to above).
|
|
>>
|
|
>> Enclosures do not include the page contents at all, just a link to
|
|
>> them. I'm trying to inline the content so I can comment on it from
|
|
>> the inlining page.
|
|
>>
|
|
>> Apologies for my cluttered version history, I should have branched my
|
|
>> earlier changes off to make things clearer. I tried to isolate my
|
|
>> whitespace changes (fixes?) in c9ae012d245154c3374d155958fcb0b60fda57ce.
|
|
>> 157389355d01224b2d3c3f6e4c1eb42a20ec8a90 should hold all the content
|
|
>> changes.
|
|
>>
|
|
>> A list of other things globbed into my master branch that should have
|
|
>> been separate branches:
|
|
>>
|
|
>> * Make it easy to select a Markdown executable for mdwn.pm.
|
|
>> * Included an updated form of
|
|
>> [[Javier Rojas' linktoimgonly.pm|forum/link_to_an_image_inside_the_wiki_without_inlining_it]].
|
|
>> * Included an updated form of
|
|
>> [Jason Blevins' mdwn_itex.pm](http://jblevins.org/git/ikiwiki/plugins.git/plain/mdwn_itex.pm).
|
|
>> * Assorted minor documentation changes.
|
|
>>
|
|
>> --[[wtk]]
|
|
|
|
>>> I haven't heard anything in a while, so I've reorganized my version
|
|
>>> history and rebased it on the current ikiwiki head. Perhaps now it
|
|
>>> will be easier to merge or reject. Note the new branch name:
|
|
>>> `raw_inline`. I'll open separate todo items for items mentioned in my
|
|
>>> previous comment. --[[wtk]]
|
|
|
|
----
|
|
|
|
Reviewing your patch the first thing I see is this:
|
|
|
|
<pre>
|
|
+ if (! $file) {
|
|
+ error("Missing file.");
|
|
+ }
|
|
</pre>
|
|
|
|
This fails if the filename is "0". Also, `pagetype()`
|
|
currently cannot fail; allowing it to crash the entire
|
|
wiki build if the filename is somehow undefined seems
|
|
unwise.
|
|
|
|
I didn't look much further, because it seems to me what you're trying to do
|
|
can be better accomplished by using the highlight plugin. Assuming the raw
|
|
file you want to inline and comment on is some source-code-like thing,
|
|
which seems likely.
|
|
|
|
Or, another way to do it would be to use the templates plugin, and make
|
|
a template there that puts an inline directive inside pre tags.
|
|
--[[Joey]] [[!tag reviewed]]
|
|
|
|
----
|
|
|
|
If `pagetype()` cannot fail, then I suppose that check has to go ;).
|
|
|
|
I was under the impression that [[plugins/highlight]] didn't support
|
|
inlining code. It looks like it supports highlighing stand-alone
|
|
files or embedded code. Perhaps I should extend it to support inlined
|
|
code instead of pushing this patch?
|
|
|
|
> If you configure highlight to support standalone files, then you can
|
|
> inline the resulting pages and get nicely highlighted source code
|
|
> inlined into the page. --[[Joey]]
|
|
|
|
The `raw.tmpl` included in the patch *does* include the inlined
|
|
content inside `pre` tags. The problem is that the current inline
|
|
code insists on running `htmlize()` on the content before inserting it
|
|
in the template. The heart of my patch is an altered
|
|
`get_inline_content()` that makes the `htmlize()` call dependent on a
|
|
`$read_raw` flag. If the flag is set, the raw (non-htmlized) content
|
|
is used instead.
|
|
|
|
I just rebased my patches against the current Ikiwiki trunk (no major
|
|
changes) to make them easier to review.
|
|
--[[wtk]]
|