7 poin oleh GN⁺ 2025-02-24 | 1 komentar | Bagikan ke WhatsApp
  • mdq adalah alat yang membantu menemukan bagian tertentu dalam dokumen Markdown dengan mudah
  • Berguna saat memeriksa template atau checklist tertentu dalam dokumen Markdown seperti GitHub PR
    • Misalnya, Anda dapat menggunakan perintah mdq '- [ ]' untuk menemukan tugas yang belum selesai

Penggunaan dasar

  • Memilih bagian yang berisi "usage": cat example.md | mdq '# usage'
  • Dapat digunakan dengan merangkai filter: cat example.md | mdq '# usage | -'
  • Memastikan pencarian issue yang sudah ada sebelum mengirim laporan bug: mdq -q '- [x] I have searched for existing issues'
  • Mengekstrak tiket referensi: saat PR menyebut tiket, Anda dapat mengekstrak tautan dari Markdown ke JSON dan mengambil URL dengan jq.
    TICKET_URL="$(echo "$PR_TEXT" | mdq --output json '# Ticket | [](^https://tickets.example.com/[A-Z]+-\\d+$)' | jq -r '.items[].link.url')"
  • Meringkas tabel besar: tabel dapat difilter untuk menemukan jadwal on-call pada tanggal tertentu atau untuk orang tertentu.
    • Mencari tanggal on-call Alice: cat oncall.md | mdq ':-: /On-Call|Alice/:-: *'
    • Mencari personel on-call untuk minggu 15 Januari 2024: cat oncall.md | mdq ':-: * :-: 2024-01-15'

1 komentar

 
GN⁺ 2025-02-24
Komentar Hacker News
  • PR GitHub adalah dokumen Markdown, dan beberapa organisasi menggunakan templat tertentu yang mencakup daftar periksa yang harus diselesaikan oleh semua reviewer

    • Untuk memaksakan fitur semacam ini, harus menggunakan ekspresi reguler yang rumit, yang sulit ditulis dan lebih sulit lagi di-debug
    • GitHub berfokus pada AI alih-alih mengembangkan fitur yang dibutuhkan
    • Bitbucket menyediakan fitur untuk memblokir PR menggunakan daftar kotak centang di luar kotak deskripsi
    • Ada cara yang lebih baik untuk menyelesaikan masalah ini, dan Anda bisa melihat contoh pertama di README OP
    • Proyek yang keren, dan karena belakangan ini saya lebih sering menulis MDX, akan bagus jika ada dukungan untuk dialek tersebut
  • Salah satu alasan format berkas berbasis teks seperti Markdown menjadi populer adalah karena bisa dianalisis dengan ekspresi reguler dan dikelola melalui kontrol versi

  • Alur kerja saya adalah melewati Pandoc JSON AST lalu menggunakan Jq

    • Ini juga bekerja untuk format input lain
  • Terima kasih sudah membagikannya, saya akan mencobanya

    • Saya memang menginginkan sesuatu yang mirip
  • Setelah mencoba berbagai hal, satu-satunya "sistem catatan" yang terus saya gunakan adalah direktori berisi berkas Markdown yang otomatis di-commit ke git saat berubah

  • Saya ingin menambahkan sedikit fitur cerdas agar bisa melacak pekerjaan

    • Misalnya, merapikan tugas yang selesai, memindahkan tugas yang belum selesai ke jurnal hari berikutnya, mengumpulkan tugas dari "proyek", dan sebagainya
    • Untuk itu saya mulai menulis beberapa kode Rust menggunakan markdown-rs
    • Untuk melakukan round-trip Markdown bersama perubahan, saat ini hanya versi JavaScript dari pustaka yang mendukung serialisasi Markdown bergaya GitHub
    • Jadi saya membuat pembuktian konsep dengan membuang Markdown AST sebagai JSON di Rust lalu melakukan serialisasi di JavaScript
    • markdown-rs menyimpan informasi posisi, tetapi tidak menyimpan informasi token sumber
    • Karena itu, round-trip yang andal tidak memungkinkan
  • Saya ingin memperlakukan dokumen Markdown sebagai pohon

    • Saya ingin menggunakan bahasa seperti xpath untuk mengekstrak bagian berdasarkan heading
    • Bagaimanapun, saya akan memeriksa kodenya, terima kasih sudah mempostingnya
  • MarkdownDB menyediakan backend SQLite untuk berkas Markdown

    • Saya merasa struktur berkas .md tidak selalu dihormati atau dipertimbangkan sebagai target serialisasi data
  • Terima kasih sudah membagikannya, saat ini saya tidak punya kasus penggunaan langsung untuk ini, tetapi bagus mengetahui bahwa hal seperti ini ada

  • Saya ingin menyampaikan catatan kecil tentang pemanggilan shell yang didokumentasikan

    • Misalnya, cat example.md | mdq '# usage' bisa diubah menjadi pengalihan berkas stdin agar tidak memanggil proses cat yang tidak perlu
    • Demikian juga, echo "$ISSUE_TEXT" | mdq -q '- [x] I have searched for existing issues' juga bisa menghindari proses echo yang tidak perlu
  • Akan bagus jika README menambahkan contoh yang lebih realistis

    • Itu akan membantu orang yang belum langsung memahami kegunaannya secara intuitif
  • Satu hal menarik yang saya pelajari saat meneliti alat dan pustaka yang ada adalah banyak alat melakukan serialisasi Markdown ke HTML sebelum menjalankan ekstraksi/manipulasi terstruktur

    • Karena Markdown dirancang untuk diserialisasikan ke HTML, dokumen/AST Markdown pada dasarnya bukan struktur pohon
    • Sebaliknya, itu adalah array elemen sesuai urutan kemunculannya dalam dokumen
    • Hanya daftar dan block quote yang mendukung nesting
    • Misalnya, h1 -> paragraf -> h2 -> paragraf tidak bersarang, melainkan array berisi empat elemen berurutan
    • Jika Anda menguji implementasi yang menggunakan HTML di Cursor atau Copilot, pengembangannya mungkin bisa lebih cepat
  • Sepertinya saya menemukan alat ini tepat pada saat saya membutuhkannya

    • Ini akan sangat cocok untuk tugas tertentu
  • Terima kasih kepada Yuval karena telah membagikan alat ini, dan terima kasih karena menggunakan lisensi yang permisif sehingga saya bisa memakainya di tempat kerja