Summary
- Ariawase is cool VBA library ( by @igeta )
- Example of core functions
Ariawase.Core
Core
├── Collections
│ ├── ArrConcat
│ ├── ArrFlatten
│ ├── ArrIndexOf
│ ├── ArrLen
│ ├── ArrRank
│ ├── ArrSlice
│ ├── ArrUniq
│ ├── Pop
│ ├── Unshift
│ ├── Arr2DToJagArr
│ ├── JagArrToArr2D
│ ├── ArrToClct
│ ├── ClctToArr
│ ├── CreateDictionary
│ ├── ArrCompare
│ ├── ArrEquals
│ └── BitFlag
│
├── Strings
│ ├── LeftA
│ ├── RightA
│ ├── SepA
│ ├── StringWidth
│ ├── ToStr
│ ├── CreateRegExp
│ ├── ReMatch
│ ├── ReMatchGlobal
│ ├── ReReplace
│ └── ReTrim
│
├── Numeric
│ ├── Around
│ ├── IncrPre
│ ├── IncrPst
│ ├── IsInt
│ ├── Max
│ └── Min
│
├── Date
│ ├── BeginOfMonth
│ ├── EndOfMonth
│ ├── BeginOfWeek
│ └── EndOfWeek
│
├── Display
│ ├── Formats
│ └── Dump
│
├── Equality
│ ├── Eq
│ ├── Equals
│ └── Compare
│
├── Eval
│ ├── EvalJS
│ └── EvalVBS
│
└── Others
├── CreateStdRegProv
└── Init
Collections
Sub test()
'2つの配列を一つの配列にします
Debug.Print Dump(ArrConcat(Array(1, 2, 3), Array(10, 20, 30)))
'Array(1%, 2%, 3%, 10%, 20%, 30%)
'ネストを一段解除した配列にします
Debug.Print Dump(ArrFlatten(Array(Array(1, 2, 3))))
'Array(1%, 2%, 3%)
'該当する文字(数字)の配列の場所を返します(なければ -1)
Debug.Print Dump(ArrIndexOf(Array("A", "B", "C"), "B"))
'1&
'配列の長さを返します
Debug.Print Dump(ArrLen(Array(1, 2, 3)))
'3&
'配列の次元を返します
Debug.Print Dump(ArrRank(Array(1, 2, 3)))
'1%
'配列をスライスします
Debug.Print Dump(ArrSlice(Array(1, 2, 3, 4, 5), 1, 3))
'Array(2%, 3%, 4%)
'配列の重複してる要素をまとめます
Debug.Print Dump(ArrUniq(Array(1, 1, 1, 2, 2, 2)))
'Array(1%, 2%)
'コレクションの最後の要素をとりだします
Debug.Print Dump(Pop(ArrToClct(Array(1, 2, 3))))
'3%
'コレクションの最初の要素を取り出します
Debug.Print Dump(Unshift(ArrToClct(Array(1, 2, 3))))
'1%
'ジャグ配列をつくります
Dim jagArray: jagArray = Array(Array("A"), Array("B"))
'jagArray(0)(0) = "A"
'jagArray(1)(0) = "B"
'ジャグ配列から2次元配列をつくります
Dim arr2D: arr2D = JagArrToArr2D(jagArray)
'arr2D(0,0) = "A"
'arr2D(1,0) = "B"
'2次元配列からジャグ配列をつくります
Dim jArray: jArray = Arr2DToJagArr(arr2D)
'jArray(0)(0) = "A"
'jArray(1)(0) = "B"
'配列からコレクションをつくります
Dim clct: Set clct = ArrToClct(Array(1, 2, 3))
'Item1 = 1
'Item2 = 2
'Item3 = 3
'コレクションから配列をつくります
Debug.Print Dump(ClctToArr(clct))
'Array(1%, 2%, 3%)
'(key,value)という指定でディクショナリーをつくります
Dim dict: Set dict = CreateDictionary("One", 1, "Two", 2, "Three", 3)
'Item 1 = ("One, 1)
'Item 2 = ("Two, 2)
'Item 3 = ("Three, 3)
'ビット演算をおこなう
Debug.Print Dump(BitFlag(False, True))
'1&
End Sub
Strings
Sub test()
Dim str: str = "本日は晴天なり!"
'文字列を左から指定の文字数で切り出します
Debug.Print Dump(LeftA(str, 5))
'"本日"
'文字列を右から指定の文字数で切り出します
Debug.Print Dump(RightA(str, 5))
'"り!"
'文字列を指定の文字数で2つに分け配列で返します
Debug.Print Dump(SepA(str, 5))
'Array("本日", "は晴天なり!")
'文字列の長さをかえします
Debug.Print Dump(StringWidth(str))
'16$
'文字列にします
Debug.Print Dump(ToStr(99))
'"99"
'オブジェクトの場合はオブジェクト名称をかえします
Debug.Print Dump(ToStr(CreateDictionary("One", 1)))
'"Dictionary"
Dim str2: str2 = "本日は晴天なり!晴天なり!"
'正規表現オブジェクトを参照なしにつくります
Dim reg: Set reg = CreateRegExp("晴天")
Debug.Print reg.test(str2)
'True
'正規表現を使用します
Debug.Print Dump(ReMatch(str2, "晴天"))
'Array("晴天")
Debug.Print Dump(ReMatcheGlobal(str2, "晴天"))
'Array(Array("晴天"), Array("晴天"))
Debug.Print Dump(ReReplace(str2, "晴天", "雨天"))
'"本日は雨天なり!晴天なり!"
Debug.Print Dump(ReTrim(str2, "晴天.*"))
'"本日は"
End Sub
Numeric
Sub test()
'数字を丸めます
Debug.Print Dump(ARound(1.2345, 1))
'CDec(1.2)
'よくわかってません。。。。
Debug.Print Dump(IncrPre(1)) '2%
Debug.Print Dump(IncrPst(1)) '1%
'数字の場合trueをかえします
Debug.Print Dump(IsInt(1)) 'true
'最大値・最小値をかえします
Debug.Print Dump(Max(1, 2, 3)) '3%
Debug.Print Dump(Min(1, 2, 3)) '1%
End Sub
Date
Sub test()
'月・週の初末をかえします
Dim day As Date: day = #10/24/2016#
Debug.Print Dump(BeginOfMonth(day))
'#10/1/2016#
Debug.Print Dump(EndOfMonth(day))
'#10/31/2016#
Debug.Print Dump(BeginOfWeek(day))
'#10/23/2016#
Debug.Print Dump(EndOfWeek(day))
'#10/29/2016#
End Sub
Display
Sub test()
'指定したフォーマットで出力します
Debug.Print Dump(Formats("{0:MM/dd}", #10/24/2016#))
'"10/24"
'Debug.Printで出力できない分も出力します
Debug.Print Dump(Array(1, 2, 3))
'Array(1%, 2%, 3%)
End Sub
Equality
'よくわかってません。。。。
Eval
'よくわかってません。。。。
Others
'よくわかってません。。。。
Ariawaseはこちらから
その他
Ariawase Core
モジュールの関数一覧の作り方
$ cat core.bas | grep "Public Function" | awk -F' ' '{print $3}' | sed -e 's/(.*//g'