{
  "linejudge": "0.1.0",
  "measured-on": "2026-09-02",
  "groups": [
    {
      "name": "1000-comments",
      "cases": [
        {
          "name": "1010-code_then_comment_on_one_line",
          "trap": "a line holding both code and a comment is code",
          "disabled": false
        },
        {
          "name": "1020-comment_then_code_then_comment",
          "trap": "a line that opens with a block comment, holds code, and closes with another, the way a generated\nlookup table writes an index in front of a value and a note after it",
          "disabled": false
        },
        {
          "name": "1030-brace_and_trailing_comment",
          "trap": "a line holding only a brace and a comment. The brace is not content, and the comment still is",
          "disabled": false
        },
        {
          "name": "1040-pairs_in_either_order",
          "trap": "four pairs of lines, each holding the same two things in opposite order: code and a comment, a\nstring and a comment, a brace and a comment, a semicolon and a wordless comment. Swapping the two\nchanges neither of them, so the two lines of a pair have to be counted the same way whichever one\na counter meets first. The string pair is the one that shows words inside a comment do not\noutweigh a string on the same line, in either direction",
          "disabled": false
        },
        {
          "name": "1050-block_comment_holding_line_comment",
          "trap": "a line comment inside a block comment is part of the block",
          "disabled": false
        },
        {
          "name": "1060-line_comment_holding_block_open",
          "trap": "a block opener inside a line comment opens nothing",
          "disabled": false
        },
        {
          "name": "1070-block_comment_closed_then_line_comment",
          "trap": "a block comment opens and closes on one line and a line comment follows it. Nothing is outside\nthe two but the space between them, so the line is comment and holds no code",
          "disabled": false
        },
        {
          "name": "1080-block_close_touching_a_line_comment",
          "trap": "the '//' opening the line comment is formed on the '/' that closes the block comment, so the two\nshare a byte and no search for '//' yields both of the places it appears to be at. Case 1070 is\nthe same line with a space between them, and Pascal's '{ block }//trailing' is the same line\nagain with a closer that shares no byte with it",
          "disabled": false
        },
        {
          "name": "1090-block_comment_closed_after_a_line_comment",
          "trap": "'//*/' closes a block comment, because '//' means nothing inside one. It is half of the C idiom\nfor switching a block off and on: one character added in front of the opener makes that line a\nline comment, and this closer is then a line comment too instead of a stray symbol",
          "disabled": false
        },
        {
          "name": "1100-close_touching_reopen_plain",
          "trap": "a block comment closes and the next one opens with nothing between the two symbols",
          "disabled": false
        },
        {
          "name": "1110-close_and_reopen_with_a_space",
          "trap": "the same close and reopen as case 1100 with whitespace between the symbols, which must change\nnothing",
          "disabled": false
        },
        {
          "name": "1120-close_then_code_then_stray_and_reopen",
          "trap": "a block closes, code follows, then a stray close and a real open share a byte",
          "disabled": false
        },
        {
          "name": "1130-closer_in_code_with_nothing_open",
          "trap": "Rust ends a raw string with a quote and a hash, and those two characters appear here in ordinary\ncode with no raw string open. They are a plain string holding a hash and nothing more",
          "disabled": false
        },
        {
          "name": "1140-three_slashes_are_one_comment",
          "trap": "three slashes hold one line comment and not two overlapping ones",
          "disabled": false
        },
        {
          "name": "1150-doc_comment_opening_after_code",
          "trap": "a doc comment that opens on a line which already holds code. The line is code, and the block of\ndocumentation that begins on it does not begin at its first character",
          "disabled": false
        },
        {
          "name": "1160-two_comment_pairs_of_one_language",
          "trap": "D writes block comments two ways, /* */ and /+ +/. Each ends only at its own closer, so the other\npair's symbol sitting inside one is text",
          "disabled": false
        },
        {
          "name": "1170-pascal_writes_two_pairs",
          "trap": "each pair ends only at its own closer, the other pair's token inside is text",
          "disabled": false
        },
        {
          "name": "1180-cmake_bracket_comment",
          "trap": "CMake opens a bracket comment with any number of equals signs between its brackets, and only a\ncloser carrying the same number ends it. A shorter one further down is text",
          "disabled": false
        },
        {
          "name": "1190-nested_block_comment_that_does_not",
          "trap": "the first closer really does end the block in C, which does not nest",
          "disabled": false
        },
        {
          "name": "1200-nested_block_comment_that_nests",
          "trap": "Haskell block comments nest, so an inner one opening and closing inside the outer leaves the outer\nstill open, and the text after it is still comment",
          "disabled": false
        },
        {
          "name": "1210-close_touching_reopen_nesting",
          "trap": "a Haskell block comment closes and the next one opens with nothing between the two symbols. The\npair nests, so a counter tracking how deep it is must not read the reopener as two levels",
          "disabled": false
        },
        {
          "name": "1220-nested_block_comment_in_odin",
          "trap": "Odin block comments nest, so the first closer ends only the inner one and the text under it is\nstill inside the outer block",
          "disabled": false
        },
        {
          "name": "1230-a_comment_word_at_the_head_of_a_longer_word",
          "trap": "Batch opens a comment with the word REM, and REMOVE is a different word. A counter that looks for\nthose three letters as a substring reads a command as a comment",
          "disabled": false
        }
      ]
    },
    {
      "name": "2000-string_forms",
      "cases": [
        {
          "name": "2010-comment_symbol_inside_string",
          "trap": "a comment symbol inside a string is text",
          "disabled": false
        },
        {
          "name": "2020-string_symbol_inside_comment",
          "trap": "an unmatched quote inside a comment opens nothing",
          "disabled": false
        },
        {
          "name": "2030-string_symbol_of_another_kind_inside",
          "trap": "only the symbol that opened a string can close it, so the other kind inside is text",
          "disabled": false
        },
        {
          "name": "2040-comment_pair_opening_inside_a_string",
          "trap": "a block comment opener inside a string opens nothing",
          "disabled": false
        },
        {
          "name": "2050-string_opening_after_block_close",
          "trap": "a string beginning at the byte straight after a block comment closes",
          "disabled": false
        },
        {
          "name": "2060-backtick_template_holding_a_comment",
          "trap": "a line comment symbol inside a template literal is text",
          "disabled": false
        },
        {
          "name": "2070-verbatim_string_crossing_lines",
          "trap": "a C# verbatim string, which opens with @\" and closes with a bare quote, so its two ends are not\nthe same symbol. It runs across lines, and the backslashes inside it escape nothing",
          "disabled": false
        },
        {
          "name": "2080-odd_triple_quote_count",
          "trap": "a triple quoted string opened on one line and closed on another keeps the lines between out of the\ncomment count, since a string is not a comment",
          "disabled": false
        },
        {
          "name": "2090-docstring_holding_a_comment_symbol",
          "trap": "the # inside the docstring is text and not a comment symbol, and the docstring around it is a\ntriple quoted string like any other, opening a line on its own. Case 2100 is the same shape where\nthe block is data the program prints, and the two together separate a counter that decides by\nwhere the block sits from one that decides by what it is",
          "disabled": false
        },
        {
          "name": "2100-triple_quoted_data_not_documentation",
          "trap": "a triple quoted string that is data the program prints and not documentation, with its opening\nsymbol at the start of a line. Case 2090 is the same shape where the block really is\ndocumentation",
          "disabled": false
        },
        {
          "name": "2110-here_string_holding_an_apostrophe",
          "trap": "an apostrophe inside a PowerShell here string. The body of a here string is literal and it ends\nonly at a closer sitting at the start of a line, so the apostrophe in the word is a byte",
          "disabled": false
        },
        {
          "name": "2120-heredoc_holding_an_apostrophe",
          "trap": "an apostrophe inside the body of a shell heredoc. The word that ends a heredoc is chosen where it\nis written, so no fixed list of comment and string symbols can say what closes this one",
          "disabled": false
        },
        {
          "name": "2130-raw_string_holding_quotes",
          "trap": "a Rust raw string, opened with r#\" and closed with \"#, so the plain quotes written inside it are\ntext and close nothing",
          "disabled": false
        },
        {
          "name": "2140-raw_string_holding_its_own_closing_bracket",
          "trap": "a C++ raw string, R\"( to )\", holding a block comment opener on a line of its own. Only the raw\npair keeps that opener from starting a comment that never closes, and a lone ) inside does not end\nthe string. The body of the opening line holds one further quote on purpose, so that counting the\nquotes on that line gives an even number: a counter that only tracks quotes then reaches the\ncomment opener with nothing open, and cannot swallow it by accident and pass without reading the\nraw string at all",
          "disabled": false
        },
        {
          "name": "2150-delimited_raw_string_names_its_own_closer",
          "trap": "a C++ raw string that puts a word of its own between the R\" and the bracket, and then ends only at\nthat same word. The closer is chosen where the string is written, so no fixed list of symbols can\nsay what ends this one",
          "disabled": false
        },
        {
          "name": "2160-long_bracket_string_holding_a_comment_symbol",
          "trap": "",
          "disabled": true
        },
        {
          "name": "2170-lua_level_bracket_holding_plain_close",
          "trap": "Lua opens a long comment with any number of equals signs between its brackets, and only a closer\ncarrying the same number ends it. A bare ]] further down is text",
          "disabled": false
        },
        {
          "name": "2180-lua_short_closer_hiding_the_real_one",
          "trap": "a Lua comment opened with one equals sign, ended by a line reading ]]=]. The bare ]] at the front\nof that line matches nothing, and the real closer ]=] begins one character inside it, so a counter\nsearching left to right finds the wrong one first",
          "disabled": false
        },
        {
          "name": "2190-triple_quote_read_as_three_short_ones",
          "trap": "Groovy opens a string that runs over several lines with three apostrophes. A counter that reads\nthe first apostrophe as the start of an ordinary one line string ends that string where the line\nends, and is then outside a string when it meets the two comment openers below, so it reads them\nas comments instead of as the text they are. The second one opens a block that nothing closes,\nwhich takes the rest of the file with it. A counter that does not treat the apostrophe as a string\nsymbol of Groovy at all ends up in the same place, outside a string when the openers arrive. Case\n2090 holds the same three character delimiter in Python",
          "disabled": false
        }
      ]
    },
    {
      "name": "3000-escapes_and_the_closing_quote",
      "cases": [
        {
          "name": "3010-escaped_quote_before_comment",
          "trap": "an escaped quote does not close the string, so the // after it is a real comment and not text\ninside it",
          "disabled": false
        },
        {
          "name": "3020-multiline_string_ending_in_backslash",
          "trap": "a raw string whose last byte is a backslash, written with the same symbol at both ends. A\nbacktick string in Odin escapes nothing, so the second backtick closes it whatever precedes it",
          "disabled": false
        },
        {
          "name": "3030-raw_string_ending_in_backslash",
          "trap": "a Rust raw string, r#\" to \"#, whose last character is a backslash. Nothing escapes inside a raw\nstring, so the closer closes it and the line ends where it looks like it ends",
          "disabled": false
        },
        {
          "name": "3040-bare_raw_string_ending_in_backslash",
          "trap": "",
          "disabled": true
        },
        {
          "name": "3050-verbatim_string_ending_in_a_backslash",
          "trap": "a verbatim string whose last byte is a backslash. In F# the body of @\"...\" is literal, so the\nclosing quote closes it whatever precedes it, and the line ends where it looks like it ends",
          "disabled": false
        },
        {
          "name": "3060-wysiwyg_string_ending_in_a_backslash",
          "trap": "",
          "disabled": true
        },
        {
          "name": "3070-backslash_before_a_closing_quote_in_sql",
          "trap": "standard SQL escapes a quote by doubling it and the backslash is an ordinary character",
          "disabled": false
        },
        {
          "name": "3080-backtick_escapes_inside_a_double_quoted_string",
          "trap": "the backtick is what escapes inside PowerShell's double quoted string, so the quote in the middle\nof the line closes nothing",
          "disabled": false
        },
        {
          "name": "3090-backtick_before_a_single_quoted_string",
          "trap": "the other PowerShell string form escapes nothing inside itself, so the backtick can only speak\noutside it, where it stops the apostrophe from opening anything",
          "disabled": false
        }
      ]
    },
    {
      "name": "4000-a_quote_that_opens_nothing",
      "cases": [
        {
          "name": "4010-char_literal_holding_a_quote",
          "trap": "a Rust character literal holding a double quote. The quote is the value of the character and opens\nno string, so the comment lines under it are comments",
          "disabled": false
        },
        {
          "name": "4020-two_char_literals_holding_escapes",
          "trap": "two character literals on one line, one holding an escaped backslash and one holding a quote.\nOrdinary Rust that any escaping routine is written with, and not a line contrived for this suite",
          "disabled": false
        },
        {
          "name": "4030-character_written_with_a_backslash",
          "trap": "Clojure writes a character as a backslash and the character itself, so a double quote is written\n\\\". It reads like an escaped quote and is not one: there is no string here for it to be inside,\nand it opens none",
          "disabled": false
        },
        {
          "name": "4040-escaped_apostrophe_outside_quotes",
          "trap": "a backslash before an apostrophe in unquoted shell text, which is how one writes an apostrophe\nwithout quoting it. The backslash escapes here and inside double quotes, and is an ordinary\ncharacter inside single ones",
          "disabled": false
        },
        {
          "name": "4050-lifetime_and_apostrophe_in_string",
          "trap": "two lone apostrophes on one Rust line: the one that marks a lifetime, and the one in the word\ndon't inside a string. Neither opens anything, and a counter pairing them would swallow the line",
          "disabled": false
        },
        {
          "name": "4060-primed_identifier_haskell",
          "trap": "Haskell lets a name end in an apostrophe, so x' is one name and the apostrophe opens nothing. The\nline under it holds a real character literal, where a pair of apostrophes does mean what it looks\nlike",
          "disabled": false
        },
        {
          "name": "4070-primed_identifier_ocaml",
          "trap": "OCaml lets a name end in an apostrophe, so x' is one name and the apostrophe opens nothing. The\nline under it holds a real character literal, and the comment under that is written with (* *),\nwhich nests",
          "disabled": false
        },
        {
          "name": "4080-primed_identifier_and_apostrophe",
          "trap": "F# lets a name end in an apostrophe, so s' is one name. The apostrophe in the word it's, inside the\nstring on the same line, is the other one. Neither may pair with the other",
          "disabled": false
        },
        {
          "name": "4090-transpose_operator_and_char",
          "trap": "Julia transposes a matrix by writing an apostrophe after it, so a' is an operation and the\napostrophe stands alone. A real character literal sits on the line below, and a counter that pairs\nthe two swallows everything between them",
          "disabled": false
        }
      ]
    },
    {
      "name": "5000-line_splices",
      "cases": [
        {
          "name": "5010-line_splice_inside_a_string",
          "trap": "a backslash at the end of the line continues the string in C, so the // inside it is not a\ncomment",
          "disabled": false
        },
        {
          "name": "5020-blank_line_inside_a_spliced_string",
          "trap": "the splice carries a string only off a line ending in a backslash, and the blank line does not,\nso the string is over before the comment line",
          "disabled": false
        },
        {
          "name": "5030-line_splice_inside_a_comment",
          "trap": "a backslash at the end of a line comment continues it onto the next line in C",
          "disabled": false
        },
        {
          "name": "5040-line_splice_in_a_comment_with_no_words",
          "trap": "the splice of case 5030 on a comment line holding no letter or digit at all, which is how a\ndecorative rule is written. What a line says has no bearing on whether it continues",
          "disabled": false
        },
        {
          "name": "5050-line_splice_after_a_closed_block_comment",
          "trap": "a block comment closes and a line comment opens on the same line, with a space between the two.\nThat space is not code, so the splice ending the line still carries the comment on",
          "disabled": false
        },
        {
          "name": "5060-code_then_a_spliced_line_comment",
          "trap": "a line holding real code ends in a spliced line comment, so the next line belongs to that comment in C",
          "disabled": false
        },
        {
          "name": "5070-blank_line_inside_a_spliced_comment",
          "trap": "a backslash at the end of a line comment carries it onto the blank line under it, so a line\nholding nothing at all is still inside the comment. Blank to a counter that asks what the line\nitself says, comment to one that asks what it is inside, and a counter that never sees the\nsplice does not face the question",
          "disabled": false
        }
      ]
    },
    {
      "name": "6000-another_language_inside_the_file",
      "cases": [
        {
          "name": "6010-html_has_no_strings",
          "trap": "HTML has no strings of its own, so the apostrophe in the word it's is text like everything around\nit and opens nothing",
          "disabled": false
        },
        {
          "name": "6020-comment_opener_inside_an_attribute",
          "trap": "a comment opener written inside a quoted attribute value, where HTML reads it as text. Nothing\ncloses it further down, so a counter that opened a comment there never ends one",
          "disabled": false
        },
        {
          "name": "6030-opening_tag_split_over_two_lines",
          "trap": "a script tag whose opening is split over two lines, which is legal HTML. A counter looking for the\nwhole tag on one line never sees it, and reads the JavaScript under it as markup",
          "disabled": false
        },
        {
          "name": "6040-script_tag_in_upper_case",
          "trap": "HTML reads its tag names without regard to case, so an upper case SCRIPT opens a script element\nexactly as a lower case one does",
          "disabled": false
        },
        {
          "name": "6050-script_closer_written_with_a_space",
          "trap": "a closing script tag written with a space before its bracket, which is legal HTML and rare. A\ncounter looking for the tag without the space never finds the end of the block. Every count comes\nout the same whether it found it or not, which is what keeps this one hidden",
          "disabled": false
        },
        {
          "name": "6060-script_closer_inside_a_string",
          "trap": "a script element ends at the first closing tag whatever the JavaScript around it is doing, which\nis why one writes the closer with a backslash inside a string. So the block here holds no whole line,\nand everything under the closer is markup, including what looks like a comment",
          "disabled": false
        },
        {
          "name": "6070-script_opener_that_never_closes",
          "trap": "the text of a script tag written inside a paragraph, with no closing tag anywhere after it.\nNothing marks an opener as a tag rather than the same word written out, so a block that never\ncloses is text and the rest of the file belongs to the page",
          "disabled": false
        },
        {
          "name": "6080-block_named_by_a_mime_type",
          "trap": "a script tag can name its language with a mime type instead of a lang attribute, and a mime type\nspells the language out: 'text/typescript', not 'text/ts'. The counts are the same whichever\nlanguage answers, so what this case is about is the label",
          "disabled": false
        },
        {
          "name": "6090-vue_blocks_count_as_their_own_languages",
          "trap": "one file, three languages: the script and style blocks are counted with their own symbols, so\nthe js comment and the css comment are comments although the Vue file holding them has neither\nsymbol",
          "disabled": false
        },
        {
          "name": "6100-block_language_named_by_the_tag",
          "trap": "the opening tag names the language of its block, so this file is Vue, TypeScript and SCSS and not\nVue, JavaScript and CSS. Every count comes out the same either way, so nothing but the names\nthemselves can tell a counter that read the tags from one that guessed",
          "disabled": false
        },
        {
          "name": "6110-php_block_holding_html_around_it",
          "trap": "the file switches language at a tag rather than at a file boundary, and switches back at another\ntag, so the markup between the two belongs to a language the extension does not name",
          "disabled": false
        },
        {
          "name": "6120-script_inside_html_inside_php",
          "trap": "three languages deep, the everyday shape of a page: the php file holds html between its blocks,\nand the html holds a script. Every line belongs to the innermost language, and a tag's own line\nto the language that encloses the tag, so the script tags are html and the html sits between the\nphp blocks",
          "disabled": false
        }
      ]
    },
    {
      "name": "7000-literals_with_their_own_delimiters",
      "cases": [
        {
          "name": "7010-regex_literal_holding_a_quote",
          "trap": "a double quote inside a JavaScript regular expression, where it is part of the pattern and opens\nno string. A counter fooled by it is left inside a string that nothing closes, and every line\nunder it goes the same way",
          "disabled": false
        },
        {
          "name": "7020-regex_holding_a_comment_opener",
          "trap": "a block comment opener inside a JavaScript regular expression. Knowing that the slash begins a\npattern and not a division takes reading what came before it, which is more than any counter here\nattempts. What each of them does with the opener after that is its own",
          "disabled": false
        }
      ]
    },
    {
      "name": "8000-what_the_line_counts_as",
      "cases": [
        {
          "name": "8010-punctuation_only_line",
          "trap": "a line holding only a brace. A definition, not a mistake: neither code nor comment to a counter\nthat asks what a line says, code to one that asks whether the file would compile without it",
          "disabled": false
        },
        {
          "name": "8020-blank_line_inside_block_comment",
          "trap": "a blank line inside a block comment. A definition, not a mistake: blank to a counter that asks\nwhat a line says, comment to one that asks which block it sits in",
          "disabled": false
        },
        {
          "name": "8030-blank_line_inside_a_multiline_string",
          "trap": "a blank line inside a string that runs over several lines. A definition and not a mistake: blank\nto a counter that asks what the line itself says, code to one that asks what the line is inside",
          "disabled": false
        },
        {
          "name": "8040-doc_comment_with_no_text",
          "trap": "a documentation line holding nothing but the /// that marks it, which is how a blank line is put\nbetween two paragraphs of documentation. It is a comment to a counter that asks what the line is\ninside, and neither code nor comment to one that asks what the line says, since it says nothing",
          "disabled": false
        },
        {
          "name": "8050-doc_comment_with_no_text_ending_a_block",
          "trap": "the same empty /// line as case 8040, this time the last one, with code and no more documentation\nunder it. A counter that decides an empty marker by what surrounds it has nothing to look at here,\nand the answer has to come out the same, since the line itself has not changed",
          "disabled": false
        }
      ]
    }
  ],
  "counters": [
    {
      "name": "cloc",
      "version": "2.10",
      "dialects": [
        {
          "name": "default",
          "answers": [
            {
              "case": "1010-code_then_comment_on_one_line",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "cloc --json cases/1000-comments/1010-code_then_comment_on_one_line/input.c"
            },
            {
              "case": "1020-comment_then_code_then_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "cloc --json cases/1000-comments/1020-comment_then_code_then_comment/input.c"
            },
            {
              "case": "1030-brace_and_trailing_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "cloc --json cases/1000-comments/1030-brace_and_trailing_comment/input.c"
            },
            {
              "case": "1040-pairs_in_either_order",
              "verdict": "agrees",
              "wants": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "answered": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "command": "cloc --json cases/1000-comments/1040-pairs_in_either_order/input.c"
            },
            {
              "case": "1050-block_comment_holding_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "cloc --json cases/1000-comments/1050-block_comment_holding_line_comment/input.c"
            },
            {
              "case": "1060-line_comment_holding_block_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/1000-comments/1060-line_comment_holding_block_open/input.c"
            },
            {
              "case": "1070-block_comment_closed_then_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/1000-comments/1070-block_comment_closed_then_line_comment/input.c"
            },
            {
              "case": "1080-block_close_touching_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/1000-comments/1080-block_close_touching_a_line_comment/input.c"
            },
            {
              "case": "1090-block_comment_closed_after_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 4,
                "comments": 3
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 4,
                "comments": 3
              },
              "command": "cloc --json cases/1000-comments/1090-block_comment_closed_after_a_line_comment/input.cs"
            },
            {
              "case": "1100-close_touching_reopen_plain",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "cloc --json cases/1000-comments/1100-close_touching_reopen_plain/input.c"
            },
            {
              "case": "1110-close_and_reopen_with_a_space",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "cloc --json cases/1000-comments/1110-close_and_reopen_with_a_space/input.c"
            },
            {
              "case": "1120-close_then_code_then_stray_and_reopen",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "note": "the block comment is cut out together with the line break inside it, so the code before the\nopener and the code after the closer become one line and the line that vanished is charged to\ncomments",
              "command": "cloc --json cases/1000-comments/1120-close_then_code_then_stray_and_reopen/input.c"
            },
            {
              "case": "1130-closer_in_code_with_nothing_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/1000-comments/1130-closer_in_code_with_nothing_open/input.rs"
            },
            {
              "case": "1140-three_slashes_are_one_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/1000-comments/1140-three_slashes_are_one_comment/input.java"
            },
            {
              "case": "1150-doc_comment_opening_after_code",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/1000-comments/1150-doc_comment_opening_after_code/input.rs"
            },
            {
              "case": "1160-two_comment_pairs_of_one_language",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/1000-comments/1160-two_comment_pairs_of_one_language/input.d"
            },
            {
              "case": "1170-pascal_writes_two_pairs",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/1000-comments/1170-pascal_writes_two_pairs/input.pas"
            },
            {
              "case": "1180-cmake_bracket_comment",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "CMake has no bracket comment here, only the hash, which is a comment wherever the line's first\nmark is one. So the opener's line is a comment and its body and closing bracket count as code",
              "command": "cloc --json cases/1000-comments/1180-cmake_bracket_comment/input.cmake"
            },
            {
              "case": "1190-nested_block_comment_that_does_not",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/1000-comments/1190-nested_block_comment_that_does_not/input.c"
            },
            {
              "case": "1200-nested_block_comment_that_nests",
              "verdict": "fails",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "note": "the inner closer ends the comment although Haskell's pair nests, so what follows it on that line\nis left standing and the line counts as code",
              "command": "cloc --json cases/1000-comments/1200-nested_block_comment_that_nests/input.hs"
            },
            {
              "case": "1210-close_touching_reopen_nesting",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "an opener that comes after a closer on the same line is not acted on, whether the two symbols\ntouch or a space separates them, so the block it reopens is never a comment",
              "command": "cloc --json cases/1000-comments/1210-close_touching_reopen_nesting/input.hs"
            },
            {
              "case": "1220-nested_block_comment_in_odin",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 4,
                "comments": 2
              },
              "note": "the inner closer ends the comment although Odin's pair nests, so the lines under it up to and\nincluding the outer closer are left as code",
              "command": "cloc --json cases/1000-comments/1220-nested_block_comment_in_odin/input.odin"
            },
            {
              "case": "1230-a_comment_word_at_the_head_of_a_longer_word",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "a line whose first word begins with REM is taken as a comment whatever letters follow, so the\ncommand counts as one",
              "command": "cloc --json cases/1000-comments/1230-a_comment_word_at_the_head_of_a_longer_word/input.bat"
            },
            {
              "case": "2010-comment_symbol_inside_string",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "cloc --json cases/2000-string_forms/2010-comment_symbol_inside_string/input.py"
            },
            {
              "case": "2020-string_symbol_inside_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/2000-string_forms/2020-string_symbol_inside_comment/input.js"
            },
            {
              "case": "2030-string_symbol_of_another_kind_inside",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "cloc --json cases/2000-string_forms/2030-string_symbol_of_another_kind_inside/input.py"
            },
            {
              "case": "2040-comment_pair_opening_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/2000-string_forms/2040-comment_pair_opening_inside_a_string/input.c"
            },
            {
              "case": "2050-string_opening_after_block_close",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/2000-string_forms/2050-string_opening_after_block_close/input.rs"
            },
            {
              "case": "2060-backtick_template_holding_a_comment",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "a // at the head of a line opens a comment inside a backtick template as readily as outside one,\nso that line of template text counts as a comment",
              "command": "cloc --json cases/2000-string_forms/2060-backtick_template_holding_a_comment/input.js"
            },
            {
              "case": "2070-verbatim_string_crossing_lines",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/2000-string_forms/2070-verbatim_string_crossing_lines/input.cs"
            },
            {
              "case": "2080-odd_triple_quote_count",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 2,
                "comments": 3
              },
              "note": "a triple quoted string is read as documentation wherever it opens, the middle of a line of code\nincluded, so the lines holding its text and its closing quotes are added to the comment count",
              "command": "cloc --json cases/2000-string_forms/2080-odd_triple_quote_count/input.py"
            },
            {
              "case": "2090-docstring_holding_a_comment_symbol",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 2,
                "comments": 3
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 2,
                "comments": 3
              },
              "command": "cloc --json cases/2000-string_forms/2090-docstring_holding_a_comment_symbol/input.py"
            },
            {
              "case": "2100-triple_quoted_data_not_documentation",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "note": "a triple quoted string is documentation wherever it opens, so the three lines of this block are\ncomments although the program prints their text",
              "command": "cloc --json cases/2000-string_forms/2100-triple_quoted_data_not_documentation/input.py"
            },
            {
              "case": "2110-here_string_holding_an_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "command": "cloc --json cases/2000-string_forms/2110-here_string_holding_an_apostrophe/input.ps1"
            },
            {
              "case": "2120-heredoc_holding_an_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 3,
                "comments": 2
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 3,
                "comments": 2
              },
              "command": "cloc --json cases/2000-string_forms/2120-heredoc_holding_an_apostrophe/input.sh"
            },
            {
              "case": "2130-raw_string_holding_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/2000-string_forms/2130-raw_string_holding_quotes/input.rs"
            },
            {
              "case": "2140-raw_string_holding_its_own_closing_bracket",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "cloc --json cases/2000-string_forms/2140-raw_string_holding_its_own_closing_bracket/input.cpp"
            },
            {
              "case": "2150-delimited_raw_string_names_its_own_closer",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "command": "cloc --json cases/2000-string_forms/2150-delimited_raw_string_names_its_own_closer/input.cpp"
            },
            {
              "case": "2170-lua_level_bracket_holding_plain_close",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "cloc --json cases/2000-string_forms/2170-lua_level_bracket_holding_plain_close/input.lua"
            },
            {
              "case": "2180-lua_short_closer_hiding_the_real_one",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/2000-string_forms/2180-lua_short_closer_hiding_the_real_one/input.lua"
            },
            {
              "case": "2190-triple_quote_read_as_three_short_ones",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "note": "a // at the head of a line opens a comment inside a triple apostrophe string too, so that line\ncounts as one, while the /* under it opens nothing and takes no line with it",
              "command": "cloc --json cases/2000-string_forms/2190-triple_quote_read_as_three_short_ones/input.groovy"
            },
            {
              "case": "3010-escaped_quote_before_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "cloc --json cases/3000-escapes_and_the_closing_quote/3010-escaped_quote_before_comment/input.c"
            },
            {
              "case": "3020-multiline_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "command": "cloc --json cases/3000-escapes_and_the_closing_quote/3020-multiline_string_ending_in_backslash/input.odin"
            },
            {
              "case": "3030-raw_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "cloc --json cases/3000-escapes_and_the_closing_quote/3030-raw_string_ending_in_backslash/input.rs"
            },
            {
              "case": "3050-verbatim_string_ending_in_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/3000-escapes_and_the_closing_quote/3050-verbatim_string_ending_in_a_backslash/input.fs"
            },
            {
              "case": "3070-backslash_before_a_closing_quote_in_sql",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/3000-escapes_and_the_closing_quote/3070-backslash_before_a_closing_quote_in_sql/input.sql"
            },
            {
              "case": "3080-backtick_escapes_inside_a_double_quoted_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/3000-escapes_and_the_closing_quote/3080-backtick_escapes_inside_a_double_quoted_string/input.ps1"
            },
            {
              "case": "3090-backtick_before_a_single_quoted_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/3000-escapes_and_the_closing_quote/3090-backtick_before_a_single_quoted_string/input.ps1"
            },
            {
              "case": "4010-char_literal_holding_a_quote",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4010-char_literal_holding_a_quote/input.rs"
            },
            {
              "case": "4020-two_char_literals_holding_escapes",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4020-two_char_literals_holding_escapes/input.rs"
            },
            {
              "case": "4030-character_written_with_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4030-character_written_with_a_backslash/input.clj"
            },
            {
              "case": "4040-escaped_apostrophe_outside_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4040-escaped_apostrophe_outside_quotes/input.sh"
            },
            {
              "case": "4050-lifetime_and_apostrophe_in_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4050-lifetime_and_apostrophe_in_string/input.rs"
            },
            {
              "case": "4060-primed_identifier_haskell",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4060-primed_identifier_haskell/input.hs"
            },
            {
              "case": "4070-primed_identifier_ocaml",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4070-primed_identifier_ocaml/input.ml"
            },
            {
              "case": "4080-primed_identifier_and_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4080-primed_identifier_and_apostrophe/input.fs"
            },
            {
              "case": "4090-transpose_operator_and_char",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/4000-a_quote_that_opens_nothing/4090-transpose_operator_and_char/input.jl"
            },
            {
              "case": "5010-line_splice_inside_a_string",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "a string that opened on an earlier line does not stop a // from being stripped, so the line of\nstring text holding it counts as a comment. Inside a string that opens and closes on one line it\nis left alone",
              "command": "cloc --json cases/5000-line_splices/5010-line_splice_inside_a_string/input.c"
            },
            {
              "case": "5020-blank_line_inside_a_spliced_string",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 1,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "a blank line under a line ending in the language's continuation symbol is read as continuing it\nand is never blank, so the blank inside the spliced string comes out code",
              "command": "cloc --json cases/5000-line_splices/5020-blank_line_inside_a_spliced_string/input.c"
            },
            {
              "case": "5030-line_splice_inside_a_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "note": "a line comment stops at the line break whatever the line ends with, so the line spliced onto it\ncounts as code",
              "command": "cloc --json cases/5000-line_splices/5030-line_splice_inside_a_comment/input.c"
            },
            {
              "case": "5040-line_splice_in_a_comment_with_no_words",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "a comment carrying no letter or digit is read like any other and still stops at the line break,\nso the line spliced onto it counts as code",
              "command": "cloc --json cases/5000-line_splices/5040-line_splice_in_a_comment_with_no_words/input.c"
            },
            {
              "case": "5050-line_splice_after_a_closed_block_comment",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "a block comment closing earlier on the line does not move where the line comment after it stops,\nwhich is still the line break, so the line spliced onto it counts as code",
              "command": "cloc --json cases/5000-line_splices/5050-line_splice_after_a_closed_block_comment/input.c"
            },
            {
              "case": "5060-code_then_a_spliced_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/5000-line_splices/5060-code_then_a_spliced_line_comment/input.c"
            },
            {
              "case": "5070-blank_line_inside_a_spliced_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 1,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "the blank line under the spliced comment is read as continuing it and is never blank, so it\ncomes out comment where its own blanks-first rule says a line of nothing is blank",
              "command": "cloc --json cases/5000-line_splices/5070-blank_line_inside_a_spliced_comment/input.c"
            },
            {
              "case": "6010-html_has_no_strings",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/6000-another_language_inside_the_file/6010-html_has_no_strings/input.html"
            },
            {
              "case": "6020-comment_opener_inside_an_attribute",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "a comment opener inside a quoted attribute value opens a comment all the same, and nothing below\ncloses it, so both lines under it count as comments",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6020-comment_opener_inside_an_attribute/input.html"
            },
            {
              "case": "6030-opening_tag_split_over_two_lines",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is counted as one language from beginning to end and no script block is separated out\nhowever its tag is written, so the js comment inside it counts as markup",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6030-opening_tag_split_over_two_lines/input.html"
            },
            {
              "case": "6040-script_tag_in_upper_case",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 5,
                "comments": 1
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "no script block is separated out of the page at all, so the case of the tag never comes up: the\nsame file written in lower case is counted exactly the same way",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6040-script_tag_in_upper_case/input.html"
            },
            {
              "case": "6050-script_closer_written_with_a_space",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                }
              ],
              "note": "every number comes out as the rules ask while the javascript line is credited to the page and no\nsecond language is named, so nothing in the totals shows the block was never found",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6050-script_closer_written_with_a_space/input.html"
            },
            {
              "case": "6060-script_closer_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "cloc --json cases/6000-another_language_inside_the_file/6060-script_closer_inside_a_string/input.html"
            },
            {
              "case": "6070-script_opener_that_never_closes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "cloc --json cases/6000-another_language_inside_the_file/6070-script_opener_that_never_closes/input.html"
            },
            {
              "case": "6080-block_named_by_a_mime_type",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is counted as one language from beginning to end, so a block named by a mime type is\nread with the page's symbols and the comment inside it lands in code",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6080-block_named_by_a_mime_type/input.html"
            },
            {
              "case": "6090-vue_blocks_count_as_their_own_languages",
              "verdict": "fails",
              "wants": {
                "lines": 13,
                "blanks": 1,
                "code": 9,
                "comments": 3
              },
              "answered": {
                "lines": 13,
                "blanks": 1,
                "code": 9,
                "comments": 3
              },
              "wants-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "blanks": 1,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is counted as one language from beginning to end, and every number comes out right only\nbecause the symbols it applies to a vue file already cover the markup, the js and the css\ncomments, while neither block is named",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6090-vue_blocks_count_as_their_own_languages/input.vue"
            },
            {
              "case": "6100-block_language_named_by_the_tag",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "wants-regions": [
                {
                  "language": "SCSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is counted as one language from beginning to end and no lang attribute is read, so every\nnumber comes out right only because those symbols already treat // as a comment",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6100-block_language_named_by_the_tag/input.vue"
            },
            {
              "case": "6110-php_block_holding_html_around_it",
              "verdict": "fails",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 6,
                "comments": 1
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 7,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is read as php from beginning to end and never switches language at the closing tag, so\nthe markup comment between the blocks counts as code",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6110-php_block_holding_html_around_it/input.php"
            },
            {
              "case": "6120-script_inside_html_inside_php",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 4,
                  "blanks": 0,
                  "code": 4,
                  "comments": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is read as php from beginning to end, so the js comment two languages deep survives only\nbecause php spells its line comment the same way, and neither language inside is named",
              "command": "cloc --json cases/6000-another_language_inside_the_file/6120-script_inside_html_inside_php/input.php"
            },
            {
              "case": "7010-regex_literal_holding_a_quote",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "cloc --json cases/7000-literals_with_their_own_delimiters/7010-regex_literal_holding_a_quote/input.js"
            },
            {
              "case": "7020-regex_holding_a_comment_opener",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "cloc --json cases/7000-literals_with_their_own_delimiters/7020-regex_holding_a_comment_opener/input.js"
            },
            {
              "case": "8010-punctuation_only_line",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "cloc --json cases/8000-what_the_line_counts_as/8010-punctuation_only_line/input.c"
            },
            {
              "case": "8020-blank_line_inside_block_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 1,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 1,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/8000-what_the_line_counts_as/8020-blank_line_inside_block_comment/input.c"
            },
            {
              "case": "8030-blank_line_inside_a_multiline_string",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 1,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 6,
                "blanks": 1,
                "code": 2,
                "comments": 3
              },
              "note": "the empty line is set aside as blank before any comment rule runs, which is what its own rules\nask, and the rest of the string around it is read as documentation",
              "command": "cloc --json cases/8000-what_the_line_counts_as/8030-blank_line_inside_a_multiline_string/input.py"
            },
            {
              "case": "8040-doc_comment_with_no_text",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "cloc --json cases/8000-what_the_line_counts_as/8040-doc_comment_with_no_text/input.rs"
            },
            {
              "case": "8050-doc_comment_with_no_text_ending_a_block",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "cloc --json cases/8000-what_the_line_counts_as/8050-doc_comment_with_no_text_ending_a_block/input.rs"
            }
          ]
        }
      ]
    },
    {
      "name": "mezura",
      "version": "v3.0.0 (2026-09-02)",
      "dialects": [
        {
          "name": "content",
          "answers": [
            {
              "case": "1010-code_then_comment_on_one_line",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1010-code_then_comment_on_one_line/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1020-comment_then_code_then_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1020-comment_then_code_then_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1030-brace_and_trailing_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1030-brace_and_trailing_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1040-pairs_in_either_order",
              "verdict": "agrees",
              "wants": {
                "lines": 8,
                "code": 4,
                "comments": 2,
                "extra": 2
              },
              "answered": {
                "lines": 8,
                "code": 4,
                "comments": 2,
                "extra": 2
              },
              "command": "mezura cases/1000-comments/1040-pairs_in_either_order/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1050-block_comment_holding_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 3,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 3,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1050-block_comment_holding_line_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1060-line_comment_holding_block_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1060-line_comment_holding_block_open/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1070-block_comment_closed_then_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1070-block_comment_closed_then_line_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1080-block_close_touching_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1080-block_close_touching_a_line_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1090-block_comment_closed_after_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 7,
                "code": 2,
                "comments": 2,
                "extra": 3
              },
              "answered": {
                "lines": 7,
                "code": 2,
                "comments": 2,
                "extra": 3
              },
              "command": "mezura cases/1000-comments/1090-block_comment_closed_after_a_line_comment/input.cs --output json --hide timing --counting content"
            },
            {
              "case": "1100-close_touching_reopen_plain",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "command": "mezura cases/1000-comments/1100-close_touching_reopen_plain/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1110-close_and_reopen_with_a_space",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "command": "mezura cases/1000-comments/1110-close_and_reopen_with_a_space/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1120-close_then_code_then_stray_and_reopen",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 2,
                "comments": 1,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 2,
                "comments": 1,
                "extra": 1
              },
              "command": "mezura cases/1000-comments/1120-close_then_code_then_stray_and_reopen/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1130-closer_in_code_with_nothing_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1130-closer_in_code_with_nothing_open/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "1140-three_slashes_are_one_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1140-three_slashes_are_one_comment/input.java --output json --hide timing --counting content"
            },
            {
              "case": "1150-doc_comment_opening_after_code",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1150-doc_comment_opening_after_code/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "1160-two_comment_pairs_of_one_language",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1160-two_comment_pairs_of_one_language/input.d --output json --hide timing --counting content"
            },
            {
              "case": "1170-pascal_writes_two_pairs",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1170-pascal_writes_two_pairs/input.pas --output json --hide timing --counting content"
            },
            {
              "case": "1180-cmake_bracket_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "command": "mezura cases/1000-comments/1180-cmake_bracket_comment/input.cmake --output json --hide timing --counting content"
            },
            {
              "case": "1190-nested_block_comment_that_does_not",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1190-nested_block_comment_that_does_not/input.c --output json --hide timing --counting content"
            },
            {
              "case": "1200-nested_block_comment_that_nests",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1200-nested_block_comment_that_nests/input.hs --output json --hide timing --counting content"
            },
            {
              "case": "1210-close_touching_reopen_nesting",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "command": "mezura cases/1000-comments/1210-close_touching_reopen_nesting/input.hs --output json --hide timing --counting content"
            },
            {
              "case": "1220-nested_block_comment_in_odin",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "code": 2,
                "comments": 3,
                "extra": 1
              },
              "answered": {
                "lines": 6,
                "code": 2,
                "comments": 3,
                "extra": 1
              },
              "command": "mezura cases/1000-comments/1220-nested_block_comment_in_odin/input.odin --output json --hide timing --counting content"
            },
            {
              "case": "1230-a_comment_word_at_the_head_of_a_longer_word",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/1000-comments/1230-a_comment_word_at_the_head_of_a_longer_word/input.bat --output json --hide timing --counting content"
            },
            {
              "case": "2010-comment_symbol_inside_string",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2010-comment_symbol_inside_string/input.py --output json --hide timing --counting content"
            },
            {
              "case": "2020-string_symbol_inside_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2020-string_symbol_inside_comment/input.js --output json --hide timing --counting content"
            },
            {
              "case": "2030-string_symbol_of_another_kind_inside",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2030-string_symbol_of_another_kind_inside/input.py --output json --hide timing --counting content"
            },
            {
              "case": "2040-comment_pair_opening_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2040-comment_pair_opening_inside_a_string/input.c --output json --hide timing --counting content"
            },
            {
              "case": "2050-string_opening_after_block_close",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2050-string_opening_after_block_close/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "2060-backtick_template_holding_a_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 4,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 4,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2060-backtick_template_holding_a_comment/input.js --output json --hide timing --counting content"
            },
            {
              "case": "2070-verbatim_string_crossing_lines",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2070-verbatim_string_crossing_lines/input.cs --output json --hide timing --counting content"
            },
            {
              "case": "2080-odd_triple_quote_count",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "code": 4,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 4,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2080-odd_triple_quote_count/input.py --output json --hide timing --counting content"
            },
            {
              "case": "2090-docstring_holding_a_comment_symbol",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2090-docstring_holding_a_comment_symbol/input.py --output json --hide timing --counting content"
            },
            {
              "case": "2100-triple_quoted_data_not_documentation",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "code": 5,
                "comments": 0,
                "extra": 1
              },
              "answered": {
                "lines": 6,
                "code": 5,
                "comments": 0,
                "extra": 1
              },
              "command": "mezura cases/2000-string_forms/2100-triple_quoted_data_not_documentation/input.py --output json --hide timing --counting content"
            },
            {
              "case": "2110-here_string_holding_an_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "code": 4,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 4,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2110-here_string_holding_an_apostrophe/input.ps1 --output json --hide timing --counting content"
            },
            {
              "case": "2120-heredoc_holding_an_apostrophe",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "code": 3,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "note": "the apostrophe opens a string and every comment under it is counted as code",
              "command": "mezura cases/2000-string_forms/2120-heredoc_holding_an_apostrophe/input.sh --output json --hide timing --counting content"
            },
            {
              "case": "2130-raw_string_holding_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2130-raw_string_holding_quotes/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "2140-raw_string_holding_its_own_closing_bracket",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2140-raw_string_holding_its_own_closing_bracket/input.cpp --output json --hide timing --counting content"
            },
            {
              "case": "2150-delimited_raw_string_names_its_own_closer",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "code": 4,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 3,
                "extra": 0
              },
              "note": "the plain R\"( is declared and this delimited form is not, so the block opener inside the string\nopens a comment",
              "command": "mezura cases/2000-string_forms/2150-delimited_raw_string_names_its_own_closer/input.cpp --output json --hide timing --counting content"
            },
            {
              "case": "2170-lua_level_bracket_holding_plain_close",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "command": "mezura cases/2000-string_forms/2170-lua_level_bracket_holding_plain_close/input.lua --output json --hide timing --counting content"
            },
            {
              "case": "2180-lua_short_closer_hiding_the_real_one",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 1,
                "extra": 1
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 1,
                "extra": 1
              },
              "command": "mezura cases/2000-string_forms/2180-lua_short_closer_hiding_the_real_one/input.lua --output json --hide timing --counting content"
            },
            {
              "case": "2190-triple_quote_read_as_three_short_ones",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/2000-string_forms/2190-triple_quote_read_as_three_short_ones/input.groovy --output json --hide timing --counting content"
            },
            {
              "case": "3010-escaped_quote_before_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3010-escaped_quote_before_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "3020-multiline_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "code": 2,
                "comments": 2,
                "extra": 2
              },
              "answered": {
                "lines": 6,
                "code": 2,
                "comments": 2,
                "extra": 2
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3020-multiline_string_ending_in_backslash/input.odin --output json --hide timing --counting content"
            },
            {
              "case": "3030-raw_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 1,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3030-raw_string_ending_in_backslash/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "3050-verbatim_string_ending_in_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3050-verbatim_string_ending_in_a_backslash/input.fs --output json --hide timing --counting content"
            },
            {
              "case": "3070-backslash_before_a_closing_quote_in_sql",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3070-backslash_before_a_closing_quote_in_sql/input.sql --output json --hide timing --counting content"
            },
            {
              "case": "3080-backtick_escapes_inside_a_double_quoted_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3080-backtick_escapes_inside_a_double_quoted_string/input.ps1 --output json --hide timing --counting content"
            },
            {
              "case": "3090-backtick_before_a_single_quoted_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3090-backtick_before_a_single_quoted_string/input.ps1 --output json --hide timing --counting content"
            },
            {
              "case": "4010-char_literal_holding_a_quote",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4010-char_literal_holding_a_quote/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "4020-two_char_literals_holding_escapes",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "code": 2,
                "comments": 3,
                "extra": 1
              },
              "answered": {
                "lines": 6,
                "code": 2,
                "comments": 3,
                "extra": 1
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4020-two_char_literals_holding_escapes/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "4030-character_written_with_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4030-character_written_with_a_backslash/input.clj --output json --hide timing --counting content"
            },
            {
              "case": "4040-escaped_apostrophe_outside_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 2,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 2,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4040-escaped_apostrophe_outside_quotes/input.sh --output json --hide timing --counting content"
            },
            {
              "case": "4050-lifetime_and_apostrophe_in_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4050-lifetime_and_apostrophe_in_string/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "4060-primed_identifier_haskell",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4060-primed_identifier_haskell/input.hs --output json --hide timing --counting content"
            },
            {
              "case": "4070-primed_identifier_ocaml",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4070-primed_identifier_ocaml/input.ml --output json --hide timing --counting content"
            },
            {
              "case": "4080-primed_identifier_and_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4080-primed_identifier_and_apostrophe/input.fs --output json --hide timing --counting content"
            },
            {
              "case": "4090-transpose_operator_and_char",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4090-transpose_operator_and_char/input.jl --output json --hide timing --counting content"
            },
            {
              "case": "5010-line_splice_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 4,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 4,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/5000-line_splices/5010-line_splice_inside_a_string/input.c --output json --hide timing --counting content"
            },
            {
              "case": "5020-blank_line_inside_a_spliced_string",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 2,
                "comments": 1,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 2,
                "comments": 1,
                "extra": 1
              },
              "command": "mezura cases/5000-line_splices/5020-blank_line_inside_a_spliced_string/input.c --output json --hide timing --counting content"
            },
            {
              "case": "5030-line_splice_inside_a_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/5000-line_splices/5030-line_splice_inside_a_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "5040-line_splice_in_a_comment_with_no_words",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 2,
                "comments": 1,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 2,
                "comments": 1,
                "extra": 1
              },
              "command": "mezura cases/5000-line_splices/5040-line_splice_in_a_comment_with_no_words/input.c --output json --hide timing --counting content"
            },
            {
              "case": "5050-line_splice_after_a_closed_block_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 2,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 2,
                "comments": 2,
                "extra": 0
              },
              "command": "mezura cases/5000-line_splices/5050-line_splice_after_a_closed_block_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "5060-code_then_a_spliced_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/5000-line_splices/5060-code_then_a_spliced_line_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "5070-blank_line_inside_a_spliced_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 1,
                "extra": 1
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 1,
                "extra": 1
              },
              "command": "mezura cases/5000-line_splices/5070-blank_line_inside_a_spliced_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "6010-html_has_no_strings",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/6000-another_language_inside_the_file/6010-html_has_no_strings/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6020-comment_opener_inside_an_attribute",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "code": 3,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "note": "HTML declares no string symbols, on purpose, because its quotes hold attributes and its text is\nfull of apostrophes. The price is this one: a quoted opener cannot be seen",
              "command": "mezura cases/6000-another_language_inside_the_file/6020-comment_opener_inside_an_attribute/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6030-opening_tag_split_over_two_lines",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "code": 4,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "note": "the block is not found, so the comment inside it is read with the page's symbols, and HTML has\nno //",
              "command": "mezura cases/6000-another_language_inside_the_file/6030-opening_tag_split_over_two_lines/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6040-script_tag_in_upper_case",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "code": 5,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 6,
                "code": 5,
                "comments": 1,
                "extra": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "answered-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6040-script_tag_in_upper_case/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6050-script_closer_written_with_a_space",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 4,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 4,
                "comments": 0,
                "extra": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "code": 1,
                  "comments": 0,
                  "extra": 0
                }
              ],
              "answered-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "code": 1,
                  "comments": 0,
                  "extra": 0
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6050-script_closer_written_with_a_space/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6060-script_closer_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 5,
                "code": 5,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/6000-another_language_inside_the_file/6060-script_closer_inside_a_string/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6070-script_opener_that_never_closes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 2,
                "code": 2,
                "comments": 0,
                "extra": 0
              },
              "command": "mezura cases/6000-another_language_inside_the_file/6070-script_opener_that_never_closes/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6080-block_named_by_a_mime_type",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 3,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 4,
                "code": 3,
                "comments": 1,
                "extra": 0
              },
              "wants-regions": [
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "answered-regions": [
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6080-block_named_by_a_mime_type/input.html --output json --hide timing --counting content"
            },
            {
              "case": "6090-vue_blocks_count_as_their_own_languages",
              "verdict": "agrees",
              "wants": {
                "lines": 13,
                "code": 9,
                "comments": 3,
                "extra": 1
              },
              "answered": {
                "lines": 13,
                "code": 9,
                "comments": 3,
                "extra": 1
              },
              "wants-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "code": 1,
                  "comments": 1,
                  "extra": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "code": 1,
                  "comments": 1,
                  "extra": 1
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6090-vue_blocks_count_as_their_own_languages/input.vue --output json --hide timing --counting content"
            },
            {
              "case": "6100-block_language_named_by_the_tag",
              "verdict": "agrees",
              "wants": {
                "lines": 11,
                "code": 9,
                "comments": 2,
                "extra": 0
              },
              "answered": {
                "lines": 11,
                "code": 9,
                "comments": 2,
                "extra": 0
              },
              "wants-regions": [
                {
                  "language": "SCSS",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                },
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "answered-regions": [
                {
                  "language": "SCSS",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                },
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6100-block_language_named_by_the_tag/input.vue --output json --hide timing --counting content"
            },
            {
              "case": "6110-php_block_holding_html_around_it",
              "verdict": "fails",
              "wants": {
                "lines": 7,
                "code": 4,
                "comments": 1,
                "extra": 2
              },
              "answered": {
                "lines": 7,
                "code": 5,
                "comments": 0,
                "extra": 2
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "note": "the file is read as php from beginning to end, so the html comment is counted with php's symbols,\nwhich do not include it",
              "command": "mezura cases/6000-another_language_inside_the_file/6110-php_block_holding_html_around_it/input.php --output json --hide timing --counting content"
            },
            {
              "case": "6120-script_inside_html_inside_php",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "code": 8,
                "comments": 1,
                "extra": 2
              },
              "answered": {
                "lines": 11,
                "code": 8,
                "comments": 1,
                "extra": 2
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 4,
                  "code": 4,
                  "comments": 0,
                  "extra": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "code": 1,
                  "comments": 1,
                  "extra": 0
                }
              ],
              "note": "the file is read as php from beginning to end, so neither block is found; the totals survive\nbecause php happens to bucket every line the same way the three languages do",
              "command": "mezura cases/6000-another_language_inside_the_file/6120-script_inside_html_inside_php/input.php --output json --hide timing --counting content"
            },
            {
              "case": "7010-regex_literal_holding_a_quote",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 1,
                "extra": 0
              },
              "command": "mezura cases/7000-literals_with_their_own_delimiters/7010-regex_literal_holding_a_quote/input.js --output json --hide timing --counting content"
            },
            {
              "case": "7020-regex_holding_a_comment_opener",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "code": 3,
                "comments": 0,
                "extra": 0
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 2,
                "extra": 0
              },
              "note": "the /* opens a comment and swallows the two lines under it",
              "command": "mezura cases/7000-literals_with_their_own_delimiters/7020-regex_holding_a_comment_opener/input.js --output json --hide timing --counting content"
            },
            {
              "case": "8010-punctuation_only_line",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 2,
                "comments": 0,
                "extra": 1
              },
              "answered": {
                "lines": 3,
                "code": 2,
                "comments": 0,
                "extra": 1
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8010-punctuation_only_line/input.c --output json --hide timing --counting content"
            },
            {
              "case": "8020-blank_line_inside_block_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8020-blank_line_inside_block_comment/input.c --output json --hide timing --counting content"
            },
            {
              "case": "8030-blank_line_inside_a_multiline_string",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "code": 5,
                "comments": 0,
                "extra": 1
              },
              "answered": {
                "lines": 6,
                "code": 5,
                "comments": 0,
                "extra": 1
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8030-blank_line_inside_a_multiline_string/input.py --output json --hide timing --counting content"
            },
            {
              "case": "8040-doc_comment_with_no_text",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "answered": {
                "lines": 4,
                "code": 1,
                "comments": 2,
                "extra": 1
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8040-doc_comment_with_no_text/input.rs --output json --hide timing --counting content"
            },
            {
              "case": "8050-doc_comment_with_no_text_ending_a_block",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "code": 1,
                "comments": 1,
                "extra": 1
              },
              "answered": {
                "lines": 3,
                "code": 1,
                "comments": 1,
                "extra": 1
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8050-doc_comment_with_no_text_ending_a_block/input.rs --output json --hide timing --counting content"
            }
          ]
        },
        {
          "name": "region",
          "answers": [
            {
              "case": "1010-code_then_comment_on_one_line",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "mezura cases/1000-comments/1010-code_then_comment_on_one_line/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1020-comment_then_code_then_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "mezura cases/1000-comments/1020-comment_then_code_then_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1030-brace_and_trailing_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "mezura cases/1000-comments/1030-brace_and_trailing_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1040-pairs_in_either_order",
              "verdict": "agrees",
              "wants": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "answered": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "command": "mezura cases/1000-comments/1040-pairs_in_either_order/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1050-block_comment_holding_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/1000-comments/1050-block_comment_holding_line_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1060-line_comment_holding_block_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1060-line_comment_holding_block_open/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1070-block_comment_closed_then_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1070-block_comment_closed_then_line_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1080-block_close_touching_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1080-block_close_touching_a_line_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1090-block_comment_closed_after_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 4,
                "comments": 3
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 4,
                "comments": 3
              },
              "command": "mezura cases/1000-comments/1090-block_comment_closed_after_a_line_comment/input.cs --output json --hide timing --counting region"
            },
            {
              "case": "1100-close_touching_reopen_plain",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/1000-comments/1100-close_touching_reopen_plain/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1110-close_and_reopen_with_a_space",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/1000-comments/1110-close_and_reopen_with_a_space/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1120-close_then_code_then_stray_and_reopen",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "mezura cases/1000-comments/1120-close_then_code_then_stray_and_reopen/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1130-closer_in_code_with_nothing_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1130-closer_in_code_with_nothing_open/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "1140-three_slashes_are_one_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1140-three_slashes_are_one_comment/input.java --output json --hide timing --counting region"
            },
            {
              "case": "1150-doc_comment_opening_after_code",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1150-doc_comment_opening_after_code/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "1160-two_comment_pairs_of_one_language",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/1000-comments/1160-two_comment_pairs_of_one_language/input.d --output json --hide timing --counting region"
            },
            {
              "case": "1170-pascal_writes_two_pairs",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/1000-comments/1170-pascal_writes_two_pairs/input.pas --output json --hide timing --counting region"
            },
            {
              "case": "1180-cmake_bracket_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/1000-comments/1180-cmake_bracket_comment/input.cmake --output json --hide timing --counting region"
            },
            {
              "case": "1190-nested_block_comment_that_does_not",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1190-nested_block_comment_that_does_not/input.c --output json --hide timing --counting region"
            },
            {
              "case": "1200-nested_block_comment_that_nests",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1200-nested_block_comment_that_nests/input.hs --output json --hide timing --counting region"
            },
            {
              "case": "1210-close_touching_reopen_nesting",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/1000-comments/1210-close_touching_reopen_nesting/input.hs --output json --hide timing --counting region"
            },
            {
              "case": "1220-nested_block_comment_in_odin",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "command": "mezura cases/1000-comments/1220-nested_block_comment_in_odin/input.odin --output json --hide timing --counting region"
            },
            {
              "case": "1230-a_comment_word_at_the_head_of_a_longer_word",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/1000-comments/1230-a_comment_word_at_the_head_of_a_longer_word/input.bat --output json --hide timing --counting region"
            },
            {
              "case": "2010-comment_symbol_inside_string",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "mezura cases/2000-string_forms/2010-comment_symbol_inside_string/input.py --output json --hide timing --counting region"
            },
            {
              "case": "2020-string_symbol_inside_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/2000-string_forms/2020-string_symbol_inside_comment/input.js --output json --hide timing --counting region"
            },
            {
              "case": "2030-string_symbol_of_another_kind_inside",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "mezura cases/2000-string_forms/2030-string_symbol_of_another_kind_inside/input.py --output json --hide timing --counting region"
            },
            {
              "case": "2040-comment_pair_opening_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/2000-string_forms/2040-comment_pair_opening_inside_a_string/input.c --output json --hide timing --counting region"
            },
            {
              "case": "2050-string_opening_after_block_close",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/2000-string_forms/2050-string_opening_after_block_close/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "2060-backtick_template_holding_a_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "command": "mezura cases/2000-string_forms/2060-backtick_template_holding_a_comment/input.js --output json --hide timing --counting region"
            },
            {
              "case": "2070-verbatim_string_crossing_lines",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/2000-string_forms/2070-verbatim_string_crossing_lines/input.cs --output json --hide timing --counting region"
            },
            {
              "case": "2080-odd_triple_quote_count",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "command": "mezura cases/2000-string_forms/2080-odd_triple_quote_count/input.py --output json --hide timing --counting region"
            },
            {
              "case": "2090-docstring_holding_a_comment_symbol",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "mezura cases/2000-string_forms/2090-docstring_holding_a_comment_symbol/input.py --output json --hide timing --counting region"
            },
            {
              "case": "2100-triple_quoted_data_not_documentation",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "command": "mezura cases/2000-string_forms/2100-triple_quoted_data_not_documentation/input.py --output json --hide timing --counting region"
            },
            {
              "case": "2110-here_string_holding_an_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "command": "mezura cases/2000-string_forms/2110-here_string_holding_an_apostrophe/input.ps1 --output json --hide timing --counting region"
            },
            {
              "case": "2120-heredoc_holding_an_apostrophe",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 3,
                "comments": 2
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "note": "the apostrophe opens a string and every comment under it is counted as code",
              "command": "mezura cases/2000-string_forms/2120-heredoc_holding_an_apostrophe/input.sh --output json --hide timing --counting region"
            },
            {
              "case": "2130-raw_string_holding_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/2000-string_forms/2130-raw_string_holding_quotes/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "2140-raw_string_holding_its_own_closing_bracket",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "mezura cases/2000-string_forms/2140-raw_string_holding_its_own_closing_bracket/input.cpp --output json --hide timing --counting region"
            },
            {
              "case": "2150-delimited_raw_string_names_its_own_closer",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "note": "the plain R\"( is declared and this delimited form is not, so the block opener inside the string\nopens a comment",
              "command": "mezura cases/2000-string_forms/2150-delimited_raw_string_names_its_own_closer/input.cpp --output json --hide timing --counting region"
            },
            {
              "case": "2170-lua_level_bracket_holding_plain_close",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/2000-string_forms/2170-lua_level_bracket_holding_plain_close/input.lua --output json --hide timing --counting region"
            },
            {
              "case": "2180-lua_short_closer_hiding_the_real_one",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/2000-string_forms/2180-lua_short_closer_hiding_the_real_one/input.lua --output json --hide timing --counting region"
            },
            {
              "case": "2190-triple_quote_read_as_three_short_ones",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "mezura cases/2000-string_forms/2190-triple_quote_read_as_three_short_ones/input.groovy --output json --hide timing --counting region"
            },
            {
              "case": "3010-escaped_quote_before_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3010-escaped_quote_before_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "3020-multiline_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3020-multiline_string_ending_in_backslash/input.odin --output json --hide timing --counting region"
            },
            {
              "case": "3030-raw_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3030-raw_string_ending_in_backslash/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "3050-verbatim_string_ending_in_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3050-verbatim_string_ending_in_a_backslash/input.fs --output json --hide timing --counting region"
            },
            {
              "case": "3070-backslash_before_a_closing_quote_in_sql",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3070-backslash_before_a_closing_quote_in_sql/input.sql --output json --hide timing --counting region"
            },
            {
              "case": "3080-backtick_escapes_inside_a_double_quoted_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3080-backtick_escapes_inside_a_double_quoted_string/input.ps1 --output json --hide timing --counting region"
            },
            {
              "case": "3090-backtick_before_a_single_quoted_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/3000-escapes_and_the_closing_quote/3090-backtick_before_a_single_quoted_string/input.ps1 --output json --hide timing --counting region"
            },
            {
              "case": "4010-char_literal_holding_a_quote",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4010-char_literal_holding_a_quote/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "4020-two_char_literals_holding_escapes",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4020-two_char_literals_holding_escapes/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "4030-character_written_with_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4030-character_written_with_a_backslash/input.clj --output json --hide timing --counting region"
            },
            {
              "case": "4040-escaped_apostrophe_outside_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4040-escaped_apostrophe_outside_quotes/input.sh --output json --hide timing --counting region"
            },
            {
              "case": "4050-lifetime_and_apostrophe_in_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4050-lifetime_and_apostrophe_in_string/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "4060-primed_identifier_haskell",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4060-primed_identifier_haskell/input.hs --output json --hide timing --counting region"
            },
            {
              "case": "4070-primed_identifier_ocaml",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4070-primed_identifier_ocaml/input.ml --output json --hide timing --counting region"
            },
            {
              "case": "4080-primed_identifier_and_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4080-primed_identifier_and_apostrophe/input.fs --output json --hide timing --counting region"
            },
            {
              "case": "4090-transpose_operator_and_char",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/4000-a_quote_that_opens_nothing/4090-transpose_operator_and_char/input.jl --output json --hide timing --counting region"
            },
            {
              "case": "5010-line_splice_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "command": "mezura cases/5000-line_splices/5010-line_splice_inside_a_string/input.c --output json --hide timing --counting region"
            },
            {
              "case": "5020-blank_line_inside_a_spliced_string",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "command": "mezura cases/5000-line_splices/5020-blank_line_inside_a_spliced_string/input.c --output json --hide timing --counting region"
            },
            {
              "case": "5030-line_splice_inside_a_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/5000-line_splices/5030-line_splice_inside_a_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "5040-line_splice_in_a_comment_with_no_words",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "mezura cases/5000-line_splices/5040-line_splice_in_a_comment_with_no_words/input.c --output json --hide timing --counting region"
            },
            {
              "case": "5050-line_splice_after_a_closed_block_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "mezura cases/5000-line_splices/5050-line_splice_after_a_closed_block_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "5060-code_then_a_spliced_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/5000-line_splices/5060-code_then_a_spliced_line_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "5070-blank_line_inside_a_spliced_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/5000-line_splices/5070-blank_line_inside_a_spliced_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "6010-html_has_no_strings",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/6000-another_language_inside_the_file/6010-html_has_no_strings/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6020-comment_opener_inside_an_attribute",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "HTML declares no string symbols, on purpose, because its quotes hold attributes and its text is\nfull of apostrophes. The price is this one: a quoted opener cannot be seen",
              "command": "mezura cases/6000-another_language_inside_the_file/6020-comment_opener_inside_an_attribute/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6030-opening_tag_split_over_two_lines",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the block is not found, so the comment inside it is read with the page's symbols, and HTML has\nno //",
              "command": "mezura cases/6000-another_language_inside_the_file/6030-opening_tag_split_over_two_lines/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6040-script_tag_in_upper_case",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 5,
                "comments": 1
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 5,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6040-script_tag_in_upper_case/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6050-script_closer_written_with_a_space",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                }
              ],
              "answered-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6050-script_closer_written_with_a_space/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6060-script_closer_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "mezura cases/6000-another_language_inside_the_file/6060-script_closer_inside_a_string/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6070-script_opener_that_never_closes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "mezura cases/6000-another_language_inside_the_file/6070-script_opener_that_never_closes/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6080-block_named_by_a_mime_type",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6080-block_named_by_a_mime_type/input.html --output json --hide timing --counting region"
            },
            {
              "case": "6090-vue_blocks_count_as_their_own_languages",
              "verdict": "agrees",
              "wants": {
                "lines": 13,
                "blanks": 1,
                "code": 9,
                "comments": 3
              },
              "answered": {
                "lines": 13,
                "blanks": 1,
                "code": 9,
                "comments": 3
              },
              "wants-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "blanks": 1,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "blanks": 1,
                  "code": 1,
                  "comments": 1
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6090-vue_blocks_count_as_their_own_languages/input.vue --output json --hide timing --counting region"
            },
            {
              "case": "6100-block_language_named_by_the_tag",
              "verdict": "agrees",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "wants-regions": [
                {
                  "language": "SCSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "SCSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "command": "mezura cases/6000-another_language_inside_the_file/6100-block_language_named_by_the_tag/input.vue --output json --hide timing --counting region"
            },
            {
              "case": "6110-php_block_holding_html_around_it",
              "verdict": "fails",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 6,
                "comments": 1
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 7,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is read as php from beginning to end, so the html comment is counted with php's symbols,\nwhich do not include it",
              "command": "mezura cases/6000-another_language_inside_the_file/6110-php_block_holding_html_around_it/input.php --output json --hide timing --counting region"
            },
            {
              "case": "6120-script_inside_html_inside_php",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 4,
                  "blanks": 0,
                  "code": 4,
                  "comments": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is read as php from beginning to end, so neither block is found",
              "command": "mezura cases/6000-another_language_inside_the_file/6120-script_inside_html_inside_php/input.php --output json --hide timing --counting region"
            },
            {
              "case": "7010-regex_literal_holding_a_quote",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "mezura cases/7000-literals_with_their_own_delimiters/7010-regex_literal_holding_a_quote/input.js --output json --hide timing --counting region"
            },
            {
              "case": "7020-regex_holding_a_comment_opener",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "the /* opens a comment and swallows the two lines under it",
              "command": "mezura cases/7000-literals_with_their_own_delimiters/7020-regex_holding_a_comment_opener/input.js --output json --hide timing --counting region"
            },
            {
              "case": "8010-punctuation_only_line",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8010-punctuation_only_line/input.c --output json --hide timing --counting region"
            },
            {
              "case": "8020-blank_line_inside_block_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8020-blank_line_inside_block_comment/input.c --output json --hide timing --counting region"
            },
            {
              "case": "8030-blank_line_inside_a_multiline_string",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8030-blank_line_inside_a_multiline_string/input.py --output json --hide timing --counting region"
            },
            {
              "case": "8040-doc_comment_with_no_text",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8040-doc_comment_with_no_text/input.rs --output json --hide timing --counting region"
            },
            {
              "case": "8050-doc_comment_with_no_text_ending_a_block",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "mezura cases/8000-what_the_line_counts_as/8050-doc_comment_with_no_text_ending_a_block/input.rs --output json --hide timing --counting region"
            }
          ]
        }
      ]
    },
    {
      "name": "scc",
      "version": "scc version 4.0.0",
      "dialects": [
        {
          "name": "default",
          "answers": [
            {
              "case": "1010-code_then_comment_on_one_line",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "scc --format json cases/1000-comments/1010-code_then_comment_on_one_line/input.c"
            },
            {
              "case": "1020-comment_then_code_then_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "scc --format json cases/1000-comments/1020-comment_then_code_then_comment/input.c"
            },
            {
              "case": "1030-brace_and_trailing_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "scc --format json cases/1000-comments/1030-brace_and_trailing_comment/input.c"
            },
            {
              "case": "1040-pairs_in_either_order",
              "verdict": "agrees",
              "wants": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "answered": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "command": "scc --format json cases/1000-comments/1040-pairs_in_either_order/input.c"
            },
            {
              "case": "1050-block_comment_holding_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "scc --format json cases/1000-comments/1050-block_comment_holding_line_comment/input.c"
            },
            {
              "case": "1060-line_comment_holding_block_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/1000-comments/1060-line_comment_holding_block_open/input.c"
            },
            {
              "case": "1070-block_comment_closed_then_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/1000-comments/1070-block_comment_closed_then_line_comment/input.c"
            },
            {
              "case": "1080-block_close_touching_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/1000-comments/1080-block_close_touching_a_line_comment/input.c"
            },
            {
              "case": "1090-block_comment_closed_after_a_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 4,
                "comments": 3
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 4,
                "comments": 3
              },
              "command": "scc --format json cases/1000-comments/1090-block_comment_closed_after_a_line_comment/input.cs"
            },
            {
              "case": "1100-close_touching_reopen_plain",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "scc --format json cases/1000-comments/1100-close_touching_reopen_plain/input.c"
            },
            {
              "case": "1110-close_and_reopen_with_a_space",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "scc --format json cases/1000-comments/1110-close_and_reopen_with_a_space/input.c"
            },
            {
              "case": "1120-close_then_code_then_stray_and_reopen",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "scc --format json cases/1000-comments/1120-close_then_code_then_stray_and_reopen/input.c"
            },
            {
              "case": "1130-closer_in_code_with_nothing_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/1000-comments/1130-closer_in_code_with_nothing_open/input.rs"
            },
            {
              "case": "1140-three_slashes_are_one_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/1000-comments/1140-three_slashes_are_one_comment/input.java"
            },
            {
              "case": "1150-doc_comment_opening_after_code",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/1000-comments/1150-doc_comment_opening_after_code/input.rs"
            },
            {
              "case": "1160-two_comment_pairs_of_one_language",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "scc --format json cases/1000-comments/1160-two_comment_pairs_of_one_language/input.d"
            },
            {
              "case": "1170-pascal_writes_two_pairs",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "scc --format json cases/1000-comments/1170-pascal_writes_two_pairs/input.pas"
            },
            {
              "case": "1180-cmake_bracket_comment",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "note": "the bracket comment is not recognised at all, so the whole file counts as code",
              "command": "scc --format json cases/1000-comments/1180-cmake_bracket_comment/input.cmake"
            },
            {
              "case": "1190-nested_block_comment_that_does_not",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/1000-comments/1190-nested_block_comment_that_does_not/input.c"
            },
            {
              "case": "1200-nested_block_comment_that_nests",
              "verdict": "fails",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "note": "the inner closer ends the comment although Haskell's pair nests, so the text after it is left\nstanding as code",
              "command": "scc --format json cases/1000-comments/1200-nested_block_comment_that_nests/input.hs"
            },
            {
              "case": "1210-close_touching_reopen_nesting",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "scc --format json cases/1000-comments/1210-close_touching_reopen_nesting/input.hs"
            },
            {
              "case": "1220-nested_block_comment_in_odin",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 4,
                "comments": 2
              },
              "note": "the block is ended at the inner closer, so the two lines after it are counted as code",
              "command": "scc --format json cases/1000-comments/1220-nested_block_comment_in_odin/input.odin"
            },
            {
              "case": "1230-a_comment_word_at_the_head_of_a_longer_word",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "a line whose first word begins with REM is taken as a comment whatever letters follow, so the\ncommand counts as one",
              "command": "scc --format json cases/1000-comments/1230-a_comment_word_at_the_head_of_a_longer_word/input.bat"
            },
            {
              "case": "2010-comment_symbol_inside_string",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "scc --format json cases/2000-string_forms/2010-comment_symbol_inside_string/input.py"
            },
            {
              "case": "2020-string_symbol_inside_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/2000-string_forms/2020-string_symbol_inside_comment/input.js"
            },
            {
              "case": "2030-string_symbol_of_another_kind_inside",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "scc --format json cases/2000-string_forms/2030-string_symbol_of_another_kind_inside/input.py"
            },
            {
              "case": "2040-comment_pair_opening_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/2000-string_forms/2040-comment_pair_opening_inside_a_string/input.c"
            },
            {
              "case": "2050-string_opening_after_block_close",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "scc --format json cases/2000-string_forms/2050-string_opening_after_block_close/input.rs"
            },
            {
              "case": "2060-backtick_template_holding_a_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "command": "scc --format json cases/2000-string_forms/2060-backtick_template_holding_a_comment/input.js"
            },
            {
              "case": "2070-verbatim_string_crossing_lines",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/2000-string_forms/2070-verbatim_string_crossing_lines/input.cs"
            },
            {
              "case": "2080-odd_triple_quote_count",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "command": "scc --format json cases/2000-string_forms/2080-odd_triple_quote_count/input.py"
            },
            {
              "case": "2090-docstring_holding_a_comment_symbol",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 2,
                "comments": 3
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 2,
                "comments": 3
              },
              "note": "any triple quoted block that opens a line is read as documentation, so the three lines of this one\nare comments by the definition it declares and not by a mistake",
              "command": "scc --format json cases/2000-string_forms/2090-docstring_holding_a_comment_symbol/input.py"
            },
            {
              "case": "2100-triple_quoted_data_not_documentation",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "note": "the same definition reaches a block that is data the program prints, so three lines of program\ndata land in the comment count",
              "command": "scc --format json cases/2000-string_forms/2100-triple_quoted_data_not_documentation/input.py"
            },
            {
              "case": "2110-here_string_holding_an_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "command": "scc --format json cases/2000-string_forms/2110-here_string_holding_an_apostrophe/input.ps1"
            },
            {
              "case": "2120-heredoc_holding_an_apostrophe",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 3,
                "comments": 2
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "note": "the apostrophe opens a string and every comment under it is counted as code",
              "command": "scc --format json cases/2000-string_forms/2120-heredoc_holding_an_apostrophe/input.sh"
            },
            {
              "case": "2130-raw_string_holding_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/2000-string_forms/2130-raw_string_holding_quotes/input.rs"
            },
            {
              "case": "2140-raw_string_holding_its_own_closing_bracket",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "scc --format json cases/2000-string_forms/2140-raw_string_holding_its_own_closing_bracket/input.cpp"
            },
            {
              "case": "2150-delimited_raw_string_names_its_own_closer",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "note": "the delimited form is not recognised, so the two quotes on the opening line pair off as an\nordinary string and the block opener under them, outside it, opens a comment. Without the lone\nquote the file comes out right",
              "command": "scc --format json cases/2000-string_forms/2150-delimited_raw_string_names_its_own_closer/input.cpp"
            },
            {
              "case": "2170-lua_level_bracket_holding_plain_close",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "scc --format json cases/2000-string_forms/2170-lua_level_bracket_holding_plain_close/input.lua"
            },
            {
              "case": "2180-lua_short_closer_hiding_the_real_one",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "scc --format json cases/2000-string_forms/2180-lua_short_closer_hiding_the_real_one/input.lua"
            },
            {
              "case": "2190-triple_quote_read_as_three_short_ones",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 1,
                "comments": 4
              },
              "note": "an apostrophe does not open a string in Groovy, so the three apostrophes are code, the // below\ncounts as a comment and the /* under it opens a block that nothing closes",
              "command": "scc --format json cases/2000-string_forms/2190-triple_quote_read_as_three_short_ones/input.groovy"
            },
            {
              "case": "3010-escaped_quote_before_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "scc --format json cases/3000-escapes_and_the_closing_quote/3010-escaped_quote_before_comment/input.c"
            },
            {
              "case": "3020-multiline_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "command": "scc --format json cases/3000-escapes_and_the_closing_quote/3020-multiline_string_ending_in_backslash/input.odin"
            },
            {
              "case": "3030-raw_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "scc --format json cases/3000-escapes_and_the_closing_quote/3030-raw_string_ending_in_backslash/input.rs"
            },
            {
              "case": "3050-verbatim_string_ending_in_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/3000-escapes_and_the_closing_quote/3050-verbatim_string_ending_in_a_backslash/input.fs"
            },
            {
              "case": "3070-backslash_before_a_closing_quote_in_sql",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the backslash cancels the closing quote, and its strings cross lines, so the comment under the\npath is counted as string content",
              "command": "scc --format json cases/3000-escapes_and_the_closing_quote/3070-backslash_before_a_closing_quote_in_sql/input.sql"
            },
            {
              "case": "3080-backtick_escapes_inside_a_double_quoted_string",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the backtick is no escape to it, so the last quote opens a string that crosses lines",
              "command": "scc --format json cases/3000-escapes_and_the_closing_quote/3080-backtick_escapes_inside_a_double_quoted_string/input.ps1"
            },
            {
              "case": "3090-backtick_before_a_single_quoted_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/3000-escapes_and_the_closing_quote/3090-backtick_before_a_single_quoted_string/input.ps1"
            },
            {
              "case": "4010-char_literal_holding_a_quote",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the quote opens a string, so both comments under it are counted as code",
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4010-char_literal_holding_a_quote/input.rs"
            },
            {
              "case": "4020-two_char_literals_holding_escapes",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "note": "every comment under the line is lost",
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4020-two_char_literals_holding_escapes/input.rs"
            },
            {
              "case": "4030-character_written_with_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4030-character_written_with_a_backslash/input.clj"
            },
            {
              "case": "4040-escaped_apostrophe_outside_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4040-escaped_apostrophe_outside_quotes/input.sh"
            },
            {
              "case": "4050-lifetime_and_apostrophe_in_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4050-lifetime_and_apostrophe_in_string/input.rs"
            },
            {
              "case": "4060-primed_identifier_haskell",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4060-primed_identifier_haskell/input.hs"
            },
            {
              "case": "4070-primed_identifier_ocaml",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4070-primed_identifier_ocaml/input.ml"
            },
            {
              "case": "4080-primed_identifier_and_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4080-primed_identifier_and_apostrophe/input.fs"
            },
            {
              "case": "4090-transpose_operator_and_char",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/4000-a_quote_that_opens_nothing/4090-transpose_operator_and_char/input.jl"
            },
            {
              "case": "5010-line_splice_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "command": "scc --format json cases/5000-line_splices/5010-line_splice_inside_a_string/input.c"
            },
            {
              "case": "5020-blank_line_inside_a_spliced_string",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "note": "the string is carried past the blank line, so the comment line is counted as code",
              "command": "scc --format json cases/5000-line_splices/5020-blank_line_inside_a_spliced_string/input.c"
            },
            {
              "case": "5030-line_splice_inside_a_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "note": "the comment ends at the newline, so the line joined to it is counted as code",
              "command": "scc --format json cases/5000-line_splices/5030-line_splice_inside_a_comment/input.c"
            },
            {
              "case": "5040-line_splice_in_a_comment_with_no_words",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "the comment ends at the newline, so the line joined to it is counted as code",
              "command": "scc --format json cases/5000-line_splices/5040-line_splice_in_a_comment_with_no_words/input.c"
            },
            {
              "case": "5050-line_splice_after_a_closed_block_comment",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "the line with the two comments on it is read correctly and the splice is not, so the line joined\nto the comment counts as code",
              "command": "scc --format json cases/5000-line_splices/5050-line_splice_after_a_closed_block_comment/input.c"
            },
            {
              "case": "5060-code_then_a_spliced_line_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the comment ends at the newline, so the line joined to it is counted as code",
              "command": "scc --format json cases/5000-line_splices/5060-code_then_a_spliced_line_comment/input.c"
            },
            {
              "case": "5070-blank_line_inside_a_spliced_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 1,
                "code": 1,
                "comments": 1
              },
              "note": "the comment ends at the newline, so the empty line joined to it is counted as blank",
              "command": "scc --format json cases/5000-line_splices/5070-blank_line_inside_a_spliced_comment/input.c"
            },
            {
              "case": "6010-html_has_no_strings",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "scc --format json cases/6000-another_language_inside_the_file/6010-html_has_no_strings/input.html"
            },
            {
              "case": "6020-comment_opener_inside_an_attribute",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "scc --format json cases/6000-another_language_inside_the_file/6020-comment_opener_inside_an_attribute/input.html"
            },
            {
              "case": "6030-opening_tag_split_over_two_lines",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the block is not found, so the comment inside it is read with the page's symbols, and HTML has\nno //",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6030-opening_tag_split_over_two_lines/input.html"
            },
            {
              "case": "6040-script_tag_in_upper_case",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 5,
                "comments": 1
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "no script block is separated out of any page, whatever case its tag is written in, so the comment\ninside it counts as markup",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6040-script_tag_in_upper_case/input.html"
            },
            {
              "case": "6050-script_closer_written_with_a_space",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                }
              ],
              "note": "the block is not found, so its line is counted as the page and not as JavaScript",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6050-script_closer_written_with_a_space/input.html"
            },
            {
              "case": "6060-script_closer_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "scc --format json cases/6000-another_language_inside_the_file/6060-script_closer_inside_a_string/input.html"
            },
            {
              "case": "6070-script_opener_that_never_closes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "scc --format json cases/6000-another_language_inside_the_file/6070-script_opener_that_never_closes/input.html"
            },
            {
              "case": "6080-block_named_by_a_mime_type",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the block is not found, so the comment inside it counts as markup",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6080-block_named_by_a_mime_type/input.html"
            },
            {
              "case": "6090-vue_blocks_count_as_their_own_languages",
              "verdict": "fails",
              "wants": {
                "lines": 13,
                "blanks": 1,
                "code": 9,
                "comments": 3
              },
              "answered": {
                "lines": 13,
                "blanks": 0,
                "code": 13,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "blanks": 1,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is counted as one language from beginning to end, so neither block is found. What makes\nevery line code is the apostrophe in it's, which opens a string that never closes: with that word\nspelled without it, the same unsplit file comes out right",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6090-vue_blocks_count_as_their_own_languages/input.vue"
            },
            {
              "case": "6100-block_language_named_by_the_tag",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "wants-regions": [
                {
                  "language": "SCSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is counted as one language from beginning to end. The totals come out right because\nboth block comment symbols happen to be the ones Vue's own markup already declares, and neither\nblock is found",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6100-block_language_named_by_the_tag/input.vue"
            },
            {
              "case": "6110-php_block_holding_html_around_it",
              "verdict": "fails",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 6,
                "comments": 1
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 7,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is read as php from beginning to end, so the html comment is counted as code",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6110-php_block_holding_html_around_it/input.php"
            },
            {
              "case": "6120-script_inside_html_inside_php",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 4,
                  "blanks": 0,
                  "code": 4,
                  "comments": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "it has no notion of a file holding a second language, and the js comment survives only because\nphp spells its line comment the same way",
              "command": "scc --format json cases/6000-another_language_inside_the_file/6120-script_inside_html_inside_php/input.php"
            },
            {
              "case": "7010-regex_literal_holding_a_quote",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the quote opens a string that runs on, so the comment under it is counted as code",
              "command": "scc --format json cases/7000-literals_with_their_own_delimiters/7010-regex_literal_holding_a_quote/input.js"
            },
            {
              "case": "7020-regex_holding_a_comment_opener",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "the /* opens a comment and swallows the two lines under it",
              "command": "scc --format json cases/7000-literals_with_their_own_delimiters/7020-regex_holding_a_comment_opener/input.js"
            },
            {
              "case": "8010-punctuation_only_line",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "scc --format json cases/8000-what_the_line_counts_as/8010-punctuation_only_line/input.c"
            },
            {
              "case": "8020-blank_line_inside_block_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "scc --format json cases/8000-what_the_line_counts_as/8020-blank_line_inside_block_comment/input.c"
            },
            {
              "case": "8030-blank_line_inside_a_multiline_string",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "command": "scc --format json cases/8000-what_the_line_counts_as/8030-blank_line_inside_a_multiline_string/input.py"
            },
            {
              "case": "8040-doc_comment_with_no_text",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "scc --format json cases/8000-what_the_line_counts_as/8040-doc_comment_with_no_text/input.rs"
            },
            {
              "case": "8050-doc_comment_with_no_text_ending_a_block",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "scc --format json cases/8000-what_the_line_counts_as/8050-doc_comment_with_no_text_ending_a_block/input.rs"
            }
          ]
        }
      ]
    },
    {
      "name": "tokei",
      "version": "tokei 14.0.0 compiled with serialization support: json",
      "dialects": [
        {
          "name": "default",
          "answers": [
            {
              "case": "1010-code_then_comment_on_one_line",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "tokei --output json cases/1000-comments/1010-code_then_comment_on_one_line/input.c"
            },
            {
              "case": "1020-comment_then_code_then_comment",
              "verdict": "fails",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "note": "the line counts as a comment although there is code on it",
              "command": "tokei --output json cases/1000-comments/1020-comment_then_code_then_comment/input.c"
            },
            {
              "case": "1030-brace_and_trailing_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "tokei --output json cases/1000-comments/1030-brace_and_trailing_comment/input.c"
            },
            {
              "case": "1040-pairs_in_either_order",
              "verdict": "agrees",
              "wants": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "answered": {
                "lines": 8,
                "blanks": 0,
                "code": 8,
                "comments": 0
              },
              "command": "tokei --output json cases/1000-comments/1040-pairs_in_either_order/input.c"
            },
            {
              "case": "1050-block_comment_holding_line_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "tokei --output json cases/1000-comments/1050-block_comment_holding_line_comment/input.c"
            },
            {
              "case": "1060-line_comment_holding_block_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/1000-comments/1060-line_comment_holding_block_open/input.c"
            },
            {
              "case": "1070-block_comment_closed_then_line_comment",
              "verdict": "fails",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "note": "the line counts as code, because it opens a block and does not end with that block's closer. Any\nnumber of blocks closed on one line ends the same way once a line comment follows them",
              "command": "tokei --output json cases/1000-comments/1070-block_comment_closed_then_line_comment/input.c"
            },
            {
              "case": "1080-block_close_touching_a_line_comment",
              "verdict": "fails",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "note": "the line counts as code, for the reason case 1070 gives, and the shared byte adds nothing",
              "command": "tokei --output json cases/1000-comments/1080-block_close_touching_a_line_comment/input.c"
            },
            {
              "case": "1090-block_comment_closed_after_a_line_comment",
              "verdict": "fails",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 4,
                "comments": 3
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 2,
                "comments": 5
              },
              "note": "the block is never closed, so the rest of the file counts as comment",
              "command": "tokei --output json cases/1000-comments/1090-block_comment_closed_after_a_line_comment/input.cs"
            },
            {
              "case": "1100-close_touching_reopen_plain",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "tokei --output json cases/1000-comments/1100-close_touching_reopen_plain/input.c"
            },
            {
              "case": "1110-close_and_reopen_with_a_space",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "tokei --output json cases/1000-comments/1110-close_and_reopen_with_a_space/input.c"
            },
            {
              "case": "1120-close_then_code_then_stray_and_reopen",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "note": "a line that began inside a block is a comment, so the statement after the close is lost",
              "command": "tokei --output json cases/1000-comments/1120-close_then_code_then_stray_and_reopen/input.c"
            },
            {
              "case": "1130-closer_in_code_with_nothing_open",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/1000-comments/1130-closer_in_code_with_nothing_open/input.rs"
            },
            {
              "case": "1140-three_slashes_are_one_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/1000-comments/1140-three_slashes_are_one_comment/input.java"
            },
            {
              "case": "1150-doc_comment_opening_after_code",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "wants-regions": [
                {
                  "language": "Markdown",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "Markdown",
                  "lines": 2,
                  "blanks": 0,
                  "code": 0,
                  "comments": 2
                }
              ],
              "note": "the whole of the first line is given to the documentation, so the code in front of the doc marker\nis counted as a comment and lands in the Markdown block instead of in Rust",
              "command": "tokei --output json cases/1000-comments/1150-doc_comment_opening_after_code/input.rs"
            },
            {
              "case": "1160-two_comment_pairs_of_one_language",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "tokei --output json cases/1000-comments/1160-two_comment_pairs_of_one_language/input.d"
            },
            {
              "case": "1170-pascal_writes_two_pairs",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "tokei --output json cases/1000-comments/1170-pascal_writes_two_pairs/input.pas"
            },
            {
              "case": "1180-cmake_bracket_comment",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "CMake has no bracket comment here, so the # opens a line comment that ends with its own line and\nthe three lines under it count as code. A file holding no bare ]] at all counts the same way",
              "command": "tokei --output json cases/1000-comments/1180-cmake_bracket_comment/input.cmake"
            },
            {
              "case": "1190-nested_block_comment_that_does_not",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/1000-comments/1190-nested_block_comment_that_does_not/input.c"
            },
            {
              "case": "1200-nested_block_comment_that_nests",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/1000-comments/1200-nested_block_comment_that_nests/input.hs"
            },
            {
              "case": "1210-close_touching_reopen_nesting",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "tokei --output json cases/1000-comments/1210-close_touching_reopen_nesting/input.hs"
            },
            {
              "case": "1220-nested_block_comment_in_odin",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 4,
                "comments": 2
              },
              "note": "the block is ended at the inner closer, so the two lines after it are counted as code",
              "command": "tokei --output json cases/1000-comments/1220-nested_block_comment_in_odin/input.odin"
            },
            {
              "case": "1230-a_comment_word_at_the_head_of_a_longer_word",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "a line whose first word begins with REM is taken as a comment whatever letters follow, so the\ncommand counts as one",
              "command": "tokei --output json cases/1000-comments/1230-a_comment_word_at_the_head_of_a_longer_word/input.bat"
            },
            {
              "case": "2010-comment_symbol_inside_string",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "tokei --output json cases/2000-string_forms/2010-comment_symbol_inside_string/input.py"
            },
            {
              "case": "2020-string_symbol_inside_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/2000-string_forms/2020-string_symbol_inside_comment/input.js"
            },
            {
              "case": "2030-string_symbol_of_another_kind_inside",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "tokei --output json cases/2000-string_forms/2030-string_symbol_of_another_kind_inside/input.py"
            },
            {
              "case": "2040-comment_pair_opening_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/2000-string_forms/2040-comment_pair_opening_inside_a_string/input.c"
            },
            {
              "case": "2050-string_opening_after_block_close",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 0,
                "comments": 3
              },
              "note": "the code after the closing */ is not seen, so the file is reported as holding no code at all",
              "command": "tokei --output json cases/2000-string_forms/2050-string_opening_after_block_close/input.rs"
            },
            {
              "case": "2060-backtick_template_holding_a_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "command": "tokei --output json cases/2000-string_forms/2060-backtick_template_holding_a_comment/input.js"
            },
            {
              "case": "2070-verbatim_string_crossing_lines",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/2000-string_forms/2070-verbatim_string_crossing_lines/input.cs"
            },
            {
              "case": "2080-odd_triple_quote_count",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "command": "tokei --output json cases/2000-string_forms/2080-odd_triple_quote_count/input.py"
            },
            {
              "case": "2090-docstring_holding_a_comment_symbol",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "tokei --output json cases/2000-string_forms/2090-docstring_holding_a_comment_symbol/input.py"
            },
            {
              "case": "2100-triple_quoted_data_not_documentation",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "command": "tokei --output json cases/2000-string_forms/2100-triple_quoted_data_not_documentation/input.py"
            },
            {
              "case": "2110-here_string_holding_an_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "command": "tokei --output json cases/2000-string_forms/2110-here_string_holding_an_apostrophe/input.ps1"
            },
            {
              "case": "2120-heredoc_holding_an_apostrophe",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 3,
                "comments": 2
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "note": "the apostrophe opens a string and every comment under it is counted as code",
              "command": "tokei --output json cases/2000-string_forms/2120-heredoc_holding_an_apostrophe/input.sh"
            },
            {
              "case": "2130-raw_string_holding_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/2000-string_forms/2130-raw_string_holding_quotes/input.rs"
            },
            {
              "case": "2140-raw_string_holding_its_own_closing_bracket",
              "verdict": "agrees",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "command": "tokei --output json cases/2000-string_forms/2140-raw_string_holding_its_own_closing_bracket/input.cpp"
            },
            {
              "case": "2150-delimited_raw_string_names_its_own_closer",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "note": "the delimited form is not recognised, so the two quotes on the opening line pair off as an\nordinary string and the block opener under them, outside it, opens a comment. Without the lone\nquote the file comes out right",
              "command": "tokei --output json cases/2000-string_forms/2150-delimited_raw_string_names_its_own_closer/input.cpp"
            },
            {
              "case": "2170-lua_level_bracket_holding_plain_close",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "its Lua carries only --[[ , so --[==[ reads as an ordinary -- line comment that ends with its own\nline and the three lines under it count as code. A file holding no bare ]] counts the same way",
              "command": "tokei --output json cases/2000-string_forms/2170-lua_level_bracket_holding_plain_close/input.lua"
            },
            {
              "case": "2180-lua_short_closer_hiding_the_real_one",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "note": "its Lua carries only --[[ , so --[=[ reads as an ordinary -- line comment and the two lines under\nit count as code, whatever the closer is written like",
              "command": "tokei --output json cases/2000-string_forms/2180-lua_short_closer_hiding_the_real_one/input.lua"
            },
            {
              "case": "2190-triple_quote_read_as_three_short_ones",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 1,
                "comments": 4
              },
              "note": "an apostrophe does not open a string in Groovy, so the three apostrophes are code, the // below\ncounts as a comment and the /* under it opens a block that nothing closes",
              "command": "tokei --output json cases/2000-string_forms/2190-triple_quote_read_as_three_short_ones/input.groovy"
            },
            {
              "case": "3010-escaped_quote_before_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "tokei --output json cases/3000-escapes_and_the_closing_quote/3010-escaped_quote_before_comment/input.c"
            },
            {
              "case": "3020-multiline_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 2,
                "comments": 4
              },
              "command": "tokei --output json cases/3000-escapes_and_the_closing_quote/3020-multiline_string_ending_in_backslash/input.odin"
            },
            {
              "case": "3030-raw_string_ending_in_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "command": "tokei --output json cases/3000-escapes_and_the_closing_quote/3030-raw_string_ending_in_backslash/input.rs"
            },
            {
              "case": "3050-verbatim_string_ending_in_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/3000-escapes_and_the_closing_quote/3050-verbatim_string_ending_in_a_backslash/input.fs"
            },
            {
              "case": "3070-backslash_before_a_closing_quote_in_sql",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the backslash cancels the closing quote, and its strings cross lines, so the comment under the\npath is counted as string content",
              "command": "tokei --output json cases/3000-escapes_and_the_closing_quote/3070-backslash_before_a_closing_quote_in_sql/input.sql"
            },
            {
              "case": "3080-backtick_escapes_inside_a_double_quoted_string",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the backtick is no escape to it, so the last quote opens a string that crosses lines",
              "command": "tokei --output json cases/3000-escapes_and_the_closing_quote/3080-backtick_escapes_inside_a_double_quoted_string/input.ps1"
            },
            {
              "case": "3090-backtick_before_a_single_quoted_string",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the apostrophe opens a string, and that form crosses lines, so everything below it is string",
              "command": "tokei --output json cases/3000-escapes_and_the_closing_quote/3090-backtick_before_a_single_quoted_string/input.ps1"
            },
            {
              "case": "4010-char_literal_holding_a_quote",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the quote opens a string, so both comments under it are counted as code",
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4010-char_literal_holding_a_quote/input.rs"
            },
            {
              "case": "4020-two_char_literals_holding_escapes",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 3,
                "comments": 3
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "note": "every comment under the line is lost",
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4020-two_char_literals_holding_escapes/input.rs"
            },
            {
              "case": "4030-character_written_with_a_backslash",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4030-character_written_with_a_backslash/input.clj"
            },
            {
              "case": "4040-escaped_apostrophe_outside_quotes",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4040-escaped_apostrophe_outside_quotes/input.sh"
            },
            {
              "case": "4050-lifetime_and_apostrophe_in_string",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4050-lifetime_and_apostrophe_in_string/input.rs"
            },
            {
              "case": "4060-primed_identifier_haskell",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4060-primed_identifier_haskell/input.hs"
            },
            {
              "case": "4070-primed_identifier_ocaml",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4070-primed_identifier_ocaml/input.ml"
            },
            {
              "case": "4080-primed_identifier_and_apostrophe",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4080-primed_identifier_and_apostrophe/input.fs"
            },
            {
              "case": "4090-transpose_operator_and_char",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "command": "tokei --output json cases/4000-a_quote_that_opens_nothing/4090-transpose_operator_and_char/input.jl"
            },
            {
              "case": "5010-line_splice_inside_a_string",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "command": "tokei --output json cases/5000-line_splices/5010-line_splice_inside_a_string/input.c"
            },
            {
              "case": "5020-blank_line_inside_a_spliced_string",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "command": "tokei --output json cases/5000-line_splices/5020-blank_line_inside_a_spliced_string/input.c"
            },
            {
              "case": "5030-line_splice_inside_a_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "note": "the comment ends at the newline, so the line joined to it is counted as code",
              "command": "tokei --output json cases/5000-line_splices/5030-line_splice_inside_a_comment/input.c"
            },
            {
              "case": "5040-line_splice_in_a_comment_with_no_words",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "note": "the comment ends at the newline, so the line joined to it is counted as code",
              "command": "tokei --output json cases/5000-line_splices/5040-line_splice_in_a_comment_with_no_words/input.c"
            },
            {
              "case": "5050-line_splice_after_a_closed_block_comment",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 2,
                "comments": 2
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "note": "two faults on one line, so it loses two. The line reads as code, which case 1070 holds on its\nown, and the splice does not carry, which case 5030 holds",
              "command": "tokei --output json cases/5000-line_splices/5050-line_splice_after_a_closed_block_comment/input.c"
            },
            {
              "case": "5060-code_then_a_spliced_line_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the comment ends at the newline, so the line joined to it is counted as code",
              "command": "tokei --output json cases/5000-line_splices/5060-code_then_a_spliced_line_comment/input.c"
            },
            {
              "case": "5070-blank_line_inside_a_spliced_comment",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 3,
                "blanks": 1,
                "code": 1,
                "comments": 1
              },
              "note": "the comment ends at the newline, so the empty line joined to it is counted as blank",
              "command": "tokei --output json cases/5000-line_splices/5070-blank_line_inside_a_spliced_comment/input.c"
            },
            {
              "case": "6010-html_has_no_strings",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the apostrophe opens a string, so the comment under it is counted as markup",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6010-html_has_no_strings/input.html"
            },
            {
              "case": "6020-comment_opener_inside_an_attribute",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6020-comment_opener_inside_an_attribute/input.html"
            },
            {
              "case": "6030-opening_tag_split_over_two_lines",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 4,
                "comments": 1
              },
              "answered": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the block is not found, so the comment inside it is read with the page's symbols, and HTML has\nno //",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6030-opening_tag_split_over_two_lines/input.html"
            },
            {
              "case": "6040-script_tag_in_upper_case",
              "verdict": "fails",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 5,
                "comments": 1
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the tag is not recognised, so the block is not found and the comment inside it counts as markup",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6040-script_tag_in_upper_case/input.html"
            },
            {
              "case": "6050-script_closer_written_with_a_space",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 4,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                }
              ],
              "note": "the block is not found, so its line is counted as the page and not as JavaScript",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6050-script_closer_written_with_a_space/input.html"
            },
            {
              "case": "6060-script_closer_inside_a_string",
              "verdict": "fails",
              "wants": {
                "lines": 5,
                "blanks": 0,
                "code": 5,
                "comments": 0
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "answered-regions": [
                {
                  "language": "JavaScript",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                }
              ],
              "note": "the closing line is counted once as markup and once as script, so the file is reported as one\nline longer than it is",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6060-script_closer_inside_a_string/input.html"
            },
            {
              "case": "6070-script_opener_that_never_closes",
              "verdict": "agrees",
              "wants": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 2,
                "comments": 0
              },
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6070-script_opener_that_never_closes/input.html"
            },
            {
              "case": "6080-block_named_by_a_mime_type",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 3,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the block is counted as JavaScript, although the mime type names TypeScript and their TypeScript\nis a language of its own",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6080-block_named_by_a_mime_type/input.html"
            },
            {
              "case": "6090-vue_blocks_count_as_their_own_languages",
              "verdict": "fails",
              "wants": {
                "lines": 13,
                "blanks": 1,
                "code": 9,
                "comments": 3
              },
              "answered": {
                "lines": 13,
                "blanks": 1,
                "code": 10,
                "comments": 2
              },
              "wants-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "HTML",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "blanks": 1,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "HTML",
                  "lines": 2,
                  "blanks": 0,
                  "code": 2,
                  "comments": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 3,
                  "blanks": 1,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the apostrophe of \"it's\" opens a string, and the template comment under it is counted as code",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6090-vue_blocks_count_as_their_own_languages/input.vue"
            },
            {
              "case": "6100-block_language_named_by_the_tag",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 9,
                "comments": 2
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                },
                {
                  "language": "SCSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "TypeScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "answered-regions": [
                {
                  "language": "CSS",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                },
                {
                  "language": "HTML",
                  "lines": 1,
                  "blanks": 0,
                  "code": 1,
                  "comments": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "counts the same lines and calls the two blocks JavaScript and CSS, although each tag names its\nown language",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6100-block_language_named_by_the_tag/input.vue"
            },
            {
              "case": "6110-php_block_holding_html_around_it",
              "verdict": "fails",
              "wants": {
                "lines": 7,
                "blanks": 0,
                "code": 6,
                "comments": 1
              },
              "answered": {
                "lines": 7,
                "blanks": 0,
                "code": 7,
                "comments": 0
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "the file is read as php from beginning to end, so the html comment is counted as code",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6110-php_block_holding_html_around_it/input.php"
            },
            {
              "case": "6120-script_inside_html_inside_php",
              "verdict": "fails",
              "wants": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "answered": {
                "lines": 11,
                "blanks": 0,
                "code": 10,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "HTML",
                  "lines": 4,
                  "blanks": 0,
                  "code": 4,
                  "comments": 0
                },
                {
                  "language": "JavaScript",
                  "lines": 2,
                  "blanks": 0,
                  "code": 1,
                  "comments": 1
                }
              ],
              "note": "a php file never yields children, so the page that nests two levels deep in a markdown fence is\ncounted flat here, everything php",
              "command": "tokei --output json cases/6000-another_language_inside_the_file/6120-script_inside_html_inside_php/input.php"
            },
            {
              "case": "7010-regex_literal_holding_a_quote",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 2,
                "comments": 1
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "note": "the quote opens a string that runs on, so the comment under it is counted as code",
              "command": "tokei --output json cases/7000-literals_with_their_own_delimiters/7010-regex_literal_holding_a_quote/input.js"
            },
            {
              "case": "7020-regex_holding_a_comment_opener",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "note": "the /* opens a comment and swallows the two lines under it",
              "command": "tokei --output json cases/7000-literals_with_their_own_delimiters/7020-regex_holding_a_comment_opener/input.js"
            },
            {
              "case": "8010-punctuation_only_line",
              "verdict": "agrees",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "answered": {
                "lines": 3,
                "blanks": 0,
                "code": 3,
                "comments": 0
              },
              "command": "tokei --output json cases/8000-what_the_line_counts_as/8010-punctuation_only_line/input.c"
            },
            {
              "case": "8020-blank_line_inside_block_comment",
              "verdict": "agrees",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "command": "tokei --output json cases/8000-what_the_line_counts_as/8020-blank_line_inside_block_comment/input.c"
            },
            {
              "case": "8030-blank_line_inside_a_multiline_string",
              "verdict": "agrees",
              "wants": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "answered": {
                "lines": 6,
                "blanks": 0,
                "code": 6,
                "comments": 0
              },
              "command": "tokei --output json cases/8000-what_the_line_counts_as/8030-blank_line_inside_a_multiline_string/input.py"
            },
            {
              "case": "8040-doc_comment_with_no_text",
              "verdict": "fails",
              "wants": {
                "lines": 4,
                "blanks": 0,
                "code": 1,
                "comments": 3
              },
              "answered": {
                "lines": 4,
                "blanks": 1,
                "code": 1,
                "comments": 2
              },
              "wants-regions": [
                {
                  "language": "Markdown",
                  "lines": 3,
                  "blanks": 0,
                  "code": 0,
                  "comments": 3
                }
              ],
              "answered-regions": [
                {
                  "language": "Markdown",
                  "lines": 3,
                  "blanks": 1,
                  "code": 0,
                  "comments": 2
                }
              ],
              "note": "the bare marker is counted blank, although a blank line inside a '/** */' doc comment of the same\nlanguage counts as comment, so the answer turns on which of the two doc syntaxes was used",
              "command": "tokei --output json cases/8000-what_the_line_counts_as/8040-doc_comment_with_no_text/input.rs"
            },
            {
              "case": "8050-doc_comment_with_no_text_ending_a_block",
              "verdict": "fails",
              "wants": {
                "lines": 3,
                "blanks": 0,
                "code": 1,
                "comments": 2
              },
              "answered": {
                "lines": 2,
                "blanks": 0,
                "code": 1,
                "comments": 1
              },
              "wants-regions": [
                {
                  "language": "Markdown",
                  "lines": 2,
                  "blanks": 0,
                  "code": 0,
                  "comments": 2
                }
              ],
              "answered-regions": [
                {
                  "language": "Markdown",
                  "lines": 1,
                  "blanks": 0,
                  "code": 0,
                  "comments": 1
                }
              ],
              "note": "the '///' line is counted as neither comment nor blank, so a file of 3 lines is reported as 2",
              "command": "tokei --output json cases/8000-what_the_line_counts_as/8050-doc_comment_with_no_text_ending_a_block/input.rs"
            }
          ]
        }
      ]
    }
  ]
}
