rubygana

漢字かんじにルビ(ふりがな)をけちゃうぞ。

ルビ族のルビ族によるルビ族のためのコマンドルビ族女帝にあたいはなるっ!

ルビぞく以外いがいもどうぞ!

特徴とくちょう(rubygana 0.8.1)

  1. HTMLのルビ

    <ruby><rb>蝙蝠</rb><rt>こうもり</rt></ruby>

  2. テキスト文書ぶんしょのルビ

    蝙蝠(こうもり)

  3. ルビずみHTMLに学年がくねんクラスめい挿入そうにゅう

    <ruby class="学年3 学年1"><rb>落下</rb><rt>らっか</rt></ruby>

  4. マークダウンのHTML5
  5. テキスト文書ぶんしょのHTML5

ルビの調整ちょうせい


インストール

なんとかしてgitnpmコマンドの環境かんきょうれたあと、こうする。

# 任意のディレクトリで、ダウンロード
git clone https://github.com/big-stream/rubygana.git

# インストール(依存ライブラリのダウンロード)
cd rubygana/
npm install --global

# もうrubyganaコマンドが使えるぞ
rubygana --help

依存いぞんライブラリに感謝かんしゃ

オープンソース

MIT License
© 2018 ころん:すとりーむ


使用しようほう

rubygana [オプション...] [ファイル]

ひとつのファイル指定してい標準ひょうじゅん入力にゅうりょく必要ひつようで、結果けっかはすべて標準ひょうじゅん出力しゅつりょく

echo '猫と蝙蝠' | rubygana

# 出力
猫(ねこ)と蝙蝠(こうもり)

ルビさい、kuromoji.jsのビルドに1、2びょうかかります。


オプション

  1. HTMLのルビ: --html

    rubygana [-HKCy] [-g 学年] [-G 粒度]
             [-s セレクタ] [-n 除外セレクタ] [-N 除外要素]
             [-c [CSS]] [-T タイトル] [--ruby-size [フォント倍率]]
             [--ruby [フレーズ:]単語:ルビ]
             [--ruby-re 正規表現:単語:ルビ] [ファイル]
  2. テキスト文書ぶんしょのルビ: --text

    rubygana [-tKC] [-b 括弧] [-g 学年] [-G 粒度]
             [--ruby [フレーズ:]単語:ルビ]
             [--ruby-re 正規表現:単語:ルビ] [ファイル]
  3. 学年がくねんクラスめい付加ふか: --add-class

    rubygana -a [-y] [クラス頭語] [-c [CSS]] [--switch]
             [-s セレクタ] [-n 除外セレクタ] [ファイル]
  4. マークダウンのHTML5: --md-html

    rubygana -m [-c [CSS]] [-T タイトル] [-L 見出し] [ファイル]
  5. テキスト文書ぶんしょのHTML5: --text-html

    rubygana -w [-c [CSS]] [-T タイトル] [-L 見出し] [ファイル]

そのオプション(引数ひきすうなし):

-A, --sample-text   サンプルテキスト出力  
-B, --sample-html   サンプルHTML出力  
-M, --sample-md     サンプルマークダウン出力
-d, --debug         デバッグ用  
-h, --help          ヘルプ  
--readme-md        詳細ヘルプ(このマークダウン)  
--readme-html    詳細ヘルプ(HTML)  
-v, --verbose       デバッグ情報を増やす  
-V, --version       バージョン情報  
-い, --依存          依存ライブラリ確認  
-ら, --ライセンス     ライセンス情報  
-☺ , --感謝

コマンドグループ:

--html, -H

HTMLあつかいしてルビ冒頭ぼうとうにDOCTYPEやxml宣言せんげんがあれば自動じどう判別はんべつのため、省略しょうりゃく

# DOCTYPEやxml宣言がないのにHTML扱いしたい場合
echo '蝙蝠なの?' | rubygana -H --only-body

# 出力
<ruby><rb>蝙蝠</rb><rt>こうもり</rt></ruby>なの?

--text, -t

テキストあつかいしてルビ

# DOCTYPEやxml宣言あるのにテキスト扱いしたい場合
echo '<!DOCTYPE html><html><body>蝙蝠なの?</body></html>' | rubygana -t

