Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 1x 1x 1x 28x 28x 16x 13x 19x 13x 13x 5x 13x 13x 13x 2x 3x 3x 3x 1x 2x 2x 2x 4x 4x 4x 1x 3x 3x 3x 1x | const fs = require('fs');
const path = require('path');
const TODO_FILE = path.join(__dirname, 'todos.json');
function loadTodos() {
try {
const data = fs.readFileSync(TODO_FILE, 'utf8');
return JSON.parse(data);
} catch (error) {
return [];
}
}
function saveTodos(todos) {
fs.writeFileSync(TODO_FILE, JSON.stringify(todos, null, 2));
}
function addTodo(task) {
const todos = loadTodos();
const newTodo = {
id: todos.length > 0 ? Math.max(...todos.map(t => t.id)) + 1 : 1,
task,
completed: false
};
todos.push(newTodo);
saveTodos(todos);
return newTodo;
}
function listTodos() {
return loadTodos();
}
function completeTodo(id) {
const todos = loadTodos();
const todo = todos.find(t => t.id === id);
if (!todo) {
return null;
}
todo.completed = true;
saveTodos(todos);
return todo;
}
function deleteTodo(id) {
const todos = loadTodos();
const index = todos.findIndex(t => t.id === id);
if (index === -1) {
return null;
}
const deleted = todos.splice(index, 1)[0];
saveTodos(todos);
return deleted;
}
module.exports = {
addTodo,
listTodos,
completeTodo,
deleteTodo,
loadTodos,
saveTodos
};
|