PastebinEmbed
Description
This recipe lets you embed Pastebin pastes in a wikipage. You can show only some lines of a paste, and highlight certain lines.
Git repository for this recipe: https://git.sr.ht/~achmizs/pmwiki-pastebin-embed.git.
Installation
- Download and unzip pastebin-embed.zipΔ
- Place the file
pastebin-embed.php
and thesimplehtmldom/
folder into yourcookbook/
directory - Add such a line to
config.php
:
include_once("$FarmD
/cookbook/pastebin-embed.php");
Usage
The basic usage is simple:
(:pastebin-embed paste-id:)
(For example, (:pastebin-embed T3rxzk4N:)
.)
There are several optional arguments (which must go after the paste id):
no-js
Do not embed a script which makes the browser retrieve the paste; instead, retrieve the paste server-side, and insert it into the page that’s served to the browser.
nofooter
Don’t show the “footer” (actually a header).
nolinenums
Hide the line numbers.
raw
Don’t display syntax coloring, line numbers, footer, etc.; just show the raw text of the paste.
no-pre
Don’t wrap the raw text in a <pre>
tag and don’t encode HTML entities (useful if, for example, the text is going to be processed by some other markup, such as PmPygment or MarkdownMarkupExtension). (Does nothing if raw mode is not used.)
lines=comma-separated list of lines or line ranges
Show only specified lines/ranges. The lines=
parameter takes three kinds of arguments:
- Single line (e.g.,
lines=2
)
(This will include the specified line.) - Line range with a start and end line (e.g.,
lines=5-7
)
(This will include all lines from the start to the end of the range, inclusive.) - Line range with a start line only (e.g.,
lines=10-
)
(This will include all lines from the start of the range to the end of the file.)
The three kinds of arguments may be combined freely. For example:
(:pastebin-embed T3rxzk4N lines=2,5-7,11,15- :)
This will show lines 2, 5, 6, 7, 11, and line 15 onward.
hl=comma-separated list of lines or line ranges
Highlight the specified lines/ranges. The hl=
parameter takes exactly the same sort of arguments as the lines=
parameter (see above).
$PastebinEmbedHighlightStyle
variable in config.php
(before including pastebin-embed.php
). For example, suppose you want to change the yellow background to fuchsia, and also make the text of highlighted lines bold:$PastebinEmbedHighlightStyle = "background-color: fuchsia; font-weight: bold;";
theme=dark
Enable dark theme for the embedded paste. (Does nothing in raw mode.)
Note that mixing and matching light-theme and dark-theme pastes on the same page does not really work right; this is a limitation of the Pastebin-provided CSS.
Notes
The no-js
, nofooter
, and nolinenums
options may be used together, in any combination (for example, (:pastebin-embed T3rxzk4N nofooter nolinenums:)
).
The raw
option makes the above three options moot. The no-pre
option applies only if raw
is also specified.
The no-js
option may be used for browsers which do not support Javascript (or for users who have Javascript disabled). However, it will result in slightly slower initial page loads (because the default Javascript method loads the paste asynchronously, after the page has already loaded, whereas with no-js
, the paste must be retrieved before the wikipage may be fully rendered). (The same is true of the raw
option.)
The lines=
, hl=
, and theme=dark
options may be used in combination with any other option.
Notes
This recipe uses the PHP Simple HTML DOM Parser by S. C. Chen.
Change log / Release notes
- 2021-12-11: Fixed bugs due to Pastebin updates; updated simplehtmldom version; added dark theme support.
- 2018-10-19: Bug fix.
- 2017-12-27: Bug fix.
- 2017-12-26-2: Line highlighting added.
- 2017-12-26: Line ranges may now be specified (just as with GistEmbed).
- 2017-12-25: In
raw
mode (withoutno-pre
), HTML entities are now properly encoded. - 2017-12-24-3: Minor bug fix.
- 2017-12-24-2: Added
no-pre
flag; changed markup priority. - 2017-12-24: Initial release.
See also
Ape also allows embedding of Pastebin pastes; however, Ape embeds the paste inside an <iframe>
, which causes certain problems (e.g. there is no way to size the frame automatically to show all the content), and does not allow any way to hide the footer, line numbers, etc. In comparison, Pastebin Embed is a more lightweight and flexible solution (but only does Pastebin embedding, not any of the other things that Ape does).
Contributors
- Said Achmiz (author)
Comments
See discussion at PastebinEmbed-Talk
User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.