# 出力
<!DOCTYPE html><html><body>蝙蝠(こうもり)なの?</body></html>

--add-class, -a ['クラス頭語']

漢字かんじ学習がくしゅう学年がくねんをruby要素ようそのクラスめい付加ふか。すでにruby要素ようそがあるHTMLにたいしてこの動作どうさだけをおこない、あらたなルビはしない。学年がくねんべつ色分いろわけしたいとか。
デフォルト: 学年

# 「落」は3年生、「下」は1年生なので
echo '落下' | rubygana -H | rubygana -a --only-body

# 出力
<ruby class="学年3 学年1"><rb>落下</rb><rt>らっか</rt></ruby>

# 中学生以降は「学年7」、常用漢字以外の漢字は「学年8」

--md-html, -m

ルビはせず、たんにマークダウンをHTML5文書ぶんしょ変換へんかん。h1要素ようそになるものをタイトル(title要素ようそ)にする。変更へんこう--headline--title

--text-html, -w

ルビはせず、たんにテキスト文書ぶんしょをHTML5文書ぶんしょ変換へんかん。テキストはぎょうごとにp要素ようそれ(空行くうぎょう対象たいしょうがい)、冒頭ぼうとうぎょう見出みいだし(h1要素ようそ)とタイトル(title要素ようそ)にする。変更へんこう--headline--title


--sample-text, -A

練習れんしゅうようサンプルとして、ルビのない下記かき3ぎょうテキストを標準ひょうじゅん出力しゅつりょく

不思議の国のアリス
「猫が蝙蝠を食べるの? 蝙蝠が猫を食うの?」
アリスは白ウサギの穴に落下しながら呟いた。すると突然…

--sample-html, -B

練習れんしゅうようサンプルとして、ルビのないHTMLを標準ひょうじゅん出力しゅつりょく

--sample-md, -M

練習れんしゅうようサンプルとして、ルビのないマークダウンを標準ひょうじゅん出力しゅつりょく


ルビの調整ちょうせい:

--ruby '[フレーズ:]単語:ルビ'

ルビを指定していしたいなら。フレーズ(改行かいぎょうなし)で、フレーズない単語たんごのみに作用さよう複数ふくすうかい使用しよう。マッチした単語たんごには--gradeなど自動じどうルビようオプションの影響えいきょうなし。フレーズに:がふくまれるならわりに--ruby-comma使用しよう

# 自動のルビが不味いときや、工夫したいときに使う。
echo '反復横飛びの無限反復' | rubygana -r '無限反復:反復:ループ'

# 出力
反復(はんぷく)横(よこ)飛(と)びの無限(むげん)反復(ループ)


# --rubyはいくつも使用できるが、同じフレーズ・単語は先のものが優先
echo 猫と蝙蝠 | rubygana -r '猫:cat' -r '猫:きゃっと' -r '蝙蝠:bat'

# 出力
猫(cat)と蝙蝠(bat)


# --htmlでも
echo '猫の一撃をくらった' | rubygana --html -r '猫の一撃:ネコパーンチ' --only-body

# 出力
<ruby><rb>猫の一撃</rb><rt>ネコパーンチ</rt></ruby>をくらった

--ruby-comma '[フレーズ,]単語,ルビ'

--rubyわりに使つかう。ちがてん引数ひきすうが,区切くぎり。

echo 'ねえ、:コマンドって知ってる?' | rubygana --ruby-comma ':,コロン'

# 出力
ねえ、:(コロン)コマンドって知(し)ってる?

--ruby-re '正規表現:単語:ルビ'

正規せいき表現ひょうげん(改行かいぎょうなし、:を使つかわないこと)をもちいたルビ指定してい。マッチした表現ひょうげんちゅう単語たんごのみに作用さよう複数ふくすうかい使用しよう。マッチした単語たんごには--gradeなど自動じどうルビようオプションの影響えいきょうなし。正規せいき表現ひょうげんはJavaScriptのRegExpで評価ひょうか

echo '1行2行、一行は四行も空行にした' | rubygana --ruby-re '[0-9四]行:行:ぎょう' --ruby '空行:くうぎょう'

# 出力
1行(ぎょう)2行(ぎょう)、一行(いっこう)は四(よん)行(ぎょう)も空行(くうぎょう)にした


