Pastacode

Description

Vous pouvez afficher du code source dans la fenêtre d’édition, à partir d’un fichier, ou à partir d’un service web tel que Github, Gist, Pastbin, Bitbucket ou encore Bitbucket snippets. Les extraits importés à partir des hébergeurs de code sont mis en cache afin de diminuer le nombre de requêtes HTTP.

Ne vous souciez plus de mettre à jour vos articles quand vous modifiez vos codes !

Pastacode vous permet d’améliorer l’affichage de vos codes sources en faisant appel aux extensions de PrismJs (lignes surlignées, documentation des fonctions…)

7 thèmes de colorations syntaxiques sont inclus ; créez les vôtres !

Langages de programmation disponibles :

  • HTML
  • CSS
  • JavaScript
  • PHP
  • C
  • C++
  • Java
  • Sass
  • Python
  • SQL
  • Ruby
  • CoffeeScript
  • Bash
  • Apache config
  • less
  • haml
  • markdown

Si vous utilisiez une autre extension de coloration syntaxique, sachez que des scripts de migration de codes sont à votre disposition 🙂

Captures d’écran

  • Capture de la fenêtre modale de Pastacode
  • Thème de coloration PrismJS par défaut
  • Dark color scheme
  • Coy color scheme
  • Okaidia color scheme
  • Tomorrow color scheme
  • Twilight color scheme
  • Funky color scheme

Installation

  1. Décompressez Pastacode dans votre répertoire des extensions
  2. Allez dans les réglages de Pastacode, et configurez votre thème de coloration et la durée du cache
  3. Hébergez vos extraits de code sur des services web (ou sur votre site)
  4. Lors de l’édition d’un article, utilisez le bouton Pasta’a code pour ajouter du code source dans vos contenus

Compatibilité avec une navigation Ajax

Activer Pastacode sur les sites à navigation ajax, il vous faudra appliquer deux modifications :

  1. Insérez cette ligne dans le fichier functions.php de votre thème : add_filter( 'pastacode_ajax', '__return_true' );
  2. Après chaque chargement ajax, exécutez cette fonction JavaScript : Prism.highlightAll();

FAQ

Pour plus d’informations, rendez-vous sur le wiki de Pastacode

Comment définir une durée de cache personnalisée ?

Paste these lines into your functions.php theme file:
add_filter( ‘option_pastacode_cache_duration’, ‘my_pastacode_cache_duration’ );
function my_pastacode_cache_duration( $duration ) {
$duration = DAY_IN_SECOND*3; // 3 days
return $duration;
}

Comment personnaliser le thème de coloration syntaxique ?

Paste these lines into your functions.php theme file:
add_action( ‘wp_enqueue_scripts’, ‘custom_enqueue_script’, 11 );
function custom_enqueue_script() {
$urlofmynewscheme = get_stylesheet_directory_uri() . ‘/prism-okaida-willy.css’; //this is an example
wp_deregister_style( ‘prismcss’ );
wp_register_style( ‘prismcss’, $urlofmynewscheme, false, ‘1’, ‘all’ );
}
Get inspired of the default scheme to build your schemes

Comment filtrer la liste des langages disponible ?

Paste these lines into your functions.php theme file:
//If you just want php, html, css and javascript support
add_filter( ‘pastacode_langs’, ‘_pastacode_langs’ );
function _pastacode_langs( $langs ) {
$langs = array(
‘php’ => ‘PHP’,
‘markup’ => ‘HTML’,
‘css’ => ‘CSS’,
‘javascript’ => ‘JavaScript’, );
return $langs;
}

Comment ajouter un nouvel hébergeur de code ?

Paste these lines into your functions.php theme file:
//Take WordPress SVN, for example
//register a provider
add_filter( ‘pastacode_services’, ‘_pastacode_services’ );
function _pastacode_services( $services ) {
$services[‘wordpress’] = ‘core.svn.wordpress.org’;
return $services;
}

//Define pastabox lightbox inputs
add_action( 'pastacode_fields', '_pastacode_fields' );
function _pastacode_fields( $fields ) { 
    $fields['wordpress'] = array(  // 'wordpress' or 'whatever'
        'classes'     => array( 'wordpress' ), // same value as the key
        'label'       => sprintf( __('File path relative to %s', 'pastacode'), 'https://core.svn.wordpress.org/' ), 
        'placeholder' =>'trunk/wp-config-sample.php', //if placeholder isn't defined, it will be a textarea
        'name'        => 'path_id' //these value return shortcode attribute (path_id, repos, name, user, version)
        );
    $fields['pastacode-lines']['classes'][] = 'wordpress'; // Add ability to select lines
    $fields['pastacode-highlight']['classes'][] = 'wordpress'; // Add ability to highlight somes

    return $fields;
}

