Tworzenie biblioteki dla PLT
czerwiec 11th, 2008 at 4:24 pm (scheme, plt)
Niedawno napisanÄ? bibliotekÄ? do generowania identikon udostÄ?pni??em na planecie PLT - PLTowym odpowieniku Perlowego CPANu, czy Pythonowego indeksu pakiet??w. Zadanie przygotowania biblioteki w taki spos??b, by mog??a byÄ? umieszczona na planecie nie by??o trudne, ale nios??o ze sobÄ? kilka niespodzianek.
Efekt ko??cowy mo??na znale??Ä? na stronie pakietu, razem z dokumentacjÄ? i pe??nym kodem ??r??d??owym. By skorzystaÄ? z biblioteki wystarczy teraz dodaÄ? do programu jednÄ? linijkÄ?:
(require (planet “identicons.ss” (“mk” “identicons.plt”)))
Sam proces przygotowania biblioteki jest dobrze opisany w dokumentacji. M??j kod by?? ju?? podzielony na modu??y, pozosta??o wiÄ?c napisanie dokumentacji w formacie Scribble i wype??nienie pliku info.ss. Mo??liwe do ustawienia atrybuty dla info.ss sÄ? ??adnie opisane we wspomnianym ju?? dokumencie, skupiÄ? siÄ? wiÄ?c na samej tylko dokumentacji.
UpraszczajÄ?c, dokument Scribble pisze siÄ? tak, jak zwyk??y dokument tekstowy.
Jest jednak dostÄ?pny ca??y zestaw specjalnych znacznik??w umo??liwiajÄ?cych
linkowanie do innych stron dokumentacji, zagnie??d??anie kodu Scheme, wizualne
upiÄ?kszanie tekstu itp. Przede wszystkim dokument musi zaczynaÄ? siÄ? od
#lang scribble/doc, po czy zazwyczaj nastÄ?puje require.
Warta zapamiÄ?tania jest sk??adnia z for-label.
Nag????wek pliku manual.scrbl z pakietu identikon wyglÄ?da nastÄ?pujÄ?co:
#lang scribble/doc
@(require scribble/manual
scribble/eval
(for-label scheme/gui)
(for-label “identicons.ss”))
@title{Identicons library}
@title ustawia tytu?? strony z dokumentacjÄ?. Przy dokumentowaniu
modu????w po tytule nastÄ?puje zazwyczaj znacznik
@defmodule.
Efektem ubocznym zwyk??ego @defmodule jest zaimportowanie podanego modu??u,
co w przypadku dokumentowania biblioteki, kt??rej jeszcze na planecie nie ma, jest do??Ä?
niefortunne. Problem uda??o mi siÄ? obej??Ä? w nastÄ?pujÄ?cy spos??b:
@defmodule*/no-declare[((planet “identicons.ss” (“mk” “identicons.plt”)))]
@declare-exporting[“identicons.ss”]
Poza tÄ? ma??Ä? niedogodno??ciÄ? inne znaczniki dzia??ajÄ? bez wiÄ?kszych niespodzianek. Dla wygody zebra??em poni??ej wszystkie znaczniki, jakich u??y??em w dokumentacji identikon:
- @section
- @link
- @bold
- @tt
- @scheme
- @method
- @defclass
- @defconstructor/make
- @defmethod
- @defproc
- @schemeblock
Przy okazji budowania dokumentacji natrafi??em na b??Ä?d, kt??ry niezw??ocznie zg??osi??em. Nie minÄ???o 5 godzin jak w repozytorium PLT pojawi??a siÄ? poprawka. To siÄ? nazywa dobry support w projekcie open-source! Lista dyskusyjna r??wnie?? dzia??a bardzo sprawnie i wcale nierzadko mo??na otrzymaÄ? odpowied?? od samego Matthiasa Felleisena, wsp????autora m.in. wspomnianego wcze??niej “Ma??ego Schemera”. Wok???? PLT istnieje aktywna spo??eczno??Ä?, z kt??rÄ? warto siÄ? zapoznaÄ?. Do us??yszenia wiÄ?c na plt-scheme!