# マッチした表現に単語が複数回現れる場合、一つ目にのみルビが付く
echo '激怒激怒' | rubygana --ruby-re '(激怒)+:激怒:プンプン'

# 出力
激怒(プンプン)激怒(げきど)


# 先読み表現なども使える
echo '激怒プンプン丸が激怒' | rubygana --ruby-re '激怒(?=プンプン丸):激怒:げきおこ'

# 出力
激怒(げきおこ)プンプン丸(まる)が激怒(げきど)

--grade, -g '学年'

この学年がくねんまでの漢字かんじはルビしない。0-7を指定してい。2なら3年生ねんせい以降いこうの、6なら中学校ちゅうがっこう(常用漢字じょうようかんじのこり)以降いこうの、7で常用漢字じょうようかんじ以外いがい漢字かんじをルビ
デフォルト: 0

# 常用漢字以外だけルビ化なら7
rubygana --sample-text | rubygana -g 7

# 出力
不思議の国のアリス
「猫が蝙蝠(こうもり)を食べるの? 蝙蝠(こうもり)が猫を食うの?」
アリスは白ウサギの穴に落下しながら呟(つぶや)いた。すると突然…

学年がくねん判断はんだんは、文科省もんかしょう学年がくねんべつ漢字かんじ配当はいとうひょう文化庁ぶんかちょう常用漢字じょうようかんじひょうによる。

--granularity, -G '粒度'

かなじり単語たんごのルビのかた調整ちょうせい。0-2を指定していたとえば「おり」は1単語たんごであり、
0=> お気(き)に入(い)り
1=> お気に入(きにい)り
2=> お気に入り(おきにいり)
デフォルト: 0

echo 'お気に入り' | rubygana --html -G 2 --only-body

# 出力
<ruby><rb>お気に入り</rb><rt>おきにいり</rt></ruby>

--brackets, -b '括弧'

括弧かっこ変更へんこうしたいなら。れい '[]'
デフォルト: ()

# 指定文字が奇数個なら、左側に一つ多く配分
echo '蝙蝠' | rubygana -b '(=)'

# 出力
蝙蝠(=こうもり)

--katakana, -K

カタカナのルビに(デフォルトはひらがな)

echo 'アリスはそう呟いた。すると突然…' | rubygana --katakana
=> アリスはそう呟(ツブヤ)いた。すると突然(トツゼン)…

HTMLの調整ちょうせい:

セレクタと除外じょがいセレクタはcheerioによる。

--only-body, -y

body要素ようそ中身なかみだけ出力しゅつりょく(bodyタグふくまず)(--comment出力しゅつりょく)。以下いかれいでも多用たよう

--selector, -s 'セレクタ'

この要素ようそ子孫しそんをルビ。これに該当がいとうした要素ようそ(のうち)そのものを--not-selectorなら除外じょがいできるが、--ng-elementsでは除外じょがいできない。
れい: #id, p.クラス, ol>li:nth-child(1)
デフォルト: body

# ol要素直下の1番目li要素と、文クラスのp要素だけルビ化
rubygana --sample-html | rubygana -s 'ol>li:nth-child(1), p.文'


# 「要素>*」にすると、要素直下の漢字は対象にならない
echo '<p>猫と<span>蝙蝠</span></p>' | rubygana --html -s 'p>*' --only-body

# 出力
<p>猫と<span><ruby><rb>蝙蝠</rb><rt>こうもり</rt></ruby></span></p>

--not-selector, -n '除外セレクタ'

-sそのものから除外じょがい(子孫しそん除外じょがいするのではない)。-sのデフォルトはbodyなので、-s一緒いっしょ使つかう。
れい: li.クラス
デフォルト(-hとき): ruby,script,style,code,pre,samp,blockquote
デフォルト(-aとき): から

# p要素をルビ化したいが、そのうち無視クラスを除外したいとき
echo '<p class="無視">猫</p><p>蝙蝠</p>' | rubygana --html -s 'p' -n '.無視' --only-body

# 出力
<p class="無視">猫</p><p><ruby><rb>蝙蝠</rb><rt>こうもり</rt></ruby></p>


