Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ein.core.core
- interface ePrimitive {
- companion object {
- val EMPTY = ePrimitive("")
- operator fun invoke(v:String) = eString(v)
- operator fun invoke(v:Long) = eLong(v)
- operator fun invoke(v:Double) = eDouble(v)
- operator fun invoke(v:Boolean) = eBoolean(v)
- fun store(v:String) = eStore(v)
- fun record(v:String) = eRecord(v)
- fun json(v:String) = Json.parse(v)
- }
- val v:Any
- }
- class eString(override val v:String):ePrimitive
- class eInt(override val v:Int):ePrimitive
- class eLong(override val v:Long):ePrimitive
- class eDouble(override val v:Double):ePrimitive
- class eBoolean(override val v:Boolean):ePrimitive
- class eStore(override val v:String):ePrimitive
- class eRecord(override val v:String):ePrimitive
- class eJsonArray:MutableList<ePrimitive> by mutableListOf(), ePrimitive{
- override val v:MutableList<ePrimitive> = this
- }
- class eJsonObject:MutableMap<String, ePrimitive> by mutableMapOf(), ePrimitive{
- override val v:MutableMap<String, ePrimitive> = this
- operator fun invoke(key:String) = invoke(key.split("."))
- operator fun invoke(key:List<String>)= key.fold(this as ePrimitive){target, k->
- when(target){
- is eJsonObject->target[k]
- is eJsonArray->target[k.toInt()]
- else->null
- } ?: throw Throwable("invalid key:$k")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement