mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
This commit is contained in:
parent
bf72ea3d54
commit
25b577233b
|
@ -1,4 +1,4 @@
|
|||
import { extractGlobals, isSimpleExpression, splitTemplateDefinition } from './rslangAPI';
|
||||
import { applyTypificationMapping, extractGlobals, isSimpleExpression, splitTemplateDefinition } from './rslangAPI';
|
||||
|
||||
const globalsData = [
|
||||
['', ''],
|
||||
|
@ -47,3 +47,24 @@ describe('Testing split template', () => {
|
|||
expect(`${result.head}||${result.body}`).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
const typificationMappingData = [
|
||||
['', '', '', ''],
|
||||
['X1', 'X2', 'X1', 'X2'],
|
||||
['X1', 'X2', 'ℬ(X1)', 'ℬ(X2)'],
|
||||
['X1', 'X2', 'X1×X3', 'X2×X3'],
|
||||
['X1', '(X1×X1)', 'X1', 'X1×X1'],
|
||||
['X1', '(X1×X1)', 'ℬ(X1)', 'ℬ(X1×X1)'],
|
||||
['X1', '(X1×X1)', 'ℬ(X1×X2)', 'ℬ((X1×X1)×X2)'],
|
||||
['X1', 'ℬ(X3)', 'ℬ(X1)', 'ℬℬ(X3)'],
|
||||
['X1', 'ℬ(X3)', 'ℬ(X1×X1)', 'ℬ(ℬ(X3)×ℬ(X3))']
|
||||
];
|
||||
describe('Testing typification mapping', () => {
|
||||
it.each(typificationMappingData)(
|
||||
'Apply typification mapping %p',
|
||||
(original: string, replacement: string, input: string, expected: string) => {
|
||||
const result = applyTypificationMapping(input, { [original]: replacement });
|
||||
expect(result).toBe(expected);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
|
|
@ -164,13 +164,55 @@ export function applyAliasMapping(target: string, mapping: AliasMapping): string
|
|||
* Apply alias typification mapping.
|
||||
*/
|
||||
export function applyTypificationMapping(target: string, mapping: AliasMapping): string {
|
||||
const result = applyAliasMapping(target, mapping);
|
||||
if (result === target) {
|
||||
const modified = applyAliasMapping(target, mapping);
|
||||
if (modified === target) {
|
||||
return target;
|
||||
}
|
||||
|
||||
// remove double parentheses
|
||||
// deal with ℬ(ℬ)
|
||||
const deleteBrackets: number[] = [];
|
||||
const positions: number[] = [];
|
||||
const booleans: number[] = [];
|
||||
let boolCount: number = 0;
|
||||
let stackSize: number = 0;
|
||||
|
||||
for (let i = 0; i < modified.length; i++) {
|
||||
const char = modified[i];
|
||||
if (char === 'ℬ') {
|
||||
boolCount++;
|
||||
continue;
|
||||
}
|
||||
if (char === '(') {
|
||||
stackSize++;
|
||||
positions.push(i);
|
||||
booleans.push(boolCount);
|
||||
}
|
||||
boolCount = 0;
|
||||
if (char === ')') {
|
||||
if (
|
||||
i < modified.length - 1 &&
|
||||
modified[i + 1] === ')' &&
|
||||
stackSize > 1 &&
|
||||
positions[stackSize - 2] + booleans[stackSize - 1] + 1 === positions[stackSize - 1]
|
||||
) {
|
||||
deleteBrackets.push(i);
|
||||
deleteBrackets.push(positions[stackSize - 2]);
|
||||
}
|
||||
if (i === modified.length - 1 && stackSize === 1 && positions[0] === 0) {
|
||||
deleteBrackets.push(i);
|
||||
deleteBrackets.push(positions[0]);
|
||||
}
|
||||
stackSize--;
|
||||
positions.pop();
|
||||
booleans.pop();
|
||||
}
|
||||
}
|
||||
|
||||
let result = '';
|
||||
for (let i = 0; i < modified.length; i++) {
|
||||
if (!deleteBrackets.includes(i)) {
|
||||
result += modified[i];
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -9,16 +9,17 @@ import TopicItem from '../TopicItem';
|
|||
|
||||
function HelpMain() {
|
||||
return (
|
||||
<div>
|
||||
<div className='text-justify'>
|
||||
<h1>Портал</h1>
|
||||
<p>
|
||||
Портал позволяет анализировать предметные области, формально записывать системы определений и синтезировать их с
|
||||
помощью математического аппарата <LinkTopic text='Родов структур' topic={HelpTopic.RSLANG} />
|
||||
</p>
|
||||
<p>
|
||||
Такие системы называются <b>Концептуальными схемами</b> и состоят из отдельных{' '}
|
||||
<LinkTopic text='Конституент' topic={HelpTopic.CC_CONSTITUENTA} />, обладающих уникальными обозначениями и
|
||||
формальными определениями
|
||||
Такие системы называются <LinkTopic text='Концептуальными схемами' topic={HelpTopic.CC_SYSTEM} /> и состоят из
|
||||
отдельных <LinkTopic text='Конституент' topic={HelpTopic.CC_CONSTITUENTA} />, обладающих уникальными
|
||||
обозначениями и формальными определениями. Концептуальные схемы могут быть получены в рамках операций синтеза в{' '}
|
||||
<LinkTopic text='Операционной схеме синтеза' topic={HelpTopic.CC_OSS} />.
|
||||
</p>
|
||||
|
||||
<h2>Разделы Портала</h2>
|
||||
|
@ -69,8 +70,9 @@ function HelpMain() {
|
|||
Портал разрабатывается <TextURL text='Центром Концепт' href={external_urls.concept} />
|
||||
</p>
|
||||
<p>
|
||||
Портал поддерживает актуальные версии браузеров Chrome, Firefox, Safari. Убедитесь, что используете последнюю
|
||||
версию браузера в случае возникновения визуальных ошибок или проблем с производительностью.
|
||||
Портал поддерживает актуальные версии браузеров Chrome, Firefox, Safari, включая мобильные устройства.
|
||||
Убедитесь, что используете последнюю версию браузера в случае возникновения визуальных ошибок или проблем с
|
||||
производительностью.
|
||||
</p>
|
||||
<p>
|
||||
Ваши пожелания по доработке, найденные ошибки и иные предложения можно направлять на email:{' '}
|
||||
|
|
|
@ -181,7 +181,7 @@ function HelpThesaurus() {
|
|||
</li>
|
||||
<li>основа данного понятия – понятие, на котором основано порождающее выражение данной конституенты;</li>
|
||||
<li>
|
||||
порожденное понятие данным понятием – понятие, определение которого является порождающим выражением,
|
||||
порожденное понятие данным понятием – понятие, определением которого является порождающим выражением,
|
||||
основанным на данном понятии.
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -267,7 +267,7 @@ function HelpThesaurus() {
|
|||
</li>
|
||||
<li>
|
||||
<IconSynthesis size='1rem' className='inline-icon' />
|
||||
{'\u2009'}синтез концептуальных схем.ыф
|
||||
{'\u2009'}синтез концептуальных схем.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user