Download the PHP package esperecyan/dictionary-php without Composer
On this page you can find all versions of the php package esperecyan/dictionary-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download esperecyan/dictionary-php
More information about esperecyan/dictionary-php
Files in esperecyan/dictionary-php
Package dictionary-php
Short Description 従来の辞書形式と「主に単語で答えるゲームにおける汎用的な辞書形式」の構文解析、直列化を行う API を提供します。
License MPL-2.0
Homepage https://github.com/esperecyan/dictionary-php
Informations about the package dictionary-php
主に単語で答えるゲームにおける辞書の構文解析・直列化を行うPHPライブラリ
次のゲームの辞書を構文解析し、相互に変換できるようにする API を提供します。
- 主に単語で答えるゲームにおける汎用的な辞書形式 (以下、汎用辞書形式)
- キャッチフィーリング、Drawing Catch (*.cfq)
- きゃっちま (*.dat) ※暗号化後のファイルは扱えません
- Inteligenceω (.txt, .zip) ※暗号化後のファイルは扱えません
- ピクトセンス
Inteligenceωの辞書で画像・音声ファイルへのパスが含まれる場合、 そのファイルが含まれるフォルダをdatファイルと一緒にアーカイブする必要があります。 同名のファイルが含まれる辞書 (同名のファイルを別々のフォルダに分けて格納したアーカイブ) は取り扱えません。
例
上の例の出力は以下となります。
インストール
Composer のインストール方法については、Composer のグローバルインストール - Qiitaなどをご覧ください。
要件
- PHP 7.1 以上
- php-mbstring (mbstring拡張モジュール)
- exif拡張モジュール
- php-intl (Intl拡張モジュール)
- php-gd (GD拡張モジュール)
- php-pecl-zip (Zip拡張モジュール)
パブリックAPI
class esperecyan\dictionary_php\Parser(string $from = null, string $filename = null, string $title = null)
構文解析器。
string $from = null
変換元の辞書形式。キャッチフィーリング
きゃっちま
Inteligenceω クイズ
Inteligenceω しりとり
ピクトセンス
汎用辞書
のいずれか。
指定されていないか間違った値が指定されていれば、$filename
から判断します。
その場合のInteligenceωについては、コメント行、空行を除く最初の行が Q,
で始まるか否かで、クイズとしりとりを判別します。
string $filename = null
変換元のファイル名。
string $title = null
辞書のタイトル。
指定されていなければ、$filename
から判断します。
汎用辞書形式で @title
フィールドが存在する場合、この指定は無視されます。
Dictionary esperecyan\dictionary_php\Parser#parse(SplFileInfo $file, bool $header = null, string[] $filenames = [])
SplFileInfo $file
変換元のファイルをSplFileInfo、またはその派生クラスで与えます。
bool $header = null
変換元のファイルが 汎用辞書
の場合、ヘッダ行が存在すれば true
、存在しなければ false
、不明なら null
を指定します。
string[] $filenames = []
変換元のファイルが 汎用辞書
の場合、$file
にZIPファイルを与える代わりに、$file
にCSVファイルを与えこの引数にファイル名のリストを与えることで、
「画像・音声・動画ファイルを含む場合のファイル形式」の構文解析できます。
例外 esperecyan\dictionary_php\exception\SyntaxException
SyntaxException#getMessage() から、ユーザーに示すエラーメッセージを取得できます。
$from |
説明・例 |
---|---|
共通 | ファイル形式、符号化方式が間違っている。 |
共通 | 1つのフィールドの文字数が多過ぎる。 |
共通 (汎用辞書 以外) |
汎用辞書 に直列化可能なお題が一つも存在しなかった。 |
汎用辞書 |
辞書全体の容量が大き過ぎる。 |
汎用辞書 |
空のCSVファイルである。 |
汎用辞書 |
ヘッダ行に text というフィールドが存在しない。 |
汎用辞書 |
ヘッダ行を超えるフィールド数の行が存在する。 |
汎用辞書 |
textフィールドが存在しない行がある。 |
汎用辞書 |
画像ファイルの容量が大き過ぎる。 |
汎用辞書 |
音声ファイルの容量が大き過ぎる。 |
汎用辞書 |
動画ファイルの容量が大き過ぎる。 |
汎用辞書 |
アーカイブに dictionary.csv という名前のファイルが含まれていない。 |
汎用辞書 |
アーカイブに含まれるファイルの名前が妥当でない。 |
汎用辞書 |
アーカイブに含まれるファイルの形式が間違っている。 |
汎用辞書 |
アーカイブに含まれるファイルの拡張子が正しくない。 |
汎用辞書 |
アーカイブに含まれるファイルの数が多過ぎる。 |
汎用辞書 ピクトセンス |
符号化方式の検出に失敗した。 |
キャッチフィーリング |
空行がある。 |
きゃっちま |
コメントの前にスペースがある。 |
Inteligenceω しりとり |
表示名の直後に難易度 (数値) が存在する。 |
Inteligenceω しりとり |
読み方にひらがな以外が含まれている。 |
Inteligenceω しりとり |
読み方が設定されていないお題がある。 |
Inteligenceω クイズ |
出題の種類が数値になっていない。 |
Inteligenceω クイズ |
解答の種類が数値になっていない。 |
Inteligenceω クイズ |
画像クイズ、音声クイズでファイルが指定されていない。 |
Inteligenceω クイズ |
問題オプションの値が数値になっていない。 |
Inteligenceω クイズ |
選択問題で \seikai の前に選択肢が存在しない。 |
Inteligenceω クイズ |
解答オプション \bonus の値が数値になっていない。 |
Inteligenceω クイズ |
解答オプションの前に解答本体が存在しない。 |
Inteligenceω クイズ |
記述問題で、|| [[ の前に解答本体が存在しない。 |
Inteligenceω クイズ |
選択問題で \seikai が設定されていない。 |
Inteligenceω クイズ |
問題行に対応する解答行が存在しない。 |
Inteligenceω クイズ |
解答行より前に問題行が存在する。 |
Inteligenceω クイズ |
コメント、問題、解答のいずれにも該当しない行が存在する。 |
Inteligenceω クイズ |
アーカイブ中に同名のファイルが含まれている。 |
Inteligenceω クイズ |
アーカイブ中に、拡張子が .txt のファイルが2つ以上含まれている。 |
Inteligenceω クイズ |
アーカイブ中に、拡張子が .txt のファイル含まれていない。 |
Inteligenceω クイズ |
アーカイブに含まれるファイルの形式が、汎用辞書と互換性がない。 |
Inteligenceω クイズ |
アーカイブに含まれるファイルの拡張子が、汎用辞書と互換性がない。 |
Inteligenceω クイズ |
アーカイブに含まれるファイルの数が多過ぎる。 |
ピクトセンス |
ワードにひらがな以外が含まれている。 |
ピクトセンス |
1ワードの文字数が多過ぎる。 |
ピクトセンス |
辞書のワード数が少な過ぎる、または多過ぎる。 |
ピクトセンス |
辞書全体の文字数が多過ぎる。 |
ロギング
Psr\Log\LoggerAwareInterfaceを実装しています。
$from |
ログレベル | 説明・例 |
---|---|---|
共通 (汎用辞書 以外) |
Psr\Log\LogLevel::ERROR | 1つのお題が 汎用辞書 に直列化可能な形式ではなかった。 |
汎用辞書 |
Psr\Log\LogLevel::ERROR | 符号化方式がUTF-8でない。 |
汎用辞書 |
Psr\Log\LogLevel::WARNING | 辞書全体の容量が大きい。 |
汎用辞書 |
Psr\Log\LogLevel::WARNING | 画像ファイルの容量が大きい。 |
汎用辞書 |
Psr\Log\LogLevel::WARNING | 音声ファイルの容量が大きい。 |
汎用辞書 |
Psr\Log\LogLevel::WARNING | 動画ファイルの容量が大きい。 |
汎用辞書 |
Psr\Log\LogLevel::WARNING | アーカイブに含まれるファイルの数が多い。 |
ピクトセンス |
Psr\Log\LogLevel::ERROR | 辞書名が空文字列である。 |
ピクトセンス |
Psr\Log\LogLevel::ERROR | 辞書名が長過ぎる。 |
class esperecyan\dictionary_php\Serializer(string $to = '汎用辞書')
直列化器。
string $to = '汎用辞書'
変換先の辞書形式。キャッチフィーリング
きゃっちま
Inteligenceω クイズ
Inteligenceω しりとり
ピクトセンス
汎用辞書
のいずれか。
指定されていないか間違った値が指定されていれば、汎用辞書
になります。
string[] esperecyan\dictionary_php\Serializer#serialize(Dictionary $dictionary, bool|string $csvOnly = false)
次のような構造の連想配列で直列化したデータを返します。
- [bytes] => 直列化したデータのバイナリ文字列
- [type] => MIME型 (charsetパラメータなどをともなう)
- [name] => ファイル名
Dictionary $dictionary
辞書。
bool|string $csvOnly = false
汎用辞書
Inteligenceω クイズ
の場合、ZIPファイルの代わりにCSVファイル、txtファイルのみを返すときに真に設定します。
真の代わりに https://example.ne.jp/dictionaries/1/files/%s
のような文字列を設定することで、%s
をファイル名に置き換えて辞書ファイル中に記述します。
例外 esperecyan\dictionary_php\exception\SerializeExceptionInterface
SerializeExceptionInterface#getMessage() から、ユーザーに示すエラーメッセージを取得できます。 以下の例外はいずれも SerializeExceptionInterface を実装しています。
$to |
例外 | 説明・例 |
---|---|---|
共通 (汎用辞書 以外) |
esperecyan\dictionary_php\exception\EmptyOutputException | 該当の辞書形式に変換可能なお題が一つも存在しなかった。 |
汎用辞書 |
esperecyan\dictionary_php\exception\TooLargeOutputException | 辞書全体の容量が大き過ぎる。 |
汎用辞書 |
BadMethodCallException | $csvOnly が偽、かつ「画像・音声・動画ファイルを含む場合のファイル形式」をCSVファイルのみで構文解析していた場合。 |
ロギング
$to |
ログレベル | 説明・例 |
---|---|---|
共通 (汎用辞書 以外) |
Psr\Log\LogLevel::ERROR | 1つのお題が 汎用辞書 に直列化可能な形式ではなかった。 |
汎用辞書 ピクトセンス |
Psr\Log\LogLevel::ERROR | 符号化方式がUTF-8でない。 |
ピクトセンス |
Psr\Log\LogLevel::CRITICAL | 辞書のワード数が少な過ぎる、または多過ぎる。 |
ピクトセンス |
Psr\Log\LogLevel::CRITICAL | 辞書全体の文字数が多過ぎる。 |
ピクトセンス |
Psr\Log\LogLevel::ERROR | 辞書名が長過ぎる。 |
class esperecyan\dictionary_php\Dictionary
辞書データ。
(string|string[]|float)[][][] esperecyan\dictionary_php\Dictionary#getWords()
次のような構造の多次元配列で表されたお題の一覧を返します。
- [0] =>
- [text] => array(文字列)
- [image] => array(文字列)
- [image-source] =>
- [0] =>
- [lml] => CommonMark (文字列)
- [html] => HTML (文字列)
- [0] =>
- [audio] => array(文字列)
- [audio-source] =>
- [0] =>
- [lml] => CommonMark (文字列)
- [html] => HTML (文字列)
- [0] =>
- [video] => array(文字列, ……)
- [video-source] =>
- [0] =>
- [lml] => CommonMark (文字列)
- [html] => HTML (文字列)
- [0] =>
- [answer] => array(文字列, ……)
- [description] => array(文字列)
- [weight] => array(浮動小数点数)
- [specifics] => array(文字列)
- [question] => array(文字列)
- [option] => array(文字列, ……)
- [type] => array(文字列)
- [1] => ……
- [2] => ……
- ……
(string|string[])[] esperecyan\dictionary_php\Dictionary#getMetadata()
次のような構造の多次元配列で表されたメタフィールドの一覧を返します。
- [@title] => 文字列
- [@summary] =>
- [lml] => CommonMark (文字列)
- [html] => HTML (文字列)
- [@regard] => 文字列
FilesystemIterator esperecyan\dictionary_php\Dictionary#getFiles()
辞書に同梱されるファイルを返します。
esperecyan\dictionary_php\Dictionary#setFiles(FilesystemIterator $files)
辞書に同梱されるファイルを設定します。それぞれ同梱されるファイルとして妥当で、 かつすべてのファイル名と$filenamesに与えたファイル名が一致している必要があります。
class esperecyan\dictionary_php\Validator()
辞書に同梱されるファイルのバリデータ。
string[] esperecyan\dictionary_php\Validator#correct(string|SplFileInfo $file, string $filename)
Serializer#serialize()の戻り値と同じ構造の戻り値を返します。
string|SplFileInfo $file
ファイルをバイナリ文字列、SplFileInfo、その派生クラスのいずれかで与えます。
string $filename
ファイル名。
例外 esperecyan\dictionary_php\exception\SyntaxException
SyntaxException#getMessage() から、ユーザーに示すエラーメッセージを取得できます。
説明・例 |
---|
画像ファイルの容量が大き過ぎる。 |
音声ファイルの容量が大き過ぎる。 |
動画ファイルの容量が大き過ぎる。 |
ファイルの名前が妥当でない。 |
ファイルの形式が間違っている。 |
ファイルの拡張子が正しくない。 |
ロギング
Psr\Log\LoggerAwareInterfaceを実装しています。
ログレベル | 説明・例 |
---|---|
Psr\Log\LogLevel::WARNING | 画像ファイルの容量が大きい。 |
Psr\Log\LogLevel::WARNING | 音声ファイルの容量が大きい。 |
Psr\Log\LogLevel::WARNING | 動画ファイルの容量が大きい。 |
Contribution
Pull Request、または Issue よりお願いいたします。
セマンティック バージョニング
当ライブラリはセマンティック バージョニングを採用しています。 パブリックAPIは、上記のとおりです。
ライセンス
当スクリプトのライセンスは Mozilla Public License Version 2.0 (MPL-2.0) です。
All versions of dictionary-php with dependencies
esperecyan/url Version ^5.0.0
league/commonmark Version ^1.2.2
league/html-to-markdown Version ^4.2.0
psr/log Version ^1.0.0
scriptfusion/byte-formatter Version ^3.2.0
esperecyan/html-filter Version ^1.0.1
logue/igo-php Version ^0.2.0
mbilbille/jpnforphp Version ^0.8.1
danielstjules/stringy Version ^3.0.0
nelexa/zip Version ^3.1.4
james-heinrich/getid3 Version ^1.9.12
intervention/image Version ^2.5.1
ext-exif Version *
ext-gd Version *
ext-gettext Version *
ext-intl Version *
ext-mbstring Version *
ext-spl Version *
ext-zip Version *