code_x.inc.php

サマリ一番シンプルなソースコード表示プラグイン
リビジョン1.0
対応バージョン1.5.3
投稿者umorigu
投稿日2021-07-11 (日) 22:45:36
ライセンスGPL v2

概要

「ハイライトしない」ソースコードコード表示プラグインです。

シンプルな分、外部依存がなく、PHPバージョン依存が少ないため、PHPのバージョンやPukiWikiのバージョンが上がっても安定して動作することが期待できます。

他のソースコード表示プラグインの代替として機能します。 プラグインや依存している外部ライブラリのメンテナンスが停止していて最新環境に適応できない場合にこのプラグインに処理を委譲する使い方ができます。

plugin/code_x.inc.php:

<?php
// code_x.inc.php v1.0
//
// code_x plugin
// Copyright 2021 umorigu

function plugin_code_x_inline()
{
	$args = func_get_args();
	$escaped_src = trim(array_pop($args));
	$class = '';
	if ($add_class = array_shift($args)) {
		$class = $add_class;
	}
	return '<code class="' . htmlsc($class) . '">' . $escaped_src . '</code>';
}

function plugin_code_x_convert()
{
	$args = func_get_args();
	$src = htmlsc(trim(array_pop($args)));
	$class = '';
	if ($add_class = array_shift($args)) {
		$class = $add_class;
	}
	return '<pre class="' . htmlsc($class) . '">' . $src . '</pre>';
}

code_xプラグインを直接使う例

#code_x{{
#include <stdio.h>

int main() {
  printf("Hello, World\n");
}
}}

他のプラグインの代わりにcode_xプラグインを使う例

geshiプラグイン geshi.inc.php の代わりに code_x プラグインを使う例:

plugin/geshi.inc.php:

<?php
require_once(PLUGIN_DIR . 'code_x.inc.php');

function plugin_geshi_convert()
{
	$args = func_get_args();
	if (func_num_args() >= 2) {
		return plugin_code_x_convert($args[0], $args[1]);
	}
	return plugin_code_x_convert($args[0]);
}

このファイルを plugin/geshi.inc.php として保存します。

本文中でgeshiプラグインを使うとcode_xプラグインでシンプルな表示になります。

#geshi(C){{
#include <stdio.h>

int main() {
  printf("Hello, World\n");
}
}}

code_xを代替にできるソースコードハイライトプラグイン

「複数行プラグイン」であり引数でソースコードを指定するプラグイン

define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0)

code_xを代替にできないソースコードハイライトプラグイン

複数行プラグインではないプラグイン




トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-21 (火) 23:42:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.303 sec.

SourceForge