New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More

akf-code

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

akf-code - npm Package Compare versions

Comparing version 0.0.5 to 0.0.6

@@ -6,114 +6,91 @@ #!/usr/bin/env node

const path = require("path");
const table = str => `╔${"═".repeat(str.length + 2)}╗\n║ ${str} ║\n╚${"═".repeat(str.length + 2)}╝`;
const fileName = process.argv[2] || "untitled.txt";
const filePoss = path.resolve(process.cwd(), fileName);
const dirName = path.resolve(process.cwd(), fileName);
if (fs.existsSync(filePoss)) {
let file = fs.existsSync(dirName) ? fs.readFileSync(dirName, "utf8").replace(/\r/i).split(/\n/) : [""];
const content = fs.readFileSync(filePoss, "utf-8");
void main(content.split(/\r\n?/));
} else {
void main([""]);
}
readline.emitKeypressEvents(process.stdin);
process.stdin.setRawMode(true);
function save(content) {
fs.writeFileSync(filePoss, content)
}
let curY = curX = 0;
function main(file) {
readline.emitKeypressEvents(process.stdin);
process.stdin.setRawMode(true);
render();
let curY = curX = 0;
process.stdin.on('keypress', (ch, key) => {
// console.log(key)
render();
if (key.ctrl)
if (key.name === "s")
return fs.writeFile(dirName, file.join("\n"), () => console.log("\nSaved! Path:", dirName))
process.stdin.on('keypress', (ch, key) => {
// console.log(key)
else if (key.name === "c")
return process.exit(0);
if (key.ctrl) {
if (key.name === "s") {
//TODO!
save(file.join("\n"))
console.log("Saved!")
return;
} else if (key.name === "c")
else return;
return process.exit(0);
if (!file[curY + 1]) file[curY + 1] = "";
else return;
switch (key?.name) {
}
// Arrow keys:
case "up": if (curY) curY--; curX = file[curY].length; render(); break;
if (!file[curY + 1]) file[curY + 1] = "";
case "down": curY++; curX = file[curY].length; render(); break;
// if (file[curY]===file[file.length-1]&&!file[curY])
case "left": if (curX) curX--; else if (curY) curY--; render(); break;
switch (key?.name) {
case "right": if (!file[curY][curX]) file[curY] += " "; curX++; render(); break;
// Arrow keys:
case "up": if (curY) curY--; curX = file[curY].length; render(); break;
// Enter Key:
case "return":
file.splice(curY + 1, 0, file[curY].slice(curX));
file[curY] = file[curY].slice(0, curX);
case "down": curY++; curX = file[curY].length; render(); break;
curX = file[curY + 1].length; curY++; render(); break;
case "left": if (curX) curX--; render(); break;
// Delete Key:
case "delete":
if (file[curY]) file[curY] = file[curY].substring(0, curX) + file[curY].substring(curX + 1);
else file.splice(curY, 1)
render(); break;
case "right": curX++; render(); break;
// Backspace Key:
case "backspace":
if (curX) {
file[curY] = file[curY].substring(0, curX - 1) + file[curY].substring(curX);
curX--;
// Enter Key:
case "return":
file.splice(curY + 1, 0, file[curY].slice(curX));
file[curY] = file[curY].slice(0, curX);
}
else if (curY) {
file = file.slice(0, -1);
curY--;
curX = file[curY + 1].length; curY++; render(); break;
}
// Delete Key:
case "delete":
if (file[curY]) file[curY] = file[curY].substring(0, curX) + file[curY].substring(curX + 1);
else file.splice(curY, 1)
render(); break;
render(); break;
// Backspace Key:
case "backspace":
if (curX) {
file[curY] = file[curY].substring(0, curX - 1) + file[curY].substring(curX);
default:
if (!ch) break;
file[curY] = file[curY].substring(0, curX) + ch + file[curY].substring(curX);
curX--
curX++; render(); break;
}
else if (curY) {
file = file.slice(0, -1)
curY--;
}
})
}
function render() {
console.clear();
render(); break;
const lines = file.map((l, i) => i + " │ " + l)
default:
if (!ch) break;
file[curY] = file[curY].substring(0, curX) + ch + file[curY].substring(curX);
console.log(`${table(`akf-code - ${fileName} | ${curY}:${curX}`)}\n${[
...lines.slice(0, curY + 1),
"──┤ " + " ".repeat(curX) + "^",
...lines.slice(curY + 1)
].join("\n")}\nExit: CTRL + C | Save: CTRL + S`);
curX++; render(); break;
}
}
})
function render() {
console.clear();
const write = [
...file.slice(0, curY + 1),
" ".repeat(curX) + "^",
...file.slice(curY + 1)
];
console.log(
`akf-code - ${fileName}
---------------------------------
${write.join("\n")}
---------------------------------
Current pos: ${curY}:${curX}
Exit: CTRL + C | Save: CTRL + S`);
}
}
{
"name": "akf-code",
"version": "0.0.5",
"version": "0.0.6",
"description": "A CLI code editor",

@@ -5,0 +5,0 @@ "main": "index.js",

# akf-code
A editor to write code in your terminal!
A editor to write code or etc in your terminal!
# Usage/install
- `npm i akf-code -g` or `npx akf-code`
- `acode`
- `npm i akf-code -g && acode <filename>` or `npx akf-code <filename>`
## Keys
- `Ctrl+C`: To exit
- `Ctrl+C`: To exit!
- `Ctrl+S`: To save!
## Features
- Pointer.
- Current poss.
- Zero-Dependencies
- Like indexing, it starts at line 0
- Save && read from file!
- Pointer
- Current poss
- Cursorline
## TO-DOS
- [ ] Add readFile && writeFile
- [x] Add readFile && writeFile
- [x] Better pointer
- [x] Down arrow and enter is not same!
- [x] Delete key!
## IMAGE:
![Code_ULNyDBn2hQ](https://user-images.githubusercontent.com/70021050/168487836-d170b820-c9ef-4955-b8b8-93d2cc47d0b3.gif)
- [x] Cursorline
## GIF:
![WindowsTerminal_NcdhYil3Gi](https://user-images.githubusercontent.com/70021050/168694809-8066f14d-5b46-48a1-b971-b0db5e7a7437.gif)