Prism.js サンプルCSS ダウンロード ( QooQ & JetTheme 用 )
Blogger用サンプルの "prism.css" ファイルのダウンロード( QooQ用 ) Download Here
Blogger用サンプルの "prism.css" ファイルのダウンロード( JetTheme用 ) Download Here
上記リンクを右クリックして「リンク先のファイルをダウンロード」等を選択してダウンロード可能。
( "Google Chrome" ブラウザの場合、上記リンクを右クリックして「名前を付けてリンク先を保存」を選択してダウンロード )
(注) [ Unicode(UTF-8) 、改行コードは LF ] ファイル置き場として、筆者の旧ブログを利用
利用方法は、テキストエディタにて ファイル先頭に付与したコメントをお読み下さい!
なお、「プラグイン・ダウンロード条件」がほぼ同じでないと 表示が乱れるかもしれません。 その場合は、(ご自分で)適宜修正してください!
色を付けずにそのまま表示するには、 class="language-plaintext" をご利用ください!
Plain text と言語表示されますが、色などの装飾は付きません。
まだ、highlight.js や Prism.js などのシンタックスハイライトを利用されたことが無い方は、「after work lab」ブログの以下記事を先に読んでくださいね!
当記事からダウンロード可能な CSSファイルも、管理人の"あトん"さん(heavy-peatさん)が紹介されたBlogger用CSSファイルを改造したものです。(この記事の配色通り)
今回、筆者が Prism.js に組み込んだプラグインは
[1] line-numbers(行番号表示)
[2] show-invisibles(不可視文字の表示)
[3] show-language(言語表示)
[4] inline-color(スタイルシートの色を表示)
[5] command-line(プロンプトを含むコマンドライン表示)
[6] toolbar(show-languageやcopy-to-clipboard表示のために必要)
[7] copy-to-clipboard(テキストコピー)
[8] match-braces(一致する中括弧をハイライト)
以上、8プラグインとなります!
継承されるため、 preタグ(codeタグ) にて class指定が自動適用 されます。
そのため、 no-line-numbers を preタグのclass指定に追加すると、行番号を非表示に!
テストなら、一時的に <body>タグ にクラス付加しても良い!
【JetTheme】
<!-- 2021/12/05 Add [line-numbers match-braces rainbow-braces] class, for Prism.js initial value -->
<!-- <article class='mb-5' id='single-content'> -->
<article class='mb-5 line-numbers match-braces rainbow-braces' id='single-content'>
【QooQ】
<!-- 2021/11/17 Add [line-numbers match-braces rainbow-braces] class, for Prism.js initial value -->
<!-- <div id='single'> -->
<div id='single' class='line-numbers match-braces rainbow-braces'>
当記事はサンプルのため、上記指定が無い場合の pre code タグ指定にて記述!
</body> 直前に 以下のコードを挿入 → 表示は遅くなるが、テストとしては有効!
任意タグのclass名を簡単に変更でき、便利。 なお、classの追加や削除もできる!
<!-- prism.js 対応 -> class名の置換 start -->
<b:if cond='data:view.isSingleItem'>
<script type='text/javascript'>
//<![CDATA[
// <code class='xxxx'> -> <code class='language-xxxx'>
const elements1 = document.querySelectorAll('code.cs');
for (var i = 0, len = elements1.length; i < len; i++) {
elements1[i].classList.replace('cs', 'language-css');
}
const elements2 = document.querySelectorAll('code.html');
for (var i = 0, len = elements2.length; i < len; i++) {
elements2[i].classList.replace('html', 'language-html');
}
const elements3 = document.querySelectorAll('code.js');
for (var i = 0, len = elements3.length; i < len; i++) {
elements3[i].classList.replace('js', 'language-js');
}
const elements4 = document.querySelectorAll('code.vb');
for (var i = 0, len = elements4.length; i < len; i++) {
elements4[i].classList.replace('vb', 'language-vb');
}
const elements5 = document.querySelectorAll('code.applescript');
for (var i = 0, len = elements5.length; i < len; i++) {
elements5[i].classList.replace('applescript', 'language-applescript');
}
const elements6 = document.querySelectorAll('code.shell');
for (var i = 0, len = elements6.length; i < len; i++) {
elements6[i].classList.replace('shell', 'language-shell');
}
const elements7 = document.querySelectorAll('code.zsh');
for (var i = 0, len = elements7.length; i < len; i++) {
elements7[i].classList.replace('zsh', 'language-shell');
}
const elements8 = document.querySelectorAll('code.bash');
for (var i = 0, len = elements8.length; i < len; i++) {
elements8[i].classList.replace('bash', 'language-shell');
}
//]]>
</script>
</b:if>
<!-- prism.js 対応 -> class名の置換 end -->
Plain text class="language-plaintext" サンプル
Public Function FuncTest2(ByVal n As Long) As Long
Rem
Rem 【Excel関数 FACT(n) 】をVBAコードで実装(VBAでもC言語みたいに、再帰関数を記述できます!)
Rem 【ExcelVBA の便利な所】は、自分で作成した関数をワークシートから呼び出せる点ですね。
If n > 1 Then
FuncTest2 = n * FuncTest2(n - 1)
Else
FuncTest2 = 1 ' (n <= 1) に対応するコードを誤って記述すると、無限ループ
End If
End Function
VB, VBA class="language-vb" サンプル
Public Function FuncTest2(ByVal n As Long) As Long
Rem
Rem 【Excel関数 FACT(n) 】をVBAコードで実装(VBAでもC言語みたいに、再帰関数を記述できます!)
Rem 【ExcelVBA の便利な所】は、自分で作成した関数をワークシートから呼び出せる点ですね。
If n > 1 Then
FuncTest2 = n * FuncTest2(n - 1)
Else
FuncTest2 = 1 ' (n <= 1) に対応するコードを誤って記述すると、無限ループ
End If
End Function
HTML, XML class="language-html" サンプル
<article class='list-item'>
<!--<b:if cond='data:post.dateHeader'> --> <!-- 20210504 Comment out by Ataruchi data:post.dateHeader は同じ日に複数記事を投稿した場合 先頭の記事のみに日付が入ります 先頭以外の記事には日付が入りません -->
<b:if cond='data:post.timestampISO8601'> <!-- 20210504 Change by Ataruchi for bug-fix 上記の問題で、「投稿日」と「更新日」が正しく表示されない場合あり -->
<!-- <script type='text/javascript'>var jsdate = "<data:post.dateHeader/>"</script> --> <!-- 20210504 Comment out by Ataruchi(jsdateを使用しなくなったため)-->
<script type='text/javascript'>
var pub_date2 = new Date("<data:post.timestampISO8601/>").toLocaleDateString(); <!-- 20210504 Add by Ataruchi for 投稿日 yyyy-m-d 形式 -->
var up_date2 = new Date("<data:post.lastUpdatedISO8601/>").toLocaleDateString(); <!-- 20210504 Add by Ataruchi for 最終更新日 yyyy-m-d 形式 -->
</script>
</b:if>
<b:if cond='data:post.thumbnailUrl'>
<div class='list-item-img-box'>
<a expr:href='data:post.url'>
<img class='list-item-img' expr:src='resizeImage(data:post.firstImageUrl, 240, "1:1")'/> <!-- 20210429 by Ataruchi 幅240px, Change from src='data:post.thumbnailUrl' -->
</a>
</div>
</b:if>
<div class='list-item-inner'>
<!-- <p class='list-item-date'><script type='text/javascript'>document.write(jsdate)</script></p> --> <!-- 20210504 Change by Ataruchi for 最終更新日 yyyy-m-d 形式 -->
<p class='list-item-date'> ✏️ <script>document.currentScript.parentNode.insertAdjacentHTML('beforeend', pub_date2);</script> ( 🔄 <script>document.currentScript.parentNode.insertAdjacentHTML('beforeend', up_date2);</script> )</p>
CSS class="language-css" サンプル
/*-----------------------------------------------------------------------------
2021-04-25 下線 + 蛍光線 ( 0 取消線、9 上線 )
-----------------------------------------------------------------------------*/
.waku {
border: 1px solid; /* by selected color */
padding: 0.2em;
margin: 0.1em;
}
.line0 { text-decoration: line-through; }
.line1 { border-bottom: solid; /*border-color: #000000;*/ border-width: 1px; }
.line2 { border-bottom: dotted; /*border-color: #000000;*/ border-width: 1px; }
.line3 { border-bottom: double; /*border-color: #000000;*/ border-width: 1px; }
.line4 { border-bottom: dashed; /*border-color: #000000;*/ border-width: 1px; }
.line5 { text-decoration: wavy; }
.line8 { text-decoration: underline; }
.line9 { text-decoration: overline; }
.under1 { background: linear-gradient(transparent 75%, #ff9393 75%); font-weight:bold; } /* 蛍光 赤 */
.under2 { background: linear-gradient(transparent 75%, #ffdc00 75%); font-weight:bold; } /* 蛍光 黄 */
.under3 { background: linear-gradient(transparent 75%, #7fff7f 75%); font-weight:bold; } /* 蛍光 緑 */
.under4 { background: linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; } /* オレンジ */
.under5 { background: linear-gradient(transparent 75%, #c1ffff 75%); font-weight:bold; } /* 蛍光 水色 */
.under9 {
font-weight:bold;
padding-bottom: 1px;
border-bottom: 3px double #ccc; /* グレー */
color: #444; /* 薄めの 黒 */
}
JavaScript class="language-js" サンプル
const date_options = { //変換形式の指定パラメータ
year : "numeric", //年の形式 (この行削除で年を非表示)
month : "long", //月の形式
day : "numeric", //日の形式
weekday : "short" //曜日の形式 (この行削除で曜日非表示)
};
function convDateFormat(arg_date) {
let ret_date = new Date("" + arg_date + "").toLocaleDateString("ja-jp", date_options);
if (ret_date.toString() === "Invalid Date") {
return "Invalid Date";
} else {
return ret_date;
}
}
function convDateFormat2(pub_date, up_date) {
let p_date = new Date("" + pub_date + "").toLocaleDateString("ja-jp", date_options);
let u_date = new Date("" + up_date + "").toLocaleDateString("ja-jp", date_options);
if ((p_date.toString() === "Invalid Date") || (u_date.toString() === "Invalid Date")) {
return "Invalid Date";
}
//先頭の絵文字を「SVG文字列」と置き換えれば、表示されるはず?
let ret_string = "✏️ " + p_date + " "; // 末尾に漢字SPACE付加
if (p_date !== u_date) { // 投稿日と更新日が異なる場合
ret_string += "🔄 " + u_date + " "; // 末尾に漢字SPACE付加
}
return ret_string;
}
Mac-Terminal class="language-shell" サンプル
/Users/wito/getUtiFromExt xlsm
org.openxmlformats.spreadsheetml.sheet.macroenabled
/Users/wito/getUtiFromExt swift
public.swift-source
/Users/wito/getUtiFromMime 'application/pdf'
com.adobe.pdf
Mac-AppleScript class="language-applescript" サンプル
-- Copyright 2021- ataruchi. [ https://twitter.com/ataruchi ]
-- 拡張子 or MIME から、UTI (Uniform Type Identifier) を取得 with Cocoa AppleScript (with ASOC)
-- 新 "UniformTypeIdentifiers" framework 利用のため、macOS11[Big Sur]以降 限定
use AppleScript version "2.7" --But macOS11〜 for use new "UniformTypeIdentifiers" framework
use scripting additions
use framework "Foundation"
use framework "UniformTypeIdentifiers" --New framework for UTI, macOS11.0+ [Big Sur or later]
property UTType : a reference to current application's UTType --new Class, macOS11.0+
--property NSString : a reference to current application's NSString
set theResult to getUtiFromExt("xlsm") --マクロ付きExcel、拡張子
set theResult to theResult & return --改行コードを挿入
set theResult to (theResult & getUtiFromMime("application/pdf")) --pdf、MIME
return theResult
on getUtiFromExt(theExt) --macOS11 or later only, for use "UniformTypeIdentifiers" framework
set theUTType to UTType's typeWithFilenameExtension:theExt --create UTTyp's object
if theUTType = (missing value) then return ("fail to search UTI: " & theExt)
return (theUTType's identifier as string)
end getUtiFromExt
on getUtiFromMime(theMime) --macOS11 or later only, for use "UniformTypeIdentifiers" framework
--set theMimeStr to NSString's stringWithString:theMime --create NSString's object
--set theUTType to UTType's typeWithMIMEType:theMimeStr --create UTTyp's object
set theUTType to UTType's typeWithMIMEType:theMime --create UTTyp's object
if theUTType = (missing value) then return ("fail to search UTI: " & theMime)
return (theUTType's identifier as string)
end getUtiFromMime
Apple Swift class="language-swift" サンプル
//
// main.swift
// getUtiFromExt
//
// Created by ataruchi on 2021/11/07.
//
import Foundation
import UniformTypeIdentifiers //New framework for UTI, macOS11.0+ [Big Sur or later]
if let argument = CommandLine.arguments.dropFirst().first {
let ext: String = argument
if let str = UTType.init(filenameExtension: ext) {
print(str)
}
else {
print("fail to search UTI: \(argument)")
}
}
Apple Objective-C class="language-objc" サンプル
//
// main.m
// getUtiFromExtObjC
//
// Created by ataruchi on 2021/11/08.
//
//「ターミナル.app」でのコンパイルは、以下で可能!
//gcc -o suti main.m -framework Foundation -framework UniformTypeIdentifiers
#import <Foundation/Foundation.h>
#import <UniformTypeIdentifiers/UniformTypeIdentifiers.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
if (argc < 2) {
printf("No parameter.\n"); //引数なし
return 0;
}
// [arguments objectAtIndex:0] はコマンド名で、objectAtIndex:1 以降が引数
NSArray *arguments = [[NSProcessInfo processInfo] arguments];
NSString *ext = [NSString stringWithString:[arguments objectAtIndex:1]];
NSString *uti;
if ((uti = [[UTType typeWithFilenameExtension:ext] identifier])) {
printf("%s\n",[uti UTF8String]); //UTI取得 成功
}
else {
printf("fail to search UTI: %s\n",[ext UTF8String]); //UTI取得 失敗
}
return 0;
}
}
最後まで読んでいただき、ありがとうございます。 また、お越しくださいませ。
// アタル