...
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
module codegen
|
||||
|
||||
import freeflowuniverse.herolib.core.code { VFile, File, Function, Struct , Module}
|
||||
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
|
||||
import freeflowuniverse.herolib.core.code { Function, Module, Struct }
|
||||
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
|
||||
|
||||
// pub struct OpenRPCCode {
|
||||
// pub mut:
|
||||
@@ -14,7 +14,6 @@ import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
|
||||
// server_test VFile
|
||||
// }
|
||||
|
||||
|
||||
pub fn generate_module(o OpenRPC, receiver Struct, methods_map map[string]Function, objects_map map[string]Struct) !Module {
|
||||
// openrpc_json := o.encode()!
|
||||
// openrpc_file := File{
|
||||
@@ -33,13 +32,13 @@ pub fn generate_module(o OpenRPC, receiver Struct, methods_map map[string]Functi
|
||||
interface_test_file := generate_interface_test_file(o)!
|
||||
|
||||
return Module{
|
||||
files: [
|
||||
client_file
|
||||
client_test_file
|
||||
handler_file
|
||||
handler_test_file
|
||||
interface_file
|
||||
interface_test_file
|
||||
]
|
||||
files: [
|
||||
client_file,
|
||||
client_test_file,
|
||||
handler_file,
|
||||
handler_test_file,
|
||||
interface_file,
|
||||
interface_test_file,
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
module codegen
|
||||
|
||||
import freeflowuniverse.herolib.core.code { VFile, CodeItem, CustomCode, Function, Struct, parse_function }
|
||||
import freeflowuniverse.herolib.core.code { CodeItem, CustomCode, Function, Struct, VFile, parse_function }
|
||||
// import freeflowuniverse.herolib.schemas.jsonrpc.codegen {generate_client_struct}
|
||||
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
|
||||
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
|
||||
import freeflowuniverse.herolib.core.texttools
|
||||
|
||||
// generate_structs geenrates struct codes for schemas defined in an openrpc document
|
||||
@@ -21,7 +21,7 @@ pub fn generate_client_file(o OpenRPC, object_map map[string]Struct) !VFile {
|
||||
// code << methods.map(CodeItem(it))
|
||||
mut file := VFile{
|
||||
name: 'client'
|
||||
mod: name
|
||||
mod: name
|
||||
// imports: imports
|
||||
items: items
|
||||
}
|
||||
@@ -54,18 +54,18 @@ pub fn generate_client_test_file(o OpenRPC, methods_map map[string]Function, obj
|
||||
items << func
|
||||
}
|
||||
mut file := VFile{
|
||||
name: 'client_test'
|
||||
mod: name
|
||||
name: 'client_test'
|
||||
mod: name
|
||||
imports: [
|
||||
code.parse_import('freeflowuniverse.herolib.schemas.jsonrpc'),
|
||||
code.parse_import('freeflowuniverse.herolib.schemas.rpcwebsocket'),
|
||||
code.parse_import('log'),
|
||||
]
|
||||
items: items
|
||||
items: items
|
||||
}
|
||||
|
||||
for key, object in object_map {
|
||||
file.add_import(mod: object.mod, types: [object.name])!
|
||||
}
|
||||
return file
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module codegen
|
||||
|
||||
import freeflowuniverse.herolib.core.code { VFile, CodeItem, Param, CustomCode, Function, Result, Struct, parse_import }
|
||||
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
|
||||
import freeflowuniverse.herolib.core.code { CodeItem, CustomCode, Function, Param, Struct, VFile, parse_import }
|
||||
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
|
||||
import freeflowuniverse.herolib.core.texttools
|
||||
import rand
|
||||
|
||||
@@ -16,8 +16,8 @@ pub fn generate_handler_file(o OpenRPC, receiver Struct, method_map map[string]F
|
||||
]
|
||||
|
||||
mut file := VFile{
|
||||
name: 'handler'
|
||||
mod: name
|
||||
name: 'handler'
|
||||
mod: name
|
||||
imports: imports
|
||||
// TODO
|
||||
// items: jsonrpc.generate_handler(
|
||||
@@ -59,11 +59,11 @@ pub fn generate_handler_test_file(o OpenRPC, receiver Struct, method_map map[str
|
||||
continue
|
||||
}
|
||||
method_handle_test := Function{
|
||||
name: 'test_handle_${method.name}'
|
||||
name: 'test_handle_${method.name}'
|
||||
result: Param{
|
||||
is_result: true
|
||||
}
|
||||
body: "mut handler := ${receiver.name}Handler {${handler_name}.get(name: actor_name)!}
|
||||
body: "mut handler := ${receiver.name}Handler {${handler_name}.get(name: actor_name)!}
|
||||
request := new_jsonrpcrequest[${method.params[0].typ.symbol()}]('${method.name}', ${get_mock_value(method.params[0].typ.symbol())!})
|
||||
response_json := handler.handle(request.to_json())!"
|
||||
}
|
||||
@@ -83,10 +83,10 @@ pub fn generate_handler_test_file(o OpenRPC, receiver Struct, method_map map[str
|
||||
imports := parse_import('freeflowuniverse.herolib.schemas.jsonrpc {new_jsonrpcrequest, jsonrpcresponse_decode, jsonrpcerror_decode}')
|
||||
|
||||
mut file := VFile{
|
||||
name: 'handler_test'
|
||||
mod: name
|
||||
name: 'handler_test'
|
||||
mod: name
|
||||
imports: [imports]
|
||||
items: items
|
||||
items: items
|
||||
}
|
||||
|
||||
for key, object in object_map {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
module codegen
|
||||
|
||||
import freeflowuniverse.herolib.core.code { VFile, CustomCode, parse_function, parse_import }
|
||||
import freeflowuniverse.herolib.core.code { CustomCode, VFile, parse_function, parse_import }
|
||||
import freeflowuniverse.herolib.core.texttools
|
||||
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
|
||||
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
|
||||
|
||||
// pub fn (mut handler AccountantHandler) handle_ws(client &websocket.Client, message string) string {
|
||||
// return handler.handle(message) or { panic(err) }
|
||||
@@ -31,15 +31,16 @@ pub fn generate_interface_file(specification OpenRPC) !VFile {
|
||||
items := handle_ws_fn
|
||||
|
||||
return VFile{
|
||||
mod: name
|
||||
name: 'server'
|
||||
mod: name
|
||||
name: 'server'
|
||||
imports: [
|
||||
parse_import('log'),
|
||||
parse_import('net.websocket'),
|
||||
parse_import('freeflowuniverse.herolib.schemas.rpcwebsocket {RpcWsServer}'),
|
||||
]
|
||||
items: [
|
||||
handle_ws_fn, run_wsserver_fn
|
||||
items: [
|
||||
handle_ws_fn,
|
||||
run_wsserver_fn,
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -60,8 +61,8 @@ pub fn generate_interface_test_file(specification OpenRPC) !VFile {
|
||||
test_fn.body = 'spawn run_wsserver(port)'
|
||||
|
||||
return VFile{
|
||||
mod: name
|
||||
name: 'server_test'
|
||||
mod: name
|
||||
name: 'server_test'
|
||||
items: [
|
||||
CustomCode{'const port = 3000'},
|
||||
test_fn,
|
||||
|
||||
@@ -3,7 +3,7 @@ module codegen
|
||||
import freeflowuniverse.herolib.core.code { CodeItem }
|
||||
import freeflowuniverse.herolib.schemas.jsonschema { Schema }
|
||||
import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen { schema_to_code }
|
||||
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
|
||||
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
|
||||
import freeflowuniverse.herolib.core.texttools
|
||||
|
||||
// generate_structs geenrates struct codes for schemas defined in an openrpc document
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
module codegen
|
||||
|
||||
import freeflowuniverse.herolib.core.code { VFile, CodeItem, CustomCode, Function, Struct, parse_function }
|
||||
import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen {schemaref_to_type, schema_to_struct}
|
||||
import freeflowuniverse.herolib.schemas.jsonschema {Schema}
|
||||
import freeflowuniverse.herolib.schemas.openrpc {Method, ContentDescriptor}
|
||||
import freeflowuniverse.herolib.core.code { Function, Struct }
|
||||
import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen { schema_to_struct, schemaref_to_type }
|
||||
import freeflowuniverse.herolib.schemas.jsonschema { Schema }
|
||||
import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, Method }
|
||||
import freeflowuniverse.herolib.core.texttools
|
||||
|
||||
// converts OpenRPC Method to Code Function
|
||||
@@ -21,7 +21,7 @@ pub fn method_to_function(method Method) !Function {
|
||||
}
|
||||
|
||||
return Function{
|
||||
name: texttools.snake_case(method.name)
|
||||
name: texttools.snake_case(method.name)
|
||||
params: params
|
||||
result: result
|
||||
}
|
||||
@@ -42,7 +42,7 @@ pub fn content_descriptor_to_struct(cd ContentDescriptor) Struct {
|
||||
pub fn content_descriptor_to_parameter(cd ContentDescriptor) !code.Param {
|
||||
return code.Param{
|
||||
name: cd.name
|
||||
typ: schemaref_to_type(cd.schema)
|
||||
typ: schemaref_to_type(cd.schema)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user