# 該当した`-s`そのもの(と子孫)を除外できるが、該当しなかった`-s`の子孫は除外できない
echo '<div><p>猫</p></div><p>蝙蝠</p>' | rubygana --html -s 'body>*' -n 'p' --only-body

# 出力
<div><p><ruby><rb>猫</rb><rt>ねこ</rt></ruby></p></div><p>蝙蝠</p>

--ng-elements, -N '除外要素'

-s子孫しそんから除外じょがいする要素ようそ|区切くぎりで。-sそのものから除外じょがいするには、--not-selector
デフォルト: ruby|script|style|code|pre|samp|blockquote

# 絶対に除外したい要素で使う。(最低限scriptとstyleは除外推奨)
echo '<p>猫と<a>蝙蝠</a></p>' | rubygana --html -N 'a' --only-body

# 出力
<p><ruby><rb>猫</rb><rt>ねこ</rt></ruby>と<a>蝙蝠</a></p>

--css, -c ['CSS']

head要素ようそ末尾まつびにstyle要素ようそ追加ついか。そのCSSを指定してい引数ひきすう省略しょうりゃく下記かきデフォルトCSS。

--ruby-size [フォント倍率]

head要素ようそ末尾まつび下記かきstyle要素ようそ追加ついか。ルビのフォントサイズ(漢字かんじたいする倍率ばいりつ): 0.1-2.0(デフォルト0.5)

--use-rp

rp要素ようそ(ルビ対応たいおうブラウザのための括弧かっこき)を使用しようする。

echo 猫なの? | rubygana -H --use-rp --only-body

 # 出力
<ruby><rb>猫</rb><rp>(</rp><rt>ねこ</rt><rp>)</rp></ruby>なの?

--title, -T 'タイトル'

title要素ようそ内容ないよう

--headline, -L '見出し'

h1要素ようそ内容ないよう--text-html--md-html使つかう。

--switch

ページトップにルビの学年がくねんスイッチを追加ついか漢字かんじ学習がくしゅう学年がくねんごとにルビをオン・オフ可能かのう


その:

--comment, -C

rubyganaコマンド実行じっこうかんするコメントを末尾まつび追加ついか

--htmlのとき: body要素ようそ末尾まつび改行かいぎょう下記かき4ぎょう挿入そうにゅう。スタイルがdisplay:noneのため、ソースからなら確認かくにんできるコメント。

<!-- この文書のルビ振りは下記コマンド(rubygana VERSION)を用いました。 -->
<pre style="display:none;"><code>
ここに実際に実行したコマンドオプション・引数が入る
</code></pre>

--textのとき: 文書ぶんしょ末尾まつび改行かいぎょう下記かき2ぎょう追記ついき

# この文書のルビ振りは下記コマンド(rubygana VERSION)を用いました。
# ここに実際に実行したコマンドオプション・引数が入る

--debug, -d

開発かいはつようオプション。kuromojiによる解析かいせき詳細しょうさい(形態素けいたいそ)などが確認かくにんできる。-ddでオプション引数ひきすう確認かくにんだけして終了しゅうりょう

--verbose, -v

開発かいはつようオプション。debug情報じょうほうやす。


1ぎょうルビぞく

# ダウンロードし、ルビ化し、firefoxで開く
page='ja.wikipedia.org/wiki/不思議の国のアリス'; wget --page-requisites --convert-links "https://$page" && rubygana $page > $page.ruby.html; firefox $page.ruby.html &


# 入力の文字コードはUTF-8のみ受付:
# 違うならiconvコマンドなどで変換してから
cat shift-jis.txt | iconv -f 'shift-jis' -t 'utf8' | rubygana
# (標準出力の文字コードは端末の設定で変更)


# サンプルテキストを出力し、それをHTML化し、次にh1だけカタカナでルビ振りし、そしてp要素を2年生超でルビ振りし、
# そして学年クラス名を付加して中学生以上常用漢字ルビは青色で常用漢字以外ルビは赤色スタイルにして、
# それをalice.htmlとして保存し、それをFirefoxで開く。
rubygana -A | rubygana -w | rubygana -HKs 'h1' | rubygana -s 'p' -g 2 | rubygana -ac 'ruby[class$="7"]>rt{color:blue;}ruby[class$="8"]>rt{color:red;}' > alice.html; firefox alice.html &


rubygana --readme-html