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  と言語表示されますが、色などの装飾は付きません。



prismjs-css-qooq-jettheme png[00]


 まだ、highlight.jsPrism.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プラグインとなります! 


 移行やテストのため 各記事を変更せずに Prism.js を適用させるには、 XMLファイルを以下のように修正!
継承されるため、 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 タグ指定にて記述!


 codeタグの class='cs' 指定を class='language-css' など 動的に変更するため、
</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 上記の問題で&#12289;&#12300;投稿日&#12301;と&#12300;更新日&#12301;が正しく表示されない場合あり -->
      
      
 <!-- <script type='text/javascript'>var jsdate = &quot;<data:post.dateHeader/>&quot;</script>	-->	<!-- 20210504 Comment out by Ataruchi&#65288;jsdateを使用しなくなったため&#65289;-->
	  <script type='text/javascript'>
		var pub_date2 = new Date(&quot;<data:post.timestampISO8601/>&quot;).toLocaleDateString();	<!-- 20210504 Add by Ataruchi for 投稿日    yyyy-m-d 形式 -->
        var up_date2 = new Date(&quot;<data:post.lastUpdatedISO8601/>&quot;).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, &quot;1:1&quot;)'/>    <!-- 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'>&#12288;&#9999;&#65039; <script>document.currentScript.parentNode.insertAdjacentHTML(&#39;beforeend&#39;, pub_date2);</script>&#12288;&#65288; 🔄 <script>document.currentScript.parentNode.insertAdjacentHTML(&#39;beforeend&#39;, up_date2);</script> &#65289;</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 =  "✏️&nbsp;" + p_date + " ";  // 末尾に漢字SPACE付加
    if (p_date !== u_date) {    // 投稿日と更新日が異なる場合
        ret_string += "🔄&nbsp;" + 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;
    }
}




Macブログ ランキング アイコン
最後まで読んでいただき、ありがとうございます。 また、お越しくださいませ。
// アタル
For follow LINE Reader Group!Subscribe to this blog on Feedly!

Next Post Previous Post
No Comment
Add Comment
comment url