Skip to content

Commit

Permalink
feat: adicionar exercícios práticos e resoluções para o Ninja Nível 11
Browse files Browse the repository at this point in the history
  • Loading branch information
fabianoflorentino committed Dec 18, 2024
1 parent 2fdd2e3 commit 114355e
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 11 deletions.
6 changes: 0 additions & 6 deletions internal/exercicios_ninja_ninvel_11/overview.yml

This file was deleted.

5 changes: 0 additions & 5 deletions internal/exercicios_ninja_ninvel_11/topics.go

This file was deleted.

37 changes: 37 additions & 0 deletions internal/exercicios_ninja_nivel_11/overview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
description:
name: "Capítulo 24: Exercícios ninja nível 11"
sections:
- title: "Na prática: exercício #1"
text: |
- Utilizando este código: https://play.golang.org/p/3W69TH4nON
- ...remova o underscore e verifique e lide com o erro de maneira apropriada.
- Solução: https://github.com/ellenkorbes/aprendago/blob/master/c%C3%B3digo/24_exercicios-ninja-11/01/main.go
- title: "Na prática: exercício #2"
text: |
- Utilizando este código: https://play.golang.org/p/9a1IAWy5E6
- ...crie uma mensagem de erro customizada utilizando fmt.Errorf().
- Solução: https://github.com/ellenkorbes/aprendago/blob/master/c%C3%B3digo/24_exercicios-ninja-11/02/main.go
- title: "Na prática: exercício #3"
text: |
- Crie um struct "erroEspecial" que implemente a interface builtin.error.
- Crie uma função que tenha um valor do tipo error como parâmetro.
- Crie um valor do tipo "erroEspecial" e passe-o para a função da instrução anterior.
- Solução: https://github.com/ellenkorbes/aprendago/blob/master/c%C3%B3digo/24_exercicios-ninja-11/03/main.go
- title: "Na prática: exercício #4"
text: |
- Utilizando este código: https://play.golang.org/p/wlEM1tgfQD
- ...use o struct sqrt.Error como valor do tipo erro.
- Solução: https://github.com/ellenkorbes/aprendago/blob/master/c%C3%B3digo/24_exercicios-ninja-11/04/main.go
- title: "Na prática: exercício #5"
text: |
- Nos capítulos seguintes, uma das coisas que veremos é testes.
- Para testar sua habilidade de se virar por conta própria... desafio:
- Utilizando as seguintes fontes: https://godoc.org/testing & http://www.golang-book.com/books/intro/12
- Tente descobrir por conta própria como funcionam testes em Go.
- Pode usar tradutor automático, pode rodar código na sua máquina, pode procurar no Google. Vale tudo.
- O exercício é: crie um teste simples de uma função ou método ou pedaço qualquer de código.
38 changes: 38 additions & 0 deletions internal/exercicios_ninja_nivel_11/resolution_exercises.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package exercicios_ninja_nivel_11

import (
"encoding/json"
"fmt"
)

// person represents an individual with a first name, last name, and a list of sayings.
type person struct {
First string
Last string
Sayings []string
}

func ResolucaoNaPraticaExercicio1() {
// - Utilizando este código: https://play.golang.org/p/3W69TH4nON
// - ...remova o underscore e verifique e lide com o erro de maneira apropriada.
// - Solução: https://github.com/ellenkorbes/aprendago/blob/master/c%C3%B3digo/24_exercicios-ninja-11/01/main.go
p1 := person{
First: "James",
Last: "Bond",
Sayings: []string{"Shaken, not stirred", "Any last wishes?", "Never say never"},
}

bs, err := json.Marshal(p1)
if err != nil {
panic(err)
}
fmt.Println(string(bs))
}

func ResolucaoNaPraticaExercicio2() {}

func ResolucaoNaPraticaExercicio3() {}

func ResolucaoNaPraticaExercicio4() {}

func ResolucaoNaPraticaExercicio5() {}
78 changes: 78 additions & 0 deletions internal/exercicios_ninja_nivel_11/topics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
// Package exercicios_ninja_nivel_11 provides functions to execute and display
// exercises from the Ninja Level 11 course. It includes functions to present
// the exercises, show their resolutions, and display help information for
// the available commands. The package utilizes the format package for
// formatting and displaying sections and help information.
package exercicios_ninja_nivel_11

import (
"fmt"

"github.com/fabianoflorentino/aprendago/pkg/format"
)

