Prog.varedetaljer:
Versjon: 0.83
Last opp dato: 20 Feb 15
Lisens: Gratis
Popularitet: 0
XHPy strekker Python syntaks slik at XML-fragmenter bli gyldige Python uttrykk.
Fordeler
& Nbsp; * Enkelhet: skrive UI logikk i en enkel, uttrykksfull syntaks uten behov for eksterne maler eller templating språk.
& Nbsp; * Fleksibilitet: bruk Python uttrykk fritt innenfor XHPy koder, og vice-versa.
& Nbsp; * Sikkerhet: nytte av automatisk rømmer av tekst i XHPy koder.
& Nbsp; * Gjenbruk: bygge gjenbrukbare komponenter ved subclassing: x: element.
Et eksempel
I bar.py:
fra xhpy.init import register_xhpy_module
register_xhpy_module ('foo')
import foo
I foo.py:
fra xhpy.pylib import *
klasse: ui: foo (: x: element):
& Nbsp; attributtliste bar
& Nbsp; kategori% flyt
& Nbsp; def gjengi (egen-):
& Nbsp; a =
& Nbsp; for b in self.getAttribute ("bar"):
& Nbsp; a.appendChild (
& Nbsp; returnere en
Vi kan nå kjøre bar.py som en normal Python-skript:
$ Python bar.py
- 0
- 1
- 2
Gratulerer! Du bare skrev din første bit med XHPy.
Syntax
XHPy legger noen nye syntaksen til Python. Linje for linje replay tid!
fra xhpy.init import register_xhpy_module
Dette initialiserer XHPy og lar deg registrere moduler tolkes som XHPy.
register_xhpy_module ('foo')
Nå foo modul i foo.py vil bli tolket som XHPy når de importeres. Hvis foo var en pakke, vil alle dens undermoduler også registreres; Dette er nyttig for å registrere UI biblioteker.
import foo
Å faktisk bruke XHPy, men du vil sannsynligvis ønske kjernen bibliotek:
fra xhpy.pylib import *
Nå har du tilgang til alle standard HTML 4,0 elementer, den: x: element base klasse (dette er hva du bygge tilpassede komponenter oppå!), Og noen verktøy.
klasse: ui: foo (: x: element):
Lage nye komponenter er enkelt: bare underklasse: x: element. For komponenten klasse som skal registreres, må den starte med: - dette klart skiller komponentene fra vanlige Python klasser.
attributt liste bar
Dette er en egenskap erklæring, noe som betyr at: ui: foo tillater bar attributter på
senere - som XHP, bruker XHPy XML-attributtet syntaks.
kategori% flyt
Dette er en kategori erklæring -: ui: foo er en del av% flyt kategorien. Kategorier er primært nyttig som en måte å identifisere elementer som er tilsvarende uten bruk arv; for eksempel har tag i pylib.html
barn (PCDATA |% flow) *
indikerer at dets barn må enten inneholde tekst eller være av% flyt kategorien. (Så kan vi sette
def gjengi (egen-):
Når du skriver ut en: x: element (eller ring str på den), gjengi () metode kalles; Dette er hvor du setter din UI logikk.
a =
for bi self.getAttribute ("bar"):
& Nbsp; a.appendChild (
returnere en
Her
- som lar deg konstruere en uordnet liste ut av et Python-listen. Standard HTML-elementer som
- blir automatisk gjengitt - bortsett fra at i XHPy, kan du bruke Python uttrykk innenfor koder, slik at
{B}
er erstattet av verdien av b. Legg merke til bruken av getAttribute () og appendChild ():
self.getAttribute ('bar')
henter verdien av attributtet bar (i dette tilfelle, område (3)), mens
a.appendChild ( - {b} )
- {b} som barn av en =
- og
legger
XHPy er i stor grad basert off XHP; for mer informasjon om sistnevnte, se `XHP wiki
& Nbsp; * XHPy klassenavn kan brukes hvor som helst ordinære Python klasser kan;
& Nbsp; * XHPy tags ignorere interne mellomrom, men må eksternt adlyde skår og linjefortsettelsesreglene.
Mer på det siste punktet:
def foo (href):
& Nbsp; retur
def bar (href):
& Nbsp; returnere
& Nbsp;
er gyldig, mens
def foo (href):
& Nbsp; returnere
& Nbsp;
& Nbsp;
er ikke, som det introduserer en ekstra dedent etter
Hvordan det fungerer
Når du
import xhpy.init
XHPy installerer en import kroken. Denne kroken feller påfølgende import uttalelser, kjører dem gjennom en preprosessor som analyserer en overordnet sett Python. Dette preprosessor overs XHPy koder og klasse navn til gyldig Python, deretter kjører oversatt kode i modulen omfang.
Dette ligner på hvordan XHP fungerer, bortsett fra:
& Nbsp; * med, for eksempel, pythonenv, kan du alltids bruke XHPy selv uten tilgang til hele systemet Python pakke installasjons kataloger;
. & Nbsp; * som standard, kompilerer Python Bytecode .pyc filer fra moduler, slik at forbehandling bare må gjøres en gang når en modul er først importert
Krav :
- Python
Kommentarer ikke funnet