Merge pull request #3117 from github/koesie10/fix-ruby-modules
Add support for models on types for Ruby
This commit is contained in:
@@ -29,6 +29,23 @@ function rubyMethodSignature(typeName: string, methodName: string) {
|
|||||||
return `${typeName}#${methodName}`;
|
return `${typeName}#${methodName}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function rubyMethodPath(methodName: string) {
|
||||||
|
if (methodName === "") {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return `Method[${methodName}]`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function rubyPath(methodName: string, path: string) {
|
||||||
|
const methodPath = rubyMethodPath(methodName);
|
||||||
|
if (methodPath === "") {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${methodPath}.${path}`;
|
||||||
|
}
|
||||||
|
|
||||||
export const ruby: ModelsAsDataLanguage = {
|
export const ruby: ModelsAsDataLanguage = {
|
||||||
availableModes: [Mode.Framework],
|
availableModes: [Mode.Framework],
|
||||||
createMethodSignature: ({ typeName, methodName }) =>
|
createMethodSignature: ({ typeName, methodName }) =>
|
||||||
@@ -42,7 +59,7 @@ export const ruby: ModelsAsDataLanguage = {
|
|||||||
// );
|
// );
|
||||||
generateMethodDefinition: (method) => [
|
generateMethodDefinition: (method) => [
|
||||||
method.typeName,
|
method.typeName,
|
||||||
`Method[${method.methodName}].${method.output}`,
|
rubyPath(method.methodName, method.output),
|
||||||
method.kind,
|
method.kind,
|
||||||
],
|
],
|
||||||
readModeledMethod: (row) => {
|
readModeledMethod: (row) => {
|
||||||
@@ -71,8 +88,11 @@ export const ruby: ModelsAsDataLanguage = {
|
|||||||
// string type, string path, string kind
|
// string type, string path, string kind
|
||||||
// );
|
// );
|
||||||
generateMethodDefinition: (method) => {
|
generateMethodDefinition: (method) => {
|
||||||
const path = `Method[${method.methodName}].${method.input}`;
|
return [
|
||||||
return [method.typeName, path, method.kind];
|
method.typeName,
|
||||||
|
rubyPath(method.methodName, method.input),
|
||||||
|
method.kind,
|
||||||
|
];
|
||||||
},
|
},
|
||||||
readModeledMethod: (row) => {
|
readModeledMethod: (row) => {
|
||||||
const typeName = row[0] as string;
|
const typeName = row[0] as string;
|
||||||
@@ -101,7 +121,7 @@ export const ruby: ModelsAsDataLanguage = {
|
|||||||
// );
|
// );
|
||||||
generateMethodDefinition: (method) => [
|
generateMethodDefinition: (method) => [
|
||||||
method.typeName,
|
method.typeName,
|
||||||
`Method[${method.methodName}]`,
|
rubyMethodPath(method.methodName),
|
||||||
method.input,
|
method.input,
|
||||||
method.output,
|
method.output,
|
||||||
method.kind,
|
method.kind,
|
||||||
@@ -131,7 +151,7 @@ export const ruby: ModelsAsDataLanguage = {
|
|||||||
// );
|
// );
|
||||||
generateMethodDefinition: (method) => [
|
generateMethodDefinition: (method) => [
|
||||||
method.typeName,
|
method.typeName,
|
||||||
`Method[${method.methodName}]`,
|
rubyMethodPath(method.methodName),
|
||||||
method.kind,
|
method.kind,
|
||||||
],
|
],
|
||||||
readModeledMethod: (row) => {
|
readModeledMethod: (row) => {
|
||||||
@@ -157,7 +177,7 @@ export const ruby: ModelsAsDataLanguage = {
|
|||||||
generateMethodDefinition: (method) => [
|
generateMethodDefinition: (method) => [
|
||||||
method.relatedTypeName,
|
method.relatedTypeName,
|
||||||
method.typeName,
|
method.typeName,
|
||||||
`Method[${method.methodName}].${method.path}`,
|
rubyPath(method.methodName, method.path),
|
||||||
],
|
],
|
||||||
readModeledMethod: (row) => {
|
readModeledMethod: (row) => {
|
||||||
const typeName = row[1] as string;
|
const typeName = row[1] as string;
|
||||||
|
|||||||
@@ -7,11 +7,27 @@ const Name = styled.span`
|
|||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const TypeMethodName = (method: Method) => {
|
||||||
|
if (!method.typeName) {
|
||||||
|
return <>{method.methodName}</>;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!method.methodName) {
|
||||||
|
return <>{method.typeName}</>;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{method.typeName}.{method.methodName}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export const MethodName = (method: Method): JSX.Element => {
|
export const MethodName = (method: Method): JSX.Element => {
|
||||||
return (
|
return (
|
||||||
<Name>
|
<Name>
|
||||||
{method.packageName && <>{method.packageName}.</>}
|
{method.packageName && <>{method.packageName}.</>}
|
||||||
{method.typeName}.{method.methodName}
|
<TypeMethodName {...method} />
|
||||||
{method.methodParameters}
|
{method.methodParameters}
|
||||||
</Name>
|
</Name>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -24,4 +24,48 @@ describe(MethodName.name, () => {
|
|||||||
const name = `${method.typeName}.${method.methodName}${method.methodParameters}`;
|
const name = `${method.typeName}.${method.methodName}${method.methodParameters}`;
|
||||||
expect(screen.getByText(name)).toBeInTheDocument();
|
expect(screen.getByText(name)).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("renders method name without method name but with parameters", () => {
|
||||||
|
const method = createMethod({
|
||||||
|
packageName: "",
|
||||||
|
methodName: "",
|
||||||
|
});
|
||||||
|
render(method);
|
||||||
|
|
||||||
|
const name = `${method.typeName}${method.methodParameters}`;
|
||||||
|
expect(screen.getByText(name)).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders method name without method name and parameters", () => {
|
||||||
|
const method = createMethod({
|
||||||
|
packageName: "",
|
||||||
|
methodName: "",
|
||||||
|
methodParameters: "",
|
||||||
|
});
|
||||||
|
render(method);
|
||||||
|
|
||||||
|
const name = `${method.typeName}`;
|
||||||
|
expect(screen.getByText(name)).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders method name without package and type name", () => {
|
||||||
|
const method = createMethod({
|
||||||
|
packageName: "",
|
||||||
|
typeName: "",
|
||||||
|
});
|
||||||
|
render(method);
|
||||||
|
|
||||||
|
const name = `${method.methodName}${method.methodParameters}`;
|
||||||
|
expect(screen.getByText(name)).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders method name without type name", () => {
|
||||||
|
const method = createMethod({
|
||||||
|
typeName: "",
|
||||||
|
});
|
||||||
|
render(method);
|
||||||
|
|
||||||
|
const name = `${method.packageName}.${method.methodName}${method.methodParameters}`;
|
||||||
|
expect(screen.getByText(name)).toBeInTheDocument();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user