es6-fuzz 6.0.3 → 6.0.8
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/lib/render-examples.d.ts +3 -0
- package/lib/render-examples.d.ts.map +1 -0
- package/lib/render-examples.js +285 -0
- package/lib/render-examples.js.map +1 -0
- package/lib/svg-renderer.d.ts +51 -0
- package/lib/svg-renderer.d.ts.map +1 -0
- package/lib/svg-renderer.js +269 -0
- package/lib/svg-renderer.js.map +1 -0
- package/package.json +3 -2
- package/.claude/settings.local.json +0 -26
- package/.gitattributes +0 -1
- package/.jscsrc +0 -36
- package/example.js +0 -11
- package/example2.js +0 -13
- package/typedoc.json +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-examples.d.ts","sourceRoot":"","sources":["../src/render-examples.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const logic_1 = require("./logic");
|
|
38
|
+
const svg_renderer_1 = require("./svg-renderer");
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
// Ensure output directory exists
|
|
42
|
+
const outDir = './examples';
|
|
43
|
+
if (!fs.existsSync(outDir)) {
|
|
44
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
console.log('Rendering fuzzy logic curve examples to ./examples directory...\n');
|
|
47
|
+
// Initialize logic system
|
|
48
|
+
const logic = new logic_1.Logic();
|
|
49
|
+
// Define example curves with descriptive names
|
|
50
|
+
const examples = [
|
|
51
|
+
{
|
|
52
|
+
name: 'grade-cold',
|
|
53
|
+
shape: new logic.c.Grade(10, 25, 25, 25),
|
|
54
|
+
description: 'Grade: Cold temperature (increases from 10°C to 25°C)'
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'reverse-grade-hot',
|
|
58
|
+
shape: new logic.c.ReverseGrade(25, 40, 40, 40),
|
|
59
|
+
description: 'ReverseGrade: Hot temperature (decreases from 25°C to 40°C)'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'triangle-comfortable',
|
|
63
|
+
shape: new logic.c.Triangle(18, 23, 23, 28),
|
|
64
|
+
description: 'Triangle: Comfortable temperature (peak at 23°C)'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'trapezoid-optimal',
|
|
68
|
+
shape: new logic.c.Trapezoid(20, 22, 26, 28),
|
|
69
|
+
description: 'Trapezoid: Optimal temperature range (22°C to 26°C)'
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'sigmoid-transition',
|
|
73
|
+
shape: new logic.c.Sigmoid(25, 2),
|
|
74
|
+
description: 'Sigmoid: Smooth transition (centered at 25, slope 2)'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'sigmoid-steep',
|
|
78
|
+
shape: new logic.c.Sigmoid(30, 0.5),
|
|
79
|
+
description: 'Sigmoid: Steep transition (centered at 30, slope 0.5)'
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'constant-medium',
|
|
83
|
+
shape: new logic.c.Constant(0.5),
|
|
84
|
+
description: 'Constant: Fixed membership value (0.5)'
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'function-sine-wave',
|
|
88
|
+
shape: new logic.c.FuzzyFunction((x) => {
|
|
89
|
+
return Math.sin(x * Math.PI / 25) * 0.4 + 0.5;
|
|
90
|
+
}),
|
|
91
|
+
description: 'FuzzyFunction: Sine wave pattern'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'function-gaussian',
|
|
95
|
+
shape: new logic.c.FuzzyFunction((x) => {
|
|
96
|
+
const mean = 25;
|
|
97
|
+
const stdDev = 5;
|
|
98
|
+
return Math.exp(-Math.pow(x - mean, 2) / (2 * stdDev * stdDev));
|
|
99
|
+
}),
|
|
100
|
+
description: 'FuzzyFunction: Gaussian distribution (mean=25, σ=5)'
|
|
101
|
+
}
|
|
102
|
+
];
|
|
103
|
+
// Create renderer with nice defaults
|
|
104
|
+
const renderer = new svg_renderer_1.SVGRenderer({
|
|
105
|
+
width: 600,
|
|
106
|
+
height: 400,
|
|
107
|
+
xMin: 0,
|
|
108
|
+
xMax: 50,
|
|
109
|
+
yMin: 0,
|
|
110
|
+
yMax: 1,
|
|
111
|
+
padding: 50,
|
|
112
|
+
gridLines: true,
|
|
113
|
+
showLabels: true,
|
|
114
|
+
backgroundColor: '#ffffff',
|
|
115
|
+
gridColor: '#e5e7eb',
|
|
116
|
+
axisColor: '#374151',
|
|
117
|
+
labelColor: '#374151',
|
|
118
|
+
strokeWidth: 3,
|
|
119
|
+
strokeColor: '#2563eb',
|
|
120
|
+
fillOpacity: 0.15
|
|
121
|
+
});
|
|
122
|
+
// Render individual examples
|
|
123
|
+
examples.forEach(({ name, shape, description }) => {
|
|
124
|
+
const svg = renderer.render(shape);
|
|
125
|
+
const filePath = path.join(outDir, `${name}.svg`);
|
|
126
|
+
fs.writeFileSync(filePath, svg);
|
|
127
|
+
console.log(`✓ ${description}`);
|
|
128
|
+
console.log(` → ${filePath}`);
|
|
129
|
+
});
|
|
130
|
+
// Create composite examples
|
|
131
|
+
console.log('\nCreating composite visualizations...');
|
|
132
|
+
// Temperature controller system
|
|
133
|
+
const tempSystem = renderer.renderMultiple([
|
|
134
|
+
{ shape: new logic.c.ReverseGrade(0, 15, 15, 15), options: { strokeColor: '#1e40af', fillOpacity: 0.15 } },
|
|
135
|
+
{ shape: new logic.c.Trapezoid(10, 15, 20, 25), options: { strokeColor: '#3b82f6', fillOpacity: 0.15 } },
|
|
136
|
+
{ shape: new logic.c.Triangle(20, 25, 25, 30), options: { strokeColor: '#06b6d4', fillOpacity: 0.15 } },
|
|
137
|
+
{ shape: new logic.c.Triangle(25, 30, 30, 35), options: { strokeColor: '#f59e0b', fillOpacity: 0.15 } },
|
|
138
|
+
{ shape: new logic.c.Trapezoid(30, 35, 40, 45), options: { strokeColor: '#f97316', fillOpacity: 0.15 } },
|
|
139
|
+
{ shape: new logic.c.Grade(40, 50, 50, 50), options: { strokeColor: '#dc2626', fillOpacity: 0.15 } }
|
|
140
|
+
]);
|
|
141
|
+
fs.writeFileSync(path.join(outDir, 'temperature-system.svg'), tempSystem);
|
|
142
|
+
console.log('✓ Temperature control system (6 membership functions)');
|
|
143
|
+
console.log(` → ${path.join(outDir, 'temperature-system.svg')}`);
|
|
144
|
+
// Temperature controller system with legend
|
|
145
|
+
const tempRendererWithLegend = new svg_renderer_1.SVGRenderer({
|
|
146
|
+
...renderer['options'],
|
|
147
|
+
showLegend: true,
|
|
148
|
+
legendPosition: 'top-right'
|
|
149
|
+
});
|
|
150
|
+
const tempSystemWithLegend = tempRendererWithLegend.renderMultiple([
|
|
151
|
+
{ shape: new logic.c.ReverseGrade(0, 15, 15, 15), options: { strokeColor: '#1e40af', fillOpacity: 0.15 }, label: 'Freezing' },
|
|
152
|
+
{ shape: new logic.c.Trapezoid(10, 15, 20, 25), options: { strokeColor: '#3b82f6', fillOpacity: 0.15 }, label: 'Cold' },
|
|
153
|
+
{ shape: new logic.c.Triangle(20, 25, 25, 30), options: { strokeColor: '#06b6d4', fillOpacity: 0.15 }, label: 'Cool' },
|
|
154
|
+
{ shape: new logic.c.Triangle(25, 30, 30, 35), options: { strokeColor: '#f59e0b', fillOpacity: 0.15 }, label: 'Warm' },
|
|
155
|
+
{ shape: new logic.c.Trapezoid(30, 35, 40, 45), options: { strokeColor: '#f97316', fillOpacity: 0.15 }, label: 'Hot' },
|
|
156
|
+
{ shape: new logic.c.Grade(40, 50, 50, 50), options: { strokeColor: '#dc2626', fillOpacity: 0.15 }, label: 'Scorching' }
|
|
157
|
+
]);
|
|
158
|
+
fs.writeFileSync(path.join(outDir, 'temperature-system-with-legend.svg'), tempSystemWithLegend);
|
|
159
|
+
console.log('✓ Temperature control system with legend');
|
|
160
|
+
console.log(` → ${path.join(outDir, 'temperature-system-with-legend.svg')}`);
|
|
161
|
+
// Speed controller system
|
|
162
|
+
const speedRenderer = new svg_renderer_1.SVGRenderer({
|
|
163
|
+
...renderer['options'],
|
|
164
|
+
xMin: 0,
|
|
165
|
+
xMax: 120,
|
|
166
|
+
showLabels: true
|
|
167
|
+
});
|
|
168
|
+
const speedSystem = speedRenderer.renderMultiple([
|
|
169
|
+
{ shape: new logic.c.ReverseGrade(0, 30, 30, 30), options: { strokeColor: '#10b981', fillOpacity: 0.15 } },
|
|
170
|
+
{ shape: new logic.c.Triangle(20, 40, 40, 60), options: { strokeColor: '#3b82f6', fillOpacity: 0.15 } },
|
|
171
|
+
{ shape: new logic.c.Triangle(50, 70, 70, 90), options: { strokeColor: '#f59e0b', fillOpacity: 0.15 } },
|
|
172
|
+
{ shape: new logic.c.Grade(80, 110, 110, 110), options: { strokeColor: '#ef4444', fillOpacity: 0.15 } }
|
|
173
|
+
]);
|
|
174
|
+
fs.writeFileSync(path.join(outDir, 'speed-controller.svg'), speedSystem);
|
|
175
|
+
console.log('✓ Speed controller (slow, medium, fast, very-fast)');
|
|
176
|
+
console.log(` → ${path.join(outDir, 'speed-controller.svg')}`);
|
|
177
|
+
// Comparison of different sigmoid slopes
|
|
178
|
+
const sigmoidComparison = renderer.renderMultiple([
|
|
179
|
+
{ shape: new logic.c.Sigmoid(25, 0.5), options: { strokeColor: '#dc2626', strokeWidth: 2 } },
|
|
180
|
+
{ shape: new logic.c.Sigmoid(25, 1), options: { strokeColor: '#f97316', strokeWidth: 2 } },
|
|
181
|
+
{ shape: new logic.c.Sigmoid(25, 2), options: { strokeColor: '#f59e0b', strokeWidth: 2 } },
|
|
182
|
+
{ shape: new logic.c.Sigmoid(25, 4), options: { strokeColor: '#10b981', strokeWidth: 2 } },
|
|
183
|
+
{ shape: new logic.c.Sigmoid(25, 8), options: { strokeColor: '#3b82f6', strokeWidth: 2 } }
|
|
184
|
+
]);
|
|
185
|
+
fs.writeFileSync(path.join(outDir, 'sigmoid-slopes.svg'), sigmoidComparison);
|
|
186
|
+
console.log('✓ Sigmoid slope comparison (slopes: 0.5, 1, 2, 4, 8)');
|
|
187
|
+
console.log(` → ${path.join(outDir, 'sigmoid-slopes.svg')}`);
|
|
188
|
+
// Create an index HTML file
|
|
189
|
+
const indexHtml = `<!DOCTYPE html>
|
|
190
|
+
<html lang="en">
|
|
191
|
+
<head>
|
|
192
|
+
<meta charset="UTF-8">
|
|
193
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
194
|
+
<title>ES6-Fuzz Curve Examples</title>
|
|
195
|
+
<style>
|
|
196
|
+
body {
|
|
197
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
198
|
+
max-width: 1200px;
|
|
199
|
+
margin: 0 auto;
|
|
200
|
+
padding: 20px;
|
|
201
|
+
background-color: #f9fafb;
|
|
202
|
+
line-height: 1.6;
|
|
203
|
+
}
|
|
204
|
+
h1 { color: #111827; margin-bottom: 30px; }
|
|
205
|
+
h2 { color: #374151; margin-top: 40px; }
|
|
206
|
+
.grid {
|
|
207
|
+
display: grid;
|
|
208
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
209
|
+
gap: 20px;
|
|
210
|
+
margin-bottom: 40px;
|
|
211
|
+
}
|
|
212
|
+
.card {
|
|
213
|
+
background: white;
|
|
214
|
+
border-radius: 8px;
|
|
215
|
+
padding: 20px;
|
|
216
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
217
|
+
}
|
|
218
|
+
.card h3 {
|
|
219
|
+
margin: 0 0 10px 0;
|
|
220
|
+
color: #1f2937;
|
|
221
|
+
font-size: 18px;
|
|
222
|
+
}
|
|
223
|
+
.card p {
|
|
224
|
+
margin: 0 0 15px 0;
|
|
225
|
+
color: #6b7280;
|
|
226
|
+
font-size: 14px;
|
|
227
|
+
}
|
|
228
|
+
.card img {
|
|
229
|
+
width: 100%;
|
|
230
|
+
height: auto;
|
|
231
|
+
border: 1px solid #e5e7eb;
|
|
232
|
+
border-radius: 4px;
|
|
233
|
+
}
|
|
234
|
+
.full-width {
|
|
235
|
+
grid-column: 1 / -1;
|
|
236
|
+
}
|
|
237
|
+
</style>
|
|
238
|
+
</head>
|
|
239
|
+
<body>
|
|
240
|
+
<h1>ES6-Fuzz SVG Curve Rendering Examples</h1>
|
|
241
|
+
|
|
242
|
+
<h2>Individual Curve Types</h2>
|
|
243
|
+
<div class="grid">
|
|
244
|
+
${examples.map(({ name, description }) => `
|
|
245
|
+
<div class="card">
|
|
246
|
+
<h3>${description.split(':')[0]}</h3>
|
|
247
|
+
<p>${description.split(':')[1]}</p>
|
|
248
|
+
<img src="${name}.svg" alt="${description}">
|
|
249
|
+
</div>`).join('')}
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
<h2>Composite Systems</h2>
|
|
253
|
+
<div class="grid">
|
|
254
|
+
<div class="card full-width">
|
|
255
|
+
<h3>Temperature Control System</h3>
|
|
256
|
+
<p>Complete temperature classification with six overlapping membership functions: freezing, cold, cool, warm, hot, and scorching.</p>
|
|
257
|
+
<img src="temperature-system.svg" alt="Temperature control system">
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
<div class="card full-width">
|
|
261
|
+
<h3>Temperature Control System with Legend</h3>
|
|
262
|
+
<p>Same temperature classification system with an integrated legend showing all membership function labels.</p>
|
|
263
|
+
<img src="temperature-system-with-legend.svg" alt="Temperature control system with legend">
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
<div class="card full-width">
|
|
267
|
+
<h3>Speed Controller</h3>
|
|
268
|
+
<p>Vehicle speed classification with four membership functions: slow, medium, fast, and very fast (0-120 km/h range).</p>
|
|
269
|
+
<img src="speed-controller.svg" alt="Speed controller">
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
<div class="card full-width">
|
|
273
|
+
<h3>Sigmoid Slope Comparison</h3>
|
|
274
|
+
<p>Comparison of sigmoid curves with different slope parameters (0.5, 1, 2, 4, 8), all centered at x=25. Steeper slopes create sharper transitions.</p>
|
|
275
|
+
<img src="sigmoid-slopes.svg" alt="Sigmoid slope comparison">
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
</body>
|
|
279
|
+
</html>`;
|
|
280
|
+
fs.writeFileSync(path.join(outDir, 'index.html'), indexHtml);
|
|
281
|
+
console.log('\n✓ Created index.html viewer');
|
|
282
|
+
console.log(` → ${path.join(outDir, 'index.html')}`);
|
|
283
|
+
console.log(`\n✅ All examples rendered successfully to ${outDir}/`);
|
|
284
|
+
console.log(' Open examples/index.html in a browser to view all examples.');
|
|
285
|
+
//# sourceMappingURL=render-examples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-examples.js","sourceRoot":"","sources":["../src/render-examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Shape } from './curve/shape';
|
|
2
|
+
import { Constant } from './curve/constant';
|
|
3
|
+
import { FuzzyFunction } from './curve/fuzzy-function';
|
|
4
|
+
import { Sigmoid } from './curve/sigmoid';
|
|
5
|
+
export interface SVGOptions {
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
padding?: number;
|
|
9
|
+
xMin?: number;
|
|
10
|
+
xMax?: number;
|
|
11
|
+
yMin?: number;
|
|
12
|
+
yMax?: number;
|
|
13
|
+
gridLines?: boolean;
|
|
14
|
+
strokeWidth?: number;
|
|
15
|
+
strokeColor?: string;
|
|
16
|
+
fillOpacity?: number;
|
|
17
|
+
backgroundColor?: string;
|
|
18
|
+
gridColor?: string;
|
|
19
|
+
axisColor?: string;
|
|
20
|
+
labelColor?: string;
|
|
21
|
+
fontSize?: number;
|
|
22
|
+
showLabels?: boolean;
|
|
23
|
+
showLegend?: boolean;
|
|
24
|
+
legendPosition?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
|
|
25
|
+
legendPadding?: number;
|
|
26
|
+
legendBackgroundColor?: string;
|
|
27
|
+
legendBorderColor?: string;
|
|
28
|
+
legendTextColor?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare class SVGRenderer {
|
|
31
|
+
private options;
|
|
32
|
+
private readonly defaultOptions;
|
|
33
|
+
constructor(options?: SVGOptions);
|
|
34
|
+
private scaleX;
|
|
35
|
+
private scaleY;
|
|
36
|
+
private generatePath;
|
|
37
|
+
private renderGrid;
|
|
38
|
+
private renderLegend;
|
|
39
|
+
private getShapePoints;
|
|
40
|
+
render(shape: Shape | Constant | FuzzyFunction | Sigmoid): string;
|
|
41
|
+
renderMultiple(shapes: Array<{
|
|
42
|
+
shape: Shape | Constant | FuzzyFunction | Sigmoid;
|
|
43
|
+
options?: Partial<{
|
|
44
|
+
strokeColor: string;
|
|
45
|
+
fillOpacity: number;
|
|
46
|
+
strokeWidth: number;
|
|
47
|
+
}>;
|
|
48
|
+
label?: string;
|
|
49
|
+
}>): string;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=svg-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-renderer.d.ts","sourceRoot":"","sources":["../src/svg-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAKtC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAC;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,WAAW;IA2BV,OAAO,CAAC,OAAO;IA1B3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAwB7B;gBAEkB,OAAO,GAAE,UAAe;IAI5C,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,YAAY;IAsDpB,OAAO,CAAC,cAAc;IA8EtB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM;IA2BjE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,GAAG,MAAM;CA4C/L"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SVGRenderer = void 0;
|
|
4
|
+
const grade_1 = require("./curve/grade");
|
|
5
|
+
const reverse_grade_1 = require("./curve/reverse-grade");
|
|
6
|
+
const triangle_1 = require("./curve/triangle");
|
|
7
|
+
const trapezoid_1 = require("./curve/trapezoid");
|
|
8
|
+
const constant_1 = require("./curve/constant");
|
|
9
|
+
const fuzzy_function_1 = require("./curve/fuzzy-function");
|
|
10
|
+
const sigmoid_1 = require("./curve/sigmoid");
|
|
11
|
+
class SVGRenderer {
|
|
12
|
+
options;
|
|
13
|
+
defaultOptions = {
|
|
14
|
+
width: 500,
|
|
15
|
+
height: 300,
|
|
16
|
+
padding: 40,
|
|
17
|
+
xMin: 0,
|
|
18
|
+
xMax: 100,
|
|
19
|
+
yMin: 0,
|
|
20
|
+
yMax: 1,
|
|
21
|
+
gridLines: true,
|
|
22
|
+
strokeWidth: 2,
|
|
23
|
+
strokeColor: '#2563eb',
|
|
24
|
+
fillOpacity: 0.1,
|
|
25
|
+
backgroundColor: '#ffffff',
|
|
26
|
+
gridColor: '#e5e5e5',
|
|
27
|
+
axisColor: '#525252',
|
|
28
|
+
labelColor: '#525252',
|
|
29
|
+
fontSize: 12,
|
|
30
|
+
showLabels: true,
|
|
31
|
+
showLegend: false,
|
|
32
|
+
legendPosition: 'top-right',
|
|
33
|
+
legendPadding: 10,
|
|
34
|
+
legendBackgroundColor: '#ffffff',
|
|
35
|
+
legendBorderColor: '#e5e5e5',
|
|
36
|
+
legendTextColor: '#525252'
|
|
37
|
+
};
|
|
38
|
+
constructor(options = {}) {
|
|
39
|
+
this.options = options;
|
|
40
|
+
this.options = { ...this.defaultOptions, ...options };
|
|
41
|
+
}
|
|
42
|
+
scaleX(x) {
|
|
43
|
+
const { xMin, xMax, width, padding } = this.options;
|
|
44
|
+
return padding + ((x - xMin) / (xMax - xMin)) * (width - 2 * padding);
|
|
45
|
+
}
|
|
46
|
+
scaleY(y) {
|
|
47
|
+
const { yMin, yMax, height, padding } = this.options;
|
|
48
|
+
return height - padding - ((y - yMin) / (yMax - yMin)) * (height - 2 * padding);
|
|
49
|
+
}
|
|
50
|
+
generatePath(points) {
|
|
51
|
+
if (points.length === 0)
|
|
52
|
+
return '';
|
|
53
|
+
let path = `M ${this.scaleX(points[0][0])} ${this.scaleY(points[0][1])}`;
|
|
54
|
+
for (let i = 1; i < points.length; i++) {
|
|
55
|
+
path += ` L ${this.scaleX(points[i][0])} ${this.scaleY(points[i][1])}`;
|
|
56
|
+
}
|
|
57
|
+
return path;
|
|
58
|
+
}
|
|
59
|
+
renderGrid() {
|
|
60
|
+
const { xMin, xMax, yMin, yMax, width, height, padding, gridColor, axisColor, labelColor, fontSize, showLabels } = this.options;
|
|
61
|
+
let svg = '';
|
|
62
|
+
// Grid lines
|
|
63
|
+
const xStep = (xMax - xMin) / 10;
|
|
64
|
+
const yStep = (yMax - yMin) / 5;
|
|
65
|
+
// Vertical grid lines
|
|
66
|
+
for (let x = xMin; x <= xMax; x += xStep) {
|
|
67
|
+
const xPos = this.scaleX(x);
|
|
68
|
+
svg += `<line x1="${xPos}" y1="${padding}" x2="${xPos}" y2="${height - padding}" stroke="${gridColor}" stroke-width="1" />`;
|
|
69
|
+
}
|
|
70
|
+
// Horizontal grid lines
|
|
71
|
+
for (let y = yMin; y <= yMax; y += yStep) {
|
|
72
|
+
const yPos = this.scaleY(y);
|
|
73
|
+
svg += `<line x1="${padding}" y1="${yPos}" x2="${width - padding}" y2="${yPos}" stroke="${gridColor}" stroke-width="1" />`;
|
|
74
|
+
}
|
|
75
|
+
// Axes
|
|
76
|
+
svg += `<line x1="${padding}" y1="${height - padding}" x2="${width - padding}" y2="${height - padding}" stroke="${axisColor}" stroke-width="2" />`;
|
|
77
|
+
svg += `<line x1="${padding}" y1="${padding}" x2="${padding}" y2="${height - padding}" stroke="${axisColor}" stroke-width="2" />`;
|
|
78
|
+
// Labels
|
|
79
|
+
if (showLabels) {
|
|
80
|
+
// X-axis labels
|
|
81
|
+
for (let x = xMin; x <= xMax; x += xStep * 2) {
|
|
82
|
+
const xPos = this.scaleX(x);
|
|
83
|
+
svg += `<text x="${xPos}" y="${height - padding + 20}" text-anchor="middle" font-size="${fontSize}" fill="${labelColor}">${x}</text>`;
|
|
84
|
+
}
|
|
85
|
+
// Y-axis labels
|
|
86
|
+
for (let y = yMin; y <= yMax; y += yStep) {
|
|
87
|
+
const yPos = this.scaleY(y);
|
|
88
|
+
svg += `<text x="${padding - 10}" y="${yPos + 4}" text-anchor="end" font-size="${fontSize}" fill="${labelColor}">${y.toFixed(1)}</text>`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return svg;
|
|
92
|
+
}
|
|
93
|
+
renderLegend(items) {
|
|
94
|
+
const { width, height, padding, legendPosition, legendPadding, legendBackgroundColor, legendBorderColor, legendTextColor, fontSize } = this.options;
|
|
95
|
+
if (items.length === 0)
|
|
96
|
+
return '';
|
|
97
|
+
// Calculate legend dimensions
|
|
98
|
+
const lineHeight = fontSize + 6;
|
|
99
|
+
const legendItemHeight = lineHeight;
|
|
100
|
+
const legendHeight = legendPadding * 2 + items.length * legendItemHeight;
|
|
101
|
+
const maxLabelLength = Math.max(...items.map(item => item.label.length));
|
|
102
|
+
const legendWidth = legendPadding * 2 + 20 + maxLabelLength * fontSize * 0.6; // 20 for color box + gap
|
|
103
|
+
// Calculate legend position
|
|
104
|
+
let legendX;
|
|
105
|
+
let legendY;
|
|
106
|
+
switch (legendPosition) {
|
|
107
|
+
case 'top-left':
|
|
108
|
+
legendX = padding + 10;
|
|
109
|
+
legendY = padding + 10;
|
|
110
|
+
break;
|
|
111
|
+
case 'top-right':
|
|
112
|
+
legendX = width - padding - legendWidth - 10;
|
|
113
|
+
legendY = padding + 10;
|
|
114
|
+
break;
|
|
115
|
+
case 'bottom-left':
|
|
116
|
+
legendX = padding + 10;
|
|
117
|
+
legendY = height - padding - legendHeight - 10;
|
|
118
|
+
break;
|
|
119
|
+
case 'bottom-right':
|
|
120
|
+
legendX = width - padding - legendWidth - 10;
|
|
121
|
+
legendY = height - padding - legendHeight - 10;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
let svg = '';
|
|
125
|
+
// Legend background
|
|
126
|
+
svg += `<rect x="${legendX}" y="${legendY}" width="${legendWidth}" height="${legendHeight}" fill="${legendBackgroundColor}" stroke="${legendBorderColor}" stroke-width="1" rx="4" />`;
|
|
127
|
+
// Legend items
|
|
128
|
+
items.forEach((item, index) => {
|
|
129
|
+
const itemY = legendY + legendPadding + index * legendItemHeight;
|
|
130
|
+
// Color box
|
|
131
|
+
svg += `<rect x="${legendX + legendPadding}" y="${itemY}" width="${fontSize}" height="${fontSize}" fill="${item.color}" />`;
|
|
132
|
+
// Label
|
|
133
|
+
svg += `<text x="${legendX + legendPadding + fontSize + 5}" y="${itemY + fontSize - 2}" font-size="${fontSize}" fill="${legendTextColor}">${item.label}</text>`;
|
|
134
|
+
});
|
|
135
|
+
return svg;
|
|
136
|
+
}
|
|
137
|
+
getShapePoints(shape) {
|
|
138
|
+
const { xMin, xMax } = this.options;
|
|
139
|
+
const points = [];
|
|
140
|
+
if (shape instanceof grade_1.Grade || shape instanceof reverse_grade_1.ReverseGrade) {
|
|
141
|
+
// For Grade and ReverseGrade, we need key points and some intermediate points
|
|
142
|
+
const x0 = shape.x0;
|
|
143
|
+
const x1 = shape.x1;
|
|
144
|
+
points.push([Math.max(xMin, x0 - (x1 - x0) * 0.2), shape.fuzzify(Math.max(xMin, x0 - (x1 - x0) * 0.2))]);
|
|
145
|
+
points.push([x0, shape.fuzzify(x0)]);
|
|
146
|
+
if (x0 !== x1) {
|
|
147
|
+
points.push([(x0 + x1) / 2, shape.fuzzify((x0 + x1) / 2)]);
|
|
148
|
+
}
|
|
149
|
+
points.push([x1, shape.fuzzify(x1)]);
|
|
150
|
+
points.push([Math.min(xMax, x1 + (x1 - x0) * 0.2), shape.fuzzify(Math.min(xMax, x1 + (x1 - x0) * 0.2))]);
|
|
151
|
+
}
|
|
152
|
+
else if (shape instanceof triangle_1.Triangle) {
|
|
153
|
+
const x0 = shape.x0;
|
|
154
|
+
const x1 = shape.x1;
|
|
155
|
+
const x2 = shape.x2;
|
|
156
|
+
points.push([Math.max(xMin, x0 - (x2 - x0) * 0.1), 0]);
|
|
157
|
+
points.push([x0, 0]);
|
|
158
|
+
if (x0 !== x1) {
|
|
159
|
+
points.push([(x0 + x1) / 2, shape.fuzzify((x0 + x1) / 2)]);
|
|
160
|
+
}
|
|
161
|
+
points.push([x1, 1]);
|
|
162
|
+
if (x1 !== x2) {
|
|
163
|
+
points.push([(x1 + x2) / 2, shape.fuzzify((x1 + x2) / 2)]);
|
|
164
|
+
}
|
|
165
|
+
points.push([x2, 0]);
|
|
166
|
+
points.push([Math.min(xMax, x2 + (x2 - x0) * 0.1), 0]);
|
|
167
|
+
}
|
|
168
|
+
else if (shape instanceof trapezoid_1.Trapezoid) {
|
|
169
|
+
const x0 = shape.x0;
|
|
170
|
+
const x1 = shape.x1;
|
|
171
|
+
const x2 = shape.x2;
|
|
172
|
+
const x3 = shape.x3;
|
|
173
|
+
points.push([Math.max(xMin, x0 - (x3 - x0) * 0.1), 0]);
|
|
174
|
+
points.push([x0, 0]);
|
|
175
|
+
if (x0 !== x1) {
|
|
176
|
+
points.push([(x0 + x1) / 2, shape.fuzzify((x0 + x1) / 2)]);
|
|
177
|
+
}
|
|
178
|
+
points.push([x1, 1]);
|
|
179
|
+
points.push([x2, 1]);
|
|
180
|
+
if (x2 !== x3) {
|
|
181
|
+
points.push([(x2 + x3) / 2, shape.fuzzify((x2 + x3) / 2)]);
|
|
182
|
+
}
|
|
183
|
+
points.push([x3, 0]);
|
|
184
|
+
points.push([Math.min(xMax, x3 + (x3 - x0) * 0.1), 0]);
|
|
185
|
+
}
|
|
186
|
+
else if (shape instanceof sigmoid_1.Sigmoid) {
|
|
187
|
+
// Sample sigmoid at many points for smooth curve
|
|
188
|
+
const numSamples = 50;
|
|
189
|
+
const step = (xMax - xMin) / numSamples;
|
|
190
|
+
for (let x = xMin; x <= xMax; x += step) {
|
|
191
|
+
points.push([x, shape.fuzzify(x)]);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else if (shape instanceof constant_1.Constant) {
|
|
195
|
+
// Constant is a horizontal line
|
|
196
|
+
const y = shape.fuzzify();
|
|
197
|
+
points.push([xMin, y]);
|
|
198
|
+
points.push([xMax, y]);
|
|
199
|
+
}
|
|
200
|
+
else if (shape instanceof fuzzy_function_1.FuzzyFunction) {
|
|
201
|
+
// Sample function at many points
|
|
202
|
+
const numSamples = 50;
|
|
203
|
+
const step = (xMax - xMin) / numSamples;
|
|
204
|
+
for (let x = xMin; x <= xMax; x += step) {
|
|
205
|
+
try {
|
|
206
|
+
points.push([x, shape.fuzzify(x)]);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
// Skip invalid points
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return points;
|
|
214
|
+
}
|
|
215
|
+
render(shape) {
|
|
216
|
+
const { width, height, backgroundColor, strokeColor, strokeWidth, fillOpacity, gridLines } = this.options;
|
|
217
|
+
let svg = `<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">`;
|
|
218
|
+
svg += `<rect width="${width}" height="${height}" fill="${backgroundColor}" />`;
|
|
219
|
+
if (gridLines) {
|
|
220
|
+
svg += this.renderGrid();
|
|
221
|
+
}
|
|
222
|
+
const points = this.getShapePoints(shape);
|
|
223
|
+
const path = this.generatePath(points);
|
|
224
|
+
// Add fill area
|
|
225
|
+
if (fillOpacity > 0 && points.length > 0) {
|
|
226
|
+
const fillPath = path + ` L ${this.scaleX(points[points.length - 1][0])} ${this.scaleY(0)} L ${this.scaleX(points[0][0])} ${this.scaleY(0)} Z`;
|
|
227
|
+
svg += `<path d="${fillPath}" fill="${strokeColor}" fill-opacity="${fillOpacity}" />`;
|
|
228
|
+
}
|
|
229
|
+
// Add stroke
|
|
230
|
+
svg += `<path d="${path}" fill="none" stroke="${strokeColor}" stroke-width="${strokeWidth}" />`;
|
|
231
|
+
svg += '</svg>';
|
|
232
|
+
return svg;
|
|
233
|
+
}
|
|
234
|
+
renderMultiple(shapes) {
|
|
235
|
+
const { width, height, backgroundColor, gridLines, showLegend } = this.options;
|
|
236
|
+
let svg = `<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">`;
|
|
237
|
+
svg += `<rect width="${width}" height="${height}" fill="${backgroundColor}" />`;
|
|
238
|
+
if (gridLines) {
|
|
239
|
+
svg += this.renderGrid();
|
|
240
|
+
}
|
|
241
|
+
const legendItems = [];
|
|
242
|
+
shapes.forEach(({ shape, options = {}, label }) => {
|
|
243
|
+
const strokeColor = options.strokeColor || this.options.strokeColor;
|
|
244
|
+
const fillOpacity = options.fillOpacity !== undefined ? options.fillOpacity : this.options.fillOpacity;
|
|
245
|
+
const strokeWidth = options.strokeWidth || this.options.strokeWidth;
|
|
246
|
+
// Collect legend items if label is provided
|
|
247
|
+
if (label && showLegend) {
|
|
248
|
+
legendItems.push({ label, color: strokeColor });
|
|
249
|
+
}
|
|
250
|
+
const points = this.getShapePoints(shape);
|
|
251
|
+
const path = this.generatePath(points);
|
|
252
|
+
// Add fill area
|
|
253
|
+
if (fillOpacity > 0 && points.length > 0) {
|
|
254
|
+
const fillPath = path + ` L ${this.scaleX(points[points.length - 1][0])} ${this.scaleY(0)} L ${this.scaleX(points[0][0])} ${this.scaleY(0)} Z`;
|
|
255
|
+
svg += `<path d="${fillPath}" fill="${strokeColor}" fill-opacity="${fillOpacity}" />`;
|
|
256
|
+
}
|
|
257
|
+
// Add stroke
|
|
258
|
+
svg += `<path d="${path}" fill="none" stroke="${strokeColor}" stroke-width="${strokeWidth}" />`;
|
|
259
|
+
});
|
|
260
|
+
// Add legend if enabled
|
|
261
|
+
if (showLegend && legendItems.length > 0) {
|
|
262
|
+
svg += this.renderLegend(legendItems);
|
|
263
|
+
}
|
|
264
|
+
svg += '</svg>';
|
|
265
|
+
return svg;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
exports.SVGRenderer = SVGRenderer;
|
|
269
|
+
//# sourceMappingURL=svg-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-renderer.js","sourceRoot":"","sources":["../src/svg-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "es6-fuzz",
|
|
3
3
|
"description": "fuzzy logic with and for es6",
|
|
4
|
-
"version": "6.0.
|
|
4
|
+
"version": "6.0.8",
|
|
5
5
|
"main": "lib/logic.js",
|
|
6
6
|
"repository": "git@github.com:sebs/es6-fuzz.git",
|
|
7
7
|
"homepage": "https://github.com/sebs/es6-fuzz",
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"pages": "node ./scripts/publish-gh.js",
|
|
18
18
|
"docs": "typedoc",
|
|
19
19
|
"preversion": "rm -f package-lock.json",
|
|
20
|
-
"postversion": "git push && git push --tags && npm run changelog && npm run docs && npm run pages"
|
|
20
|
+
"postversion": "git push && git push --tags && npm run changelog && npm run docs && npm run pages",
|
|
21
|
+
"render-examples": "node lib/render-examples.js"
|
|
21
22
|
},
|
|
22
23
|
"keywords": [
|
|
23
24
|
"fuzzylogic",
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"WebFetch(domain:github.com)",
|
|
5
|
-
"Bash(npm test:*)",
|
|
6
|
-
"Bash(for:*)",
|
|
7
|
-
"Bash(do echo \"=== $file ===\")",
|
|
8
|
-
"Bash(awk:*)",
|
|
9
|
-
"Bash(done)",
|
|
10
|
-
"Bash(do [ \"$file%.test.js\" = \"$file\" ])",
|
|
11
|
-
"Bash(mv:*)",
|
|
12
|
-
"Bash(mkdir:*)",
|
|
13
|
-
"Bash(cp:*)",
|
|
14
|
-
"Bash(rm:*)",
|
|
15
|
-
"Bash(npx tsc:*)",
|
|
16
|
-
"Bash(node:*)",
|
|
17
|
-
"Bash(npm run build:*)",
|
|
18
|
-
"Bash(npx typedoc:*)",
|
|
19
|
-
"Bash(grep:*)",
|
|
20
|
-
"Bash(chmod:*)",
|
|
21
|
-
"Bash(/Users/sebastian.schuermann/private/es6-fuzz/fix-imports.sh:*)",
|
|
22
|
-
"Bash(npm run docs:*)"
|
|
23
|
-
],
|
|
24
|
-
"deny": []
|
|
25
|
-
}
|
|
26
|
-
}
|
package/.gitattributes
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
* text=auto
|
package/.jscsrc
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"requireSpaceAfterKeywords": [
|
|
3
|
-
"if",
|
|
4
|
-
"else",
|
|
5
|
-
"for",
|
|
6
|
-
"while",
|
|
7
|
-
"do",
|
|
8
|
-
"switch",
|
|
9
|
-
"return",
|
|
10
|
-
"try",
|
|
11
|
-
"catch"
|
|
12
|
-
],
|
|
13
|
-
"disallowMultipleVarDecl": true,
|
|
14
|
-
"disallowEmptyBlocks": true,
|
|
15
|
-
"disallowSpacesInsideParentheses": true,
|
|
16
|
-
"disallowSpaceAfterObjectKeys": true,
|
|
17
|
-
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
|
18
|
-
"requireSpaceBeforeBinaryOperators": [
|
|
19
|
-
"=",
|
|
20
|
-
"==",
|
|
21
|
-
"===",
|
|
22
|
-
"!=",
|
|
23
|
-
"!=="
|
|
24
|
-
],
|
|
25
|
-
"requireSpaceAfterBinaryOperators": [
|
|
26
|
-
"=",
|
|
27
|
-
"==",
|
|
28
|
-
"===",
|
|
29
|
-
"!=",
|
|
30
|
-
"!=="
|
|
31
|
-
],
|
|
32
|
-
"disallowMultipleLineBreaks": true,
|
|
33
|
-
"validateLineBreaks": "LF",
|
|
34
|
-
"disallowKeywordsOnNewLine": ["else"],
|
|
35
|
-
"requireCapitalizedConstructors": true
|
|
36
|
-
}
|
package/example.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
var Logic = require('./lib/logic')
|
|
3
|
-
var Trapezoid = require('./lib/curve/trapezoid');
|
|
4
|
-
|
|
5
|
-
var logic = new Logic();
|
|
6
|
-
var res = logic
|
|
7
|
-
.init('cold', new Trapezoid(0, 12, 18, 20)) // until 12-18 around warm
|
|
8
|
-
.or('warm', new Trapezoid(12, 14, 16, 100)) // until 12-18 around warm
|
|
9
|
-
.defuzzify(20);
|
|
10
|
-
|
|
11
|
-
console.log(res);
|
package/example2.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
var Logic = require('./lib/logic')
|
|
2
|
-
var Trapezoid = require('./lib/curve/trapezoid');
|
|
3
|
-
var Triangle = require('./lib/curve/triangle');
|
|
4
|
-
var Grade = require('./lib/curve/grade');
|
|
5
|
-
|
|
6
|
-
var logic = new Logic();
|
|
7
|
-
var res = logic
|
|
8
|
-
.init('noAttack', new Triangle(0, 20, 40))
|
|
9
|
-
.or('normalAttack', new Trapezoid(20, 30, 90, 100))
|
|
10
|
-
.or('enragedAttack', new Grade(90, 100))
|
|
11
|
-
.defuzzify(40);
|
|
12
|
-
|
|
13
|
-
console.log(res);
|
package/typedoc.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://typedoc.org/schema.json",
|
|
3
|
-
"entryPoints": ["./src"],
|
|
4
|
-
"entryPointStrategy": "expand",
|
|
5
|
-
"out": "./out",
|
|
6
|
-
"name": "es6-fuzz",
|
|
7
|
-
"readme": "./Readme.md",
|
|
8
|
-
"includeVersion": true,
|
|
9
|
-
"excludePrivate": true,
|
|
10
|
-
"excludeProtected": false,
|
|
11
|
-
"excludeInternal": true,
|
|
12
|
-
"excludeExternals": false,
|
|
13
|
-
"hideGenerator": false,
|
|
14
|
-
"navigationLinks": {
|
|
15
|
-
"GitHub": "https://github.com/sebs/es6-fuzz"
|
|
16
|
-
},
|
|
17
|
-
"categorizeByGroup": true,
|
|
18
|
-
"categoryOrder": ["Logic", "Curves", "Types", "*"],
|
|
19
|
-
"sort": ["source-order"]
|
|
20
|
-
}
|