//Build the function to retrieve the code
// "pastacode_wordpress" hook name (1st param) = "pastacode_" + "wordpress" or "whatever"
add_action( 'pastacode_wordpress', '_pastacode_wordpress', 10, 2 );
function _pastacode_wordpress( $source, $atts ) {
    extract( $atts );
    if( $path_id ) {
        $req  = wp_sprintf( 'https://core.svn.wordpress.org/%s', str_replace( 'https://core.svn.wordpress.org/', '', $path_id ) );
        $code = wp_remote_get( $req );
        if( ! is_wp_error( $code ) && 200 == wp_remote_retrieve_response_code( $code ) ) {
            $data = wp_remote_retrieve_body( $code );
            $source[ 'url' ]  = $req; //url to view source
            $source[ 'name' ] = basename( $req ); //filename
            $source[ 'code' ] = esc_html( $data ); //the code !!   
            //$source[ 'raw' ] contain raw source code. But there are no raw source code delivered by WordPress SVN             
        }
    }
    return $source;
}

N’ajoutez surtout pas votre site principal ! Un contributeur pourrait alors ajouter un shortcode pour afficher le « wp-config.php » et le lire !

Avis

Great plugins !

I love this plugins it’s great to finaly find an easy to use, syntax highlighter plugin, that works fine !

The great thing about this plugin is the « source management » of the code you add in your article. All my code is hosted on github or gist and the plugin fetch the code, cache it and display on my post. It’s great in order to avoid broken code when you switch to the advanced editor.

Lire les 10 avis

Contributeurs & développeurs

« Pastacode » est un logiciel libre. Les personnes suivantes ont contribué à cette extension.

Contributeurs

« Pastacode » a été traduit en French. Remerciez l’équipe de traduction pour ses contributions.

Traduisez « Pastacode » dans votre langue.

Le développement vous intéresse ?

Parcourez le code ou abonnez vous à l’historique de développement par RSS.

Journal

2.0

  • 15 décembre 2016
  • compatible avec le module de commentaires de WordPress
  • régularisation des espaces superflus en début de code
  • masquage des titres « vides » sur les blocs de code saisis à la main
  • amélioration de l’expérience de rédaction de code avec Codemirror
  • icônes pour écrans haute définition
  • modale tinyMCE compatible avec les smartphones
  • amélioration des feuilles de styles de PrismJS et tinyMCE
  • changement de méthode de récupération des snippets à partir de GitHub (sans utiliser d’encodage en base64)
  • nouveau site de démonstration d’utilisation
  • résolution d’un problème de conversion du format de code court (entre les version 1.5 et 1.6)
  • Résolution du problème de saisie du caractère % dans les blocs de code

1.8

  • 22 août 2016
  • Nouveau mode de prévisualisation du code dans les vues TinyMCE

1.7

  • 19 août 2016
  • Pastacode est maintenant compatible avec l’extension bbPress

1.6

1.5.1

1.5

  • 23 juillet 2015
  • Implémentation de l’API views
  • Correction d’un bug lors de la création de nouveaux codes courts (les valeurs du code court précédent étaient reprises)

1.4.2

  • 21 janvier 2015
  • il et maintenant possible de cibler un fichier au sein d’un Gist
  • Suppression des fichiers de démonstration de PrismJs (index.html à l’intérieur du répertoire de l’extension)

1.4.1

1.4

  • 16 janvier 2015
  • Nouvelle fonctionnalité : vous pouvez maintenant éditer vos codes « manuels » en plein écran !
  • Mise à jour de PrismJs et de ses extensions
  • Nouvelle option pour choisir si les informations associées à un bloc de code apparaissent dessus ou dessous

1.3

  • 5 mai 2014
  • Amélioration du support de l’éditeur TinyMCE (placeholder visuel dans l’éditeur, nouveau bouton dans TinyMCE…)
  • Solution de secours en cas du dépassement des quotas de l’API de Github (supporte maintenant plus de 30 requêtes par heure)
  • Compatiblité ajax (en utilisant le hook pastacode_ajax)
  • Correction de bug&nbsp: retours chariots disgracieux sur l’affichage du code

1.2.1

  • 21 novembre 2013
  • Correction de bug :désactivation du cache pour les codes manuels

1.2

  • 15 octobre 2013
  • La modification de la durée de mise en cache ne déclenche plus de purge automatiquement
  • Nouveau bouton « Purger le cache » dans la page d’option utilisez-le pour supprimer tous les transients (ils contiennent les valeurs renvoyées par les hébergeurs de codes)
  • Correction d’un bug lors de la mise à jour des options

1.1

  • 12 octobre 2013
  • Filtres, actions, des hooks partout…
  • Mise à jour du format de code court (l’attribut « type » est devenu « provider » et un « / » est ajouté avant la fermeture)

1.0

  • 10 octobre 2013
  • Version initiale
  • Ajouter du code en utilisant une jolie boîte modale
  • Afficher du code à partir d’un fichier, GitHub, Gist, Pastebin ou Bitbucket
  • 13 langues disponibles
  • 6 thèmes de colorations syntaxiques
  • Support du cache pour les chargements de code à distance (durée par défaut : 1 semaine)