From 09b8483ed67d3b85e983ef86c34260081975e1cb Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 2 May 2025 06:47:07 +0900 Subject: fix(blog/nuldoc): remove unnecessary "language" attribute --- .../trick-2025-most-ruby-on-ruby-award/index.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'vhosts/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html') diff --git a/vhosts/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html b/vhosts/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html index 1cbf5be2..7c7dda1e 100644 --- a/vhosts/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html +++ b/vhosts/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html @@ -132,7 +132,7 @@

表示している。つまり、Ruby プログラムにルビを振った作品である。例えば、先頭の2行目の require は次のような HTML で構成されている。

-
+
<ruby class="IDENTIFIER">require<rp class="">(</rp><rt class="">リクワイア</rt><rp class="">)</rp></ruby>

@@ -143,7 +143,7 @@

改めて quine について説明する。Quine とは、自身のソースコードを出力するようなプログラムである。Ruby では様々な方法で quine を書くことができるが、この作品で使っている基本形は以下のようなものである。

-
+
eval $s=<<'EOS'
 print "eval $s=<<'EOS'\n"
 print $s
@@ -162,7 +162,7 @@
               

トークナイズには Ruby 3.4 からデフォルトのパーサになった Prism を利用している。 Prism.lex() を使うとトークナイズができるので、トークンに付いているソースコード位置の情報を使いつつ元のソースコードを復元する。

-
+
y = 1                 # 現在の行
 x = 0                 # 現在の列
 Prism.lex($s).value[..-2].each {|t, *|
@@ -187,7 +187,7 @@
               

トークン種別に応じた色付けは CSS でおこなっている。出力する HTML のクラス名に Prism::Token#type を指定しておいて、index.html でそれぞれのクラスにスタイルを当てた。

-
+
    <style>
       /* ... */
 
@@ -212,7 +212,7 @@
               

それぞれの英単語や記号に対応した振り仮名のデータは、プログラム中に埋め込まれている。

-
+
def rt(t)
   r = {
     :"&&" => "1136",
@@ -241,7 +241,7 @@
               

このテーブルはサイズ制限を突破するために圧縮されており、kana() 関数で展開される。

-
+
def kana(s)
   s
     &.scan(/.{2}/)
@@ -252,7 +252,7 @@
               

例えば value に対応する振り仮名データ "48746992" であれば、次のような変換を経て振り仮名へと展開される。

-
+
  s
     # => "48746992"
     &.scan(/.{2}/)
-- 
cgit v1.2.3-70-g09d2