Simple database: Difference between revisions
Content added Content deleted
m (→{{header|D}}: small change) |
(D entry: shorter lines, modules themselves are namespaces, small formatting changes) |
||
Line 637: | Line 637: | ||
=={{header|D}}== |
=={{header|D}}== |
||
<lang d>import std.stdio, std. |
<lang d>import std.stdio, std.algorithm, std.string, std.conv, std.array, |
||
std. |
std.file, std.csv, std.datetime; |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
} |
|||
⚫ | |||
⚫ | |||
if (item.length < 3) |
|||
⚫ | |||
return printUsage(); |
|||
⚫ | |||
⚫ | |||
⚫ | |||
default : SimDB.printUsage(); break; |
|||
⚫ | |||
⚫ | |||
db ~= Item(item[2], date, cat); |
|||
⚫ | |||
} |
} |
||
⚫ | |||
⚫ | |||
auto db = load(); |
|||
⚫ | |||
if (db.empty) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
if (a.length == 3) { |
|||
⚫ | |||
if (item.category == a[2]) |
|||
⚫ | |||
} else { |
|||
⚫ | |||
⚫ | |||
} |
|||
void printAll() { |
|||
auto db = load(); |
|||
if (db.empty) |
|||
return printUsage(); |
|||
return writeln("No entries in database."); |
|||
⚫ | |||
⚫ | |||
foreach (item; db) |
|||
⚫ | |||
writefln("%s, %s, %s", item.tupleof); |
|||
} |
|||
⚫ | |||
} |
|||
Item[] load() { |
|||
⚫ | |||
Item[] db; |
|||
if (filename.exists && filename.isFile) { |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
if ( |
if (!text.empty) |
||
db = csvReader!Item(text).array; |
|||
} catch (CSVException e) { |
|||
writeln(e.msg); |
|||
} |
} |
||
⚫ | |||
} |
|||
} |
} |
||
⚫ | |||
} |
|||
⚫ | |||
static void printAll() { |
|||
auto f = File(filename, "w+"); |
|||
foreach (item; db) |
|||
⚫ | |||
return writeln("No entries in database."); |
|||
} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
} |
|||
void printUsage() { |
|||
writeln( |
|||
`Usage: |
|||
⚫ | |||
simdb cmd [categoryName] |
|||
writeln(" latest\t print last added item(s), followed by optional " ~ |
|||
add add item, followed by optional category |
|||
⚫ | |||
writeln(" all\t print all"); |
|||
all print all |
|||
⚫ | |||
"\"some category name\""); |
|||
} |
|||
⚫ | |||
⚫ | |||
} |
|||
⚫ | |||
if (exists(filename) && isFile(filename)) { |
|||
⚫ | |||
⚫ | |||
db = csvReader!Item(text).array(); |
|||
} catch (CSVException e) { |
|||
writeln(e.msg); |
|||
} |
|||
} |
|||
⚫ | |||
} |
|||
void main(in string[] args) { |
|||
⚫ | |||
auto f = File(filename, "w+"); |
|||
return printUsage(); |
|||
⚫ | |||
⚫ | |||
⚫ | |||
case "latest": printLatest(args); break; |
|||
⚫ | |||
⚫ | |||
} |
} |
||
}</lang> |
}</lang> |
||
Line 757: | Line 759: | ||
all print all |
all print all |
||
For instance: add "some item name" "some category name"</pre> |
|||
File: |
File: |
||
<pre>item1,2013-Mar-03 15:01:00,cat1 |
<pre>item1,2013-Mar-03 15:01:00,cat1 |