npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@mogamoga1024/typing-jp

v1.2.0

Published

タイピングゲームのローマ字入力を判定するライブラリ

Downloads

115

Readme

typing-jp

これ is 何

日本語のタイピングゲームの入力判定のためのライブラリです。
sya, sha, sixyaのように複数あるローマ字入力にも対応しています。

サンプル

タイピングゲーム
プログラム

ダウンロード方法

ファイルが欲しい場合

これを使ってください。

CDNで使いたい場合

<script src="https://cdn.jsdelivr.net/npm/@mogamoga1024/typing-jp@latest/dist/cdn/typing-jp.js"></script>

npmで使いたい場合

npm i @mogamoga1024/typing-jp
import { TypingText } from "@mogamoga1024/typing-jp";

ざっくりと説明

サンプルのプログラムを読んだ方が深く理解できると思いますが、ざっくりと説明します。

1. まずはTypingTextオブジェクトを作る

引数はひらがな、カタカナ、英語、数字などの変換せずに入力できる文字である必要があります。

const typingText = new TypingText("わたしは「こんにちは」といった。");

2. 後は各自お好きなように

キーの入力情報はinputKeyメソッドを利用して更新します。

typingText.inputKey(keyboardEvent.key);
// 戻り値は
// "unmatch"    入力ミス
// "incomplete" 入力OKだが文章は未完成
// "complete"   入力OKで文章も完成した

残りのローマ字はremainingRomanプロパティで分かります。

console.log(typingText.remainingRoman); // watasiha[konnnitiha]toitta.

プロパティ一覧

// テキスト(ひらがな)
console.log(typingText.text); // わたしは「こんにちは」といった。

// 完成したテキスト(ひらがな)
console.log(typingText.completedText); // わたし

// 残りのテキスト(ひらがな)
console.log(typingText.remainingText); // は「こんにちは」といった。

// ローマ字
console.log(typingText.roman); // watasiha[konnnitiha]toitta.

// 完成したローマ字
console.log(typingText.completedRoman); // watasih

// 残りのローマ字
console.log(typingText.remainingRoman); // a[konnnitiha]toitta.

ShiftやF11のようなキーとして判定したくない入力はTypingText.isValidInputKeyメソッドで弾けます。
静的メソッドであることに注意してください。

if (TypingText.isValidInputKey(keyboardEvent.key) === false) {
    return;
}

リファレンス:TypingTextクラス

この眠くなるようなリファレンスを読むよりもサンプルのプログラムを読んだ方が速く理解できると思います。

TypingText(text[, ignoreSpace, priority])

コンストラクタ

|名称|型|説明| |-|-|-| |text|string|タイピング対象のテキスト「ひらがな、カタカナ、数字、英語、ASCIIで使われている記号」のみが使われている必要があります。(半角・全角は区別しない)| |ignoreSpace|boolean(省略可)|trueの場合、textから半角スペース、全角スペースが排除されます。falseの場合は何もしません。デフォルトはtrueです。| |priority|object(省略可)|textをローマ字に変換する時の優先順位を指定するオブジェクトです。詳しくは備考を参照してください。|

備考1

  • textが空と見なされた場合、EmptyTextErrorが投げられます。
  • textがローマ字で表現できない場合、CharCreationErrorが投げられます。
  • 第2引数がobjectの場合、priorityと解釈されます。

備考2:priorityってなんやねん

こういうことです。

console.log((new TypingText("じしん")).roman); // zisinn

const priority = {
    "じ": ["j"],
    "し": ["c"],
    "ん": ["x"],
};

console.log((new TypingText("じしん", priority)).roman); // jicixn

priorityのkeyはchar_factory.js内のswitchのcase句で定義されている文字列である必要があります。 詳しくはchar_factory.jsを参照してください。

static isValidInputKey(key)

ローマ字として有効な入力かどうかを判定します。
静的メソッドであることに注意してください。

具体例をあげると「Shift」「Ctrl」などの入力はfalse、「a」「7」などの入力はtrueを返します。

引数

|名称|型|説明| |-|-|-| |key|string|入力されたkeyKeyboardEvent:keyを想定|

戻り値

ローマ字として有効な入力の場合はtrue、それ以外はfalse

inputKey(key[, isCapsLock])

タイピング対象のテキストにkeyを反映させた後、その結果を返します。

引数

|名称|型|説明| |-|-|-| |key|string|入力されたkeyKeyboardEvent:keyを想定| |isCapsLock|boolean(省略可)|trueの場合、CapsLockがONであると判断します。falseの場合、CapsLockがOFFであると判断します。詳しくは備考を見てください。デフォルトはfalseです。|

戻り値

以下のいずれかの文字列

|値|説明| |-|-| |"unmatch"|入力ミス| |"incomplete"|入力OKだが文章は未完成| |"complete"|入力OKで文章も完成した|

備考1

"complete"が返された状態で更にinputKeyメソッドを呼び出すとNoRemainingInputErrorが投げられます。

備考2:isCapsLockってなんやねん

大雑把に説明すると、

isCapsLockがtrueの場合
「あいうえお(aiueo)」というテキストに「AIUEO」と入力しても問題ないと見なします。
isCapsLockがfalseの場合
「あいうえお(aiueo)」というテキストに「AIUEO」と入力した場合、ローマ字として不適と見なします。(実際のキーボードの挙動に合わせている。)

意味わかんねーよ。的な方はfalse(デフォルト値)にしておけば何ら問題ありません。

undo()

入力されたkeyをひとつ取り消します。
未入力状態でundoした場合は何も起こりません。

引数

なし

戻り値

undefined

text

テキストを返すプロパティです。
カタカナはひらがなに、全角英数字は半角英数字に変換されています。

completedText

完成している箇所のテキストを返すプロパティです。
カタカナはひらがなに、全角英数字は半角英数字に変換されています。

remainingText

未完成の箇所のテキストを返すプロパティです。
カタカナはひらがなに、全角英数字は半角英数字に変換されています。

roman

ローマ字を返すプロパティです。

completedRoman

完成している箇所のローマ字を返すプロパティです。

remainingRoman

未完成の箇所のローマ字を返すプロパティです。

前世

https://github.com/mogamoga1024/Typing

license

MIT or WTFPL or くいなちゃんライセンス