From 9557b382cb8226841978922cf7d9cf88b7fb1e24 Mon Sep 17 00:00:00 2001 From: Xie Yuheng Date: Wed, 3 Jul 2024 20:53:07 +0800 Subject: [PATCH] `conceptFromEntities` --- TODO.md | 5 +---- src/concept/conceptFromAttributes.ts | 0 src/concept/conceptFromEntities.ts | 23 +++++++++++++++++++++++ src/concept/index.ts | 2 ++ 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/concept/conceptFromAttributes.ts create mode 100644 src/concept/conceptFromEntities.ts diff --git a/TODO.md b/TODO.md index 11da748..f15156f 100644 --- a/TODO.md +++ b/TODO.md @@ -6,10 +6,7 @@ # concept -`conceptFromEntities` -- 构造 immutable 的 `Concept` -`conceptFromAttributes` -- 构造 immutable 的 `Concept` -`conceptFromEntity` -- 构造 immutable 的 `Concept` -- 有更好的名字吗? -`conceptFromAttribute` -- 构造 immutable 的 `Concept` -- 有更好的名字吗? +`conceptFromAttributes` # context diff --git a/src/concept/conceptFromAttributes.ts b/src/concept/conceptFromAttributes.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/concept/conceptFromEntities.ts b/src/concept/conceptFromEntities.ts new file mode 100644 index 0000000..af60f11 --- /dev/null +++ b/src/concept/conceptFromEntities.ts @@ -0,0 +1,23 @@ +import { + commonAttributes, + commonEntities, + type Context, + type Entity, +} from "../context/index.js" +import type { Concept } from "./Concept.js" + +export function conceptFromEntities( + context: Context, + entities: ReadonlySet | ReadonlyArray, +): Concept { + entities = new Set(entities) + + const intent = commonAttributes(context, entities) + const extent = commonEntities(context, intent) + + return { + context, + extent, + intent, + } +} diff --git a/src/concept/index.ts b/src/concept/index.ts index 36ec376..5f67145 100644 --- a/src/concept/index.ts +++ b/src/concept/index.ts @@ -1,5 +1,7 @@ export * from "./closureAttributes.js" export * from "./closureEntities.js" export * from "./Concept.js" +export * from "./conceptFromAttributes.js" +export * from "./conceptFromEntities.js" export * from "./isExtent.js" export * from "./isIntent.js"