// rootDir represents the relative path to the directory containing
// the exercises for level 11 of the ninja training program.
const (
rootDir = "internal/exercicios_ninja_nivel_11"
)

// ExercicicioNinjaNivel11 prints the title of the chapter and executes a series of sections
// corresponding to exercises in Ninja Level 11. Each section is executed by calling the
// executeSection function with the name of the exercise as an argument.
func ExerciciosNinjaNivel11() {
fmt.Printf("\n\nCapítulo 24: Exercicios: Ninja Nível 11\n")

executeSection("Na prática: Exercício #1")
executeSection("Na prática: Exercício #2")
executeSection("Na prática: Exercício #3")
executeSection("Na prática: Exercício #4")
executeSection("Na prática: Exercício #5")
}

// MenuExerciciosNinjaNivel11 returns a slice of format.MenuOptions for the exercises of Ninja Level 11.
// Each MenuOption contains a command-line option string and an associated execution function.
// The options include commands for executing and resolving exercises 1 through 5.
func MenuExerciciosNinjaNivel11([]string) []format.MenuOptions {
return []format.MenuOptions{
{Options: "--na-pratica-exercicio-1 --nivel-11", ExecFunc: func() { executeSection("Na prática: Exercício #1") }},
{Options: "--na-pratica-exercicio-1 --nivel-11 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio1() }},
{Options: "--na-pratica-exercicio-2 --nivel-11", ExecFunc: func() { executeSection("Na prática: Exercício #2") }},
{Options: "--na-pratica-exercicio-2 --nivel-11 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio2() }},
{Options: "--na-pratica-exercicio-3 --nivel-11", ExecFunc: func() { executeSection("Na prática: Exercício #3") }},
{Options: "--na-pratica-exercicio-3 --nivel-11 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio3() }},
{Options: "--na-pratica-exercicio-4 --nivel-11", ExecFunc: func() { executeSection("Na prática: Exercício #4") }},
{Options: "--na-pratica-exercicio-4 --nivel-11 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio4() }},
{Options: "--na-pratica-exercicio-5 --nivel-11", ExecFunc: func() { executeSection("Na prática: Exercício #5") }},
{Options: "--na-pratica-exercicio-5 --nivel-11 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio5() }},
}
}

// HelpMeExerciciosNinjaNivel11 provides a list of available commands and their descriptions
// for the practical exercises of level 11 in the Ninja course. It prints the chapter title
// and uses the format.PrintHelpMe function to display the help information.
func HelpMeExerciciosNinjaNivel11() {
hlp := []format.HelpMe{
{Flag: "--na-pratica-exercicio-1 --nivel-11", Description: "Apresenta o primeiro exercício prático do curso.", Width: 0},
{Flag: "--na-pratica-exercicio-1 --nivel-11 --resolucao", Description: "Exibe a resolução do primeiro exercício prático.", Width: 0},
{Flag: "--na-pratica-exercicio-2 --nivel-11", Description: "Apresenta o segundo exercício prático do curso.", Width: 0},
{Flag: "--na-pratica-exercicio-2 --nivel-11 --resolucao", Description: "Exibe a resolução do segundo exercício prático.", Width: 0},
{Flag: "--na-pratica-exercicio-3 --nivel-11", Description: "Apresenta o terceiro exercício prático do curso.", Width: 0},
{Flag: "--na-pratica-exercicio-3 --nivel-11 --resolucao", Description: "Exibe a resolução do terceiro exercício prático.", Width: 0},
{Flag: "--na-pratica-exercicio-4 --nivel-11", Description: "Apresenta o quarto exercício prático do curso.", Width: 0},
{Flag: "--na-pratica-exercicio-4 --nivel-11 --resolucao", Description: "Exibe a resolução do quarto exercício prático.", Width: 0},
{Flag: "--na-pratica-exercicio-5 --nivel-11", Description: "Apresenta o quinto exercício prático do curso.", Width: 0},
{Flag: "--na-pratica-exercicio-5 --nivel-11 --resolucao", Description: "Exibe a resolução do quinto exercício prático.", Width: 0},
}

fmt.Printf("\nCapítulo 24: Exercicios Ninja Nível 11\n")
format.PrintHelpMe(hlp)
}

// executeSection formats and processes a given section of the project.
// It takes a section name as a string and uses the FormatSection function
// from the format package to apply formatting to the specified section
// within the root directory.
func executeSection(section string) {
format.FormatSection(rootDir, section)
}

0 comments on commit 114355e

Please sign in to comment.