unlzh.js -- Javascript版LZHアーカイブ展開クラス

はじめに

JavascriptLZHファイルの操作をしたくて調べた結果、 個人的にソースの可読性が高いと感じたunlha.py -- Python 版 LZH アーカイブ展開ツールを元にし、 同等の機能をJavascriptに移植、クラス化しました。改変内容をこのページに記載します。

ダウンロード

unlzh.js

Javascript版LZHアーカイブ展開クラス本体です。

clsMemImg.js

unlzh.js内で使用している自作のDataViewラッパークラスとバイトストリームクラスです。 このファイル自体はunlzh.jsのライセンスには含まれません。 クラスの内容は非常に単純であるため、必要に応じて置き換え可能です。

LICENSE.txt

移植元のオリジナルのunlha.pyライセンスです。 本ページおよびunlzh.jsはこの条件に従って配布されています。

unlha_py.zip

移植元のオリジナルのunlha.pyファイル一式(zipファイル)です。 このzipファイルはunlha.pyライセンス 2. a.に従い、ダウンロード可能にしています。

使用方法

Unlzhクラス

コンストラクタ

Unlzh(buf)
引数
buf

LZHファイルの内容が入ったUint8Array型のデータを指定する。

メソッド

Unlzh.List(func):書庫内ファイル一覧
引数
func(header)

書庫内のファイル毎に呼び出される関数を指定する。引数にUnlzhHeaderクラスが渡される。 この関数の戻り値をTrueにすると次のファイルの一覧を取得し、 Falseにすると一覧の取得を終了します。

戻り値

True

例外

UnlzhExceptionが発生する。

Unlzh.Extract(filename):書庫内ファイルの展開
引数
filename

展開したい書庫内のファイルをフルパス名で指定する。

戻り値
Uint8Array

展開したファイルのバイナリーデータ。

null

指定されたフルパス名がディレクトリの場合、または書庫内に存在しないとき。

例外

UnlzhExceptionが発生する。

UnlzhHeaderクラス

プロパティ

path

パス名

name

ファイル名

full_path

フルパス名

original_size

ファイルサイズ

last_modified_stamp

更新日付

packed_size

圧縮サイズ

method

圧縮方式

crc

ファイルCRC

UnlzhExceptionクラス

プロパティ

Errno

エラー番号

message

エラーメッセージ

ライセンス

本クラスは、unlha.py -- Python 版 LZH アーカイブ展開ツール Javascriptに移植して作成したものです。 そのため、本クラスunlzh.jsunlha.pyのライセンスに従います。 詳細はライセンス文書(LICENSE.txt)をご参照ください。

なお、unlzh.js内で使用しているclsMemImg.jsは本ライセンスには含まれません。 これは本移植とは別に作成された自作クラスであり、自由に置き換えることができます。

免責および商用利用について

本クラスは無保証で提供されます。本クラスの使用または存在によって生じた損害について、作者は一切の責任を負いません。 また、本クラスはunlha.pyライセンス条件に従い、商用利用を主目的とする配布は禁止されています。 商用製品に組み込む場合はunlha.pyライセンス 7.に定める条件 (利用者への強制禁止・責任の所在・サポート義務)を遵守してください。

Special Thanks

本クラスは移植元のunlha.py -- Python 版 LZH アーカイブ展開ツールだけでなく、 LHa for UNIX with Autoconf JavaScriptによるLZHの解凍サンプル LHA ソースファイル集も貴重な情報として参考にさせて頂きました。 ありがとうございました。

LHarc    for UNIX  V 1.02  Copyright(C) 1989  Y.Tagawa
LHx      for MSDOS V C2.01 Copyright(C) 1990  H.Yoshizaki
LHx(arc) for OSK   V 2.01  Modified     1990  Momozou
LHa      for UNIX  V 1.00  Copyright(C) 1992  Masaru Oki
LHa      for UNIX  V 1.14  Modified     1995  Nobutaka Watazaki
LHa      for UNIX  V 1.14i Modified     2000  Tsugio Okamoto
LHA-PMA  for UNIX  V 2     PMA added    2000  Maarten ter Huurne
                   Autoconfiscated 2001-2008  Koji Arai
Simple LZH archive extractor Python version 
                           Copyright(c) 2024  Yuichi Nakamura

全てのLZHに感謝を。

更新履歴

バージョン 更新日付 内容
1.0.0.0 2025/11/03
  • Javascript版LZHアーカイブ展開クラスを公開
  • スライド辞書バッファを0x20で初期化に修正
Copyright (c) 2024 Yuichi Nakamura (unlha.py)
Copyright (c) 2025 myna (unlzh.js port)
This software is distributed under the same license terms as unlha.py.