)]}'
{"fun/tvldb/.dockerignore":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"cefd3bc3cc26488a96251506d1b1bd99e80614cb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"Dockerfile"},{"line_number":2,"context_line":".git*"},{"line_number":3,"context_line":"**/target*"},{"line_number":4,"context_line":"**/*.rs.bk"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"4345193c_431395ab","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":10},"updated":"2020-06-15 20:09:27.000000000","message":"You don\u0027t need this file.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"9dab2da7e3db4c0640af56bd1e5ba7be97599d0d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Dockerfile"},{"line_number":2,"context_line":".git*"},{"line_number":3,"context_line":"**/target*"},{"line_number":4,"context_line":"**/*.rs.bk"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"46c5edb4_f7ced214","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":10},"in_reply_to":"4345193c_431395ab","updated":"2020-06-15 20:18:29.000000000","message":"Done","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}],"fun/tvldb/Cargo.toml":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"cefd3bc3cc26488a96251506d1b1bd99e80614cb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"[package]"},{"line_number":2,"context_line":"authors \u003d [\"eeeeeta \u003ceeeeeta@users.noreply.github.com\u003e\"]"},{"line_number":3,"context_line":"edition \u003d \"2018\""},{"line_number":4,"context_line":"name \u003d \"paroxysm\""},{"line_number":5,"context_line":"version \u003d \"0.1.0\""}],"source_content_type":"text/x-toml","patch_set":1,"id":"02dd8fed_2ae67232","line":2,"range":{"start_line":2,"start_character":29,"end_line":2,"end_character":53},"updated":"2020-06-15 20:09:27.000000000","message":"huh?","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"9dab2da7e3db4c0640af56bd1e5ba7be97599d0d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[package]"},{"line_number":2,"context_line":"authors \u003d [\"eeeeeta \u003ceeeeeta@users.noreply.github.com\u003e\"]"},{"line_number":3,"context_line":"edition \u003d \"2018\""},{"line_number":4,"context_line":"name \u003d \"paroxysm\""},{"line_number":5,"context_line":"version \u003d \"0.1.0\""}],"source_content_type":"text/x-toml","patch_set":1,"id":"ef9a5be2_b361782c","line":2,"range":{"start_line":2,"start_character":29,"end_line":2,"end_character":53},"in_reply_to":"02dd8fed_2ae67232","updated":"2020-06-15 20:18:29.000000000","message":"No idea. Maybe my git config is cursed on the machine I originally wrote this on...","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}],"fun/tvldb/Dockerfile":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"cefd3bc3cc26488a96251506d1b1bd99e80614cb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"FROM archlinux/base:latest AS paroxysm-compiled"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# update OS"},{"line_number":4,"context_line":"RUN pacman -Syu --noconfirm"}],"source_content_type":"text/x-dockerfile","patch_set":1,"id":"f056023c_d3bab955","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":47},"updated":"2020-06-15 20:09:27.000000000","message":"Dockerfile? Do you still need this?","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"9dab2da7e3db4c0640af56bd1e5ba7be97599d0d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"FROM archlinux/base:latest AS paroxysm-compiled"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# update OS"},{"line_number":4,"context_line":"RUN pacman -Syu --noconfirm"}],"source_content_type":"text/x-dockerfile","patch_set":1,"id":"981fbedf_c86face6","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":47},"in_reply_to":"f056023c_d3bab955","updated":"2020-06-15 20:18:29.000000000","message":"Nope. (man, naersk is a LOT better than this crap...)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}],"fun/tvldb/LICENSE":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"cefd3bc3cc26488a96251506d1b1bd99e80614cb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"The MIT License (MIT)"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Copyright (c) 2020 eta"},{"line_number":4,"context_line":""}],"source_content_type":"text/plain","patch_set":1,"id":"4ba71ec6_2d564a93","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":20},"updated":"2020-06-15 20:09:27.000000000","message":"We have one at the root, you don\u0027t need one here. Rather put SPDX headers on your files.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"9dab2da7e3db4c0640af56bd1e5ba7be97599d0d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"The MIT License (MIT)"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Copyright (c) 2020 eta"},{"line_number":4,"context_line":""}],"source_content_type":"text/plain","patch_set":1,"id":"a8815270_e19400d8","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":20},"in_reply_to":"4ba71ec6_2d564a93","updated":"2020-06-15 20:18:29.000000000","message":"Ack","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}],"fun/tvldb/README.md":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"cefd3bc3cc26488a96251506d1b1bd99e80614cb","unresolved":true,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"`paroxysm` is a bot for [internet relay chat (IRC)](https://en.wikipedia.org/wiki/Internet_Relay_Chat)"},{"line_number":5,"context_line":"that lets you store small pieces of information,"},{"line_number":6,"context_line":"called *factoids*, and retrieve them later. It\u0027s useful for organising frequently-used information"},{"line_number":7,"context_line":"to avoid repeating oneself in a busy chatroom, as well as making little todo lists or notes to self"},{"line_number":8,"context_line":"in a private chatroom."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":1,"id":"657ffb88_5c3947d2","line":6,"range":{"start_line":5,"start_character":46,"end_line":6,"end_character":3},"updated":"2020-06-15 20:09:27.000000000","message":"Protip: `M-q` in Emacs","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"9dab2da7e3db4c0640af56bd1e5ba7be97599d0d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"`paroxysm` is a bot for [internet relay chat (IRC)](https://en.wikipedia.org/wiki/Internet_Relay_Chat)"},{"line_number":5,"context_line":"that lets you store small pieces of information,"},{"line_number":6,"context_line":"called *factoids*, and retrieve them later. It\u0027s useful for organising frequently-used information"},{"line_number":7,"context_line":"to avoid repeating oneself in a busy chatroom, as well as making little todo lists or notes to self"},{"line_number":8,"context_line":"in a private chatroom."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":1,"id":"eb049da4_878df577","line":6,"range":{"start_line":5,"start_character":46,"end_line":6,"end_character":3},"in_reply_to":"657ffb88_5c3947d2","updated":"2020-06-15 20:18:29.000000000","message":"M-q\u0027d the heck out of this file.\n(I think I wrote this in vim originally...*shudder*)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}],"fun/tvldb/default.nix":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"cefd3bc3cc26488a96251506d1b1bd99e80614cb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"{ depot, pkgs, ... }:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"let"},{"line_number":4,"context_line":"  naersk \u003d depot.third_party.naersk;"},{"line_number":5,"context_line":"in"},{"line_number":6,"context_line":"naersk.buildPackage {"},{"line_number":7,"context_line":"  name \u003d \"tvldb\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"16a7737f_014f414a","line":4,"range":{"start_line":4,"start_character":11,"end_line":4,"end_character":28},"updated":"2020-06-15 20:09:27.000000000","message":"pkgs is depot.third_party, so you can remove the depot import and just use pkgs","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"9dab2da7e3db4c0640af56bd1e5ba7be97599d0d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{ depot, pkgs, ... }:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"let"},{"line_number":4,"context_line":"  naersk \u003d depot.third_party.naersk;"},{"line_number":5,"context_line":"in"},{"line_number":6,"context_line":"naersk.buildPackage {"},{"line_number":7,"context_line":"  name \u003d \"tvldb\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"e4cc7111_2a46b44b","line":4,"range":{"start_line":4,"start_character":11,"end_line":4,"end_character":28},"in_reply_to":"16a7737f_014f414a","updated":"2020-06-15 20:18:29.000000000","message":"Nifty!","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}],"fun/tvldb/migrations/.gitkeep":[{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"ece5007106349cacedf0e1d070494b87ac0dad64","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2a12896b_eb82f7be","side":"PARENT","updated":"2020-06-16 13:13:18.000000000","message":"this file is probably not necessary anymore since the directory has stuff in it now, yeah?","commit_id":"2237a51d10c7ffd30ca3ef08762212f271fee01e"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"b36cc324b2ff25b6c89186fd4e5aaedf5d45e3dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"91bc3dca_0dac1d92","side":"PARENT","in_reply_to":"2a12896b_eb82f7be","updated":"2020-06-16 13:30:41.000000000","message":"Done","commit_id":"2237a51d10c7ffd30ca3ef08762212f271fee01e"}],"fun/tvldb/src/keyword.rs":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"91d308522ed9bcf5128bb39ba60273bac808d7e3","unresolved":true,"context_lines":[{"line_number":25,"context_line":"                .get_result(dbc)?"},{"line_number":26,"context_line":"        };"},{"line_number":27,"context_line":"        self.entries.push(new);"},{"line_number":28,"context_line":"        Ok(self.entries.len())"},{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":"    pub fn process_moves(\u0026mut self, moves: \u0026[(i32, i32)], dbc: \u0026PgConnection) -\u003e Result\u003c(), Error\u003e {"},{"line_number":31,"context_line":"        for (oid, new_idx) in moves {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"a47e1025_16000bfc","line":28,"range":{"start_line":28,"start_character":11,"end_line":28,"end_character":29},"updated":"2020-06-15 20:42:30.000000000","message":"Im confused about whether or not this is 0-indexed at this point","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                .get_result(dbc)?"},{"line_number":26,"context_line":"        };"},{"line_number":27,"context_line":"        self.entries.push(new);"},{"line_number":28,"context_line":"        Ok(self.entries.len())"},{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":"    pub fn process_moves(\u0026mut self, moves: \u0026[(i32, i32)], dbc: \u0026PgConnection) -\u003e Result\u003c(), Error\u003e {"},{"line_number":31,"context_line":"        for (oid, new_idx) in moves {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"fd3594a7_fe6e8fd0","line":28,"range":{"start_line":28,"start_character":11,"end_line":28,"end_character":29},"in_reply_to":"a47e1025_16000bfc","updated":"2020-06-15 21:22:21.000000000","message":"It isn\u0027t; the quote indexes are never zero-indexed.\n\nI think.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"91d308522ed9bcf5128bb39ba60273bac808d7e3","unresolved":true,"context_lines":[{"line_number":145,"context_line":"        };"},{"line_number":146,"context_line":"        if let Some(k) \u003d keyword {"},{"line_number":147,"context_line":"            let entries \u003d Self::get_entries(k.id, dbc)?;"},{"line_number":148,"context_line":"            if let Some(e0) \u003d entries.get(0) {"},{"line_number":149,"context_line":"                if e0.text.starts_with(\"see: \") {"},{"line_number":150,"context_line":"                    return Self::get(e0.text.replace(\"see: \", \"\"), c, dbc);"},{"line_number":151,"context_line":"                }"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"23bc3cb2_fe635158","line":148,"range":{"start_line":148,"start_character":24,"end_line":148,"end_character":26},"updated":"2020-06-15 20:42:30.000000000","message":"I\u0027d call it first","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        };"},{"line_number":146,"context_line":"        if let Some(k) \u003d keyword {"},{"line_number":147,"context_line":"            let entries \u003d Self::get_entries(k.id, dbc)?;"},{"line_number":148,"context_line":"            if let Some(e0) \u003d entries.get(0) {"},{"line_number":149,"context_line":"                if e0.text.starts_with(\"see: \") {"},{"line_number":150,"context_line":"                    return Self::get(e0.text.replace(\"see: \", \"\"), c, dbc);"},{"line_number":151,"context_line":"                }"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"f0899920_4a83fdf4","line":148,"range":{"start_line":148,"start_character":24,"end_line":148,"end_character":26},"in_reply_to":"23bc3cb2_fe635158","updated":"2020-06-15 21:22:21.000000000","message":"Ack","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}],"fun/tvldb/src/main.rs":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#![allow(proc_macro_derive_resolution_fallback)] // Needed until diesel fixes their stuff"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"extern crate irc;"},{"line_number":4,"context_line":"extern crate serde;"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"5762f340_192b2b1e","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":89},"updated":"2020-06-15 20:32:28.000000000","message":"Wow, this is still a thing? I remember putting this pragma in *years* ago.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#![allow(proc_macro_derive_resolution_fallback)] // Needed until diesel fixes their stuff"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"extern crate irc;"},{"line_number":4,"context_line":"extern crate serde;"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"6d0381a9_e3e5b33b","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":89},"in_reply_to":"5762f340_192b2b1e","updated":"2020-06-15 21:22:21.000000000","message":"This code is *from* years ago, you realise...","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":49,"context_line":"        let subj \u003d \u0026learn[\"subj\"];"},{"line_number":50,"context_line":"        let learn_chan \u003d if learn.name(\"gen\").is_some() {"},{"line_number":51,"context_line":"            \"*\""},{"line_number":52,"context_line":"        }"},{"line_number":53,"context_line":"        else {"},{"line_number":54,"context_line":"            chan"},{"line_number":55,"context_line":"        };"},{"line_number":56,"context_line":"        if !chan.starts_with(\"#\") \u0026\u0026 learn_chan !\u003d \"*\" {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"fd2ec877_e98d9586","line":53,"range":{"start_line":52,"start_character":8,"end_line":53,"end_character":14},"updated":"2020-06-15 20:32:28.000000000","message":"I\u0027m personally not a fan of this type of formatting. The rustfmt defaults are mostly sane, IMO, and it makes sense to have something that normalises formatting.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        let subj \u003d \u0026learn[\"subj\"];"},{"line_number":50,"context_line":"        let learn_chan \u003d if learn.name(\"gen\").is_some() {"},{"line_number":51,"context_line":"            \"*\""},{"line_number":52,"context_line":"        }"},{"line_number":53,"context_line":"        else {"},{"line_number":54,"context_line":"            chan"},{"line_number":55,"context_line":"        };"},{"line_number":56,"context_line":"        if !chan.starts_with(\"#\") \u0026\u0026 learn_chan !\u003d \"*\" {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"51b7f6f9_5b5cac91","line":53,"range":{"start_line":52,"start_character":8,"end_line":53,"end_character":14},"in_reply_to":"fd2ec877_e98d9586","updated":"2020-06-15 21:22:21.000000000","message":"what!\n(yeah, alright)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":63,"context_line":"        }"},{"line_number":64,"context_line":"        Ok(kwd)"},{"line_number":65,"context_line":"    }"},{"line_number":66,"context_line":"    pub fn handle_privmsg(\u0026mut self, from: \u0026str, chan: \u0026str, msg: \u0026str) -\u003e Result\u003c(), Error\u003e {"},{"line_number":67,"context_line":"        lazy_static! {"},{"line_number":68,"context_line":"            static ref LEARN_RE: Regex \u003d Regex::new(r#\"^\\?\\?(?P\u003cgen\u003e!)?\\s*(?P\u003csubj\u003e[^\\[:]*):\\s*(?P\u003cval\u003e.*)\"#).unwrap();"},{"line_number":69,"context_line":"            static ref QUERY_RE: Regex \u003d Regex::new(r#\"^\\?\\?\\s*(?P\u003csubj\u003e[^\\[:]*)(?P\u003cidx\u003e\\[[^\\]]+\\])?\"#).unwrap();"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"116a81f9_9caa1bea","line":66,"range":{"start_line":66,"start_character":11,"end_line":66,"end_character":25},"updated":"2020-06-15 20:32:28.000000000","message":"This function is quite long. Have you considered splitting the various match arms into separate functions?\n\nThat would make it easier to read the code, and introduce additional information via the function names.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"da19cc42344fb6570c29987290839c4437c2119f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        }"},{"line_number":64,"context_line":"        Ok(kwd)"},{"line_number":65,"context_line":"    }"},{"line_number":66,"context_line":"    pub fn handle_privmsg(\u0026mut self, from: \u0026str, chan: \u0026str, msg: \u0026str) -\u003e Result\u003c(), Error\u003e {"},{"line_number":67,"context_line":"        lazy_static! {"},{"line_number":68,"context_line":"            static ref LEARN_RE: Regex \u003d Regex::new(r#\"^\\?\\?(?P\u003cgen\u003e!)?\\s*(?P\u003csubj\u003e[^\\[:]*):\\s*(?P\u003cval\u003e.*)\"#).unwrap();"},{"line_number":69,"context_line":"            static ref QUERY_RE: Regex \u003d Regex::new(r#\"^\\?\\?\\s*(?P\u003csubj\u003e[^\\[:]*)(?P\u003cidx\u003e\\[[^\\]]+\\])?\"#).unwrap();"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"ac151aa0_bb846acf","line":66,"range":{"start_line":66,"start_character":11,"end_line":66,"end_character":25},"in_reply_to":"116a81f9_9caa1bea","updated":"2020-06-15 21:27:13.000000000","message":"Done","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":72,"context_line":"            static ref MOVE_RE: Regex \u003d Regex::new(r#\"^\\?\\?(?P\u003cgen\u003e!)?\\s*(?P\u003csubj\u003e[^\\[:]*)(?P\u003cidx\u003e\\[[^\\]]+\\])-\u003e(?P\u003cnew_idx\u003e.*)\"#).unwrap();"},{"line_number":73,"context_line":"        }"},{"line_number":74,"context_line":"        let db \u003d self.pg.get()?;"},{"line_number":75,"context_line":"        let nick \u003d from.split(\"!\").next().ok_or(format_err!(\"Invalid source\"))?;"},{"line_number":76,"context_line":"        let tgt \u003d if chan.starts_with(\"#\") {"},{"line_number":77,"context_line":"            chan"},{"line_number":78,"context_line":"        }"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"9aac304e_8796e3e9","line":75,"range":{"start_line":75,"start_character":61,"end_line":75,"end_character":75},"updated":"2020-06-15 20:32:28.000000000","message":"This isn\u0027t a descriptive message. Think of an ops person looking at your thing while it\u0027s on fire, they might not be aware of this specific error message and would have to go dig through the code to get to the next debugging step.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            static ref MOVE_RE: Regex \u003d Regex::new(r#\"^\\?\\?(?P\u003cgen\u003e!)?\\s*(?P\u003csubj\u003e[^\\[:]*)(?P\u003cidx\u003e\\[[^\\]]+\\])-\u003e(?P\u003cnew_idx\u003e.*)\"#).unwrap();"},{"line_number":73,"context_line":"        }"},{"line_number":74,"context_line":"        let db \u003d self.pg.get()?;"},{"line_number":75,"context_line":"        let nick \u003d from.split(\"!\").next().ok_or(format_err!(\"Invalid source\"))?;"},{"line_number":76,"context_line":"        let tgt \u003d if chan.starts_with(\"#\") {"},{"line_number":77,"context_line":"            chan"},{"line_number":78,"context_line":"        }"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"162e2723_688813f1","line":75,"range":{"start_line":75,"start_character":61,"end_line":75,"end_character":75},"in_reply_to":"9aac304e_8796e3e9","updated":"2020-06-15 21:22:21.000000000","message":"Reasonable, although it\u0027s not as if it gets logged anywhere...\nTell you what, I\u0027ll fix it and also make these errors get logged.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        }"},{"line_number":74,"context_line":"        let db \u003d self.pg.get()?;"},{"line_number":75,"context_line":"        let nick \u003d from.split(\"!\").next().ok_or(format_err!(\"Invalid source\"))?;"},{"line_number":76,"context_line":"        let tgt \u003d if chan.starts_with(\"#\") {"},{"line_number":77,"context_line":"            chan"},{"line_number":78,"context_line":"        }"},{"line_number":79,"context_line":"        else {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"28558572_960b2d2c","line":76,"range":{"start_line":76,"start_character":12,"end_line":76,"end_character":15},"updated":"2020-06-15 20:32:28.000000000","message":"Prefer to use longer variable names for uncommon abbreviations, \"target\" is only a few bytes more and we have plenty of space! :)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        }"},{"line_number":74,"context_line":"        let db \u003d self.pg.get()?;"},{"line_number":75,"context_line":"        let nick \u003d from.split(\"!\").next().ok_or(format_err!(\"Invalid source\"))?;"},{"line_number":76,"context_line":"        let tgt \u003d if chan.starts_with(\"#\") {"},{"line_number":77,"context_line":"            chan"},{"line_number":78,"context_line":"        }"},{"line_number":79,"context_line":"        else {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"4f2d4353_9ffdfe96","line":76,"range":{"start_line":76,"start_character":12,"end_line":76,"end_character":15},"in_reply_to":"28558572_960b2d2c","updated":"2020-06-15 21:22:21.000000000","message":"Done","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                format!(\"\u003c{}\u003e {}\", \u0026kwd.keyword.name, last)"},{"line_number":94,"context_line":"            }"},{"line_number":95,"context_line":"            else {"},{"line_number":96,"context_line":"                self.report_error(nick, chan, format!(\"I dunno what {} said...\", kwd.keyword.name))?;"},{"line_number":97,"context_line":"                return Ok(());"},{"line_number":98,"context_line":"            };"},{"line_number":99,"context_line":"            let idx \u003d kwd.learn(nick, \u0026val, \u0026db)?;"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"9cc257cf_de281aec","line":96,"range":{"start_line":96,"start_character":16,"end_line":96,"end_character":33},"updated":"2020-06-15 20:32:28.000000000","message":"Why are some errors reported here, and others bubbled back up? The wrapping function does `report_error` anyways, no?","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                format!(\"\u003c{}\u003e {}\", \u0026kwd.keyword.name, last)"},{"line_number":94,"context_line":"            }"},{"line_number":95,"context_line":"            else {"},{"line_number":96,"context_line":"                self.report_error(nick, chan, format!(\"I dunno what {} said...\", kwd.keyword.name))?;"},{"line_number":97,"context_line":"                return Ok(());"},{"line_number":98,"context_line":"            };"},{"line_number":99,"context_line":"            let idx \u003d kwd.learn(nick, \u0026val, \u0026db)?;"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"23cfc2f4_8edde561","line":96,"range":{"start_line":96,"start_character":16,"end_line":96,"end_character":33},"in_reply_to":"9cc257cf_de281aec","updated":"2020-06-15 21:22:21.000000000","message":"Huh. Good question.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":173,"context_line":"                            for i in 0..kwd.entries.len() {"},{"line_number":174,"context_line":"                                self.cli.send_notice(nick, format!(\"[{}] {}\", chan, kwd.format_entry(i+1).unwrap()))?;"},{"line_number":175,"context_line":"                            }"},{"line_number":176,"context_line":"                        }"},{"line_number":177,"context_line":"                        else {"},{"line_number":178,"context_line":"                            if idx \u003d\u003d 0 {"},{"line_number":179,"context_line":"                                idx \u003d 1;"},{"line_number":180,"context_line":"                            }"},{"line_number":181,"context_line":"                            if let Some(ent) \u003d kwd.format_entry(idx as _) {"},{"line_number":182,"context_line":"                                self.cli.send_notice(tgt, ent)?;"},{"line_number":183,"context_line":"                            }"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"804d9c33_151b5bf6","line":180,"range":{"start_line":176,"start_character":23,"end_line":180,"end_character":29},"updated":"2020-06-15 20:32:28.000000000","message":"It would help if there were some descriptions of what some of these index operations are doing (it might be enough to just pull the arms out into separate functions with descriptive names, as mentioned above)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                            for i in 0..kwd.entries.len() {"},{"line_number":174,"context_line":"                                self.cli.send_notice(nick, format!(\"[{}] {}\", chan, kwd.format_entry(i+1).unwrap()))?;"},{"line_number":175,"context_line":"                            }"},{"line_number":176,"context_line":"                        }"},{"line_number":177,"context_line":"                        else {"},{"line_number":178,"context_line":"                            if idx \u003d\u003d 0 {"},{"line_number":179,"context_line":"                                idx \u003d 1;"},{"line_number":180,"context_line":"                            }"},{"line_number":181,"context_line":"                            if let Some(ent) \u003d kwd.format_entry(idx as _) {"},{"line_number":182,"context_line":"                                self.cli.send_notice(tgt, ent)?;"},{"line_number":183,"context_line":"                            }"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"246a7bd1_52817a0f","line":180,"range":{"start_line":176,"start_character":23,"end_line":180,"end_character":29},"in_reply_to":"804d9c33_151b5bf6","updated":"2020-06-15 21:22:21.000000000","message":"Well /that/ one isn\u0027t that obscure, surely (??)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                self.cli.send_notice(tgt, ent)?;"},{"line_number":183,"context_line":"                            }"},{"line_number":184,"context_line":"                            else {"},{"line_number":185,"context_line":"                                let pluralised \u003d if kwd.entries.len() \u003d\u003d 1 {"},{"line_number":186,"context_line":"                                    \"entry\""},{"line_number":187,"context_line":"                                }"},{"line_number":188,"context_line":"                                else {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"e30014ef_e2059069","line":185,"range":{"start_line":185,"start_character":36,"end_line":185,"end_character":75},"updated":"2020-06-15 20:32:28.000000000","message":"makes you miss CL\u0027s loop ;)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                self.cli.send_notice(tgt, ent)?;"},{"line_number":183,"context_line":"                            }"},{"line_number":184,"context_line":"                            else {"},{"line_number":185,"context_line":"                                let pluralised \u003d if kwd.entries.len() \u003d\u003d 1 {"},{"line_number":186,"context_line":"                                    \"entry\""},{"line_number":187,"context_line":"                                }"},{"line_number":188,"context_line":"                                else {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"efa58a74_f805642f","line":185,"range":{"start_line":185,"start_character":36,"end_line":185,"end_character":75},"in_reply_to":"e30014ef_e2059069","updated":"2020-06-15 21:22:21.000000000","message":"I\u0027m pretty sure this code was written prior to my enlightenment; I wouldn\u0027t have known any better ;P","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":194,"context_line":"                    }"},{"line_number":195,"context_line":"                    else {"},{"line_number":196,"context_line":"                        let entry \u003d if kwd.entries.len() \u003c 2 {"},{"line_number":197,"context_line":"                            1"},{"line_number":198,"context_line":"                        }"},{"line_number":199,"context_line":"                        else {"},{"line_number":200,"context_line":"                            self.rng.gen_range(1, kwd.entries.len())"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"0b8490a2_600289e2","line":197,"range":{"start_line":197,"start_character":27,"end_line":197,"end_character":29},"updated":"2020-06-15 20:32:28.000000000","message":"why special case this?","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                    }"},{"line_number":195,"context_line":"                    else {"},{"line_number":196,"context_line":"                        let entry \u003d if kwd.entries.len() \u003c 2 {"},{"line_number":197,"context_line":"                            1"},{"line_number":198,"context_line":"                        }"},{"line_number":199,"context_line":"                        else {"},{"line_number":200,"context_line":"                            self.rng.gen_range(1, kwd.entries.len())"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"ac4e59f6_8dd6ddde","line":197,"range":{"start_line":197,"start_character":27,"end_line":197,"end_character":29},"in_reply_to":"0b8490a2_600289e2","updated":"2020-06-15 21:22:21.000000000","message":"aha! this should probably go in a comment, but self.rng.gen_range does the whole exclusive range thing, such that gen_range(1, 1) includes nothing and causes a panic (i.e. it\u0027s equivalent to 1..\u003d0)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":217,"context_line":"            chan_lastmsgs.insert(nick.to_string().to_ascii_lowercase(), msg.to_string());"},{"line_number":218,"context_line":"        }"},{"line_number":219,"context_line":"        Ok(())"},{"line_number":220,"context_line":"    }"},{"line_number":221,"context_line":"    pub fn handle_msg(\u0026mut self, m: Message) -\u003e Result\u003c(), Error\u003e {"},{"line_number":222,"context_line":"        match m.command {"},{"line_number":223,"context_line":"            Command::PRIVMSG(channel, message) \u003d\u003e {"},{"line_number":224,"context_line":"                if let Some(src) \u003d m.prefix {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"8a3cf1d7_684756db","line":221,"range":{"start_line":220,"start_character":3,"end_line":221,"end_character":4},"updated":"2020-06-15 20:32:28.000000000","message":"\\n (also the others)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":217,"context_line":"            chan_lastmsgs.insert(nick.to_string().to_ascii_lowercase(), msg.to_string());"},{"line_number":218,"context_line":"        }"},{"line_number":219,"context_line":"        Ok(())"},{"line_number":220,"context_line":"    }"},{"line_number":221,"context_line":"    pub fn handle_msg(\u0026mut self, m: Message) -\u003e Result\u003c(), Error\u003e {"},{"line_number":222,"context_line":"        match m.command {"},{"line_number":223,"context_line":"            Command::PRIVMSG(channel, message) \u003d\u003e {"},{"line_number":224,"context_line":"                if let Some(src) \u003d m.prefix {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"2c76bbb3_9de404d7","line":221,"range":{"start_line":220,"start_character":3,"end_line":221,"end_character":4},"in_reply_to":"8a3cf1d7_684756db","updated":"2020-06-15 21:22:21.000000000","message":"agh, I\u0027ll just run rustfmt","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":231,"context_line":"            },"},{"line_number":232,"context_line":"            Command::INVITE(nick, channel) \u003d\u003e {"},{"line_number":233,"context_line":"                if self.cfg.admins.contains(\u0026nick) {"},{"line_number":234,"context_line":"                    debug!(\"Joining {} after admin invite\", channel);"},{"line_number":235,"context_line":"                    self.cli.send_join(channel)?;"},{"line_number":236,"context_line":"                }"},{"line_number":237,"context_line":"            },"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"e60cd012_c63d8de5","line":234,"range":{"start_line":234,"start_character":20,"end_line":234,"end_character":25},"updated":"2020-06-15 20:32:28.000000000","message":"Should this be `info!`?","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"2e11bc59f2fa051592911f7fe9b46b8756dd6963","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            },"},{"line_number":232,"context_line":"            Command::INVITE(nick, channel) \u003d\u003e {"},{"line_number":233,"context_line":"                if self.cfg.admins.contains(\u0026nick) {"},{"line_number":234,"context_line":"                    debug!(\"Joining {} after admin invite\", channel);"},{"line_number":235,"context_line":"                    self.cli.send_join(channel)?;"},{"line_number":236,"context_line":"                }"},{"line_number":237,"context_line":"            },"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"72575537_660163b6","line":234,"range":{"start_line":234,"start_character":20,"end_line":234,"end_character":25},"in_reply_to":"e60cd012_c63d8de5","updated":"2020-06-15 21:22:21.000000000","message":"Yeah, alright.","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":249,"context_line":"    let env \u003d env_logger::Env::new().default_filter_or(cfg.log_filter.clone().unwrap_or(default_log_filter));"},{"line_number":250,"context_line":"    env_logger::init_from_env(env);"},{"line_number":251,"context_line":"    info!(\"paroxysm starting up\");"},{"line_number":252,"context_line":"    info!(\"connecting to database\");"},{"line_number":253,"context_line":"    let pg \u003d Pool::new(ConnectionManager::new(\u0026cfg.database_url))?;"},{"line_number":254,"context_line":"    info!(\"connecting to IRC\");"},{"line_number":255,"context_line":"    let cli \u003d IrcClient::new(\u0026cfg.irc_config_path)?;"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"724f4a57_203ba312","line":252,"range":{"start_line":252,"start_character":25,"end_line":252,"end_character":36},"updated":"2020-06-15 20:32:28.000000000","message":"It\u0027s useful when log messages like these contain relevant information (makes it easier to spot trivial mistakes in error cases), e.g. `info!(\"connecting to database at \u0027{}\u0027\", \u0026cfg.database_url);`","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"da19cc42344fb6570c29987290839c4437c2119f","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    let env \u003d env_logger::Env::new().default_filter_or(cfg.log_filter.clone().unwrap_or(default_log_filter));"},{"line_number":250,"context_line":"    env_logger::init_from_env(env);"},{"line_number":251,"context_line":"    info!(\"paroxysm starting up\");"},{"line_number":252,"context_line":"    info!(\"connecting to database\");"},{"line_number":253,"context_line":"    let pg \u003d Pool::new(ConnectionManager::new(\u0026cfg.database_url))?;"},{"line_number":254,"context_line":"    info!(\"connecting to IRC\");"},{"line_number":255,"context_line":"    let cli \u003d IrcClient::new(\u0026cfg.irc_config_path)?;"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"4093af5f_0b7d7fb4","line":252,"range":{"start_line":252,"start_character":25,"end_line":252,"end_character":36},"in_reply_to":"724f4a57_203ba312","updated":"2020-06-15 21:27:13.000000000","message":"Done","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":251,"context_line":"    info!(\"paroxysm starting up\");"},{"line_number":252,"context_line":"    info!(\"connecting to database\");"},{"line_number":253,"context_line":"    let pg \u003d Pool::new(ConnectionManager::new(\u0026cfg.database_url))?;"},{"line_number":254,"context_line":"    info!(\"connecting to IRC\");"},{"line_number":255,"context_line":"    let cli \u003d IrcClient::new(\u0026cfg.irc_config_path)?;"},{"line_number":256,"context_line":"    cli.identify()?;"},{"line_number":257,"context_line":"    let st \u003d cli.stream();"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"05c22dc5_4403dc65","line":254,"range":{"start_line":254,"start_character":25,"end_line":254,"end_character":28},"updated":"2020-06-15 20:32:28.000000000","message":"same as above","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"da19cc42344fb6570c29987290839c4437c2119f","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    info!(\"paroxysm starting up\");"},{"line_number":252,"context_line":"    info!(\"connecting to database\");"},{"line_number":253,"context_line":"    let pg \u003d Pool::new(ConnectionManager::new(\u0026cfg.database_url))?;"},{"line_number":254,"context_line":"    info!(\"connecting to IRC\");"},{"line_number":255,"context_line":"    let cli \u003d IrcClient::new(\u0026cfg.irc_config_path)?;"},{"line_number":256,"context_line":"    cli.identify()?;"},{"line_number":257,"context_line":"    let st \u003d cli.stream();"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"168d335e_978063a3","line":254,"range":{"start_line":254,"start_character":25,"end_line":254,"end_character":28},"in_reply_to":"05c22dc5_4403dc65","updated":"2020-06-15 21:27:13.000000000","message":"Done","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"392bc88fe5db7bff86e97eacfe6ab9b50178c5f7","unresolved":true,"context_lines":[{"line_number":254,"context_line":"    info!(\"connecting to IRC\");"},{"line_number":255,"context_line":"    let cli \u003d IrcClient::new(\u0026cfg.irc_config_path)?;"},{"line_number":256,"context_line":"    cli.identify()?;"},{"line_number":257,"context_line":"    let st \u003d cli.stream();"},{"line_number":258,"context_line":"    let mut app \u003d App { cli, pg, cfg, rng: thread_rng(), last_msgs: HashMap::new() };"},{"line_number":259,"context_line":"    info!(\"running!\");"},{"line_number":260,"context_line":"    st.for_each_incoming(|m| {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"a060dbfe_dc013b13","line":257,"range":{"start_line":257,"start_character":13,"end_line":257,"end_character":16},"updated":"2020-06-15 20:32:28.000000000","message":"\"CLI\" is a commonly known abbrevation which means \"Command-Line Interface\" to most people. It\u0027s recommended to disambiguate such abbreviations to avoid confusing readers, see also https://google.github.io/styleguide/cppguide.html#General_Naming_Rules (yes, that\u0027s for C++ but the general rules still make sense).","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"},{"author":{"_account_id":1000008,"name":"eta","email":"tvl@eta.st","username":"eta"},"change_message_id":"da19cc42344fb6570c29987290839c4437c2119f","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    info!(\"connecting to IRC\");"},{"line_number":255,"context_line":"    let cli \u003d IrcClient::new(\u0026cfg.irc_config_path)?;"},{"line_number":256,"context_line":"    cli.identify()?;"},{"line_number":257,"context_line":"    let st \u003d cli.stream();"},{"line_number":258,"context_line":"    let mut app \u003d App { cli, pg, cfg, rng: thread_rng(), last_msgs: HashMap::new() };"},{"line_number":259,"context_line":"    info!(\"running!\");"},{"line_number":260,"context_line":"    st.for_each_incoming(|m| {"}],"source_content_type":"text/x-rustsrc","patch_set":1,"id":"53aea623_431b9b38","line":257,"range":{"start_line":257,"start_character":13,"end_line":257,"end_character":16},"in_reply_to":"a060dbfe_dc013b13","updated":"2020-06-15 21:27:13.000000000","message":"Done (this one required Major Sed Action)","commit_id":"de2b20914246623da49dad19a449881e119a2cc8"}]}
