Skip to content

Commit

Permalink
refactor: this is not react
Browse files Browse the repository at this point in the history
  • Loading branch information
schoero committed Mar 18, 2023
1 parent 8ff649d commit d3189d7
Show file tree
Hide file tree
Showing 11 changed files with 40 additions and 43 deletions.
4 changes: 2 additions & 2 deletions src/renderer/markup/ast-converter/entities/class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
createSmallNode,
createTitleNode
} from "unwritten:renderer/markup/utils/nodes.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";
import {
extendClassEntityConstructorsWithHeritage,
extendClassEntityEntitiesWithHeritage
Expand All @@ -32,7 +32,7 @@ export function convertClassEntityForTableOfContents(ctx: MarkupRenderContexts,

export function convertClassEntityForDocumentation(ctx: MarkupRenderContexts, classEntity: ClassEntity): ConvertedClassEntityForDocumentation {

const t = useTranslation(ctx);
const t = getTranslator(ctx);

const name = classEntity.name;
const description = classEntity.description ?? "";
Expand Down
3 changes: 0 additions & 3 deletions src/renderer/markup/ast-converter/entities/enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {
createSmallNode,
createTitleNode
} from "unwritten:renderer/markup/utils/nodes.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";

import type { EnumEntity } from "unwritten:compiler:type-definitions/entities.js";
import type { MarkupRenderContexts } from "unwritten:renderer/markup/types-definitions/markup.d.js";
Expand All @@ -25,8 +24,6 @@ export function convertEnumEntityForTableOfContents(ctx: MarkupRenderContexts, e

export function convertEnumEntityForDocumentation(ctx: MarkupRenderContexts, enumEntity: EnumEntity): ConvertedEnumEntityForDocumentation {

const t = useTranslation(ctx);

const name = enumEntity.name;
const description = enumEntity.description ?? "";
const example = enumEntity.example ?? "";
Expand Down
16 changes: 8 additions & 8 deletions src/renderer/markup/ast-converter/entities/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
createSmallNode,
createTitleNode
} from "unwritten:renderer/markup/utils/nodes.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";
import {
extendInterfaceEntityPropertiesWithHeritage,
extendInterfaceEntitySignaturesWithHeritage
Expand All @@ -31,7 +31,7 @@ export function convertInterfaceEntityForTableOfContents(ctx: MarkupRenderContex

export function convertInterfaceEntityForDocumentation(ctx: MarkupRenderContexts, interfaceEntity: InterfaceEntity): ConvertedInterfaceEntityForDocumentation {

const t = useTranslation(ctx);
const translate = getTranslator(ctx);

const name = interfaceEntity.name;
const description = interfaceEntity.description ?? "";
Expand Down Expand Up @@ -64,12 +64,12 @@ export function convertInterfaceEntityForDocumentation(ctx: MarkupRenderContexts
createParagraphNode(description),
createParagraphNode(remarks),
createParagraphNode(example),
createTitleNode(t("construct-signature", { count: 99 }), undefined, convertedConstructSignatures),
createTitleNode(t("call-signature", { count: 99 }), undefined, convertedCallSignatures),
createTitleNode(t("property", { count: 99 }), undefined, convertedProperties),
createTitleNode(t("method", { count: 99 }), undefined, convertedMethods),
createTitleNode(t("setter", { count: 99 }), undefined, convertedSetters),
createTitleNode(t("getter", { count: 99 }), undefined, convertedGetters)
createTitleNode(translate("construct-signature", { count: 99 }), undefined, convertedConstructSignatures),
createTitleNode(translate("call-signature", { count: 99 }), undefined, convertedCallSignatures),
createTitleNode(translate("property", { count: 99 }), undefined, convertedProperties),
createTitleNode(translate("method", { count: 99 }), undefined, convertedMethods),
createTitleNode(translate("setter", { count: 99 }), undefined, convertedSetters),
createTitleNode(translate("getter", { count: 99 }), undefined, convertedGetters)
]
);

Expand Down
10 changes: 5 additions & 5 deletions src/renderer/markup/ast-converter/entities/parameter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { convertType } from "unwritten:renderer/markup/ast-converter/index.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";
import { getRenderConfig } from "unwritten:renderer:markup/utils/config.js";
import { encapsulate, spaceBetween } from "unwritten:renderer:markup/utils/renderer.js";

Expand Down Expand Up @@ -36,7 +36,7 @@ export function convertParameterEntitiesForSignature(ctx: MarkupRenderContexts,
export function convertParameterEntityForDocumentation(ctx: MarkupRenderContexts, parameterEntity: ParameterEntity): ConvertedParameterEntityForDocumentation {

const renderConfig = getRenderConfig(ctx);
const t = useTranslation(ctx);
const translate = getTranslator(ctx);

const description = parameterEntity.description ?? "";
const name = encapsulate(parameterEntity.name, renderConfig.parameterEncapsulation);
Expand All @@ -46,16 +46,16 @@ export function convertParameterEntityForDocumentation(ctx: MarkupRenderContexts
: "";

const rest = parameterEntity.rest === true
? encapsulate(t("rest"), renderConfig.tagEncapsulation)
? encapsulate(translate("rest"), renderConfig.tagEncapsulation)
: "";

const optional = parameterEntity.optional === true
? encapsulate(t("optional"), renderConfig.tagEncapsulation)
? encapsulate(translate("optional"), renderConfig.tagEncapsulation)
: "";

const initializer = parameterEntity.initializer !== undefined
? spaceBetween(
`${t("default", { capitalize: true })}:`,
`${translate("default", { capitalize: true })}:`,
convertType(ctx, parameterEntity.initializer)
)
: "";
Expand Down
6 changes: 3 additions & 3 deletions src/renderer/markup/ast-converter/entities/property.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
createSmallNode,
createTitleNode
} from "unwritten:renderer/markup/utils/nodes.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";
import { getRenderConfig } from "unwritten:renderer:markup/utils/config.js";
import { encapsulate } from "unwritten:renderer:markup/utils/renderer.js";

Expand All @@ -33,7 +33,7 @@ export function convertPropertyEntityForSignature(ctx: MarkupRenderContexts, pro
export function convertPropertyEntityForDocumentation(ctx: MarkupRenderContexts, propertyEntity: PropertyEntity): ConvertedPropertyEntityForDocumentation {

const renderConfig = getRenderConfig(ctx);
const t = useTranslation(ctx);
const translate = getTranslator(ctx);

const name = propertyEntity.name;
const description = propertyEntity.description ?? "";
Expand All @@ -45,7 +45,7 @@ export function convertPropertyEntityForDocumentation(ctx: MarkupRenderContexts,
const type = convertType(ctx, propertyEntity.type);

const optional = propertyEntity.optional === true
? encapsulate(t("optional"), renderConfig.tagEncapsulation)
? encapsulate(translate("optional"), renderConfig.tagEncapsulation)
: "";

return createTitleNode(
Expand Down
6 changes: 3 additions & 3 deletions src/renderer/markup/ast-converter/entities/signature.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
createSmallNode,
createTitleNode
} from "unwritten:renderer/markup/utils/nodes.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";
import { spaceBetween } from "unwritten:renderer:markup/utils/renderer.js";

import type { SignatureEntity } from "unwritten:compiler:type-definitions/entities.js";
Expand All @@ -38,7 +38,7 @@ export function convertSignatureEntityForTableOfContents(ctx: MarkupRenderContex

export function convertSignatureEntityForDocumentation(ctx: MarkupRenderContexts, signatureEntity: SignatureEntity): ConvertedSignatureEntityForDocumentation {

const t = useTranslation(ctx);
const translate = getTranslator(ctx);

const signatureName = signatureEntity.name ?? "";
const renderedSignatureParameters = signatureEntity.parameters ? convertParameterEntitiesForSignature(ctx, signatureEntity.parameters) : "";
Expand All @@ -60,7 +60,7 @@ export function convertSignatureEntityForDocumentation(ctx: MarkupRenderContexts
const returnDescription = signatureEntity.returnType.description ?? "";

const returnTypeWithDescription = spaceBetween(
`${t("returns", { capitalize: true })}:`,
`${translate("returns", { capitalize: true })}:`,
returnType,
returnDescription
);
Expand Down
6 changes: 3 additions & 3 deletions src/renderer/markup/ast-converter/entities/type-alias.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
createSmallNode,
createTitleNode
} from "unwritten:renderer/markup/utils/nodes.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";

import type { TypeAliasEntity } from "unwritten:compiler:type-definitions/entities.js";
import type { MarkupRenderContexts } from "unwritten:renderer/markup/types-definitions/markup.d.js";
Expand All @@ -26,7 +26,7 @@ export function convertTypeAliasEntityForTableOfContents(ctx: MarkupRenderContex

export function convertTypeAliasEntityForDocumentation(ctx: MarkupRenderContexts, typeAliasEntity: TypeAliasEntity): ConvertedTypeAliasEntityForDocumentation {

const t = useTranslation(ctx);
const translate = getTranslator(ctx);

const name = typeAliasEntity.name;
const description = typeAliasEntity.description ?? "";
Expand All @@ -40,7 +40,7 @@ export function convertTypeAliasEntityForDocumentation(ctx: MarkupRenderContexts
? typeAliasEntity.typeParameters.map(typeParameter => convertTypeParameterEntityForDocumentation(ctx, typeParameter))
: "";

const type = [`${t("type", { capitalize: true })}: `, convertType(ctx, typeAliasEntity.type)];
const type = [`${translate("type", { capitalize: true })}: `, convertType(ctx, typeAliasEntity.type)];

return createTitleNode(
name,
Expand Down
6 changes: 3 additions & 3 deletions src/renderer/markup/ast-converter/entities/type-parameter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { convertType } from "unwritten:renderer/markup/ast-converter/index.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";
import { getRenderConfig } from "unwritten:renderer:markup/utils/config.js";
import { encapsulate, spaceBetween } from "unwritten:renderer:markup/utils/renderer.js";

Expand Down Expand Up @@ -29,7 +29,7 @@ export function convertTypeParameterEntitiesForSignature(ctx: MarkupRenderContex
export function convertTypeParameterEntityForDocumentation(ctx: MarkupRenderContexts, typeParameterEntity: TypeParameterEntity): ConvertedTypeParameterEntityForDocumentation {

const renderConfig = getRenderConfig(ctx);
const t = useTranslation(ctx);
const translate = getTranslator(ctx);

const description = typeParameterEntity.description ?? "";
const name = encapsulate(typeParameterEntity.name, renderConfig.typeParameterEncapsulation);
Expand All @@ -40,7 +40,7 @@ export function convertTypeParameterEntityForDocumentation(ctx: MarkupRenderCont

const initializer = typeParameterEntity.initializer !== undefined
? spaceBetween(
`${t("default", { capitalize: true })}:`,
`${translate("default", { capitalize: true })}:`,
convertType(ctx, typeParameterEntity.initializer)
)
: "";
Expand Down
6 changes: 3 additions & 3 deletions src/renderer/markup/ast-converter/entities/variable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
createSmallNode,
createTitleNode
} from "unwritten:renderer/markup/utils/nodes.js";
import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";

import type { VariableEntity } from "unwritten:compiler:type-definitions/entities.js";
import type { MarkupRenderContexts } from "unwritten:renderer/markup/types-definitions/markup.d.js";
Expand All @@ -26,7 +26,7 @@ export function convertVariableEntityForTableOfContents(ctx: MarkupRenderContext

export function convertVariableEntityForDocumentation(ctx: MarkupRenderContexts, variableEntity: VariableEntity): ConvertedVariableEntityForDocumentation {

const t = useTranslation(ctx);
const translate = getTranslator(ctx);

const name = variableEntity.name;
const description = variableEntity.description ?? "";
Expand All @@ -36,7 +36,7 @@ export function convertVariableEntityForDocumentation(ctx: MarkupRenderContexts,
const position = variableEntity.position ? convertPosition(ctx, variableEntity.position) : "";
const jsdocTags = convertJSDocTags(ctx, variableEntity);

const type = [`${t("type", { capitalize: true })}: `, convertType(ctx, variableEntity.type)];
const type = [`${translate("type", { capitalize: true })}: `, convertType(ctx, variableEntity.type)];

return createTitleNode(
name,
Expand Down
12 changes: 6 additions & 6 deletions src/renderer/markup/utils/translations.test.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
import { expect, it } from "vitest";

import { useTranslation } from "unwritten:renderer/markup/utils/translations.js";
import { getTranslator } from "unwritten:renderer/markup/utils/translations.js";
import { createRenderContext } from "unwritten:tests:utils/context.js";
import { scope } from "unwritten:tests:utils/scope.js";


scope("Renderer", "translations", () => {

const ctx = createRenderContext();
const t = useTranslation(ctx);
const translate = getTranslator(ctx);

it("should singularize properly", () => {
expect(t("function", { count: 1 })).to.equal("function");
expect(translate("function", { count: 1 })).to.equal("function");
});

it("should pluralize properly", () => {
expect(t("function", { count: 2 })).to.equal("functions");
expect(translate("function", { count: 2 })).to.equal("functions");
});

it("should not pluralize if not specified", () => {
expect(t("beta")).to.equal("beta");
expect(translate("beta")).to.equal("beta");
});

it("should fallback to the translation key if not found", () => {
// @ts-expect-error - Purposefully testing an invalid key
expect(t("not-found")).to.equal("not-found");
expect(translate("not-found")).to.equal("not-found");
});

});
8 changes: 4 additions & 4 deletions src/renderer/markup/utils/translations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ interface TranslationOptions {
count?: number;
}

export function useTranslation<MarkupRenderContext extends MarkdownRenderContext>(ctx: MarkdownRenderContext): (key: keyof TranslationWithoutSuffixes<Complete<MarkdownRenderConfig>["translations"]>, options?: TranslationOptions) => string;
export function useTranslation<MarkupRenderContext extends HTMLRenderContext>(ctx: HTMLRenderContext): (key: keyof TranslationWithoutSuffixes<Complete<HTMLRenderConfig>["translations"]>, options?: TranslationOptions) => string;
export function useTranslation<MarkupRenderContext extends MarkupRenderContexts>(ctx: MarkupRenderContext): (key: keyof TranslationWithoutSuffixes<Complete<MarkupRenderConfig>["translations"]>, options?: TranslationOptions) => string;
export function useTranslation<MarkupRenderContext extends MarkupRenderContexts>(ctx: MarkupRenderContext) {
export function getTranslator<MarkupRenderContext extends MarkdownRenderContext>(ctx: MarkdownRenderContext): (key: keyof TranslationWithoutSuffixes<Complete<MarkdownRenderConfig>["translations"]>, options?: TranslationOptions) => string;
export function getTranslator<MarkupRenderContext extends HTMLRenderContext>(ctx: HTMLRenderContext): (key: keyof TranslationWithoutSuffixes<Complete<HTMLRenderConfig>["translations"]>, options?: TranslationOptions) => string;
export function getTranslator<MarkupRenderContext extends MarkupRenderContexts>(ctx: MarkupRenderContext): (key: keyof TranslationWithoutSuffixes<Complete<MarkupRenderConfig>["translations"]>, options?: TranslationOptions) => string;
export function getTranslator<MarkupRenderContext extends MarkupRenderContexts>(ctx: MarkupRenderContext) {
return (key: keyof TranslationWithoutSuffixes<Complete<MarkupRenderConfig>["translations"]>, options?: TranslationOptions) => translate(ctx, key, options);
}

Expand Down

0 comments on commit d3189d7

Please sign in to comment.