Skip to content

Latest commit

 

History

History
221 lines (146 loc) · 5.25 KB

02-conhecendo-o-projeto-cotuba.md

File metadata and controls

221 lines (146 loc) · 5.25 KB

Conhecendo o Cotuba

O Cotuba é um gerador de ebooks que converte arquivos escritos no formato Markdown (.md), em ebooks nos formatos EPUB (.epub) e PDF (.pdf).

Cada arquivo .md do diretório do livro, em ordem alfabética, será transformado em um capítulo do ebook.

Exercício: gerando um ebook

  1. Abra um Terminal e baixe o Cotuba usando o Git:
git clone https://github.com/caelum/cotuba.git
  1. Entre na pasta do projeto:
cd cotuba
  1. Faça o build do projeto usando o Maven:
mvn install
  1. Descompacte o .zip gerado para o seu Desktop com o comando:
unzip -o target/cotuba-*-distribution.zip -d ~/Desktop
  1. Vá até o seu Desktop:
cd ~/Desktop
  1. O Cotuba já vem com um livro de exemplo. Para gerar um PDF desse livro, faça:
./cotuba.sh -d ~/cotuba/exemplo -f pdf

Verifique se está tudo certo com o PDF gerado.

  1. Também é possível gerar um EPUB desse livro:
./cotuba.sh -d ~/cotuba/exemplo -f epub

Verifique se o EPUB está OK.

Exercício: abrindo o código do Cotuba no Eclipse

  1. No Eclipse, vá em File > Import... > Maven > Existing Maven Projects e clique em Next.
  2. Em Root Directory, aponte para o diretório onde você baixou o Cotuba. Ou seja, preencha com /home/<usuario-do-curso>/cotuba. Não esqueça de trocar <usuario-do-curso> pelo nome de usuário do curso. Clique em OK.
  3. Clique em Finish e seu projeto será importado.
  4. Abra a classe Main, do pacote cotuba.

Exercício: gerando um ebook pelo Eclipse

  1. Clique com o botão direito na classe Main e vá em Run As > Run Configurations....
  2. Dê duplo clique em Java Application para adicionar uma nova configuração.
  3. Na aba Arguments, coloque -d /home/<usuario-do-curso>/cotuba/exemplo -f pdf em Program Arguments. Não esqueça de trocar <usuario-do-curso> pelo nome de usuário do curso.
  4. Clique em Run.
  5. Refresh no projeto e veja se o arquivo book.pdf foi gerado.
  6. Crie uma outra Run Configuration que gera um EPUB.

Um pouco sobre a implementação do Cotuba

O Cotuba foi implementado em Java 8 e usa o Maven como ferramenta de build.

A estrutura do código do Cotuba é a seguinte:

cotuba
├── pom.xml
│
└── src
    ├── assembly
    │   └── distribution.xml
    ├── main
    │   └── java
    │       └── cotuba
    │           └── Main.java
    │
    └── scripts
        └── cotuba.sh

As seguintes bibliotecas, declaradas como dependências no pom.xml, são usadas:

O .zip, que é o "entregável" do Cotuba, é gerado pelo Maven Assembly Plugin. Mais em: http://maven.apache.org/plugins/maven-assembly-plugin/

A configuração do Assembly Plugin está em src/assembly/distribution.xml. Nesse XML, é descrito que o .zip conterá os JARs de todas as bibliotecas e o arquivo src/script/cotuba.sh.

O código do Cotuba possui apenas uma classe: a classe Main do pacote cotuba, que define o método main e possui cerca de 250 linhas de código.

É um código pequeno e relativamente simples. Mas será que esse código está fácil de ser mantido?

Para saber mais: a sintaxe do Markdown

Markdown é uma linguagem de marcação com uma sintaxe simples. Foi criada por John Gruber e Aaron Swartz em 2004. Tem como objetivo ter uma marcação enxuta, sendo o mais próxima o possível de texto puro e podendo ser facilmente convertida para HTML.

Alguns detalhes da sintaxe:

Títulos

# Título se transforma em <h1>Título</h1>

## Título se transforma em <h2>Título</h2>

### Título se transforma em <h3>Título</h3>

#### Título se transforma em <h4>Título</h4>

##### Título se transforma em <h5>Título</h5>

###### Título se transforma em <h6>Título</h6>

Itálico

_texto_

se transforma em

<em>texto</em>

Negrito

**texto**

se transforma em

<strong>texto</strong>

Links

[Caelum](https://www.caelum.com.br)

se transforma em

<a href="https://www.caelum.com.br">Caelum</a>

Citações

> Ser ou não ser, eis a questão

se transforma em

<blockquote>Ser ou não ser, eis a questão</blockquote>

Código inline

A classe `String` é imutável

se transforma em

A classe <code>String</code> é imutável

Listas

- modelagem
- dependências

se transforma em

<ul>
  <li>modelagem</li>
  <li>dependências</li>
</ul>

Listas ordenadas

1. modelagem
2. dependências

se transforma em

<ol>
  <li>modelagem</li>
  <li>dependências</li>
</ol>

Blocos de código

````` ``

public class Pessoa {
  private String nome;
}

```

se transforma em

<pre><code>
public class Pessoa {
  private String nome;
}
</code></pre>