Básico

Código Inline

Para denotar um word ou phrase como código, envolva-o em crases (`).

To denote a `word` or `phrase` as code, enclose it in backticks (`).

Bloco de Código

Use blocos de código cercados envolvendo o código em três crases e seguindo as crases iniciais com a linguagem de programação do seu trecho para obter destaque de sintaxe. Opcionalmente, você também pode escrever o nome do seu código após a linguagem de programação.

HelloWorld.java
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```java HelloWorld.java
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```

Destaque de Sintaxe

Coloque o nome da sua linguagem de programação após as três crases para obter destaque de sintaxe.

Nós usamos Prism para destaque de sintaxe. Test Drive Prism lista todas as linguagens suportadas.

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```java
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```

Nomes

Adicione um título após a linguagem de programação para definir o nome do seu exemplo de código. O texto pode ser qualquer coisa, desde que esteja em uma única linha.

Code Block Example
const hello = "world";
Code Block Example
```javascript Code Block Example
const hello = "world";
```

Destaque de Linha

Destaque linhas específicas em seus blocos de código adicionando um comentário especial após o identificador da linguagem. Use chaves {} e especifique números de linha ou intervalos separados por vírgulas.

Line Highlighting Example
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```javascript Line Highlighting Example {1,3-5}
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```

Expansível

Se você tem um bloco de código longo e [expandable] após o seu título para torná-lo fechável e expansível.

library.py
from datetime import datetime, timedelta
from typing import Dict, List, Optional
from dataclasses import dataclass

@dataclass
class Book:
    title: str
    author: str
    isbn: str
    checked_out: bool = False
    due_date: Optional[datetime] = None

class Library:
    def __init__(self):
        self.books: Dict[str, Book] = {}
        self.checkouts: Dict[str, List[str]] = {}  # patron -> list of ISBNs

    def add_book(self, book: Book) -> None:
        if book.isbn in self.books:
            raise ValueError(f"Book with ISBN {book.isbn} already exists")
        self.books[book.isbn] = book

    def checkout_book(self, isbn: str, patron: str, days: int = 14) -> None:
        if patron not in self.checkouts:
            self.checkouts[patron] = []

        book = self.books.get(isbn)
        if not book:
            raise ValueError("Book not found")

        if book.checked_out:
            raise ValueError("Book is already checked out")

        if len(self.checkouts[patron]) >= 3:
            raise ValueError("Patron has reached checkout limit")

        book.checked_out = True
        book.due_date = datetime.now() + timedelta(days=days)
        self.checkouts[patron].append(isbn)

    def return_book(self, isbn: str) -> float:
        book = self.books.get(isbn)
        if not book or not book.checked_out:
            raise ValueError("Book not found or not checked out")

        late_fee = 0.0
        if datetime.now() > book.due_date:
            days_late = (datetime.now() - book.due_date).days
            late_fee = days_late * 0.50

        book.checked_out = False
        book.due_date = None

        # Remove from patron's checkouts
        for patron, books in self.checkouts.items():
            if isbn in books:
                books.remove(isbn)
                break

        return late_fee

    def search(self, query: str) -> List[Book]:
        query = query.lower()
        return [
            book for book in self.books.values()
            if query in book.title.lower() or query in book.author.lower()
        ]

def main():
    library = Library()

    # Add some books
    books = [
        Book("The Hobbit", "J.R.R. Tolkien", "978-0-261-10295-4"),
        Book("1984", "George Orwell", "978-0-452-28423-4"),
    ]

    for book in books:
        library.add_book(book)

    # Checkout and return example
    library.checkout_book("978-0-261-10295-4", "patron123")
    late_fee = library.return_book("978-0-261-10295-4")
    print(f"Late fee: ${late_fee:.2f}")

if __name__ == "__main__":
    main()
```javascript Expandable Example [expandable]
const greeting = "Hello, World!";
function sayHello() {
  console.log(greeting);
}
sayHello();
```