Realce Sintaxe Inline

4

Estou à procura de um plug-in compatível com a versão atual do WordPress (3.1.1 até à data de redacção desta pergunta) e que suporte algum tipo de destaque inline da sintaxe da linguagem de programação. Basicamente, quero poder escrever um function name ou um variable name ou um if statement rápido como parte de um parágrafo e fazer com que pareça code , muito parecido com o que você recebe no editor do StackExchange com a backticks .

Existem vários plugins bons para destacar a sintaxe da linguagem de programação no WordPress, mas eles não parecem suportar o realce de sintaxe in-line.

jQuery.Syntax alega ter o recurso in-line, mas não consigo fazê-lo funcionar Wordpress 3.1.1.

    
por Alan Turing 24.04.2011 / 15:27

1 resposta

4

Se você ainda quiser usar a marcação backtick do tipo SO para estilizar seus exemplos de código em linha, criei um código para realizá-lo. Para transformá-lo em seu próprio plug-in, basta adicionar o código abaixo às suas funções.php. Ele chama o filtro wordpress "the_content" para aplicar a transformação ao conteúdo quando ele é exibido, evitando, assim, que quaisquer transformações sejam armazenadas no banco de dados.

function style_my_inline($content){

//what you use to denote your code
$inline_marker = "'";

//regex for code
$pattern = "/".$inline_marker."[\w\D\d]+?".$inline_marker."/";
preg_match_all($pattern,$content,$matches);

//what you want your surrounding markup to be 
$prepend_tag = "<span class = \"code\">";
$append_tag = "</span>";

//for each occurance in preg match results...
foreach($matches as $match){
    for($i=0;$i<count($match);$i++){
        //remove inline marker from match text
        $match_without_inline_marker = str_replace($inline_marker,'',$match[$i]);
        //add surrounding markup to match
        $match_with_tags = $prepend_tag.$match_without_inline_marker.$append_tag;
        //replace match in original content with marked-up match
        $content = str_replace($match[$i],$match_with_tags,$content);
    }
}

return $content;
}

apply_filters("the_content","style_my_inline");

Agora, eu testei o código acima com algum texto fictício e usei backticks para definir blocos de código da seguinte forma:

Lorem ipsum dolor sit amet, 'consectetur adipiscing elit'. Donec nec magna erat. 'Aenean nisi ante', semper vel imperdiet sed, laoreet.

Em seguida, aplicamos o seguinte css:

<style type = "text/css">
span.code{color:#56aaff;font-family:courier;background:#e5e5e5;padding:1px;}
</style>

E o que eu recebo é assim:

Espero que isso funcione para você.

    
por kevtrout 25.04.2011 / 17:18