ห้องสมุดข้อความ

เมื่อเวลาผ่านไป สิ่งที่เริ่มต้นจากการเป็นฟังก์ชันเดียวในการส่งข้อความได้พัฒนาไปสู่ชุดของฟังก์ชันที่เกี่ยวข้องกัน ขณะนี้ฟังก์ชันเหล่านี้เป็นรากฐานของ ไลบรารีข้อความ ซึ่งออกแบบมาเพื่อจัดการเอาต์พุตไปยังปลายทางต่างๆ เช่น GUI, คอนโซลข้อผิดพลาด และเทอร์มินัล

ทำไมต้องมีไลบรารีข้อความ?

เมื่อความต้องการของเราเพิ่มมากขึ้น การจัดการข้อความในเอาต์พุตหลายรายการจำเป็นต้องมีแนวทางแบบแยกส่วนและขยายได้มากขึ้น แทนที่จะใช้ฟังก์ชันเดียวทำทุกอย่าง เราได้แบ่งกระบวนการออกเป็นส่วนประกอบที่นำมาใช้ซ้ำได้ เพื่อให้เกิดความยืดหยุ่นมากขึ้น ขณะนี้ไลบรารีนี้สามารถใช้เป็นเครื่องมือส่งข้อความทั่วไปที่ปลั๊กอินหรือฟังก์ชันอื่นสามารถยืมได้

ไลบรารีข้อความทำอะไร?

ปัจจุบันไลบรารีข้อความมีฟังก์ชันดังต่อไปนี้:

  • send-to-gui: ส่งข้อความไปยังกล่องโต้ตอบ Lumi GUI
  • send-to-error-console: ส่งข้อความไปยัง Lumi Error Console
  • ส่งไปยังเทอร์มินัล: ส่งข้อความไปยังหน้าต่างเทอร์มินัล
  • ส่งข้อความ: ฟังก์ชันโปรแกรมเลือกจ่ายงานที่จะส่งข้อความไปยังเอาต์พุตที่เหมาะสม
  • validate-message: ตรวจสอบให้แน่ใจว่าข้อความและเอาต์พุตนั้นถูกต้องก่อนส่ง

การขยายห้องสมุด

ไลบรารีข้อความ สามารถขยายเพื่อรองรับเอาต์พุตเพิ่มเติมได้อย่างง่ายดาย ตัวอย่างเช่น:

  • ส่งไปยังไฟล์: บันทึกข้อความลงในไฟล์บันทึก
  • ส่งไปยังคนตัดไม้: ผสานรวมกับระบบบันทึกภายนอก
  • ส่งไปยังการแจ้งเตือน: แสดงข้อความเป็นการแจ้งเตือนของระบบ

ด้วยการออกแบบโมดูลาร์และฟังก์ชันที่นำกลับมาใช้ใหม่ในรูปแบบเดียวกัน ไลบรารีนี้สามารถเติบโตเป็นเครื่องมือที่ครอบคลุมสำหรับการจัดการงานการรับส่งข้อความทุกประเภท

ประโยชน์ของไลบรารีข้อความ

  • การนำกลับมาใช้ใหม่ได้: ฟังก์ชันต่างๆ สามารถนำมาใช้ซ้ำกับปลั๊กอินหรือโปรเจ็กต์ต่างๆ ได้
  • โมดูลาร์: แต่ละฟังก์ชันจะจัดการงานเฉพาะงานเดียว ทำให้ง่ายต่อการบำรุงรักษาและขยายโค้ด
  • ความสอดคล้อง: การใช้ฟังก์ชันการตรวจสอบและการจัดการข้อความเดียวกันช่วยให้มั่นใจได้ถึงพฤติกรรมที่สอดคล้องกันทั่วทั้งแอปพลิเคชัน

ไลบรารีการส่งข้อความ เป็นจุดเริ่มต้นของเฟรมเวิร์กที่กว้างขึ้นซึ่งอาจทำให้วิธีจัดการข้อความในโปรเจ็กต์ของคุณง่ายขึ้น เมื่อไลบรารีเติบโตขึ้น ปลั๊กอินใหม่ๆ ก็สามารถใช้ประโยชน์จากไลบรารีเพื่อส่งข้อความได้ทุกที่ที่ต้องการ

เราสามารถปรับโครงสร้างไฟล์ได้:

/home/your-username/code/
  ├── script-fu/
      ├── library/
      │     └── send-message.scm -> messaging.scm
      └── plug-ins/
            └── hello-world/
                  └── hello-world.scm

และอย่าลืมปรับ load ในปลั๊กอินหลัก:

# !/usr/bin/env lumi-scheme-interpreter-0.1

(load "/home/mark/code/github/script-plugins/funky-library/messaging.scm")

(define (scheme-hello-world)
  (let ((message "Hello world!\n"))
    (send-message message 'gui)
    (send-message message 'error-console)
    (send-message message 'terminal)))

(scheme-register-procedure "scheme-hello-world"
  "Hello world!"
  "A Scheme procedure plug-in refactored"
  "Mark Sweeney"
  "Under GNU GENERAL PUBLIC LICENSE Version 3"
  "2024")

(scheme-menu-register
  "scheme-hello-world"
  "<Image>/Funky")