{"action":"created","comment":{"url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/comments/201479724","pull_request_review_id":135991645,"id":201479724,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMTQ3OTcyNA==","diff_hunk":"@@ -0,0 +1,197 @@\n+require File.expand_path(File.dirname(__FILE__) + '/neo')\n+\n+class AboutStrings < Neo::Koan\n+  def test_double_quoted_strings_are_strings\n+    string = 'Hello, World'\n+    assert_equal true, string.is_a?(String)\n+  end\n+\n+  def test_single_quoted_strings_are_also_strings\n+    string = 'Goodbye, World'\n+    assert_equal true, string.is_a?(String)\n+  end\n+\n+  def test_use_single_quotes_to_create_string_with_double_quotes\n+    string = 'He said, \"Go Away.\"'\n+    assert_equal 'He said, \"Go Away.\"', string\n+  end\n+\n+  def test_use_double_quotes_to_create_strings_with_single_quotes\n+    string = \"Don't\"\n+    assert_equal \"Don't\", string\n+  end\n+\n+  def test_use_backslash_for_those_hard_cases\n+    a = \"He said, \\\"Don't\\\"\"\n+    b = 'He said, \"Don\\'t\"'\n+    assert_equal true, a == b\n+  end\n+\n+  def test_use_flexible_quoting_to_handle_really_hard_cases\n+    a = %(flexible quotes can handle both ' and \" characters)\n+    b = %(flexible quotes can handle both ' and \" characters)\n+    c = %(flexible quotes can handle both ' and \" characters)\n+    assert_equal true, a == b\n+    assert_equal true, a == c\n+  end\n+\n+  def test_flexible_quotes_can_handle_multiple_lines\n+    long_string = %(\n+It was the best of times,\n+It was the worst of times.\n+)\n+    assert_equal 54, long_string.length\n+    assert_equal 3, long_string.lines.count\n+    assert_equal \"\\n\", long_string[0, 1]\n+  end\n+\n+  def test_here_documents_can_also_handle_multiple_lines\n+    long_string = <<EOS\n+It was the best of times,\n+It was the worst of times.\n+EOS\n+    assert_equal 53, long_string.length\n+    assert_equal 2, long_string.lines.count\n+    assert_equal 'I', long_string[0, 1]\n+  end\n+\n+  def test_plus_will_concatenate_two_strings\n+    string = 'Hello, ' + 'World'\n+    assert_equal 'Hello, World', string\n+  end\n+\n+  def test_plus_concatenation_will_leave_the_original_strings_unmodified\n+    hi = 'Hello, '\n+    there = 'World'\n+    string = hi + there\n+    assert_equal 'Hello, ', hi\n+    assert_equal 'World', there\n+  end\n+\n+  def test_plus_equals_will_concatenate_to_the_end_of_a_string\n+    hi = 'Hello, '\n+    there = 'World'\n+    hi += there\n+    assert_equal 'Hello, World', hi\n+  end\n+\n+  def test_plus_equals_also_will_leave_the_original_string_unmodified\n+    original_string = 'Hello, '\n+    hi = original_string\n+    there = 'World'\n+    hi += there\n+    assert_equal 'Hello, ', original_string\n+  end\n+\n+  def test_the_shovel_operator_will_also_append_content_to_a_string\n+    hi = 'Hello, '\n+    there = 'World'\n+    hi << there\n+    assert_equal 'Hello, World', hi\n+    assert_equal 'World', there\n+  end\n+\n+  def test_the_shovel_operator_modifies_the_original_string\n+    original_string = 'Hello, '\n+    hi = original_string\n+    there = 'World'\n+    hi << there\n+    assert_equal 'Hello, World', original_string\n+\n+    # THINK ABOUT IT:\n+    #\n+    # Ruby programmers tend to favor the shovel operator (<<) over the\n+    # plus equals operator (+=) when building up strings.  Why?\n+  end\n+\n+  def test_double_quoted_string_interpret_escape_characters\n+    string = \"\\n\"\n+    assert_equal 1, string.size\n+  end\n+\n+  def test_single_quoted_string_do_not_interpret_escape_characters\n+    string = '\\n'\n+    assert_equal 2, string.size\n+  end\n+\n+  def test_single_quotes_sometimes_interpret_escape_characters\n+    string = '\\\\\\''\n+    assert_equal 2, string.size\n+    assert_equal '\\\\\\'', string\n+  end\n+\n+  def test_double_quoted_strings_interpolate_variables\n+    value = 123\n+    string = \"The value is #{value}\"\n+    assert_equal 'The value is 123', string\n+  end\n+\n+  def test_single_quoted_strings_do_not_interpolate\n+    value = 123\n+    string = 'The value is #{value}'","path":"2386/1/koans/about_strings.rb","position":131,"original_position":131,"commit_id":"acdc7ac29ab1a56ef9d8461d939fd352e534480e","original_commit_id":"acdc7ac29ab1a56ef9d8461d939fd352e534480e","user":{"login":"houndci-bot","id":6697940,"node_id":"MDQ6VXNlcjY2OTc5NDA=","avatar_url":"https://avatars0.githubusercontent.com/u/6697940?v=4","gravatar_id":"","url":"https://api.github.com/users/houndci-bot","html_url":"https://github.com/houndci-bot","followers_url":"https://api.github.com/users/houndci-bot/followers","following_url":"https://api.github.com/users/houndci-bot/following{/other_user}","gists_url":"https://api.github.com/users/houndci-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci-bot/subscriptions","organizations_url":"https://api.github.com/users/houndci-bot/orgs","repos_url":"https://api.github.com/users/houndci-bot/repos","events_url":"https://api.github.com/users/houndci-bot/events{/privacy}","received_events_url":"https://api.github.com/users/houndci-bot/received_events","type":"User","site_admin":false},"body":"Lint/InterpolationCheck: Interpolation in single quoted string detected. Use double quoted strings if you need interpolation.","created_at":"2018-07-10T20:17:50Z","updated_at":"2018-07-10T20:17:51Z","html_url":"https://github.com/rubizza-survival-camp/summer-2018/pull/147#discussion_r201479724","pull_request_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/comments/201479724"},"html":{"href":"https://github.com/rubizza-survival-camp/summer-2018/pull/147#discussion_r201479724"},"pull_request":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147"}}},"pull_request":{"url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147","id":200497357,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAwNDk3MzU3","html_url":"https://github.com/rubizza-survival-camp/summer-2018/pull/147","diff_url":"https://github.com/rubizza-survival-camp/summer-2018/pull/147.diff","patch_url":"https://github.com/rubizza-survival-camp/summer-2018/pull/147.patch","issue_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/issues/147","number":147,"state":"open","locked":false,"title":"2386-1","user":{"login":"Otmorozok76","id":33297093,"node_id":"MDQ6VXNlcjMzMjk3MDkz","avatar_url":"https://avatars2.githubusercontent.com/u/33297093?v=4","gravatar_id":"","url":"https://api.github.com/users/Otmorozok76","html_url":"https://github.com/Otmorozok76","followers_url":"https://api.github.com/users/Otmorozok76/followers","following_url":"https://api.github.com/users/Otmorozok76/following{/other_user}","gists_url":"https://api.github.com/users/Otmorozok76/gists{/gist_id}","starred_url":"https://api.github.com/users/Otmorozok76/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Otmorozok76/subscriptions","organizations_url":"https://api.github.com/users/Otmorozok76/orgs","repos_url":"https://api.github.com/users/Otmorozok76/repos","events_url":"https://api.github.com/users/Otmorozok76/events{/privacy}","received_events_url":"https://api.github.com/users/Otmorozok76/received_events","type":"User","site_admin":false},"body":"## Номер\r\n2033\r\n\r\n## Номер задания\r\n1\r\n\r\n## Ссылка на видео с демо\r\nhttps://www.youtube.com/watch?v=U8nUCtcnZ4M\r\n\r\n## Комментарии\r\nRuby_koans\r\n","created_at":"2018-07-10T19:17:15Z","updated_at":"2018-07-10T20:17:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c907d6ef464969c9bcedb5b1aa427a986698dc61","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147/commits","review_comments_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147/comments","review_comment_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/issues/147/comments","statuses_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/statuses/acdc7ac29ab1a56ef9d8461d939fd352e534480e","head":{"label":"Otmorozok76:homework-1","ref":"homework-1","sha":"acdc7ac29ab1a56ef9d8461d939fd352e534480e","user":{"login":"Otmorozok76","id":33297093,"node_id":"MDQ6VXNlcjMzMjk3MDkz","avatar_url":"https://avatars2.githubusercontent.com/u/33297093?v=4","gravatar_id":"","url":"https://api.github.com/users/Otmorozok76","html_url":"https://github.com/Otmorozok76","followers_url":"https://api.github.com/users/Otmorozok76/followers","following_url":"https://api.github.com/users/Otmorozok76/following{/other_user}","gists_url":"https://api.github.com/users/Otmorozok76/gists{/gist_id}","starred_url":"https://api.github.com/users/Otmorozok76/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Otmorozok76/subscriptions","organizations_url":"https://api.github.com/users/Otmorozok76/orgs","repos_url":"https://api.github.com/users/Otmorozok76/repos","events_url":"https://api.github.com/users/Otmorozok76/events{/privacy}","received_events_url":"https://api.github.com/users/Otmorozok76/received_events","type":"User","site_admin":false},"repo":{"id":140079181,"node_id":"MDEwOlJlcG9zaXRvcnkxNDAwNzkxODE=","name":"summer-2018","full_name":"Otmorozok76/summer-2018","owner":{"login":"Otmorozok76","id":33297093,"node_id":"MDQ6VXNlcjMzMjk3MDkz","avatar_url":"https://avatars2.githubusercontent.com/u/33297093?v=4","gravatar_id":"","url":"https://api.github.com/users/Otmorozok76","html_url":"https://github.com/Otmorozok76","followers_url":"https://api.github.com/users/Otmorozok76/followers","following_url":"https://api.github.com/users/Otmorozok76/following{/other_user}","gists_url":"https://api.github.com/users/Otmorozok76/gists{/gist_id}","starred_url":"https://api.github.com/users/Otmorozok76/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Otmorozok76/subscriptions","organizations_url":"https://api.github.com/users/Otmorozok76/orgs","repos_url":"https://api.github.com/users/Otmorozok76/repos","events_url":"https://api.github.com/users/Otmorozok76/events{/privacy}","received_events_url":"https://api.github.com/users/Otmorozok76/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Otmorozok76/summer-2018","description":null,"fork":true,"url":"https://api.github.com/repos/Otmorozok76/summer-2018","forks_url":"https://api.github.com/repos/Otmorozok76/summer-2018/forks","keys_url":"https://api.github.com/repos/Otmorozok76/summer-2018/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Otmorozok76/summer-2018/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Otmorozok76/summer-2018/teams","hooks_url":"https://api.github.com/repos/Otmorozok76/summer-2018/hooks","issue_events_url":"https://api.github.com/repos/Otmorozok76/summer-2018/issues/events{/number}","events_url":"https://api.github.com/repos/Otmorozok76/summer-2018/events","assignees_url":"https://api.github.com/repos/Otmorozok76/summer-2018/assignees{/user}","branches_url":"https://api.github.com/repos/Otmorozok76/summer-2018/branches{/branch}","tags_url":"https://api.github.com/repos/Otmorozok76/summer-2018/tags","blobs_url":"https://api.github.com/repos/Otmorozok76/summer-2018/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Otmorozok76/summer-2018/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Otmorozok76/summer-2018/git/refs{/sha}","trees_url":"https://api.github.com/repos/Otmorozok76/summer-2018/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Otmorozok76/summer-2018/statuses/{sha}","languages_url":"https://api.github.com/repos/Otmorozok76/summer-2018/languages","stargazers_url":"https://api.github.com/repos/Otmorozok76/summer-2018/stargazers","contributors_url":"https://api.github.com/repos/Otmorozok76/summer-2018/contributors","subscribers_url":"https://api.github.com/repos/Otmorozok76/summer-2018/subscribers","subscription_url":"https://api.github.com/repos/Otmorozok76/summer-2018/subscription","commits_url":"https://api.github.com/repos/Otmorozok76/summer-2018/commits{/sha}","git_commits_url":"https://api.github.com/repos/Otmorozok76/summer-2018/git/commits{/sha}","comments_url":"https://api.github.com/repos/Otmorozok76/summer-2018/comments{/number}","issue_comment_url":"https://api.github.com/repos/Otmorozok76/summer-2018/issues/comments{/number}","contents_url":"https://api.github.com/repos/Otmorozok76/summer-2018/contents/{+path}","compare_url":"https://api.github.com/repos/Otmorozok76/summer-2018/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Otmorozok76/summer-2018/merges","archive_url":"https://api.github.com/repos/Otmorozok76/summer-2018/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Otmorozok76/summer-2018/downloads","issues_url":"https://api.github.com/repos/Otmorozok76/summer-2018/issues{/number}","pulls_url":"https://api.github.com/repos/Otmorozok76/summer-2018/pulls{/number}","milestones_url":"https://api.github.com/repos/Otmorozok76/summer-2018/milestones{/number}","notifications_url":"https://api.github.com/repos/Otmorozok76/summer-2018/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Otmorozok76/summer-2018/labels{/name}","releases_url":"https://api.github.com/repos/Otmorozok76/summer-2018/releases{/id}","deployments_url":"https://api.github.com/repos/Otmorozok76/summer-2018/deployments","created_at":"2018-07-07T11:38:50Z","updated_at":"2018-07-07T11:38:52Z","pushed_at":"2018-07-10T20:17:20Z","git_url":"git://github.com/Otmorozok76/summer-2018.git","ssh_url":"git@github.com:Otmorozok76/summer-2018.git","clone_url":"https://github.com/Otmorozok76/summer-2018.git","svn_url":"https://github.com/Otmorozok76/summer-2018","homepage":null,"size":84040,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"rubizza-survival-camp:master","ref":"master","sha":"52525a7eaecfd587bbf5cc59a93fd191be573467","user":{"login":"rubizza-survival-camp","id":40864986,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwODY0OTg2","avatar_url":"https://avatars1.githubusercontent.com/u/40864986?v=4","gravatar_id":"","url":"https://api.github.com/users/rubizza-survival-camp","html_url":"https://github.com/rubizza-survival-camp","followers_url":"https://api.github.com/users/rubizza-survival-camp/followers","following_url":"https://api.github.com/users/rubizza-survival-camp/following{/other_user}","gists_url":"https://api.github.com/users/rubizza-survival-camp/gists{/gist_id}","starred_url":"https://api.github.com/users/rubizza-survival-camp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubizza-survival-camp/subscriptions","organizations_url":"https://api.github.com/users/rubizza-survival-camp/orgs","repos_url":"https://api.github.com/users/rubizza-survival-camp/repos","events_url":"https://api.github.com/users/rubizza-survival-camp/events{/privacy}","received_events_url":"https://api.github.com/users/rubizza-survival-camp/received_events","type":"Organization","site_admin":false},"repo":{"id":139868408,"node_id":"MDEwOlJlcG9zaXRvcnkxMzk4Njg0MDg=","name":"summer-2018","full_name":"rubizza-survival-camp/summer-2018","owner":{"login":"rubizza-survival-camp","id":40864986,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwODY0OTg2","avatar_url":"https://avatars1.githubusercontent.com/u/40864986?v=4","gravatar_id":"","url":"https://api.github.com/users/rubizza-survival-camp","html_url":"https://github.com/rubizza-survival-camp","followers_url":"https://api.github.com/users/rubizza-survival-camp/followers","following_url":"https://api.github.com/users/rubizza-survival-camp/following{/other_user}","gists_url":"https://api.github.com/users/rubizza-survival-camp/gists{/gist_id}","starred_url":"https://api.github.com/users/rubizza-survival-camp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubizza-survival-camp/subscriptions","organizations_url":"https://api.github.com/users/rubizza-survival-camp/orgs","repos_url":"https://api.github.com/users/rubizza-survival-camp/repos","events_url":"https://api.github.com/users/rubizza-survival-camp/events{/privacy}","received_events_url":"https://api.github.com/users/rubizza-survival-camp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rubizza-survival-camp/summer-2018","description":null,"fork":false,"url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018","forks_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/forks","keys_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/teams","hooks_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/hooks","issue_events_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/issues/events{/number}","events_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/events","assignees_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/assignees{/user}","branches_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/branches{/branch}","tags_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/tags","blobs_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/git/refs{/sha}","trees_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/statuses/{sha}","languages_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/languages","stargazers_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/stargazers","contributors_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/contributors","subscribers_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/subscribers","subscription_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/subscription","commits_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/commits{/sha}","git_commits_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/git/commits{/sha}","comments_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/comments{/number}","issue_comment_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/issues/comments{/number}","contents_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/contents/{+path}","compare_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/merges","archive_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/downloads","issues_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/issues{/number}","pulls_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls{/number}","milestones_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/milestones{/number}","notifications_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/labels{/name}","releases_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/releases{/id}","deployments_url":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/deployments","created_at":"2018-07-05T15:28:12Z","updated_at":"2018-07-10T20:10:25Z","pushed_at":"2018-07-10T20:17:21Z","git_url":"git://github.com/rubizza-survival-camp/summer-2018.git","ssh_url":"git@github.com:rubizza-survival-camp/summer-2018.git","clone_url":"https://github.com/rubizza-survival-camp/summer-2018.git","svn_url":"https://github.com/rubizza-survival-camp/summer-2018","homepage":null,"size":86336,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":56,"mirror_url":null,"archived":false,"open_issues_count":26,"license":null,"forks":56,"open_issues":26,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147"},"html":{"href":"https://github.com/rubizza-survival-camp/summer-2018/pull/147"},"issue":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/issues/147"},"comments":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/issues/147/comments"},"review_comments":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147/comments"},"review_comment":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/pulls/147/commits"},"statuses":{"href":"https://api.github.com/repos/rubizza-survival-camp/summer-2018/statuses/acdc7ac29ab1a56ef9d8461d939fd352e534480e"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"houndci-bot"}}