Dasar

Kode Inline

Untuk menandai word atau phrase sebagai kode, apit dengan tanda petik terbalik (`).

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

Blok Kode

Gunakan blok kode berpagar dengan mengapit kode dalam tiga tanda petik terbalik dan ikuti tanda petik terbalik awal dengan bahasa pemrograman dari cuplikan Anda untuk mendapatkan penyorotan sintaks. Secara opsional, Anda juga dapat menulis nama kode Anda setelah bahasa pemrograman.

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!");
    }
}
```

Penyorotan Sintaks

Letakkan nama bahasa pemrograman Anda setelah tiga tanda petik terbalik untuk mendapatkan penyorotan sintaks.

Kami menggunakan Prism untuk penyorotan sintaks. Test Drive Prism mencantumkan semua bahasa yang didukung.

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!");
    }
}
```

Nama

Tambahkan judul setelah bahasa pemrograman untuk menetapkan nama contoh kode Anda. Teksnya bisa apa saja selama dalam satu baris.

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

Penyorotan Baris

Sorot baris tertentu dalam blok kode Anda dengan menambahkan komentar khusus setelah pengenal bahasa. Gunakan kurung kurawal {} dan tentukan nomor baris atau rentang yang dipisahkan dengan koma.

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();
```

Dapat Diperluas

Jika Anda memiliki blok kode yang panjang dan [expandable] setelah judul Anda untuk membuatnya dapat ditutup dan diperluas.

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();
```