@genkaok/fenom-js 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/compile-ast.d.ts +2 -0
- package/compiler/compile-node.d.ts +2 -0
- package/compiler/compiler.d.ts +2 -0
- package/compiler/evaluate.d.ts +2 -0
- package/compiler/functions.d.ts +9 -0
- package/engine/loader.d.ts +2 -0
- package/engine/renderer.d.ts +8 -0
- package/fenom-js.cjs +1815 -0
- package/fenom-js.cjs.map +1 -0
- package/fenom-js.mjs +1810 -0
- package/fenom-js.mjs.map +1 -0
- package/filters/filters.d.ts +173 -0
- package/index.d.ts +5 -0
- package/lexer/patterns.d.ts +14 -0
- package/lexer/tokenize.d.ts +2 -0
- package/loader/loader.d.ts +2 -0
- package/node.cjs +1838 -0
- package/node.cjs.map +1 -0
- package/node.d.ts +4 -0
- package/node.mjs +1832 -0
- package/node.mjs.map +1 -0
- package/package.json +38 -0
- package/parser/parse-block.d.ts +6 -0
- package/parser/parse-expression.d.ts +2 -0
- package/parser/parse-extends.d.ts +6 -0
- package/parser/parse-for.d.ts +6 -0
- package/parser/parse-if.d.ts +5 -0
- package/parser/parse-switch.d.ts +5 -0
- package/parser/parser.d.ts +3 -0
- package/readme.md +130 -0
- package/types/common.d.ts +18 -0
- package/types/compiler/compile-ast.d.ts +2 -0
- package/types/compiler/compile-node.d.ts +2 -0
- package/types/compiler/compiler.d.ts +2 -0
- package/types/compiler/evaluate.d.ts +2 -0
- package/types/compiler/functions.d.ts +9 -0
- package/types/engine/loader.d.ts +2 -0
- package/types/engine/renderer.d.ts +8 -0
- package/types/expression.d.ts +27 -0
- package/types/filters/filters.d.ts +173 -0
- package/types/index.d.ts +5 -0
- package/types/lexer/patterns.d.ts +14 -0
- package/types/lexer/tokenize.d.ts +2 -0
- package/types/loader/loader.d.ts +2 -0
- package/types/node.d.ts +4 -0
- package/types/parser/parse-block.d.ts +6 -0
- package/types/parser/parse-expression.d.ts +2 -0
- package/types/parser/parse-extends.d.ts +6 -0
- package/types/parser/parse-for.d.ts +6 -0
- package/types/parser/parse-if.d.ts +5 -0
- package/types/parser/parse-switch.d.ts +5 -0
- package/types/parser/parser.d.ts +3 -0
- package/types/token.d.ts +9 -0
- package/types/types/common.d.ts +18 -0
- package/types/types/expression.d.ts +27 -0
- package/types/types/token.d.ts +9 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
export declare const filters: {
|
|
2
|
+
/**
|
|
3
|
+
* Преобразует строку в верхний регистр
|
|
4
|
+
*/
|
|
5
|
+
upper: (s: any) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Преобразует строку в нижний регистр
|
|
8
|
+
*/
|
|
9
|
+
lower: (s: any) => string;
|
|
10
|
+
/**
|
|
11
|
+
* Делает первую букву строки заглавной, остальные — строчными
|
|
12
|
+
* 'аННА' → 'Анна'
|
|
13
|
+
*/
|
|
14
|
+
capitalize: (s: any) => string;
|
|
15
|
+
/**
|
|
16
|
+
* Аналог capitalize (для совместимости)
|
|
17
|
+
*/
|
|
18
|
+
ucfirst: (s: any) => string;
|
|
19
|
+
/**
|
|
20
|
+
* Делает первую букву каждого слова заглавной
|
|
21
|
+
* 'hello world' → 'Hello World'
|
|
22
|
+
*/
|
|
23
|
+
ucwords: (s: any) => string;
|
|
24
|
+
/**
|
|
25
|
+
* Делает первую букву строки строчной
|
|
26
|
+
* 'Hello' → 'hello'
|
|
27
|
+
*/
|
|
28
|
+
lcfirst: (s: any) => string;
|
|
29
|
+
/**
|
|
30
|
+
* Удаляет пробелы с краёв строки
|
|
31
|
+
*/
|
|
32
|
+
trim: (s: any) => string;
|
|
33
|
+
/**
|
|
34
|
+
* Удаляет пробелы слева
|
|
35
|
+
*/
|
|
36
|
+
ltrim: (s: any) => string;
|
|
37
|
+
/**
|
|
38
|
+
* Удаляет пробелы справа
|
|
39
|
+
*/
|
|
40
|
+
rtrim: (s: any) => string;
|
|
41
|
+
/**
|
|
42
|
+
* Преобразует \n → <br>
|
|
43
|
+
*/
|
|
44
|
+
nl2br: (s: any) => string;
|
|
45
|
+
/**
|
|
46
|
+
* Заменяет подстроку
|
|
47
|
+
* {$str|replace:'old':'new'}
|
|
48
|
+
*/
|
|
49
|
+
replace: (s: any, search: string, replace: string) => string;
|
|
50
|
+
/**
|
|
51
|
+
* Обрезает строку
|
|
52
|
+
* {$str|substr:0:5}
|
|
53
|
+
*/
|
|
54
|
+
substr: (...args: any[]) => any;
|
|
55
|
+
/**
|
|
56
|
+
* Кодирует строку в URL
|
|
57
|
+
*/
|
|
58
|
+
urlencode: (s: any) => string;
|
|
59
|
+
/**
|
|
60
|
+
* Декодирует URL
|
|
61
|
+
*/
|
|
62
|
+
urldecode: (s: any) => string;
|
|
63
|
+
/**
|
|
64
|
+
* Экранирует HTML-символы
|
|
65
|
+
*/
|
|
66
|
+
escape: (...args: any[]) => any;
|
|
67
|
+
/**
|
|
68
|
+
* Синоним escape
|
|
69
|
+
*/
|
|
70
|
+
e: (s: any) => any;
|
|
71
|
+
/**
|
|
72
|
+
* Первый элемент массива/объекта
|
|
73
|
+
*/
|
|
74
|
+
first: (...args: any[]) => any;
|
|
75
|
+
/**
|
|
76
|
+
* Последний элемент массива/объекта
|
|
77
|
+
*/
|
|
78
|
+
last: (...args: any[]) => any;
|
|
79
|
+
/**
|
|
80
|
+
* Объединяет массив в строку
|
|
81
|
+
* {$arr|join:', '}
|
|
82
|
+
*/
|
|
83
|
+
join: (...args: any[]) => any;
|
|
84
|
+
/**
|
|
85
|
+
* Переворачивает массив или строку
|
|
86
|
+
*/
|
|
87
|
+
reverse: (...args: any[]) => any;
|
|
88
|
+
/**
|
|
89
|
+
* Сортирует массив по значениям
|
|
90
|
+
*/
|
|
91
|
+
sort: (...args: any[]) => any;
|
|
92
|
+
/**
|
|
93
|
+
* Сортирует массив по ключам
|
|
94
|
+
*/
|
|
95
|
+
ksort: (...args: any[]) => any;
|
|
96
|
+
/**
|
|
97
|
+
* Возвращает только уникальные значения
|
|
98
|
+
*/
|
|
99
|
+
unique: (...args: any[]) => any;
|
|
100
|
+
/**
|
|
101
|
+
* Перемешивает массив
|
|
102
|
+
*/
|
|
103
|
+
shuffle: (...args: any[]) => any;
|
|
104
|
+
/**
|
|
105
|
+
* Возвращает срез массива/строки
|
|
106
|
+
* {$arr|slice:0:2}
|
|
107
|
+
*/
|
|
108
|
+
slice: (arr: any, start: number, length?: number) => any;
|
|
109
|
+
/**
|
|
110
|
+
* Объединяет два массива
|
|
111
|
+
* {$arr1|merge:$arr2}
|
|
112
|
+
*/
|
|
113
|
+
merge: (arr1: any, arr2: any) => any;
|
|
114
|
+
/**
|
|
115
|
+
* Разбивает массив на группы
|
|
116
|
+
* {$items|batch:3}
|
|
117
|
+
*/
|
|
118
|
+
batch: (arr: any, size: number) => any;
|
|
119
|
+
/**
|
|
120
|
+
* Возвращает ключи массива/объекта
|
|
121
|
+
*/
|
|
122
|
+
keys: (obj: Record<string, any>) => string[];
|
|
123
|
+
/**
|
|
124
|
+
* Возвращает значения массива/объекта
|
|
125
|
+
*/
|
|
126
|
+
values: (obj: any) => unknown[];
|
|
127
|
+
/**
|
|
128
|
+
* Длина строки или количество элементов
|
|
129
|
+
*/
|
|
130
|
+
length: (arr: any) => number;
|
|
131
|
+
/**
|
|
132
|
+
* Форматирует число
|
|
133
|
+
* {$price|number_format:2:'.':','}
|
|
134
|
+
*/
|
|
135
|
+
number_format: (num: any, decimals?: number, decPoint?: string, thousandsSep?: string) => string;
|
|
136
|
+
/**
|
|
137
|
+
* Абсолютное значение
|
|
138
|
+
*/
|
|
139
|
+
abs: (n: any) => number;
|
|
140
|
+
/**
|
|
141
|
+
* Округляет число
|
|
142
|
+
*/
|
|
143
|
+
round: (n: any, precision?: number) => number;
|
|
144
|
+
/**
|
|
145
|
+
* Кодирует в JSON
|
|
146
|
+
*/
|
|
147
|
+
json_encode: (data: any) => string;
|
|
148
|
+
/**
|
|
149
|
+
* Декодирует из JSON
|
|
150
|
+
*/
|
|
151
|
+
json_decode: (str: any) => any;
|
|
152
|
+
/**
|
|
153
|
+
* Форматирует timestamp
|
|
154
|
+
* Формат: d.m.Y H:i:s
|
|
155
|
+
*/
|
|
156
|
+
date: (timestamp: any, format?: string) => string;
|
|
157
|
+
/**
|
|
158
|
+
* Возвращает значение по умолчанию, если пусто
|
|
159
|
+
*/
|
|
160
|
+
default: (s: any, def: string) => any;
|
|
161
|
+
/**
|
|
162
|
+
* Вывод без изменений
|
|
163
|
+
*/
|
|
164
|
+
raw: (s: any) => any;
|
|
165
|
+
/**
|
|
166
|
+
* Отладка: вывод структуры
|
|
167
|
+
*/
|
|
168
|
+
var_dump: (data: any) => string;
|
|
169
|
+
/**
|
|
170
|
+
* Отладка: красивый вывод
|
|
171
|
+
*/
|
|
172
|
+
print_r: (data: any) => string;
|
|
173
|
+
};
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TokenPattern } from "./../types/token";
|
|
2
|
+
export declare const SET_PATTERNS: TokenPattern[];
|
|
3
|
+
export declare const IF_PATTERNS: TokenPattern[];
|
|
4
|
+
export declare const FOREACH_PATTERNS: TokenPattern[];
|
|
5
|
+
export declare const SWITCH_PATTERNS: TokenPattern[];
|
|
6
|
+
export declare const CYCLE_PATTERNS: TokenPattern[];
|
|
7
|
+
export declare const INCLUDE_PATTERNS: TokenPattern[];
|
|
8
|
+
export declare const EXTENDS_PATTERNS: TokenPattern[];
|
|
9
|
+
export declare const FILTER_PATTERNS: TokenPattern[];
|
|
10
|
+
export declare const MACRO_PATTERNS: TokenPattern[];
|
|
11
|
+
export declare const IGNORE_PATTERN: TokenPattern[];
|
|
12
|
+
export declare const MISC_PATTERNS: TokenPattern[];
|
|
13
|
+
export declare const OUTPUT_PATTERN: TokenPattern[];
|
|
14
|
+
export declare const OPERATOR_PATTERN: TokenPattern[];
|
package/types/node.d.ts
ADDED
package/types/token.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ASTNode {
|
|
2
|
+
type: string;
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
}
|
|
5
|
+
export interface UserConfig {
|
|
6
|
+
root?: string;
|
|
7
|
+
dataDir?: string;
|
|
8
|
+
pagesDir?: string;
|
|
9
|
+
scanAll?: boolean;
|
|
10
|
+
minify?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type TemplateLoader = (file: string) => Promise<string>;
|
|
13
|
+
export interface FenomOptions {
|
|
14
|
+
context?: Record<string, any>;
|
|
15
|
+
loader?: TemplateLoader;
|
|
16
|
+
minify?: boolean;
|
|
17
|
+
debug?: boolean;
|
|
18
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type ExpressionNode = {
|
|
2
|
+
type: 'literal';
|
|
3
|
+
value: string | number | boolean;
|
|
4
|
+
} | {
|
|
5
|
+
type: 'variable';
|
|
6
|
+
path: string;
|
|
7
|
+
} | {
|
|
8
|
+
type: 'unary';
|
|
9
|
+
operator: '!' | '+' | '-';
|
|
10
|
+
argument: ExpressionNode;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'binary';
|
|
13
|
+
operator: BinaryOperator;
|
|
14
|
+
left: ExpressionNode;
|
|
15
|
+
right: ExpressionNode;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'conditional';
|
|
18
|
+
test: ExpressionNode;
|
|
19
|
+
consequent: ExpressionNode;
|
|
20
|
+
alternate: ExpressionNode;
|
|
21
|
+
} | {
|
|
22
|
+
type: 'filter';
|
|
23
|
+
expression: ExpressionNode;
|
|
24
|
+
filter: string;
|
|
25
|
+
args: ExpressionNode[];
|
|
26
|
+
};
|
|
27
|
+
export type BinaryOperator = '+' | '-' | '*' | '/' | '%' | '==' | '!=' | '<' | '<=' | '>' | '>=' | '&&' | '||' | '~';
|