etc.negui.containers.kareki

カレキ。
移植及び仕様変更。
以下の文字列をそれぞれの型を使用して扱う。
>SECTION
text\ABC
number:1
real*3.14
binary?ff0000


History:
1.100
  • 新規作成。
class KarekiBaseException: etc.negui.containers.container.ContainerException;

alias Integer;
整数型(int)
typedef Binary;
バイナリ型。
enum HAGATA;
ファイル型情報に関連付けられる文字。
INTEGER
整数型。
REAL
実数型。
TEXT
文字列型。
BINARY
バイナリ型。
TSV_INTEGER
TSV形式整数型。
TSV_REAL
TSV形式実数型。
TSV_TEXT
TSV形式文字列型。
TSV_BINARY
TSV形式バイナリ型。
enum ELEMENT;

SECTION

COMMENT

class ConvertException: etc.negui.containers.kareki.KarekiBaseException;

struct ENTRY;

Text name;

Text data;

HAGATA type;

const Text toText();

string toString();

struct CONVERT;

EMPTY

SEP

bool isEmpty(SINGLE_TYPE, TYPE = Unqual!(SINGLE_TYPE))(in SINGLE_TYPE Value );
値は無効値か。
Params:
Value
調べたい値。
Returns:
無効値であればtrue、無効値でなければfalse。
static Text toText(Integer Value );
static Text toText(in Text Value );
static Text toText(real Value );
static Text toText(in Binary Value );
値を文字列に変換。
Params:
Integer Value
変換したい値。
Returns:
それぞれの型に対応された文字列。
Integer toValue(T : Integer)(in Text Value );
real toValue(T : real)(in Text Value );
Text toValue(T : Text)(in Text Value );
Binary toValue(T : Binary)(in Text Value );
文字列を値に変換。
Params:
Value
変換したい値。
Returns:
Tに対応する値。
Throws:
失敗時にConvertException。
static bool isHagata(dchar c );
文字が型情報か調べる。
Params:
dchar c
調べたい文字。
Returns:
型情報であればtrue、型情報でなければfalseを返す。
static bool isElement(dchar c );
文字が要素か調べる。
static bool isLine(in Text Value );
文字列が一行か調べる。
static bool isSection(in Text Value );
文字列はセクション名か。
static bool isComment(in Text Value );
文字列はコメントか。
static Text commentToText(in _NTEXT!(wchar)[] Comments );
コメント文字列配列を文字列に変換。
Params:
Comment
コメント文字列配列。
Returns:
非コメント文字列。
In:
Comment[n]は全てisCommentを通る。
static Text commentToText(in Text Comment );
コメント(改行含む)を文字列に変換。
static Text textToComment(in _NTEXT!(wchar)[] Values );
文字列をコメントに変換。
static bool isEntry(in Text Value );
エントリー判定。
static ENTRY split(in Text Value );
文字列をENTRYに分割。
static bool isTSV(in Text Value );

static _NTEXT!(wchar)[] splitTSV(in Text Value );

static Text cutSeparator(in Text Value );

static void splitDocumentComment(_NTEXT!(wchar)[] Lines , out _NTEXT!(wchar)[] Comments , out _NTEXT!(wchar)[] Datas );

abstract class KarekiBase: etc.negui.system.text.IText;

Text comment;

protected const _NTEXT!(wchar)[] CommentLines();

protected const Text ToFormatedText(in Text Value );
History:
1.110
  • source名前変更(ToFormatetText -> ToFormatedText)。
abstract const typeof(this) dup();
History:
1.120
  • 新規作成。
bool NonRef(T)(T map );
History:
1.120
  • program不変条件としてエントリー/セクションの参照をクラスに一つで。
class EntryException: etc.negui.containers.kareki.KarekiBaseException;

class Entry: etc.negui.containers.kareki.KarekiBase, etc.negui.system.text.IText;

protected HAGATA Type;

protected bool HaveValue;
これもういらんなぁ
protected const Text ToFormatedText(in Text Value );

void del();

const HAGATA type();

this();

const bool isTSV();

const size_t tsvLength();

const Text toText();

bool tryGet(TYPE)(out TYPE var );

TYPE defGet(TYPE)(TYPE def = TYPE.init);

TYPE unSafe(TYPE)();

const Entry dup();
History:
1.120
  • sourcedupのoverride。
1.110
  • bugコピーできてない。
bool opEquals(Object o );

int opCmp(Object o );

class SectionException: etc.negui.containers.kareki.KarekiBaseException;

class Section: etc.negui.containers.kareki.KarekiBase, etc.negui.system.text.IText;

Entry[const(_NTEXT!(wchar))] Entries;
History:
1.110
  • bugアクセスできない。
  • sourcekeyの属性変更(Text -> const(Text))。
const typeof(this) dup();
History:
1.120
  • 新規作成。
Entry opIndexAssign(T)(T Value , in Text Key );

protected const Text ToFormatedText(in Text Value );

const Text toText();

Entry path(in Text EntryName );
エントリーを安全に取得。
なけりゃ作る。
History:
1.110
  • 新規作成。
class KarekiException: etc.negui.containers.kareki.KarekiBaseException;

class KarekiParseException: etc.negui.containers.kareki.KarekiException;

class Kareki: etc.negui.containers.kareki.KarekiBase;

Section[const(_NTEXT!(wchar))] Sections;
History:
1.110
  • bugアクセスできない。
  • sourcekeyの属性変更(Text -> const(Text))。
const typeof(this) dup();
History:
1.120
  • 新規作成。
Section opIndexAssign(T)(T Value , in Text Key );

protected const Text ToFormatedText();

const Text toText();

this();
this(in Text Value );
this(in Text Value , out Throwable e );

Throwable load(in Text Value );
History:
1.110
  • bugValueが長さ0でRange violation
void merge(in Kareki k );
マージ。
Params:
Kareki k
追加するデータ。
History:
1.110
  • 新規作成。
Section path(in Text SectionName );
セクションを安全に取得。
存在しない場合には作る。
History:
1.110
  • 新規作成。
Entry path(in Text SectionName , in Text EntryName );
セクション・エントリーを安全に取得。
それぞれが存在しない場合には道筋までを作る。
History:
1.110
  • 新規作成。