mirror of
https://github.com/PaddiM8/kalker.git
synced 2025-06-26 20:52:29 +02:00
Added 'help' text to kalk_web
This commit is contained in:
parent
4c3af6556e
commit
8004610f68
52
kalk_web/package-lock.json
generated
52
kalk_web/package-lock.json
generated
@ -6866,6 +6866,58 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"raw-loader": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"loader-utils": "^2.0.0",
|
||||||
|
"schema-utils": "^3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ajv": {
|
||||||
|
"version": "6.12.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||||
|
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"fast-deep-equal": "^3.1.1",
|
||||||
|
"fast-json-stable-stringify": "^2.0.0",
|
||||||
|
"json-schema-traverse": "^0.4.1",
|
||||||
|
"uri-js": "^4.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fast-deep-equal": {
|
||||||
|
"version": "3.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"loader-utils": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^3.0.0",
|
||||||
|
"json5": "^2.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema-utils": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/json-schema": "^7.0.6",
|
||||||
|
"ajv": "^6.12.5",
|
||||||
|
"ajv-keywords": "^3.5.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"rc": {
|
"rc": {
|
||||||
"version": "1.2.8",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
"mini-css-extract-plugin": "^0.9.0",
|
"mini-css-extract-plugin": "^0.9.0",
|
||||||
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^3.0.0",
|
||||||
|
"raw-loader": "^4.0.2",
|
||||||
"sass": "^1.26.10",
|
"sass": "^1.26.10",
|
||||||
"sass-loader": "^10.0.1",
|
"sass-loader": "^10.0.1",
|
||||||
"svelte": "^3.29.7",
|
"svelte": "^3.29.7",
|
||||||
|
@ -1,16 +1,30 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import helpText from "../../kalk_cli/help.txt";
|
||||||
let outputLines: string[] = [];
|
let outputLines: string[] = [];
|
||||||
let kalkContext;
|
let kalkContext;
|
||||||
function handleKeyDown(event: KeyboardEvent, kalk) {
|
function handleKeyDown(event: KeyboardEvent, kalk) {
|
||||||
if (event.key == "Enter") {
|
if (event.key == "Enter") {
|
||||||
const target = event.target as HTMLInputElement;
|
const target = event.target as HTMLInputElement;
|
||||||
const input = target.textContent;
|
const input = target.textContent;
|
||||||
|
let output: string;
|
||||||
|
|
||||||
|
if (input.trim() == "help") {
|
||||||
|
output = helpText;
|
||||||
|
} else {
|
||||||
// Calculate
|
// Calculate
|
||||||
if (!kalkContext) kalkContext = new kalk.Context();
|
if (!kalkContext) kalkContext = new kalk.Context();
|
||||||
const output = kalkContext.evaluate(input).toString();
|
try {
|
||||||
|
const result = kalkContext.evaluate(input);
|
||||||
|
if (result) output = result.toString();
|
||||||
|
} catch (err) {
|
||||||
|
output = `<span class="error">${err}</span>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
outputLines = [...outputLines, input, output];
|
const inputHTML = `<span class="prompt">>> </span>${target.innerHTML}`;
|
||||||
|
outputLines = output
|
||||||
|
? [...outputLines, inputHTML, output]
|
||||||
|
: [...outputLines, inputHTML];
|
||||||
target.innerHTML = "";
|
target.innerHTML = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -181,7 +195,10 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="calculator">
|
<div class="calculator">
|
||||||
<div class="output">
|
<p class="consoleLine">kalk</p>
|
||||||
|
<p class="consoleLine">
|
||||||
|
<span class="hint">Type 'help' for instructions.</span>
|
||||||
|
</p>
|
||||||
{#each outputLines as line}
|
{#each outputLines as line}
|
||||||
<p class="consoleLine">
|
<p class="consoleLine">
|
||||||
<span class="prompt">>></span>
|
<span class="prompt">>></span>
|
||||||
|
4
kalk_web/src/global.d.ts
vendored
Normal file
4
kalk_web/src/global.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
declare module "*.txt" {
|
||||||
|
const content: any;
|
||||||
|
export default content;
|
||||||
|
}
|
@ -15,3 +15,11 @@ span.operator {
|
|||||||
span.prompt {
|
span.prompt {
|
||||||
color: mediumseagreen;
|
color: mediumseagreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span.error {
|
||||||
|
color: tomato;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.hint {
|
||||||
|
color: #9c9c9c;
|
||||||
|
}
|
@ -121,6 +121,10 @@ const config: webpack.Configuration & WebpackDevServer.Configuration = {
|
|||||||
use: 'ts-loader',
|
use: 'ts-loader',
|
||||||
exclude: /node_modules/,
|
exclude: /node_modules/,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
test: /\.txt$/i,
|
||||||
|
loader: 'raw-loader',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
devServer: {
|
devServer: {
|
||||||
@ -169,19 +173,19 @@ const tsconfigPath = path.resolve(__dirname, 'tsconfig.json');
|
|||||||
const tsconfig = require('fs').existsSync(tsconfigPath) ? require(tsconfigPath) : {};
|
const tsconfig = require('fs').existsSync(tsconfigPath) ? require(tsconfigPath) : {};
|
||||||
|
|
||||||
if ('compilerOptions' in tsconfig && 'paths' in tsconfig.compilerOptions) {
|
if ('compilerOptions' in tsconfig && 'paths' in tsconfig.compilerOptions) {
|
||||||
const aliases = tsconfig.compilerOptions.paths;
|
const aliases = tsconfig.compilerOptions.paths;
|
||||||
for (const alias in aliases) {
|
for (const alias in aliases) {
|
||||||
const paths = aliases[alias].map((p: string) => path.resolve(__dirname, p));
|
const paths = aliases[alias].map((p: string) => path.resolve(__dirname, p));
|
||||||
|
|
||||||
// Our tsconfig uses glob path formats, whereas webpack just wants directories
|
// Our tsconfig uses glob path formats, whereas webpack just wants directories
|
||||||
// We'll need to transform the glob format into a format acceptable to webpack
|
// We'll need to transform the glob format into a format acceptable to webpack
|
||||||
const wpAlias = alias.replace(/(\\|\/)\*$/, '');
|
const wpAlias = alias.replace(/(\\|\/)\*$/, '');
|
||||||
const wpPaths = paths.map((p: string) => p.replace(/(\\|\/)\*$/, ''));
|
const wpPaths = paths.map((p: string) => p.replace(/(\\|\/)\*$/, ''));
|
||||||
|
|
||||||
if (!(wpAlias in config.resolve.alias) && wpPaths.length) {
|
if (!(wpAlias in config.resolve.alias) && wpPaths.length) {
|
||||||
config.resolve.alias[wpAlias] = wpPaths.length > 1 ? wpPaths : wpPaths[0];
|
config.resolve.alias[wpAlias] = wpPaths.length > 1 ? wpPaths : wpPaths[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// These options should only apply to production builds
|
// These options should only apply to production builds
|
||||||
@ -195,9 +199,9 @@ if (prod) {
|
|||||||
cssProcessorOptions: {
|
cssProcessorOptions: {
|
||||||
map: sourceMapsInProduction
|
map: sourceMapsInProduction
|
||||||
? {
|
? {
|
||||||
inline: false,
|
inline: false,
|
||||||
annotation: true,
|
annotation: true,
|
||||||
}
|
}
|
||||||
: false,
|
: false,
|
||||||
},
|
},
|
||||||
cssProcessorPluginOptions: {
|
cssProcessorPluginOptions: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user