{"_id":"tktk","_rev":"39-bb2b08c3553a371e74eeccc18545701e","name":"tktk","description":"The TK toolkit. Utilities for dealing with data in Node.js.","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"tktk","version":"0.1.0","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"dsv":"0.0.3"},"_id":"tktk@0.1.0","dist":{"shasum":"3e56e400e242733e6635c3fc0d596f99eade17f1","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.1.0.tgz","integrity":"sha512-KSsDtKHWBF4oS/IuChUxZDb4CtkTl//5SN7xsmjdHxO/cLRX0wCH+33iltk+mvhFBihwUBbDmd8GC5L/WR1ADg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbKnkvgXqcYq+/sdB9iksgIgP3lBHCKactbsfKpDgeNAiAOEHM4MmF2qni5I26ZEG38zoWMTXuBOFyRJIW5A0x3pw=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"directories":{}},"0.1.1":{"name":"tktk","version":"0.1.1","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"dsv":"0.0.3"},"_id":"tktk@0.1.1","dist":{"shasum":"849b623404297d5fed3c54fcc9df23aaeb5e57fd","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.1.1.tgz","integrity":"sha512-lYKxJwLQUSNtPHLmEidTHwK7e6HJp84KQjoLHrETQXSbx0AodmQiZ3f/A1HKBTnYoNU/BEx75+NqodpkNTnj/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLloBJt7fVONaYyNhB34S/2y8flGb3l2s/1VeiXY58PgIgen1udiUWsuVjdwesBu9A0Lzms4c9piD7cklM/jwGVio="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"directories":{}},"0.1.2":{"name":"tktk","version":"0.1.2","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"dsv":"0.0.3"},"_id":"tktk@0.1.2","dist":{"shasum":"88cb150c60de83fc1092e8d30bc21d3b7ee850d4","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.1.2.tgz","integrity":"sha512-PSbab6XPUl+/eFtVLTk54VPTY+UKTWsM/YlJ3lv29GYXR4nVkvCRfGx9PtpvLuwe1iEJG0hV3Yb1kimq+xtX5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFW4IJKZQkZwxCZb/rxwuTfT2hrccr074CVDDXWc5i/iAiA0SGDyJ1DpQx/E3LxExYlUnby+Ox+V69t+eGoBpJCh9A=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"directories":{}},"0.2.0":{"name":"tktk","version":"0.2.0","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"dsv":"0.0.3"},"_id":"tktk@0.2.0","dist":{"shasum":"44c6645d69aa340c08dc721dc9969db9ef3d42cc","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.2.0.tgz","integrity":"sha512-FwQnPO6DelEfw3W798sUoZcjdbQ0wK/WigbtP7Z3XRM34du+ooAUO1NgDQfsF7TUmasPcmM5ZnnJCQNz8p+Img==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTfWsci8Ii3JXoXkah5KvV0DBiiIkZhSFV/axsiUzg2gIgS0qB6z1fJ3mSB0+g1RmKv91Az3Ho11IlhdRKvhDAszQ="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"directories":{}},"0.2.2":{"name":"tktk","version":"0.2.2","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"joiner":"~0.3.4","tablespoon":"~0.1.6","simple-statistics":"~0.7.0","indian-ocean":"0.0.1"},"_id":"tktk@0.2.2","dist":{"shasum":"8beddc0234588f9ccc05b2157d787fa555fe1a3a","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.2.2.tgz","integrity":"sha512-LSTHGWRw5Lv0GE9TgtbilwyK7q1o4kCk2mwtNNpNwCSCsqtf+aQ0PFCcOfXrc5zRb7BboT3B4VMCMOX5fFWmJQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIADwIWuSyFrLDbv4AoC3EjiZQDHl9x/9Ltiiy4jHXYBbAiBw1vUaXRQlArkafV91kLKb7B7ugQKsv2alY94jMiiFhg=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"directories":{}},"0.2.3":{"name":"tktk","version":"0.2.3","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"joiner":"~0.3.4","tablespoon":"~0.1.6","simple-statistics":"~0.7.0","indian-ocean":"0.0.10"},"_id":"tktk@0.2.3","dist":{"shasum":"3ab9b4b69aaa65b8c545709bac6b2027c740d0c0","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.2.3.tgz","integrity":"sha512-rSnr6gkakHo9zb8HWoVAXp9gXYdbK/ZhnmBPz0hEWjE2k+6S5+vuJvvjNdrX8qF+ftGe5dhzFH2IEKk7+lBP3A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAO989tK8L2U8zAnvCioE/e8n5bQP84ORxC6lx3K1wHvAiAO2PcQNnocKD/kKfEWtHG21WFUXSZ+6XM9/GEc34M9jQ=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"directories":{}},"0.2.4":{"name":"tktk","version":"0.2.4","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"joiner":">=0.3.4","tablespoon":">=0.1.7","simple-statistics":">=0.7.0","indian-ocean":">=0.0.10"},"_id":"tktk@0.2.4","dist":{"shasum":"52bf98f5a9e3616b954349ed9b920fe77b91ea87","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.2.4.tgz","integrity":"sha512-ABFzMOujiNHze6tuZKYnpJfu6IPq7O+2T0hfHxo2RuV9Q8JBr8jKLicwGg3psuIPXY7dqXNcckK0YBEo1wTKMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEAodQwC07JW9Lcwx70FaMz2HDkeqm+c7kIvMkcLkMbAIhAPHL7taps/vu5n01Cq8CpDpram6xPYJUO7+cxiORKddf"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"directories":{}},"0.3.0":{"name":"tktk","version":"0.3.0","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"joiner":">=0.3.4","tablespoon":">=0.1.7","simple-statistics":">=0.7.0","indian-ocean":">=0.2.0"},"gitHead":"96092f73d619cb00deb657480dee5104b0f4a14d","_id":"tktk@0.3.0","_shasum":"e435c55abd39e568ef47987b3a7dcbe661c638c4","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"dist":{"shasum":"e435c55abd39e568ef47987b3a7dcbe661c638c4","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.3.0.tgz","integrity":"sha512-liFMxHzB2eoM4Kg3wywjpQQ7KqDniPVZxG51+nM+OtP/51qzZJWOkF4hcw8HoB81H6V7TE+2f8TE8ZkWdS1kjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE4Ds9Gs5aEbUV2hQxcx6nGpMYqJw8xTA/A0OkuVm0VRAiA5EBd70uh80t4WR6t03Gx7CZnjGIN7AogWgIBr4nFrHg=="}]},"directories":{}},"0.3.1":{"name":"tktk","version":"0.3.1","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"joiner":"~0.4.2","tablespoon":"~0.3.0","simple-statistics":"~0.9.1","indian-ocean":"~0.3.0"},"gitHead":"fae69bd906f72c339129dc7f29c265c9165aa2f0","_id":"tktk@0.3.1","_shasum":"b6f90687dcf0a5ad57e7d9015af7e5a727ceea68","_from":".","_npmVersion":"2.7.1","_nodeVersion":"0.12.0","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"dist":{"shasum":"b6f90687dcf0a5ad57e7d9015af7e5a727ceea68","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.3.1.tgz","integrity":"sha512-c8W/s0WYnrjAJBPtE5YZ7l7bDH4L3BXhJVE2JDRBmXj6vhCoGD4ObB0lBnEqLwQ1FT2CJdHkaW8ea4/TGmQNVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDI+QSNd+gUo7aFMDFAccpUpYr0UkIBPVbkkycdytJ+HQIgQ9rPvjUoRAK9m06N/uTfOFoL88uhTH99gHaU9xeHYaU="}]},"directories":{}},"0.3.2":{"name":"tktk","version":"0.3.2","description":"The TK toolkit. Utilities for dealing with data in Node.js.","main":"src/tktk.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/mhkeller/tktk.git"},"keywords":["node","data","toolkit","csv","json","dbf"],"author":{"name":"Michael Keller"},"license":"MIT","bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"homepage":"https://github.com/mhkeller/tktk","dependencies":{"joiner":"~0.4.2","tablespoon":"~0.3.0","simple-statistics":"~0.9.1","indian-ocean":"~0.7.0"},"gitHead":"be8643f9b0f8931d82310c4d89e86c983675bc9c","_id":"tktk@0.3.2","_shasum":"5e1d8b23cce2d73cf295cd5695928f1b846f071a","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.2","_npmUser":{"name":"mhkeller","email":"michael.keller@gmail.com"},"maintainers":[{"name":"mhkeller","email":"michael.keller@gmail.com"}],"dist":{"shasum":"5e1d8b23cce2d73cf295cd5695928f1b846f071a","tarball":"https://registry.npmjs.org/tktk/-/tktk-0.3.2.tgz","integrity":"sha512-03dFpJfaMtVuQBJUvuytc1DovA8avvQ7Iot2D0+CJiONOI4Rx1NI87B/EUFHAdxHSQ0UwqbtaqkJS/3VX6wfrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQ3tMdY4jHv7gaeXGpXhWU9a2DiqiIOtfgUJX7U40PTgIhAK5jQI3Me5d5f+bl14oBIr+/rVBwch9Jg7cKB1hVw0mn"}]},"directories":{}}},"readme":"The TK Toolkit\n==============\n\nA work-in-progress collection of utilities to help with reading, transforming and writing data. It's a collection of the following libraries:\n\n* [Indian Ocean](http://github.com/mhkeller/indian-ocean) for reading and writing data files (json, csv or a variety of delimited-value files) — converts spreadsheet-like data to json.\n* [Tablespoon](http://github.com/ajam/tablespoon) for creating sqlite and postgresql databases from json objects.\n* [Joiner](http://github.com/mhkeller/joiner) for doing left joins on two json or geojson objects.\n* [Simple statistics](https://github.com/tmcw/simple-statistics) for performing simple stats operations like average, mean and some less-simple things like variance, jenks clustering, t-tests and bayesian classification.\n\n# Installation\n\n````\nnpm install tktk\n````\n\n# Functions, See [indian-ocean](https://github.com/mhkeller/indian-ocean) documentation for most updated list\n\n* [Reading data](#reading-data)\n    * [.readData(filepath, [delimiter], callback)](#readdatafilepath-delimiter-callback)\n    * [.readDataSync(filepath, [delimiter])](#readdatasyncfilepath-delimiter)\n    * [.readJson(filepath, callback)](#readjsonfilepath-callback)\n    * [.readJsonSync(filepath)](#readjsonsyncfilepath)\n    * [.readCsv(filepath, callback)](#readcsvfilepath-callback)\n    * [.readCsvSync(filepath)](#readcsvsyncfilepath)\n    * [.readTsv(filepath, callback)](#readtsvfilepath-callback)\n    * [.readTsvSync(filepath)](#readtsvsyncfilepath)\n    * [.readPsv(filepath, callback)](#readpsvfilepath-callback)\n    * [.readPsvSync(filepath)](#readpsvsyncfilepath)\n    * [.readDbf(filepath, callback)](#readdbffilepath-callback)\n* [Writing data](#writing-data)\n    * [.writeData(filepath, data, callback)](#writedatafilepath-data-callback)\n    * [.writeDataSync(filepath, data)](#writedatasyncfilepath-data)\n    * [.writeDbfToData(inFilepath, outFilepath, data)](#writedbftodatainfilepath-outfilepath-callback)\n* [Joining data](#joining-data)\n    * .join.left(leftData, leftDataKey, rightData, rightDataKey, [nestedKeyName])\n    * .join.geoJson(leftData, leftDataKey, rightData, rightDataKey)\n* [Creating a database](#database-operations)\n    * .db.sqlite()\n    * .db.pgsql(dbConnectionString)\n    * .db.createTable(dataobject, [tablename], [tableschema], [permanent])\n    * .db.createTableCommands(dataobject, [tablename], [tableschema], [permanent], [skipinsert])\n    * .db.createEmptyTable(dataobject, [tablename], [tableschema], [permanent])\n    * .db.insert(dataobject, [tablename])\n* [Querying a database](#database-operations)\n    * .db.query(queryString, function)\n    * .db.query.each(queryString, function)\n    * .db.queries(list, function)\n    * .db.queries.each(list, function)\n* [Statistics](#statistics)\n    * .stats\n* [Helpers](#helpers)\n    * [.discernFormat(filepath)](#discernformatfilepath)\n    * [.discernParser(filepath, [delimiter]](#discernparserfilepath-delimiter)\n    * [.discernFileFormatter(filepath)](#discernfileformatterfilepath)\n    * [fs](#fs)\n\n\n## Reading data\n\nUses the [`indian-ocean`](https://github.com/mhkeller/indian-ocean) module. Reads a variety of data file formats in as json.\n\n### .readData(filepath, [delimiter], callback)\n\nReads in a data file given a path ending in the file format. Callback structure is `function(err, data)`.\n\nSupported formats:\n\n* `.json` Array of objects\n* `.csv` Comma-separated\n* `.tsv` Tab-separated\n* `.psv` Pipe-separated\n\nPass in a delimiter as the second argument to read in another format.\n\n*Note: Does not currently support .dbf files.*\n\n### .readDataSync(filepath, [delimiter])\n\nSyncronous version of `.readData()`.\n\n### .readJson(filepath, callback)\n\nRead in a json file. Callback structure is `function(err, data)`.\n\n### .readJsonSync(filepath)\n\nRead json syncronously.\n\n### .readCsv(filepath, callback)\n\nRead in a comma-separated value file. Callback structure is `function(err, data)`.\n\n### .readCsvSync(filepath)\n\nRead csv syncronously.\n\n### .readTsv(filepath, callback)\n\nRead in a tab-separated value file. Callback structure is `function(err, data)`.\n\n### .readTsvSync(filepath)\n\nRead tsv syncronously.\n\n### .readPsv(filepath, callback)\n\nRead in a pipe-separated value file. Callback structure is `function(err, data)`.\n\n### .readPsvSync(filepath)\n\nRead psv syncronously.\n\n### .readDbf(filepath, callback)\n\nRead in a .dbf file. Callback structure is `function(err, data)`.\n\n## Writing data\n\nUses the [`indian-ocean`](https://github.com/mhkeller/indian-ocean) module. Writes json objects to the specified format.\n\n### .writeData(filepath, data, callback)\n\nWrite out the data object, inferring the file format from the file ending specified in `filepath`. Callback structure is `function(err, data)`.\n\nSupported formats:\n\n* `.json` Array of objects\n* `.csv` Comma-separated\n* `.tsv` Tab-separated\n* `.psv` Pipe-separated\n\n*Note: Does not currently support .dbf files.*\n\n### .writeDataSync(filepath, data)\n\nSyncronous version of `.writeData`. Callback structure is `function(err)`.\n\n### .writeDbfToData(inFilepath, outFilepath, callback)\n\nReads in a dbf file with `.readDbf` and write to file using `.writeData`. Callback structure is `function(err)`.\n\n## Joining data\n\nUses the [`joiner`](http://github.com/mhkeller/joiner) module. All methods return an object with the following structure:\n\n````js\ndata: [data object],\nreport: {\n\tdiff: {\n\t\ta: [data in A],\n\t\tb: [data in A],\n\t\ta_and_b: [data in A and B],\n\t\ta_not_in_b: [data in A not in B],\n\t\tb_not_in_a: [data in B not in A]\n\t}:\n\tprose: {\n\t\tsummary: [summary description of join result, number of matches in A and B, A not in B, B not in A.]\n\t\tfull:    [full list of which rows were joined in each of the above categories]\n\t}\n}\n````\n\n### _.left(leftData, leftDataKey, rightData, rightDataKey, [nestedKeyName])\n\nPerform a left join on the two array-of-object json datasets. Optionally, you can pass in a key name in case the left data's attribute dictionary is nested, such as in GeoJson where the attributes are under a `properties` object.\n\n### .geoJson(leftData, leftDataKey, rightData, rightDataKey)\n\nDoes the same thing as __.left__ but navigates to the `features` array and passes in `properties` as the nested key name.\n\n## Database operations\n\nUses the [`tablespoon`](https://github.com/ajam/tablespoon) module. Check out [the wiki](https://github.com/ajam/tablespoon/wiki) for the full documention. All `tablespoon` methods are accessible under the `tk.db` namespace, e.g.\n\n````js\ntk.db.createTableSync(data);\n````\n\n## Statistics\n\nUses the [`simple-statistics`](https://github.com/tmcw/simple-statistics) module. All `simple-statistics` methods are accessible under the `tk.stats` namespace, e.g.\n\n````js\nvar mean = tk.stats.mean([1, 4, 19, 55]);\n````\n\n## Helpers\n\n### .discernFormat(filepath)\n\nGiven a `filepath` return its file extension. Used internally by `.discernPaser` and `.discernFileFormatter`.\n\nE.g. `tk.discernFormat('path/to/data.csv')` returns `'csv'`\n\n### .discernParser(filepath, [delimiter])\n\nGiven a `filepath`, optionally a delimiter, return a parser that can read that file as json. Used internally by `.readData` and `.readDataSync`.\n\nE.g. \n\n````js\nvar csvParser = tk.discernParser('path/to/data.csv');\n\nvar json = parser('path/to/data.csv');\n````\n\n### .discernFileFormatter(filepath)\n\nReturns a formatter that will format json data to file type specified by the extension in `filepath`. Used internally by `.writeData` and `.writeDataSync`.\n\nE.g.\n\n````js\nvar formatter = tk.discernFileFormatter('path/to/data.tsv');\nvar csv = formatter(json);\n````\n\n### fs\n\nExposes the native [File System](http://nodejs.org/api/fs.html) module for convenience.\n\n\n# What's the name mean?\n\nIn news writing, `TK` is used as a placeholder for facts or sections you don't have yet. For example:\n\n````\nMrs. Williamson arrived at the office at TK EXACT TIME to speak with the board members.\n````\n\nDepending on whom you ask, it either stands for `TO COME` if you like your acronyms phonetic or `TO KNOW` if you don't mind the silent 'K'.\n\n### What's that have to do with this?\n\nThis library is a work in progress so it's largely `TO COME`. You could also say you can use it `TO KNOW` things since it's a collection of data utilities. Or you could say it's a (T)ool(K)it of toolkits: a TK TK.\n","maintainers":[{"email":"code@mhkeller.com","name":"mhkeller0"}],"time":{"modified":"2022-12-09T02:11:35.831Z","created":"2014-02-25T06:18:29.238Z","0.1.0":"2014-02-25T06:18:30.829Z","0.1.1":"2014-02-25T06:25:31.174Z","0.1.2":"2014-02-25T06:25:53.459Z","0.2.0":"2014-02-26T06:16:09.945Z","0.2.2":"2014-03-12T01:17:40.269Z","0.2.3":"2014-05-12T14:04:49.585Z","0.2.4":"2014-05-22T16:57:57.241Z","0.3.0":"2015-03-11T01:12:29.917Z","0.3.1":"2015-04-20T04:33:49.615Z","0.3.2":"2015-11-16T05:48:51.437Z"},"readmeFilename":"README.md","homepage":"https://github.com/mhkeller/tktk","keywords":["node","data","toolkit","csv","json","dbf"],"repository":{"type":"git","url":"git+https://github.com/mhkeller/tktk.git"},"author":{"name":"Michael Keller"},"bugs":{"url":"https://github.com/mhkeller/tktk/issues"},"license":"MIT","users":{}}