[Gelistirici] autoxml -> autopiksemel

S.Çağlar Onur caglar at pardus.org.tr
28 Nis 2007 Cmt 23:22:18 EEST


28 Nis 2007 Cts tarihinde, Gürer Özen şunları yazmıştı: 
> Özellikle tanımlamaların yazıldığı sentaks konusunda fikirleriniz lazım,
> anlaşılıyor mu, daha kısa yazılabilir mi vb..
>
> Hazır olunca, PiSi'ye entegre etmek için, rm -rf pisi/pxml yaptıktan sonra,
> specfile.py gibi yerlerdeki tanımlamaları yeni sentaksla değiştirmek
> yetecek.

Syntax bence yeterince hoş duruyor (autoxml'in sevdiğim tek yanı syntax'ı 
zaten :P) fakat aklıma başka bir soru takıldı;

class Source(AutoPiksemel):
    name        = Tag("Name")
    homepage    = Tag("Homepage")
    packager    = Tag("Packager", Packager)
    summary     = TagLocalized("Summary")
    description = TagLocalized("Description", optional)
    isa         = Tag("IsA", optional, multiple)
    partof      = Tag("PartOf", optional)
    icon        = Tag("Icon", optional)
    license     = Tag("License", multiple)
    archive     = Tag("Archive", Archive)
    patches     = TagCollection("Patches", "Patch", Patch, optional)
    build_deps  = TagCollection("BuildDependencies","Dependency", Dependency, 
optional)
    # Following are found in the index, not in pspecs
    version     = Tag("Version", optional)
    release     = Tag("Release", optional)
    sourceuri   = Tag("SourceURI", optional)
    
    def validate(self, ctx):
        valid_isas = (
            "app", "app:console", "app:gui", "app:web",
            "library", "service", "kernel", "driver",
            "data", "data:doc", "data:font",
            "locale", "locale:tr", "locale:en", "locale:es", "locale:nl",
            "locale:de", "locale:it", "locale:fr"
        )
        for isa in self.isa:
            if isa not in valid_isas:
                ctx.error("invalid IsA value '%s'" % isa)

Yeni specfile'ın sadece tanımlamaları içeren bir yapıda olmasını tercih 
edeceğim sanırım bunu sağlamak için validateleri alıp tek başına bir 
Validator class/methodları serisi yapıp bunu kullansak ve her tag veya class 
ile eşleştirsek daha hoş/temiz/doğru olacak gibi. 

class Source(AutoPiksemel):
    name        = Tag("Name", validator.validName)
    homepage    = Tag("Homepage", validator.validHomepage)
...
    isa         = Tag("IsA", optional, validator.validateISA)
....

Ne dersiniz?

-- 
S.Çağlar Onur <caglar at pardus.org.tr>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: kullanılamıyor
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20070428/c700de04/attachment-0002.pgp>


Gelistirici mesaj listesiyle ilgili daha fazla bilgi