mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-26 10:43:47 +08:00
04663e0e21
Released under the Python Software Foundation License, this one doesn't look awful (no green top bar, huzzah!). Lightly forked it to remove the donation footer (we don't take any) and to change the python references to fish references. The image is just our favicon, which is a stylized "f" and therefore not fantastic (are we facebook?), but it's the best I found, and the thing before had no images at all. Fixes #6500 (as far as I'm concerned)
65 lines
2.8 KiB
JavaScript
65 lines
2.8 KiB
JavaScript
$(document).ready(function() {
|
|
/* Add a [>>>] button on the top-right corner of code samples to hide
|
|
* the >>> and ... prompts and the output and thus make the code
|
|
* copyable. */
|
|
var div = $('.highlight-python .highlight,' +
|
|
'.highlight-python3 .highlight,' +
|
|
'.highlight-pycon .highlight,' +
|
|
'.highlight-default .highlight');
|
|
var pre = div.find('pre');
|
|
|
|
// get the styles from the current theme
|
|
pre.parent().parent().css('position', 'relative');
|
|
var hide_text = 'Hide the prompts and output';
|
|
var show_text = 'Show the prompts and output';
|
|
var border_width = pre.css('border-top-width');
|
|
var border_style = pre.css('border-top-style');
|
|
var border_color = pre.css('border-top-color');
|
|
var button_styles = {
|
|
'cursor':'pointer', 'position': 'absolute', 'top': '0', 'right': '0',
|
|
'border-color': border_color, 'border-style': border_style,
|
|
'border-width': border_width, 'color': border_color, 'text-size': '75%',
|
|
'font-family': 'monospace', 'padding-left': '0.2em', 'padding-right': '0.2em',
|
|
'border-radius': '0 3px 0 0'
|
|
}
|
|
|
|
// create and add the button to all the code blocks that contain >>>
|
|
div.each(function(index) {
|
|
var jthis = $(this);
|
|
if (jthis.find('.gp').length > 0) {
|
|
var button = $('<span class="copybutton">>>></span>');
|
|
button.css(button_styles)
|
|
button.attr('title', hide_text);
|
|
button.data('hidden', 'false');
|
|
jthis.prepend(button);
|
|
}
|
|
// tracebacks (.gt) contain bare text elements that need to be
|
|
// wrapped in a span to work with .nextUntil() (see later)
|
|
jthis.find('pre:has(.gt)').contents().filter(function() {
|
|
return ((this.nodeType == 3) && (this.data.trim().length > 0));
|
|
}).wrap('<span>');
|
|
});
|
|
|
|
// define the behavior of the button when it's clicked
|
|
$('.copybutton').click(function(e){
|
|
e.preventDefault();
|
|
var button = $(this);
|
|
if (button.data('hidden') === 'false') {
|
|
// hide the code output
|
|
button.parent().find('.go, .gp, .gt').hide();
|
|
button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden');
|
|
button.css('text-decoration', 'line-through');
|
|
button.attr('title', show_text);
|
|
button.data('hidden', 'true');
|
|
} else {
|
|
// show the code output
|
|
button.parent().find('.go, .gp, .gt').show();
|
|
button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible');
|
|
button.css('text-decoration', 'none');
|
|
button.attr('title', hide_text);
|
|
button.data('hidden', 'false');
|
|
}
|
|
});
|
|
});
|
|
|