source: node_modules/@swagger-api/apidom-core/es/predicates/index.mjs

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 16 months ago

Initial commit

  • Property mode set to 100644
File size: 5.1 KB
Line 
1import { Element, StringElement, NumberElement, NullElement, BooleanElement, ArrayElement, ObjectElement, MemberElement, LinkElement, RefElement } from 'minim';
2import { all } from 'ramda';
3import { included } from 'ramda-adjunct';
4import AnnotationElement from "../elements/Annotation.mjs";
5import CommentElement from "../elements/Comment.mjs";
6import ParserResultElement from "../elements/ParseResult.mjs";
7import SourceMapElement from "../elements/SourceMap.mjs";
8import createPredicate, { isElementType as isElementTypeHelper } from "./helpers.mjs";
9export const isElement = createPredicate(({
10 hasBasicElementProps,
11 primitiveEq
12}) => {
13 return element => element instanceof Element || hasBasicElementProps(element) && primitiveEq(undefined, element);
14});
15export const isStringElement = createPredicate(({
16 hasBasicElementProps,
17 primitiveEq
18}) => {
19 return element => element instanceof StringElement || hasBasicElementProps(element) && primitiveEq('string', element);
20});
21export const isNumberElement = createPredicate(({
22 hasBasicElementProps,
23 primitiveEq
24}) => {
25 return element => element instanceof NumberElement || hasBasicElementProps(element) && primitiveEq('number', element);
26});
27export const isNullElement = createPredicate(({
28 hasBasicElementProps,
29 primitiveEq
30}) => {
31 return element => element instanceof NullElement || hasBasicElementProps(element) && primitiveEq('null', element);
32});
33export const isBooleanElement = createPredicate(({
34 hasBasicElementProps,
35 primitiveEq
36}) => {
37 return element => element instanceof BooleanElement || hasBasicElementProps(element) && primitiveEq('boolean', element);
38});
39export const isObjectElement = createPredicate(({
40 hasBasicElementProps,
41 primitiveEq,
42 hasMethod
43}) => {
44 return element => element instanceof ObjectElement || hasBasicElementProps(element) && primitiveEq('object', element) && hasMethod('keys', element) && hasMethod('values', element) && hasMethod('items', element);
45});
46export const isArrayElement = createPredicate(({
47 hasBasicElementProps,
48 primitiveEq,
49 hasMethod
50}) => {
51 return element => element instanceof ArrayElement && !(element instanceof ObjectElement) || hasBasicElementProps(element) && primitiveEq('array', element) && hasMethod('push', element) && hasMethod('unshift', element) && hasMethod('map', element) && hasMethod('reduce', element);
52});
53export const isMemberElement = createPredicate(({
54 hasBasicElementProps,
55 isElementType,
56 primitiveEq
57}) => {
58 return element => element instanceof MemberElement || hasBasicElementProps(element) && isElementType('member', element) && primitiveEq(undefined, element);
59});
60export const isLinkElement = createPredicate(({
61 hasBasicElementProps,
62 isElementType,
63 primitiveEq
64}) => {
65 return element => element instanceof LinkElement || hasBasicElementProps(element) && isElementType('link', element) && primitiveEq(undefined, element);
66});
67export const isRefElement = createPredicate(({
68 hasBasicElementProps,
69 isElementType,
70 primitiveEq
71}) => {
72 return element => element instanceof RefElement || hasBasicElementProps(element) && isElementType('ref', element) && primitiveEq(undefined, element);
73});
74export const isAnnotationElement = createPredicate(({
75 hasBasicElementProps,
76 isElementType,
77 primitiveEq
78}) => {
79 return element => element instanceof AnnotationElement || hasBasicElementProps(element) && isElementType('annotation', element) && primitiveEq('array', element);
80});
81export const isCommentElement = createPredicate(({
82 hasBasicElementProps,
83 isElementType,
84 primitiveEq
85}) => {
86 return element => element instanceof CommentElement || hasBasicElementProps(element) && isElementType('comment', element) && primitiveEq('string', element);
87});
88export const isParseResultElement = createPredicate(({
89 hasBasicElementProps,
90 isElementType,
91 primitiveEq
92}) => {
93 return element => element instanceof ParserResultElement || hasBasicElementProps(element) && isElementType('parseResult', element) && primitiveEq('array', element);
94});
95export const isSourceMapElement = createPredicate(({
96 hasBasicElementProps,
97 isElementType,
98 primitiveEq
99}) => {
100 return element => element instanceof SourceMapElement || hasBasicElementProps(element) && isElementType('sourceMap', element) && primitiveEq('array', element);
101});
102export const isPrimitiveElement = element => {
103 return isElementTypeHelper('object', element) || isElementTypeHelper('array', element) || isElementTypeHelper('boolean', element) || isElementTypeHelper('number', element) || isElementTypeHelper('string', element) || isElementTypeHelper('null', element) || isElementTypeHelper('member', element);
104};
105export const hasElementSourceMap = element => {
106 return isSourceMapElement(element.meta.get('sourceMap'));
107};
108export const includesSymbols = (symbols, element) => {
109 if (symbols.length === 0) {
110 return true;
111 }
112 const elementSymbols = element.attributes.get('symbols');
113 if (!isArrayElement(elementSymbols)) {
114 return false;
115 }
116 return all(included(elementSymbols.toValue()), symbols);
117};
118export const includesClasses = (classes, element) => {
119 if (classes.length === 0) {
120 return true;
121 }
122 return all(included(element.classes.toValue()), classes);
123};
Note: See TracBrowser for help on using the repository browser.