{"action":"created","comment":{"url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/comments/48580625","id":48580625,"diff_hunk":"@@ -1 +1,221 @@\n-# Tratamento de Erro\n+## Tratamento de Erro\n+\n+Tratamento de erro é o processo de responder e se recuperar de condições de erro em seu programa. O Swift oferece um sofisticado suporte para lançamento, captura, propagação e manipulação de erros recuperáveis em tempo de execução.\n+\n+Algumas operações não têm garantia de sempre completar a execução ou produzir uma saída útil. Opcionais (do inglês *Optionals*) são usados para representar a ausência de um valor, mas quando uma operação falha, geralmente é mais útil entender o que causou a falha para que assim seu código possa responder adequadamente.\n+\n+Como um exemplo, considere uma tarefa de leitura e processamento de dados de um arquivo no disco. Existem várias possibilidades dessa tarefa falhar, incluindo o arquivo não existir no caminho especificado, o arquivo não ter permissão de leitura ou o arquivo não ter sido codificado em um formato compatível. Distinguir entre essas diferentes situações permite que um programa resolva alguns erros e comunique ao usuário quaisquer erros que ele não consiga resolver.\n+\n+> Nota\n+>\n+>Tratamento de erro em Swift funciona em sincronia com padrões de tratamento de erro que usam a classe `NSError` no Cocoa e Objective-C. Para mais informações sobre essa classe, veja *Using Swift with Cocoa and Objective-C (Swift 2.1)*\n+\n+### Representando e Lançando Erros\n+Em Swift, erros são representados por valores de tipos que estão em conformidade com o protocolo `ErrorType`. Esse protocolo vazio indica que um tipo pode ser usado para tratamento de erro.\n+\n+Enumeradores em Swift são particularmente bem adequados para modelar um grupo de condições de erros relacionados, usando valores associados para permitir informação adicional sobre a natureza de um erro à ser comunicado. Por exemplo, aqui está como você poderia representar as condições de erro da operação de uma máquina de vendas dentro de um jogo:\n+\n+```Swift\n+enum VendingMachineError: ErrorType {\n+    case InvalidSelection\n+    case InsufficientFunds(coinsNeeded: Int)\n+    case OutOfStock\n+}\n+```\n+\n+Lançar um erro te permite indicar que alguma coisa inesperada aconteceu e o fluxo normal de execução não pode continuar. Você usa uma instrução `throw` para lançar um erro. Por exemplo, o seguinte código lança um erro para indicar que cinco moedas adicionais são necessárias para a máquina de vendas:\n+\n+```Swift\n+throw VendingMachineError.InsufficientFunds(coinsNeeded: 5)\n+```\n+\n+### Tratando Erros\n+Quando um erro é lançado, algum código que o envolve deve ser responsável por tratar o erro - por exemplo, corrigindo o problema, tentando outra alternativa ou informando ao usuário sobre a falha.\n+\n+Existem quatro formas de tratar erros em Swift. Você pode propagar o erro de uma função para o código que a chamou, tratar o erro usando uma instrução `do-catch`, tratar o erro como um valor opcional ou afirmar que o erro não ocorrerá. Cada opção é descrita na seção abaixo.\n+\n+Quando uma função lança um erro, ela muda o fluxo do seu programa, então é importante que você possa identificar rapidamente lugares no seu código que possam lançar erros. Para identificar esses lugares no seu código, escreva a palavra-chave `try` - ou as variações try? ou try! - antes do código que chama aquela função, método ou inicializador que pode lançar um erro. Essas palavras-chaves são descritas na seção abaixo.\n+\n+> Nota\n+>\n+> Tratamento de erro em Swift se assemelha a tratamento de exceções em outras linguagens, com o uso das palavras-chaves `try`, `catch` e `throw`. Diferente do tratamento de exceções em muitas linguagens - incluindo Objective-C - tratamento de erro em Swift não envolve desdobramento da pilha (do inglês *unwinding stack*), um processo que pode ser caro computacionalmente. Como tal, as características de performance de uma instrução `throw` são comparáveis àquelas de uma instrução `return`.\n+\n+### Propagando Erros Usando Funções Lançadoras\n+\n+Para indicar que uma função, método ou inicializador pode lançar um erro, você escreve a palavra-chave `throws` na declaração de uma função após os parâmetros dela.\n+Uma função marcada com `throws` é chamada de função lançadora (do inglês *throwing function*). Se uma função especifica um tipo de retorno, você escreve a palavra-chave `throws` antes da seta de retorno (`->`).\n+\n+```Swift\n+func canThrowErrors() throws -> String\n+\n+func cannotThrowErrors() -> String\n+\n+```\n+\n+Uma função lançadora propaga erros que são lançados dentro dela para o escopo ao qual a chamou.\n+\n+> Nota\n+>\n+> Apenas funções lançadoras podem propagar erros. Quaisquer erros lançados dentro de uma função não-lançadora devem ser tratados dentro da função.\n+\n+No exemplo abaixo, a classe `VendingMachine` tem um método `vend(itemNamed:)` que lança um `VendingMachineError` apropriado se o item requisitado não estiver disponível, se o estoque estiver vazio ou o preço estiver além do valor atual depositado:\n+\n+ ```Swift\n+ struct Item {\n+   var price: Int\n+   var count: Int\n+ }\n+\n+class VendingMachine {\n+   var inventory = [\n+      \"Barra de Chocolate\": Item(price: 12, count: 7),\n+      \"Batatas fritas\": Item(price: 10, count: 4),\n+      \"Pretzels\": Item(price: 7, count: 11)\n+   ]\n+   var coinsDeposited = 0\n+   func dispenseSnack(snack: String) {\n+      print(\"Servindo \\(snack)\")\n+   }\n+\n+   func vend(itemNamed name: String) throws {\n+       guard var item = inventory[name] else {\n+           throw VendingMachineError.InvalidSelection\n+       }\n+\n+       guard item.count > 0 else {\n+           throw VendingMachineError.OutOfStock\n+       }\n+\n+       guard item.price <= coinsDeposited else {\n+           throw VendingMachineError.InsufficientFunds(coinsNeeded: item.price - coinsDeposited)\n+       }\n+\n+       coinsDeposited -= item.price\n+       --item.count\n+       inventory[name] = item\n+       dispenseSnack(name)\n+   }\n+}     \n+```\n+\n+A implementação do método `vend(itemNamed:)` usa instruções `guard` para sair do método mais cedo e lançar erros apropriados se algum dos requisitos para comprar um lanche não for cumprido. Como uma instrução `throw` transfere imediatamente o controle do programa, um item só será vendido se todos esses requisitos forem cumpridos.\n+\n+Como o método `vend(itemNamed:)` propaga qualquer erro que ele lança, lugares no seu código que o chamam devem tratar os erros diretamente - usando uma instrução `do-catch`, `try?` ou `try!` - ou continuar a propagá-los. Por exemplo, o `buyFavoriteSnack(_:vendingMachine:)` no exemplo abaixo também é uma função lançadora e quaisquer erros que o método `vend(itemNamed:)` lançar, será propagado um nível acima até o ponto onde a função `buyFavoriteSnack(_:vendingMachine:)` é chamada.\n+\n+```Swift\n+let favoriteSnacks = [\n+    \"Alice\": \"Batatas Fritas\",\n+    \"Bob\": \"Licorice\",\n+    \"Eve\": \"Pretzels\",\n+]\n+\n+func buyFavoriteSnack(person: String, vendingMachine: VendingMachine) throws {\n+    let snackName = favoriteSnacks[person] ?? \"Barra de Chocolate\"\n+    try vendingMachine.vend(itemNamed: snackName)\n+}\n+```\n+\n+Nesse exemplo, a função `buyFavoriteSnack(_:vendingMachine:)` olha o lanche favorito de uma dada pessoa e tenta comprá-lo para ela chamando o método `vend(itemNamed:)`. Como o método `vend(itemNamed:)` pode lançar um erro, ele é chamado com a palavra-chave `try` na frente dele.\n+\n+### Tratando Erros Usando Do-Catch\n+\n+Você usa uma instrução `do-catch` para tratar erros rodando um bloco de código. Se um erro é lançado pelo código na cláusula `do`, ele é comparado com as cláusulas `catch` para determinar qual delas pode tratar o erro.\n+\n+Aqui está uma forma geral de uma instrução `do-catch`:\n+\n+```Swift\n+do {\n+    try [expression]\n+    [statements]\n+} catch [pattern 1] {\n+    [statements]\n+} catch [pattern 2] where [condition] {\n+    [statements]\n+}\n+```\n+Você escreve um padrão (do inglês *pattern*) depois do `catch` para indicar que erros aquela cláusula pode tratar. Se uma cláusula `catch` não tiver um padrão, a cláusula combina com qualquer erro e vincula o erro com a constante local chamada `error`. Para mais informações sobre combinação de padrões, veja [Patterns](../referencia_liguagem/padroes).\n+\n+A cláusula `catch` não precisa tratar todo erro possível que o código dentro da sua cláusula `do` possa lançar. Se nenhuma das cláusulas `catch` pode tratar o erro, o erro é propagado para um escopo que o envolve. Todavia, o erro deve ser tratado por algum escopo que o envolve - ou por uma cláusula `do-catch` que o envolve que trata o erro ou estando dentro de uma função lançadora. Por exemplo, o código seguinte trata os três casos do enumerador `VendingMachineError`, mas todos os outros erros tem que ser tratado por seu escopo envolvente:\n+\n+```Swift\n+var vendingMachine = VendingMachine()\n+vendingMachine.coinsDeposited = 8\n+do {\n+    try buyFavoriteSnack(\"Alice\", vendingMachine: vendingMachine)\n+} catch VendingMachineError.InvalidSelection {\n+    print(\"Seleção inválida.\")\n+} catch VendingMachineError.OutOfStock {\n+    print(\"Estoque vazio.\")\n+} catch VendingMachineError.InsufficientFunds(let coinsNeeded) {\n+    print(\"Saldo insuficiente. Por favor, insira \\(coinsNeeded) moedas adicionais.\")\n+}\n+// imprime \"Saldo insuficiente. Por favor, insira 2 moedas adicionais.\"\n+```\n+\n+No exemplo acima, a função `buyFavoriteSnack(_:vendingMachine:)` é chamada em uma expressão `try`, porque ela pode lançar um erro. Se um erro é lançado, a execução é imediatamente transferida para a cláusula `catch`, que decide se a propagação deve continuar. Se nenhum erro é lançado, as instruções restantes na instrução `do` são executadas.\n+\n+###Convertendo Erros para Valores Opcionais\n+\n+Voce usa `try?` para tratar um erro, convertendo ele para um valor opcional (do inglês *optional*). Se um erro é lançado quando a expressão `try?` está sendo analisada, o valor da expressão é nulo. Por exemplo, no seguinte código x e y tem o mesmo valor e comportamento:\n+\n+```Swift\n+func someThrowingFunction() throws -> Int {\n+    // ...\n+}\n+\n+let x = try? someThrowingFunction()\n+\n+let y: Int?\n+do {\n+    y = try someThrowingFunction()\n+} catch {\n+    y = nil\n+}\n+```\n+\n+Se `someThrowingFunction()` lança um erro, o valor de x e y é nulo. Caso contrário, o valor de x e y é o valor que a função retornou. Perceba que x e y são opcionais do tipo que 'someThrowingFunction()' retorna, seja ele qual for. Aqui a função retorna um inteiro, então x e y são opcionais inteiros.  ","path":"guia/tratamento_erro.md","position":177,"original_position":177,"commit_id":"24bf35d8b42e0a5896122f49dcf990c08c44bd8c","original_commit_id":"24bf35d8b42e0a5896122f49dcf990c08c44bd8c","user":{"login":"barbosa","id":235208,"avatar_url":"https://avatars.githubusercontent.com/u/235208?v=3","gravatar_id":"","url":"https://api.github.com/users/barbosa","html_url":"https://github.com/barbosa","followers_url":"https://api.github.com/users/barbosa/followers","following_url":"https://api.github.com/users/barbosa/following{/other_user}","gists_url":"https://api.github.com/users/barbosa/gists{/gist_id}","starred_url":"https://api.github.com/users/barbosa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/barbosa/subscriptions","organizations_url":"https://api.github.com/users/barbosa/orgs","repos_url":"https://api.github.com/users/barbosa/repos","events_url":"https://api.github.com/users/barbosa/events{/privacy}","received_events_url":"https://api.github.com/users/barbosa/received_events","type":"User","site_admin":false},"body":"Aqui também. Toda vez que falar de `x` e `y` acho que pode colocar entre crases pq faz referência ao código.","created_at":"2015-12-30T00:24:41Z","updated_at":"2015-12-30T00:24:41Z","html_url":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pull/29#discussion_r48580625","pull_request_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29","_links":{"self":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/comments/48580625"},"html":{"href":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pull/29#discussion_r48580625"},"pull_request":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29"}}},"pull_request":{"url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29","id":54487665,"html_url":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pull/29","diff_url":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pull/29.diff","patch_url":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pull/29.patch","issue_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/issues/29","number":29,"state":"open","locked":false,"title":"[Revisão] Guia da Linguagem - Tratamento de erro","user":{"login":"danielCarlosCE","id":1819682,"avatar_url":"https://avatars.githubusercontent.com/u/1819682?v=3","gravatar_id":"","url":"https://api.github.com/users/danielCarlosCE","html_url":"https://github.com/danielCarlosCE","followers_url":"https://api.github.com/users/danielCarlosCE/followers","following_url":"https://api.github.com/users/danielCarlosCE/following{/other_user}","gists_url":"https://api.github.com/users/danielCarlosCE/gists{/gist_id}","starred_url":"https://api.github.com/users/danielCarlosCE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielCarlosCE/subscriptions","organizations_url":"https://api.github.com/users/danielCarlosCE/orgs","repos_url":"https://api.github.com/users/danielCarlosCE/repos","events_url":"https://api.github.com/users/danielCarlosCE/events{/privacy}","received_events_url":"https://api.github.com/users/danielCarlosCE/received_events","type":"User","site_admin":false},"body":"[Revisão] Guia da Linguagem - Tratamento de erro\r\n(resolve #17)","created_at":"2015-12-23T16:57:20Z","updated_at":"2015-12-30T00:24:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9883a13f9514ef8c45e3c9b957c08839e05291f3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29/commits","review_comments_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29/comments","review_comment_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/issues/29/comments","statuses_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/statuses/24bf35d8b42e0a5896122f49dcf990c08c44bd8c","head":{"label":"danielCarlosCE:error-handling","ref":"error-handling","sha":"24bf35d8b42e0a5896122f49dcf990c08c44bd8c","user":{"login":"danielCarlosCE","id":1819682,"avatar_url":"https://avatars.githubusercontent.com/u/1819682?v=3","gravatar_id":"","url":"https://api.github.com/users/danielCarlosCE","html_url":"https://github.com/danielCarlosCE","followers_url":"https://api.github.com/users/danielCarlosCE/followers","following_url":"https://api.github.com/users/danielCarlosCE/following{/other_user}","gists_url":"https://api.github.com/users/danielCarlosCE/gists{/gist_id}","starred_url":"https://api.github.com/users/danielCarlosCE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielCarlosCE/subscriptions","organizations_url":"https://api.github.com/users/danielCarlosCE/orgs","repos_url":"https://api.github.com/users/danielCarlosCE/repos","events_url":"https://api.github.com/users/danielCarlosCE/events{/privacy}","received_events_url":"https://api.github.com/users/danielCarlosCE/received_events","type":"User","site_admin":false},"repo":{"id":48253656,"name":"the-swift-programming-language-in-portuguese-br","full_name":"danielCarlosCE/the-swift-programming-language-in-portuguese-br","owner":{"login":"danielCarlosCE","id":1819682,"avatar_url":"https://avatars.githubusercontent.com/u/1819682?v=3","gravatar_id":"","url":"https://api.github.com/users/danielCarlosCE","html_url":"https://github.com/danielCarlosCE","followers_url":"https://api.github.com/users/danielCarlosCE/followers","following_url":"https://api.github.com/users/danielCarlosCE/following{/other_user}","gists_url":"https://api.github.com/users/danielCarlosCE/gists{/gist_id}","starred_url":"https://api.github.com/users/danielCarlosCE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielCarlosCE/subscriptions","organizations_url":"https://api.github.com/users/danielCarlosCE/orgs","repos_url":"https://api.github.com/users/danielCarlosCE/repos","events_url":"https://api.github.com/users/danielCarlosCE/events{/privacy}","received_events_url":"https://api.github.com/users/danielCarlosCE/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/danielCarlosCE/the-swift-programming-language-in-portuguese-br","description":"Tradução do guideline do Swift.org","fork":true,"url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br","forks_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/forks","keys_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/keys{/key_id}","collaborators_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/teams","hooks_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/hooks","issue_events_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/issues/events{/number}","events_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/events","assignees_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/assignees{/user}","branches_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/branches{/branch}","tags_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/tags","blobs_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/git/refs{/sha}","trees_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/git/trees{/sha}","statuses_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/statuses/{sha}","languages_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/languages","stargazers_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/stargazers","contributors_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/contributors","subscribers_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/subscribers","subscription_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/subscription","commits_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/commits{/sha}","git_commits_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/git/commits{/sha}","comments_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/comments{/number}","issue_comment_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/issues/comments{/number}","contents_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/contents/{+path}","compare_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/compare/{base}...{head}","merges_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/merges","archive_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/downloads","issues_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/issues{/number}","pulls_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/pulls{/number}","milestones_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/milestones{/number}","notifications_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/labels{/name}","releases_url":"https://api.github.com/repos/danielCarlosCE/the-swift-programming-language-in-portuguese-br/releases{/id}","created_at":"2015-12-18T19:50:49Z","updated_at":"2015-12-18T19:20:38Z","pushed_at":"2015-12-29T20:54:43Z","git_url":"git://github.com/danielCarlosCE/the-swift-programming-language-in-portuguese-br.git","ssh_url":"git@github.com:danielCarlosCE/the-swift-programming-language-in-portuguese-br.git","clone_url":"https://github.com/danielCarlosCE/the-swift-programming-language-in-portuguese-br.git","svn_url":"https://github.com/danielCarlosCE/the-swift-programming-language-in-portuguese-br","homepage":null,"size":610,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"CocoaHeadsBrasil:master","ref":"master","sha":"d817119340e75835e9543c28855d342403af47b2","user":{"login":"CocoaHeadsBrasil","id":7914270,"avatar_url":"https://avatars.githubusercontent.com/u/7914270?v=3","gravatar_id":"","url":"https://api.github.com/users/CocoaHeadsBrasil","html_url":"https://github.com/CocoaHeadsBrasil","followers_url":"https://api.github.com/users/CocoaHeadsBrasil/followers","following_url":"https://api.github.com/users/CocoaHeadsBrasil/following{/other_user}","gists_url":"https://api.github.com/users/CocoaHeadsBrasil/gists{/gist_id}","starred_url":"https://api.github.com/users/CocoaHeadsBrasil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CocoaHeadsBrasil/subscriptions","organizations_url":"https://api.github.com/users/CocoaHeadsBrasil/orgs","repos_url":"https://api.github.com/users/CocoaHeadsBrasil/repos","events_url":"https://api.github.com/users/CocoaHeadsBrasil/events{/privacy}","received_events_url":"https://api.github.com/users/CocoaHeadsBrasil/received_events","type":"Organization","site_admin":false},"repo":{"id":48129948,"name":"the-swift-programming-language-in-portuguese-br","full_name":"CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br","owner":{"login":"CocoaHeadsBrasil","id":7914270,"avatar_url":"https://avatars.githubusercontent.com/u/7914270?v=3","gravatar_id":"","url":"https://api.github.com/users/CocoaHeadsBrasil","html_url":"https://github.com/CocoaHeadsBrasil","followers_url":"https://api.github.com/users/CocoaHeadsBrasil/followers","following_url":"https://api.github.com/users/CocoaHeadsBrasil/following{/other_user}","gists_url":"https://api.github.com/users/CocoaHeadsBrasil/gists{/gist_id}","starred_url":"https://api.github.com/users/CocoaHeadsBrasil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CocoaHeadsBrasil/subscriptions","organizations_url":"https://api.github.com/users/CocoaHeadsBrasil/orgs","repos_url":"https://api.github.com/users/CocoaHeadsBrasil/repos","events_url":"https://api.github.com/users/CocoaHeadsBrasil/events{/privacy}","received_events_url":"https://api.github.com/users/CocoaHeadsBrasil/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br","description":"Tradução do guideline do Swift.org","fork":false,"url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br","forks_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/forks","keys_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/teams","hooks_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/hooks","issue_events_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/issues/events{/number}","events_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/events","assignees_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/assignees{/user}","branches_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/branches{/branch}","tags_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/tags","blobs_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/git/refs{/sha}","trees_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/statuses/{sha}","languages_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/languages","stargazers_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/stargazers","contributors_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/contributors","subscribers_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/subscribers","subscription_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/subscription","commits_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/commits{/sha}","git_commits_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/git/commits{/sha}","comments_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/comments{/number}","issue_comment_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/issues/comments{/number}","contents_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/contents/{+path}","compare_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/merges","archive_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/downloads","issues_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/issues{/number}","pulls_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls{/number}","milestones_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/milestones{/number}","notifications_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/labels{/name}","releases_url":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/releases{/id}","created_at":"2015-12-16T19:16:35Z","updated_at":"2015-12-22T18:03:37Z","pushed_at":"2015-12-29T20:54:43Z","git_url":"git://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br.git","ssh_url":"git@github.com:CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br.git","clone_url":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br.git","svn_url":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br","homepage":null,"size":1414,"stargazers_count":19,"watchers_count":19,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"open_issues_count":13,"forks":8,"open_issues":13,"watchers":19,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29"},"html":{"href":"https://github.com/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pull/29"},"issue":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/issues/29"},"comments":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/issues/29/comments"},"review_comments":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29/comments"},"review_comment":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/pulls/29/commits"},"statuses":{"href":"https://api.github.com/repos/CocoaHeadsBrasil/the-swift-programming-language-in-portuguese-br/statuses/24bf35d8b42e0a5896122f49dcf990c08c44bd8c"}}}}