Types
ClassifiedString = object data*: string ## String data indices*: seq[int] ## Position indices
-
位置を保持する文字列。 半角文字はその文字自体と、その文字が行文字列におけるどのような位置を持つ 文字列であると、ここでは考える。 日本語のような全角文字列は、2つの位置を持つもの、としてここでは扱う。
例:
- a == data: a, indices: 0
- あ == data: あ, indices: 0, 1
Procs
proc toClassifiedString(s: string): seq[ClassifiedString] {...}{.raises: [], tags: [].}
-
Converts to ClassifiedString.
文字列をClassifiedStringのシーケンスに変換する。
Examples:
doAssert "abc".toClassifiedString == @[ClassifiedString(data: "a", indices: @[0]), ClassifiedString(data: "b", indices: @[1]), ClassifiedString(data: "c", indices: @[2])] doAssert "あc".toClassifiedString == @[ClassifiedString(data: "あ", indices: @[0, 1]), ClassifiedString(data: "c", indices: @[2])]
proc pad(dst, src: string; x = 0): array[2, string] {...}{.raises: [], tags: [].}
-
srcをxの値の分だけ左に半角スペースを追加する。
FIXME: dstが不要
Examples:
discard proc split3(self: openArray[ClassifiedString]; minIndex, maxIndex: int): array[3, seq[ClassifiedString]] {...}{.raises: [], tags: [].}
-
ClassifiedStringを`minIndex`未満、`minIndex`以上`maxIndex`以下、それ以外の3つの文字列を含む配列に変換する。
Examples:
let data = @[ClassifiedString(indices: @[0, 1]), ClassifiedString(indices: @[2, 3]), ClassifiedString(indices: @[4, 5])] doAssert data.split3(2, 3) == [@[ClassifiedString(indices: @[0, 1])], @[ClassifiedString(indices: @[2, 3])], @[ClassifiedString(indices: @[4, 5])]] doAssert data.split3(2, 4) == [@[ClassifiedString(indices: @[0, 1])], @[ClassifiedString(indices: @[2, 3]), ClassifiedString(indices: @[4, 5])], @[]] doAssert data.split3(1, 3) == [@[], @[ClassifiedString(indices: @[0, 1]), ClassifiedString(indices: @[2, 3])], @[ClassifiedString(indices: @[4, 5])]] doAssert data.split3(0, 4) == [@[], @[ClassifiedString(indices: @[0, 1]), ClassifiedString(indices: @[2, 3]), ClassifiedString(indices: @[4, 5])], @[]] doAssert data.split3(0, 5) == [@[], @[ClassifiedString(indices: @[0, 1]), ClassifiedString(indices: @[2, 3]), ClassifiedString(indices: @[4, 5])], @[]]
proc first(self: openArray[ClassifiedString]): int {...}{.raises: [], tags: [].}
-
Returns a first index of ClassifiedString.
ClassifiedStringが保持する最初のインデックスを返す。
Examples:
doAssert [ClassifiedString(indices: @[1, 2]), ClassifiedString(indices: @[3, 4])].first == 1 doAssert [ClassifiedString(indices: @[3, 2]), ClassifiedString(indices: @[3, 4])].first == 3
proc last(self: openArray[ClassifiedString]): int {...}{.raises: [], tags: [].}
-
Returns a last index of ClassifiedString.
ClassifiedStringの最後のインデックスを返す。
Examples:
doAssert [ClassifiedString(indices: @[1, 2]), ClassifiedString(indices: @[3, 4])].last == 4 doAssert [ClassifiedString(indices: @[3, 2]), ClassifiedString(indices: @[3, 1])].last == 1