| @@ -0,0 +1,55 @@ | ||
| default.doesnt.match.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non corrisponde al pattern [{3}] | ||
| default.invalid.url.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un URL valido | ||
| default.invalid.creditCard.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un numero di carta di credito valido | ||
| default.invalid.email.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un indirizzo email valido | ||
| default.invalid.range.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non rientra nell'intervallo valido da [{3}] a [{4}] | ||
| default.invalid.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non rientra nell'intervallo di dimensioni valide da [{3}] a [{4}] | ||
| default.invalid.max.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è maggiore di [{3}] | ||
| default.invalid.min.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è minore di [{3}] | ||
| default.invalid.max.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è maggiore di [{3}] | ||
| default.invalid.min.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è minore di [{3}] | ||
| default.invalid.validator.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è valida | ||
| default.not.inlist.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è contenuta nella lista [{3}] | ||
| default.blank.message=La proprietà [{0}] della classe [{1}] non può essere vuota | ||
| default.not.equal.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non può essere uguale a [{3}] | ||
| default.null.message=La proprietà [{0}] della classe [{1}] non può essere null | ||
| default.not.unique.message=La proprietà [{0}] della classe [{1}] con valore [{2}] deve essere unica | ||
|
|
||
| default.paginate.prev=Precedente | ||
| default.paginate.next=Successivo | ||
| default.boolean.true=Vero | ||
| default.boolean.false=Falso | ||
| default.date.format=dd/MM/yyyy HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message={0} {1} creato | ||
| default.updated.message={0} {1} aggiornato | ||
| default.deleted.message={0} {1} eliminato | ||
| default.not.deleted.message={0} {1} non può essere eliminato | ||
| default.not.found.message={0} non trovato con id {1} | ||
| default.optimistic.locking.failure=Un altro utente ha aggiornato questo {0} mentre si era in modifica | ||
|
|
||
| default.home.label=Home | ||
| default.list.label={0} Elenco | ||
| default.add.label=Aggiungi {0} | ||
| default.new.label=Nuovo {0} | ||
| default.create.label=Crea {0} | ||
| default.show.label=Mostra {0} | ||
| default.edit.label=Modifica {0} | ||
|
|
||
| default.button.create.label=Crea | ||
| default.button.edit.label=Modifica | ||
| default.button.update.label=Aggiorna | ||
| default.button.delete.label=Elimina | ||
| default.button.delete.confirm.message=Si è sicuri? | ||
|
|
||
| # Data binding errors. Usa "typeMismatch.$className.$propertyName per la personalizzazione (es typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=La proprietà {0} deve essere un URL valido | ||
| typeMismatch.java.net.URI=La proprietà {0} deve essere un URI valido | ||
| typeMismatch.java.util.Date=La proprietà {0} deve essere una data valida | ||
| typeMismatch.java.lang.Double=La proprietà {0} deve essere un numero valido | ||
| typeMismatch.java.lang.Integer=La proprietà {0} deve essere un numero valido | ||
| typeMismatch.java.lang.Long=La proprietà {0} deve essere un numero valido | ||
| typeMismatch.java.lang.Short=La proprietà {0} deve essere un numero valido | ||
| typeMismatch.java.math.BigDecimal=La proprietà {0} deve essere un numero valido | ||
| typeMismatch.java.math.BigInteger=La proprietà {0} deve essere un numero valido |
| @@ -0,0 +1,55 @@ | ||
| default.doesnt.match.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]パターンと一致していません。 | ||
| default.invalid.url.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なURLではありません。 | ||
| default.invalid.creditCard.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なクレジットカード番号ではありません。 | ||
| default.invalid.email.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、有効なメールアドレスではありません。 | ||
| default.invalid.range.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]範囲内を指定してください。 | ||
| default.invalid.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]以内を指定してください。 | ||
| default.invalid.max.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最大値[{3}]より大きいです。 | ||
| default.invalid.min.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最小値[{3}]より小さいです。 | ||
| default.invalid.max.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最大値[{3}]より大きいです。 | ||
| default.invalid.min.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最小値[{3}]より小さいです。 | ||
| default.invalid.validator.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、カスタムバリデーションを通過できません。 | ||
| default.not.inlist.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]リスト内に存在しません。 | ||
| default.blank.message=[{1}]クラスのプロパティ[{0}]の空白は許可されません。 | ||
| default.not.equal.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]と同等ではありません。 | ||
| default.null.message=[{1}]クラスのプロパティ[{0}]にnullは許可されません。 | ||
| default.not.unique.message=クラス[{1}]プロパティ[{0}]の値[{2}]は既に使用されています。 | ||
|
|
||
| default.paginate.prev=戻る | ||
| default.paginate.next=次へ | ||
| default.boolean.true=はい | ||
| default.boolean.false=いいえ | ||
| default.date.format=yyyy/MM/dd HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message={0}(id:{1})を作成しました。 | ||
| default.updated.message={0}(id:{1})を更新しました。 | ||
| default.deleted.message={0}(id:{1})を削除しました。 | ||
| default.not.deleted.message={0}(id:{1})は削除できませんでした。 | ||
| default.not.found.message={0}(id:{1})は見つかりませんでした。 | ||
| default.optimistic.locking.failure=この{0}は編集中に他のユーザによって先に更新されています。 | ||
|
|
||
| default.home.label=ホーム | ||
| default.list.label={0}リスト | ||
| default.add.label={0}を追加 | ||
| default.new.label={0}を新規作成 | ||
| default.create.label={0}を作成 | ||
| default.show.label={0}詳細 | ||
| default.edit.label={0}を編集 | ||
|
|
||
| default.button.create.label=作成 | ||
| default.button.edit.label=編集 | ||
| default.button.update.label=更新 | ||
| default.button.delete.label=削除 | ||
| default.button.delete.confirm.message=本当に削除してよろしいですか? | ||
|
|
||
| # Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL={0}は有効なURLでなければなりません。 | ||
| typeMismatch.java.net.URI={0}は有効なURIでなければなりません。 | ||
| typeMismatch.java.util.Date={0}は有効な日付でなければなりません。 | ||
| typeMismatch.java.lang.Double={0}は有効な数値でなければなりません。 | ||
| typeMismatch.java.lang.Integer={0}は有効な数値でなければなりません。 | ||
| typeMismatch.java.lang.Long={0}は有効な数値でなければなりません。 | ||
| typeMismatch.java.lang.Short={0}は有効な数値でなければなりません。 | ||
| typeMismatch.java.math.BigDecimal={0}は有効な数値でなければなりません。 | ||
| typeMismatch.java.math.BigInteger={0}は有効な数値でなければなりません。 |
| @@ -0,0 +1,56 @@ | ||
| default.doesnt.match.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overholder ikke mønsteret [{3}] | ||
| default.invalid.url.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke en gyldig URL | ||
| default.invalid.creditCard.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke et gyldig kredittkortnummer | ||
| default.invalid.email.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke en gyldig epostadresse | ||
| default.invalid.range.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke innenfor intervallet [{3}] til [{4}] | ||
| default.invalid.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er ikke innenfor intervallet [{3}] til [{4}] | ||
| default.invalid.max.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overstiger maksimumsverdien på [{3}] | ||
| default.invalid.min.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er under minimumsverdien på [{3}] | ||
| default.invalid.max.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overstiger maksimumslengden på [{3}] | ||
| default.invalid.min.size.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] er kortere enn minimumslengden på [{3}] | ||
| default.invalid.validator.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] overholder ikke den brukerdefinerte valideringen | ||
| default.not.inlist.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] finnes ikke i listen [{3}] | ||
| default.blank.message=Feltet [{0}] i klassen [{1}] kan ikke være tom | ||
| default.not.equal.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] kan ikke være [{3}] | ||
| default.null.message=Feltet [{0}] i klassen [{1}] kan ikke være null | ||
| default.not.unique.message=Feltet [{0}] i klassen [{1}] med verdien [{2}] må være unik | ||
|
|
||
| default.paginate.prev=Forrige | ||
| default.paginate.next=Neste | ||
| default.boolean.true=Ja | ||
| default.boolean.false=Nei | ||
| default.date.format=dd.MM.yyyy HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message={0} {1} opprettet | ||
| default.updated.message={0} {1} oppdatert | ||
| default.deleted.message={0} {1} slettet | ||
| default.not.deleted.message={0} {1} kunne ikke slettes | ||
| default.not.found.message={0} med id {1} ble ikke funnet | ||
| default.optimistic.locking.failure=En annen bruker har oppdatert denne {0} mens du redigerte | ||
|
|
||
| default.home.label=Hjem | ||
| default.list.label={0}liste | ||
| default.add.label=Legg til {0} | ||
| default.new.label=Ny {0} | ||
| default.create.label=Opprett {0} | ||
| default.show.label=Vis {0} | ||
| default.edit.label=Endre {0} | ||
|
|
||
| default.button.create.label=Opprett | ||
| default.button.edit.label=Endre | ||
| default.button.update.label=Oppdater | ||
| default.button.delete.label=Slett | ||
| default.button.delete.confirm.message=Er du sikker? | ||
|
|
||
| # Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=Feltet {0} må være en gyldig URL | ||
| typeMismatch.java.net.URI=Feltet {0} må være en gyldig URI | ||
| typeMismatch.java.util.Date=Feltet {0} må være en gyldig dato | ||
| typeMismatch.java.lang.Double=Feltet {0} må være et gyldig tall | ||
| typeMismatch.java.lang.Integer=Feltet {0} må være et gyldig heltall | ||
| typeMismatch.java.lang.Long=Feltet {0} må være et gyldig heltall | ||
| typeMismatch.java.lang.Short=Feltet {0} må være et gyldig heltall | ||
| typeMismatch.java.math.BigDecimal=Feltet {0} må være et gyldig tall | ||
| typeMismatch.java.math.BigInteger=Feltet {0} må være et gyldig heltall | ||
|
|
| @@ -0,0 +1,55 @@ | ||
| default.doesnt.match.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] komt niet overeen met het vereiste patroon [{3}] | ||
| default.invalid.url.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldige URL | ||
| default.invalid.creditCard.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldig credit card nummer | ||
| default.invalid.email.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldig e-mailadres | ||
| default.invalid.range.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] valt niet in de geldige waardenreeks van [{3}] tot [{4}] | ||
| default.invalid.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] valt niet in de geldige grootte van [{3}] tot [{4}] | ||
| default.invalid.max.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumwaarde [{3}] | ||
| default.invalid.min.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan de minimumwaarde [{3}] | ||
| default.invalid.max.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumgrootte van [{3}] | ||
| default.invalid.min.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan minimumgrootte van [{3}] | ||
| default.invalid.validator.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is niet geldig | ||
| default.not.inlist.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] komt niet voor in de lijst [{3}] | ||
| default.blank.message=Attribuut [{0}] van entiteit [{1}] mag niet leeg zijn | ||
| default.not.equal.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] mag niet gelijk zijn aan [{3}] | ||
| default.null.message=Attribuut [{0}] van entiteit [{1}] mag niet leeg zijn | ||
| default.not.unique.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] moet uniek zijn | ||
|
|
||
| default.paginate.prev=Vorige | ||
| default.paginate.next=Volgende | ||
| default.boolean.true=Ja | ||
| default.boolean.false=Nee | ||
| default.date.format=dd-MM-yyyy HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message={0} {1} ingevoerd | ||
| default.updated.message={0} {1} gewijzigd | ||
| default.deleted.message={0} {1} verwijderd | ||
| default.not.deleted.message={0} {1} kon niet worden verwijderd | ||
| default.not.found.message={0} met id {1} kon niet worden gevonden | ||
| default.optimistic.locking.failure=Een andere gebruiker heeft deze {0} al gewijzigd | ||
|
|
||
| default.home.label=Home | ||
| default.list.label={0} Overzicht | ||
| default.add.label=Toevoegen {0} | ||
| default.new.label=Invoeren {0} | ||
| default.create.label=Invoeren {0} | ||
| default.show.label=Details {0} | ||
| default.edit.label=Wijzigen {0} | ||
|
|
||
| default.button.create.label=Invoeren | ||
| default.button.edit.label=Wijzigen | ||
| default.button.update.label=Opslaan | ||
| default.button.delete.label=Verwijderen | ||
| default.button.delete.confirm.message=Weet je het zeker? | ||
|
|
||
| # Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=Attribuut {0} is geen geldige URL | ||
| typeMismatch.java.net.URI=Attribuut {0} is geen geldige URI | ||
| typeMismatch.java.util.Date=Attribuut {0} is geen geldige datum | ||
| typeMismatch.java.lang.Double=Attribuut {0} is geen geldig nummer | ||
| typeMismatch.java.lang.Integer=Attribuut {0} is geen geldig nummer | ||
| typeMismatch.java.lang.Long=Attribuut {0} is geen geldig nummer | ||
| typeMismatch.java.lang.Short=Attribuut {0} is geen geldig nummer | ||
| typeMismatch.java.math.BigDecimal=Attribuut {0} is geen geldig nummer | ||
| typeMismatch.java.math.BigInteger=Attribuut {0} is geen geldig nummer |
| @@ -0,0 +1,59 @@ | ||
| # | ||
| # Translated by Matthias Hryniszak - padcom@gmail.com | ||
| # | ||
|
|
||
| default.doesnt.match.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie pasuje do wymaganego wzorca [{3}] | ||
| default.invalid.url.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest niepoprawnym adresem URL | ||
| default.invalid.creditCard.message=Właściwość [{0}] klasy [{1}] with value [{2}] nie jest poprawnym numerem karty kredytowej | ||
| default.invalid.email.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie jest poprawnym adresem e-mail | ||
| default.invalid.range.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się zakładanym zakresie od [{3}] do [{4}] | ||
| default.invalid.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się w zakładanym zakresie rozmiarów od [{3}] do [{4}] | ||
| default.invalid.max.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] przekracza maksymalną wartość [{3}] | ||
| default.invalid.min.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest mniejsza niż minimalna wartość [{3}] | ||
| default.invalid.max.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] przekracza maksymalny rozmiar [{3}] | ||
| default.invalid.min.size.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] jest mniejsza niż minimalny rozmiar [{3}] | ||
| default.invalid.validator.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie spełnia założonych niestandardowych warunków | ||
| default.not.inlist.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie zawiera się w liście [{3}] | ||
| default.blank.message=Właściwość [{0}] klasy [{1}] nie może być pusta | ||
| default.not.equal.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] nie może równać się [{3}] | ||
| default.null.message=Właściwość [{0}] klasy [{1}] nie może być null | ||
| default.not.unique.message=Właściwość [{0}] klasy [{1}] o wartości [{2}] musi być unikalna | ||
|
|
||
| default.paginate.prev=Poprzedni | ||
| default.paginate.next=Następny | ||
| default.boolean.true=Prawda | ||
| default.boolean.false=Fałsz | ||
| default.date.format=yyyy-MM-dd HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message=Utworzono {0} {1} | ||
| default.updated.message=Zaktualizowano {0} {1} | ||
| default.deleted.message=Usunięto {0} {1} | ||
| default.not.deleted.message={0} {1} nie mógł zostać usunięty | ||
| default.not.found.message=Nie znaleziono {0} o id {1} | ||
| default.optimistic.locking.failure=Inny użytkownik zaktualizował ten obiekt {0} w trakcie twoich zmian | ||
|
|
||
| default.home.label=Strona domowa | ||
| default.list.label=Lista {0} | ||
| default.add.label=Dodaj {0} | ||
| default.new.label=Utwórz {0} | ||
| default.create.label=Utwórz {0} | ||
| default.show.label=Pokaż {0} | ||
| default.edit.label=Edytuj {0} | ||
|
|
||
| default.button.create.label=Utwórz | ||
| default.button.edit.label=Edytuj | ||
| default.button.update.label=Zaktualizuj | ||
| default.button.delete.label=Usuń | ||
| default.button.delete.confirm.message=Czy jesteś pewien? | ||
|
|
||
| # Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=Właściwość {0} musi być poprawnym adresem URL | ||
| typeMismatch.java.net.URI=Właściwość {0} musi być poprawnym adresem URI | ||
| typeMismatch.java.util.Date=Właściwość {0} musi być poprawną datą | ||
| typeMismatch.java.lang.Double=Właściwość {0} musi być poprawnyą liczbą | ||
| typeMismatch.java.lang.Integer=Właściwość {0} musi być poprawnyą liczbą | ||
| typeMismatch.java.lang.Long=Właściwość {0} musi być poprawnyą liczbą | ||
| typeMismatch.java.lang.Short=Właściwość {0} musi być poprawnyą liczbą | ||
| typeMismatch.java.math.BigDecimal=Właściwość {0} musi być poprawnyą liczbą | ||
| typeMismatch.java.math.BigInteger=Właściwość {0} musi być poprawnyą liczbą |
| @@ -0,0 +1,59 @@ | ||
| # | ||
| # Translated by Lucas Teixeira - lucastex@gmail.com | ||
| # | ||
|
|
||
| default.doesnt.match.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atende ao padrão definido [{3}] | ||
| default.invalid.url.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é uma URL válida | ||
| default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um número válido de cartão de crédito | ||
| default.invalid.email.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um endereço de email válido. | ||
| default.invalid.range.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está entre a faixa de valores válida de [{3}] até [{4}] | ||
| default.invalid.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está na faixa de tamanho válida de [{3}] até [{4}] | ||
| default.invalid.max.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapass o valor máximo [{3}] | ||
| default.invalid.min.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o valor mínimo [{3}] | ||
| default.invalid.max.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}] | ||
| default.invalid.min.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o tamanho mínimo de [{3}] | ||
| default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}] não passou na validação | ||
| default.not.inlist.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um valor dentre os permitidos na lista [{3}] | ||
| default.blank.message=O campo [{0}] da classe [{1}] não pode ficar em branco | ||
| default.not.equal.message=O campo [{0}] da classe [{1}] com o valor [{2}] não pode ser igual a [{3}] | ||
| default.null.message=O campo [{0}] da classe [{1}] não pode ser vazia | ||
| default.not.unique.message=O campo [{0}] da classe [{1}] com o valor [{2}] deve ser único | ||
|
|
||
| default.paginate.prev=Anterior | ||
| default.paginate.next=Próximo | ||
| default.boolean.true=Sim | ||
| default.boolean.false=Não | ||
| default.date.format=dd/MM/yyyy HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message={0} {1} criado | ||
| default.updated.message={0} {1} atualizado | ||
| default.deleted.message={0} {1} removido | ||
| default.not.deleted.message={0} {1} não pode ser removido | ||
| default.not.found.message={0} não foi encontrado com id {1} | ||
| default.optimistic.locking.failure=Outro usuário atualizou este [{0}] enquanto você tentou salvá-lo | ||
|
|
||
| default.home.label=Principal | ||
| default.list.label={0} Listagem | ||
| default.add.label=Adicionar {0} | ||
| default.new.label=Novo {0} | ||
| default.create.label=Criar {0} | ||
| default.show.label=Ver {0} | ||
| default.edit.label=Editar {0} | ||
|
|
||
| default.button.create.label=Criar | ||
| default.button.edit.label=Editar | ||
| default.button.update.label=Alterar | ||
| default.button.delete.label=Remover | ||
| default.button.delete.confirm.message=Tem certeza? | ||
|
|
||
| # Mensagens de erro em atribuição de valores. Use "typeMismatch.$className.$propertyName" para customizar (eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=O campo {0} deve ser uma URL válida. | ||
| typeMismatch.java.net.URI=O campo {0} deve ser uma URI válida. | ||
| typeMismatch.java.util.Date=O campo {0} deve ser uma data válida | ||
| typeMismatch.java.lang.Double=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.lang.Integer=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.lang.Long=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.lang.Short=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido. |
| @@ -0,0 +1,34 @@ | ||
| # | ||
| # translation by miguel.ping@gmail.com, based on pt_BR translation by Lucas Teixeira - lucastex@gmail.com | ||
| # | ||
|
|
||
| default.doesnt.match.message=O campo [{0}] da classe [{1}] com o valor [{2}] não corresponde ao padrão definido [{3}] | ||
| default.invalid.url.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um URL válido | ||
| default.invalid.creditCard.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um número válido de cartão de crédito | ||
| default.invalid.email.message=O campo [{0}] da classe [{1}] com o valor [{2}] não é um endereço de email válido. | ||
| default.invalid.range.message=O campo [{0}] da classe [{1}] com o valor [{2}] não está dentro dos limites de valores válidos de [{3}] a [{4}] | ||
| default.invalid.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] está fora dos limites de tamanho válido de [{3}] a [{4}] | ||
| default.invalid.max.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o valor máximo [{3}] | ||
| default.invalid.min.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o valor mínimo [{3}] | ||
| default.invalid.max.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] ultrapassa o tamanho máximo de [{3}] | ||
| default.invalid.min.size.message=O campo [{0}] da classe [{1}] com o valor [{2}] não atinge o tamanho mínimo de [{3}] | ||
| default.invalid.validator.message=O campo [{0}] da classe [{1}] com o valor [{2}] não passou na validação | ||
| default.not.inlist.message=O campo [{0}] da classe [{1}] com o valor [{2}] não se encontra nos valores permitidos da lista [{3}] | ||
| default.blank.message=O campo [{0}] da classe [{1}] não pode ser vazio | ||
| default.not.equal.message=O campo [{0}] da classe [{1}] com o valor [{2}] não pode ser igual a [{3}] | ||
| default.null.message=O campo [{0}] da classe [{1}] não pode ser vazio | ||
| default.not.unique.message=O campo [{0}] da classe [{1}] com o valor [{2}] deve ser único | ||
|
|
||
| default.paginate.prev=Anterior | ||
| default.paginate.next=Próximo | ||
|
|
||
| # Mensagens de erro em atribuição de valores. Use "typeMismatch.$className.$propertyName" para personalizar(eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=O campo {0} deve ser um URL válido. | ||
| typeMismatch.java.net.URI=O campo {0} deve ser um URI válido. | ||
| typeMismatch.java.util.Date=O campo {0} deve ser uma data válida | ||
| typeMismatch.java.lang.Double=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.lang.Integer=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.lang.Long=O campo {0} deve ser um número valido. | ||
| typeMismatch.java.lang.Short=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido. | ||
| typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido. |
| @@ -0,0 +1,31 @@ | ||
| default.doesnt.match.message=Значение [{2}] поля [{0}] класса [{1}] не соответствует образцу [{3}] | ||
| default.invalid.url.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым URL-адресом | ||
| default.invalid.creditCard.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым номером кредитной карты | ||
| default.invalid.email.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым e-mail адресом | ||
| default.invalid.range.message=Значение [{2}] поля [{0}] класса [{1}] не попадает в допустимый интервал от [{3}] до [{4}] | ||
| default.invalid.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) не попадает в допустимый интервал от [{3}] до [{4}] | ||
| default.invalid.max.message=Значение [{2}] поля [{0}] класса [{1}] больше чем максимально допустимое значение [{3}] | ||
| default.invalid.min.message=Значение [{2}] поля [{0}] класса [{1}] меньше чем минимально допустимое значение [{3}] | ||
| default.invalid.max.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) больше чем максимально допустимый размер [{3}] | ||
| default.invalid.min.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) меньше чем минимально допустимый размер [{3}] | ||
| default.invalid.validator.message=Значение [{2}] поля [{0}] класса [{1}] не допустимо | ||
| default.not.inlist.message=Значение [{2}] поля [{0}] класса [{1}] не попадает в список допустимых значений [{3}] | ||
| default.blank.message=Поле [{0}] класса [{1}] не может быть пустым | ||
| default.not.equal.message=Значение [{2}] поля [{0}] класса [{1}] не может быть равно [{3}] | ||
| default.null.message=Поле [{0}] класса [{1}] не может иметь значение null | ||
| default.not.unique.message=Значение [{2}] поля [{0}] класса [{1}] должно быть уникальным | ||
|
|
||
| default.paginate.prev=Предыдушая страница | ||
| default.paginate.next=Следующая страница | ||
|
|
||
| # Ошибки при присвоении данных. Для точной настройки для полей классов используйте | ||
| # формат "typeMismatch.$className.$propertyName" (например, typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=Значение поля {0} не является допустимым URL | ||
| typeMismatch.java.net.URI=Значение поля {0} не является допустимым URI | ||
| typeMismatch.java.util.Date=Значение поля {0} не является допустимой датой | ||
| typeMismatch.java.lang.Double=Значение поля {0} не является допустимым числом | ||
| typeMismatch.java.lang.Integer=Значение поля {0} не является допустимым числом | ||
| typeMismatch.java.lang.Long=Значение поля {0} не является допустимым числом | ||
| typeMismatch.java.lang.Short=Значение поля {0} не является допустимым числом | ||
| typeMismatch.java.math.BigDecimal=Значение поля {0} не является допустимым числом | ||
| typeMismatch.java.math.BigInteger=Значение поля {0} не является допустимым числом |
| @@ -0,0 +1,55 @@ | ||
| default.doesnt.match.message=Attributet [{0}] för klassen [{1}] med värde [{2}] matchar inte mot uttrycket [{3}] | ||
| default.invalid.url.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte en giltig URL | ||
| default.invalid.creditCard.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte ett giltigt kreditkortsnummer | ||
| default.invalid.email.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte en giltig e-postadress | ||
| default.invalid.range.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte inom intervallet [{3}] till [{4}] | ||
| default.invalid.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] har en storlek som inte är inom [{3}] till [{4}] | ||
| default.invalid.max.message=Attributet [{0}] för klassen [{1}] med värde [{2}] överskrider maxvärdet [{3}] | ||
| default.invalid.min.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är mindre än minimivärdet [{3}] | ||
| default.invalid.max.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] överskrider maxstorleken [{3}] | ||
| default.invalid.min.size.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är mindre än minimistorleken [{3}] | ||
| default.invalid.validator.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte giltigt enligt anpassad regel | ||
| default.not.inlist.message=Attributet [{0}] för klassen [{1}] med värde [{2}] är inte giltigt, måste vara ett av [{3}] | ||
| default.blank.message=Attributet [{0}] för klassen [{1}] får inte vara tomt | ||
| default.not.equal.message=Attributet [{0}] för klassen [{1}] med värde [{2}] får inte vara lika med [{3}] | ||
| default.null.message=Attributet [{0}] för klassen [{1}] får inte vara tomt | ||
| default.not.unique.message=Attributet [{0}] för klassen [{1}] med värde [{2}] måste vara unikt | ||
|
|
||
| default.paginate.prev=Föregående | ||
| default.paginate.next=Nästa | ||
| default.boolean.true=Sant | ||
| default.boolean.false=Falskt | ||
| default.date.format=yyyy-MM-dd HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message={0} {1} skapades | ||
| default.updated.message={0} {1} uppdaterades | ||
| default.deleted.message={0} {1} borttagen | ||
| default.not.deleted.message={0} {1} kunde inte tas bort | ||
| default.not.found.message={0} med id {1} kunde inte hittas | ||
| default.optimistic.locking.failure=En annan användare har uppdaterat det här {0} objektet medan du redigerade det | ||
|
|
||
| default.home.label=Hem | ||
| default.list.label= {0} - Lista | ||
| default.add.label=Lägg till {0} | ||
| default.new.label=Skapa {0} | ||
| default.create.label=Skapa {0} | ||
| default.show.label=Visa {0} | ||
| default.edit.label=Ändra {0} | ||
|
|
||
| default.button.create.label=Skapa | ||
| default.button.edit.label=Ändra | ||
| default.button.update.label=Uppdatera | ||
| default.button.delete.label=Ta bort | ||
| default.button.delete.confirm.message=Är du säker? | ||
|
|
||
| # Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=Värdet för {0} måste vara en giltig URL | ||
| typeMismatch.java.net.URI=Värdet för {0} måste vara en giltig URI | ||
| typeMismatch.java.util.Date=Värdet {0} måste vara ett giltigt datum | ||
| typeMismatch.java.lang.Double=Värdet {0} måste vara ett giltigt nummer | ||
| typeMismatch.java.lang.Integer=Värdet {0} måste vara ett giltigt heltal | ||
| typeMismatch.java.lang.Long=Värdet {0} måste vara ett giltigt heltal | ||
| typeMismatch.java.lang.Short=Värdet {0} måste vara ett giltigt heltal | ||
| typeMismatch.java.math.BigDecimal=Värdet {0} måste vara ett giltigt nummer | ||
| typeMismatch.java.math.BigInteger=Värdet {0} måste vara ett giltigt heltal |
| @@ -0,0 +1,55 @@ | ||
| default.doesnt.match.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบที่กำหนดไว้ใน [{3}] | ||
| default.invalid.url.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบ URL | ||
| default.invalid.creditCard.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบหมายเลขบัตรเครดิต | ||
| default.invalid.email.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบอีเมล์ | ||
| default.invalid.range.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้มีค่าที่ถูกต้องในช่วงจาก [{3}] ถึง [{4}] | ||
| default.invalid.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้มีขนาดที่ถูกต้องในช่วงจาก [{3}] ถึง [{4}] | ||
| default.invalid.max.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีค่าเกิดกว่าค่ามากสุด [{3}] | ||
| default.invalid.min.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีค่าน้อยกว่าค่าต่ำสุด [{3}] | ||
| default.invalid.max.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีขนาดเกินกว่าขนาดมากสุดของ [{3}] | ||
| default.invalid.min.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีขนาดต่ำกว่าขนาดต่ำสุดของ [{3}] | ||
| default.invalid.validator.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ผ่านการทวนสอบค่าที่ตั้งขึ้น | ||
| default.not.inlist.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้อยู่ในรายการต่อไปนี้ [{3}] | ||
| default.blank.message=คุณสมบัติ [{0}] ของคลาส [{1}] ไม่สามารถเป็นค่าว่างได้ | ||
| default.not.equal.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่สามารถเท่ากับ [{3}] ได้ | ||
| default.null.message=คุณสมบัติ [{0}] ของคลาส [{1}] ไม่สามารถเป็น null ได้ | ||
| default.not.unique.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] จะต้องไม่ซ้ำ (unique) | ||
|
|
||
| default.paginate.prev=ก่อนหน้า | ||
| default.paginate.next=ถัดไป | ||
| default.boolean.true=จริง | ||
| default.boolean.false=เท็จ | ||
| default.date.format=dd-MM-yyyy HH:mm:ss z | ||
| default.number.format=0 | ||
|
|
||
| default.created.message=สร้าง {0} {1} เรียบร้อยแล้ว | ||
| default.updated.message=ปรับปรุง {0} {1} เรียบร้อยแล้ว | ||
| default.deleted.message=ลบ {0} {1} เรียบร้อยแล้ว | ||
| default.not.deleted.message=ไม่สามารถลบ {0} {1} | ||
| default.not.found.message=ไม่พบ {0} ด้วย id {1} นี้ | ||
| default.optimistic.locking.failure=มีผู้ใช้ท่านอื่นปรับปรุง {0} ขณะที่คุณกำลังแก้ไขข้อมูลอยู่ | ||
|
|
||
| default.home.label=หน้าแรก | ||
| default.list.label=รายการ {0} | ||
| default.add.label=เพิ่ม {0} | ||
| default.new.label=สร้าง {0} ใหม่ | ||
| default.create.label=สร้าง {0} | ||
| default.show.label=แสดง {0} | ||
| default.edit.label=แก้ไข {0} | ||
|
|
||
| default.button.create.label=สร้าง | ||
| default.button.edit.label=แก้ไข | ||
| default.button.update.label=ปรับปรุง | ||
| default.button.delete.label=ลบ | ||
| default.button.delete.confirm.message=คุณแน่ใจหรือไม่ ? | ||
|
|
||
| # Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author) | ||
| typeMismatch.java.net.URL=คุณสมบัติ '{0}' จะต้องเป็นค่า URL ที่ถูกต้อง | ||
| typeMismatch.java.net.URI=คุณสมบัติ '{0}' จะต้องเป็นค่า URI ที่ถูกต้อง | ||
| typeMismatch.java.util.Date=คุณสมบัติ '{0}' จะต้องมีค่าเป็นวันที่ | ||
| typeMismatch.java.lang.Double=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Double | ||
| typeMismatch.java.lang.Integer=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Integer | ||
| typeMismatch.java.lang.Long=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Long | ||
| typeMismatch.java.lang.Short=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Short | ||
| typeMismatch.java.math.BigDecimal=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigDecimal | ||
| typeMismatch.java.math.BigInteger=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigInteger |
| @@ -0,0 +1,18 @@ | ||
| default.blank.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3A\u7A7A | ||
| default.doesnt.match.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0E\u5B9A\u4E49\u7684\u6A21\u5F0F [{3}]\u4E0D\u5339\u914D | ||
| default.invalid.creditCard.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u4FE1\u7528\u5361\u53F7 | ||
| default.invalid.email.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740 | ||
| default.invalid.max.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u6BD4\u6700\u5927\u503C [{3}]\u8FD8\u5927 | ||
| default.invalid.max.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u6BD4\u6700\u5927\u503C [{3}]\u8FD8\u5927 | ||
| default.invalid.min.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u6BD4\u6700\u5C0F\u503C [{3}]\u8FD8\u5C0F | ||
| default.invalid.min.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u6BD4\u6700\u5C0F\u503C [{3}]\u8FD8\u5C0F | ||
| default.invalid.range.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u5728\u5408\u6CD5\u7684\u8303\u56F4\u5185( [{3}] \uFF5E [{4}] ) | ||
| default.invalid.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u4E0D\u5728\u5408\u6CD5\u7684\u8303\u56F4\u5185( [{3}] \uFF5E [{4}] ) | ||
| default.invalid.url.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684URL | ||
| default.invalid.validator.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u672A\u80FD\u901A\u8FC7\u81EA\u5B9A\u4E49\u7684\u9A8C\u8BC1 | ||
| default.not.equal.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0E[{3}]\u4E0D\u76F8\u7B49 | ||
| default.not.inlist.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u5728\u5217\u8868\u7684\u53D6\u503C\u8303\u56F4\u5185 | ||
| default.not.unique.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u5FC5\u987B\u662F\u552F\u4E00\u7684 | ||
| default.null.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3Anull | ||
| default.paginate.next=\u4E0B\u9875 | ||
| default.paginate.prev=\u4E0A\u9875 |
| @@ -0,0 +1,18 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <title><g:if env="development">Grails Runtime Exception</g:if><g:else>Error</g:else></title> | ||
| <meta name="layout" content="main"> | ||
| <g:if env="development"><asset:stylesheet src="errors.css"/></g:if> | ||
| </head> | ||
| <body> | ||
| <g:if env="development"> | ||
| <g:renderException exception="${exception}" /> | ||
| </g:if> | ||
| <g:else> | ||
| <ul class="errors"> | ||
| <li>An error has occurred</li> | ||
| </ul> | ||
| </g:else> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,122 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <meta name="layout" content="main"/> | ||
| <title>Welcome to Grails</title> | ||
| <style type="text/css" media="screen"> | ||
| #status { | ||
| background-color: #eee; | ||
| border: .2em solid #fff; | ||
| margin: 2em 2em 1em; | ||
| padding: 1em; | ||
| width: 12em; | ||
| float: left; | ||
| -moz-box-shadow: 0px 0px 1.25em #ccc; | ||
| -webkit-box-shadow: 0px 0px 1.25em #ccc; | ||
| box-shadow: 0px 0px 1.25em #ccc; | ||
| -moz-border-radius: 0.6em; | ||
| -webkit-border-radius: 0.6em; | ||
| border-radius: 0.6em; | ||
| } | ||
| .ie6 #status { | ||
| display: inline; /* float double margin fix http://www.positioniseverything.net/explorer/doubled-margin.html */ | ||
| } | ||
| #status ul { | ||
| font-size: 0.9em; | ||
| list-style-type: none; | ||
| margin-bottom: 0.6em; | ||
| padding: 0; | ||
| } | ||
| #status li { | ||
| line-height: 1.3; | ||
| } | ||
| #status h1 { | ||
| text-transform: uppercase; | ||
| font-size: 1.1em; | ||
| margin: 0 0 0.3em; | ||
| } | ||
| #page-body { | ||
| margin: 2em 1em 1.25em 18em; | ||
| } | ||
| h2 { | ||
| margin-top: 1em; | ||
| margin-bottom: 0.3em; | ||
| font-size: 1em; | ||
| } | ||
| p { | ||
| line-height: 1.5; | ||
| margin: 0.25em 0; | ||
| } | ||
| #controller-list ul { | ||
| list-style-position: inside; | ||
| } | ||
| #controller-list li { | ||
| line-height: 1.3; | ||
| list-style-position: inside; | ||
| margin: 0.25em 0; | ||
| } | ||
| @media screen and (max-width: 480px) { | ||
| #status { | ||
| display: none; | ||
| } | ||
| #page-body { | ||
| margin: 0 1em 1em; | ||
| } | ||
| #page-body h1 { | ||
| margin-top: 0; | ||
| } | ||
| } | ||
| </style> | ||
| </head> | ||
| <body> | ||
| <a href="#page-body" class="skip"><g:message code="default.link.skip.label" default="Skip to content…"/></a> | ||
| <div id="status" role="complementary"> | ||
| <h1>Application Status</h1> | ||
| <ul> | ||
| <li>App version: <g:meta name="app.version"/></li> | ||
| <li>Grails version: <g:meta name="app.grails.version"/></li> | ||
| <li>Groovy version: ${GroovySystem.getVersion()}</li> | ||
| <li>JVM version: ${System.getProperty('java.version')}</li> | ||
| <li>Reloading active: ${grails.util.Environment.reloadingAgentEnabled}</li> | ||
| <li>Controllers: ${grailsApplication.controllerClasses.size()}</li> | ||
| <li>Domains: ${grailsApplication.domainClasses.size()}</li> | ||
| <li>Services: ${grailsApplication.serviceClasses.size()}</li> | ||
| <li>Tag Libraries: ${grailsApplication.tagLibClasses.size()}</li> | ||
| </ul> | ||
| <h1>Installed Plugins</h1> | ||
| <ul> | ||
| <g:each var="plugin" in="${applicationContext.getBean('pluginManager').allPlugins}"> | ||
| <li>${plugin.name} - ${plugin.version}</li> | ||
| </g:each> | ||
| </ul> | ||
| </div> | ||
| <div id="page-body" role="main"> | ||
| <h1>Welcome to Grails</h1> | ||
| <p>Congratulations, you have successfully started your first Grails application! At the moment | ||
| this is the default page, feel free to modify it to either redirect to a controller or display whatever | ||
| content you may choose. Below is a list of controllers that are currently deployed in this application, | ||
| click on each to execute its default action:</p> | ||
|
|
||
| <div id="controller-list" role="navigation"> | ||
| <h2>Available Controllers:</h2> | ||
| <ul> | ||
| <g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }"> | ||
| <li class="controller"><g:link controller="${c.logicalPropertyName}">${c.fullName}</g:link></li> | ||
| </g:each> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,25 @@ | ||
| <!DOCTYPE html> | ||
| <!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]--> | ||
| <!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]--> | ||
| <!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]--> | ||
| <!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]--> | ||
| <!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]--> | ||
| <head> | ||
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||
| <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | ||
| <title><g:layoutTitle default="Grails"/></title> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| <link rel="shortcut icon" href="${assetPath(src: 'favicon.ico')}" type="image/x-icon"> | ||
| <link rel="apple-touch-icon" href="${assetPath(src: 'apple-touch-icon.png')}"> | ||
| <link rel="apple-touch-icon" sizes="114x114" href="${assetPath(src: 'apple-touch-icon-retina.png')}"> | ||
| <asset:stylesheet src="application.css"/> | ||
| <asset:javascript src="application.js"/> | ||
| <g:layoutHead/> | ||
| </head> | ||
| <body> | ||
| <div id="grailsLogo" role="banner"><a href="http://grails.org"><asset:image src="grails_logo.png" alt="Grails"/></a></div> | ||
| <g:layoutBody/> | ||
| <div class="footer" role="contentinfo"></div> | ||
| <div id="spinner" class="spinner" style="display:none;"><g:message code="spinner.alt" default="Loading…"/></div> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,16 @@ | ||
| <html> | ||
| <head> | ||
| <title>Current Projects</title> | ||
| </head> | ||
| <body> | ||
| <table border="1"> | ||
| <g:each in="${allProjects}" status="i" var="thisProject"> | ||
| <tr> | ||
| <td>${thisProject.name }</td> | ||
| <td>${thisProject.description }</td> | ||
| <td>${thisProject.dueDate }</td> | ||
| </tr> | ||
| </g:each> | ||
| </table> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,363 @@ | ||
| ############################################################################## | ||
| ## ## | ||
| ## Grails JVM Bootstrap for UN*X ## | ||
| ## ## | ||
| ############################################################################## | ||
|
|
||
| PROGNAME=`basename "$0"` | ||
| DIRNAME=`dirname "$0"` | ||
|
|
||
| # Use the maximum available, or set MAX_FD != -1 to use that | ||
| MAX_FD="maximum" | ||
|
|
||
| warn() { | ||
| echo "${PROGNAME}: $*" | ||
| } | ||
|
|
||
| die() { | ||
| warn "$*" | ||
| exit 1 | ||
| } | ||
|
|
||
| earlyInit() { | ||
| return | ||
| } | ||
| lateInit() { | ||
| return | ||
| } | ||
|
|
||
| GROOVY_STARTUP=~/.groovy/startup | ||
| if [ -r "$GROOVY_STARTUP" ]; then | ||
| . "$GROOVY_STARTUP" | ||
| fi | ||
|
|
||
| earlyInit | ||
|
|
||
| # OS specific support (must be 'true' or 'false'). | ||
| cygwin=false; | ||
| darwin=false; | ||
| mingw=false; | ||
| case "`uname`" in | ||
| CYGWIN*) | ||
| cygwin=true | ||
| ;; | ||
|
|
||
| Darwin*) | ||
| darwin=true | ||
| ;; | ||
|
|
||
| MINGW*) | ||
| mingw=true | ||
| ;; | ||
| esac | ||
|
|
||
| # Attempt to set JAVA_HOME if it's not already set | ||
| if [ -z "$JAVA_HOME" ]; then | ||
|
|
||
| # Set JAVA_HOME for Darwin | ||
| if $darwin; then | ||
|
|
||
| [ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] && | ||
| export JAVA_HOME="/Library/Java/Home" | ||
|
|
||
| [ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] && | ||
| export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home" | ||
|
|
||
| fi | ||
|
|
||
| fi | ||
|
|
||
| # For Cygwin, ensure paths are in UNIX format before anything is touched | ||
| if $cygwin ; then | ||
| [ -n "$GRAILS_HOME" ] && | ||
| GRAILS_HOME=`cygpath --unix "$GRAILS_HOME"` | ||
| [ -n "$JAVACMD" ] && | ||
| JAVACMD=`cygpath --unix "$JAVACMD"` | ||
| [ -n "$JAVA_HOME" ] && | ||
| JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | ||
| [ -n "$CP" ] && | ||
| CP=`cygpath --path --unix "$CP"` | ||
| fi | ||
|
|
||
| # quick detection of JDK version without JVM startup overhead | ||
| CLASSFILE_HEADER_FILE="${JAVA_HOME}/include/classfile_constants.h" | ||
| if [ -z "$GRAILS_NO_PERMGEN" -a -f "${CLASSFILE_HEADER_FILE}" ]; then | ||
| CLASSFILE_VERSION=`cat "${CLASSFILE_HEADER_FILE}" | grep "#define JVM_CLASSFILE_MAJOR_VERSION" | awk '{ print $3 }' 2> /dev/null` | ||
| if [ 0$CLASSFILE_VERSION -ge 52 ]; then | ||
| GRAILS_NO_PERMGEN=1 | ||
| fi | ||
| fi | ||
|
|
||
| # Remove possible trailing slash (after possible cygwin correction) | ||
| GRAILS_HOME=`echo $GRAILS_HOME | sed -e 's|/$||g'` | ||
|
|
||
| # Locate GRAILS_HOME if not it is not set | ||
| if [ -z "$GRAILS_HOME" -o ! -d "$GRAILS_HOME" ] ; then | ||
| # resolve links - $0 may be a link to groovy's home | ||
| PRG="$0" | ||
|
|
||
| # need this for relative symlinks | ||
| while [ -h "$PRG" ] ; do | ||
| ls=`ls -ld "$PRG"` | ||
| link=`expr "$ls" : '.*-> \(.*\)$'` | ||
| if expr "$link" : '/.*' > /dev/null; then | ||
| PRG="$link" | ||
| else | ||
| PRG=`dirname "$PRG"`"/$link" | ||
| fi | ||
| done | ||
|
|
||
| SAVED="`pwd`" | ||
| cd "`dirname \"$PRG\"`/.." | ||
| GRAILS_HOME="`pwd -P`" | ||
| cd "$SAVED" | ||
| fi | ||
|
|
||
| # Warn the user if JAVA_HOME and/or GRAILS_HOME are not set. | ||
| if [ -z "$JAVA_HOME" ] ; then | ||
| die "JAVA_HOME environment variable is not set" | ||
| elif [ ! -d "$JAVA_HOME" ] ; then | ||
| die "JAVA_HOME is not a directory: $JAVA_HOME" | ||
| fi | ||
|
|
||
| if [ -z "$GRAILS_HOME" ] ; then | ||
| warn "GRAILS_HOME environment variable is not set" | ||
| fi | ||
|
|
||
| if [ ! -d "$GRAILS_HOME" ] ; then | ||
| die "GRAILS_HOME is not a directory: $GRAILS_HOME" | ||
| fi | ||
|
|
||
| # Use default groovy-conf config | ||
| if [ -z "$STARTER_CONF" ]; then | ||
| STARTER_CONF="$GRAILS_HOME/conf/groovy-starter.conf" | ||
| fi | ||
| STARTER_CLASSPATH="wrapper/grails-wrapper-runtime-2.4.4.jar:wrapper:." | ||
|
|
||
| # Allow access to Cocoa classes on OS X | ||
| if $darwin; then | ||
| STARTER_CLASSPATH="$STARTER_CLASSPATH:/System/Library/Java/Support" | ||
| fi | ||
|
|
||
| # Create the final classpath | ||
| # Setting a classpath using the -cp or -classpath option means not to use | ||
| # the global classpath. Groovy behaves then the same as the java | ||
| # interpreter | ||
| if [ -n "$CP" ] ; then | ||
| CP="$CP" | ||
| elif [ -n "$CLASSPATH" ] ; then | ||
| CP="$CLASSPATH" | ||
| fi | ||
|
|
||
| # Determine the Java command to use to start the JVM | ||
| if [ -z "$JAVACMD" ]; then | ||
| if [ -n "$JAVA_HOME" ]; then | ||
| if [ -x "$JAVA_HOME/jre/sh/java" ]; then | ||
| # IBM's JDK on AIX uses strange locations for the executables | ||
| JAVACMD="$JAVA_HOME/jre/sh/java" | ||
| else | ||
| JAVACMD="$JAVA_HOME/bin/java" | ||
| fi | ||
| else | ||
| JAVACMD="java" | ||
| fi | ||
| fi | ||
| if [ ! -x "$JAVACMD" ]; then | ||
| die "JAVA_HOME is not defined correctly; can not execute: $JAVACMD" | ||
| fi | ||
|
|
||
| # Increase the maximum file descriptors if we can | ||
| if [ "$cygwin" = "false" ]; then | ||
| MAX_FD_LIMIT=`ulimit -H -n` | ||
| if [ "$MAX_FD_LIMIT" != "unlimited" ]; then | ||
| if [ $? -eq 0 ]; then | ||
| if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then | ||
| # use the businessSystem max | ||
| MAX_FD="$MAX_FD_LIMIT" | ||
| fi | ||
|
|
||
| ulimit -n $MAX_FD | ||
| if [ $? -ne 0 ]; then | ||
| warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
| fi | ||
| else | ||
| warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT" | ||
| fi | ||
| fi | ||
| fi | ||
|
|
||
| # Fix the cygwin agent issue | ||
| AGENT_GRAILS_HOME=$GRAILS_HOME | ||
| if $cygwin ; then | ||
| [ -n "$GRAILS_HOME" ] && | ||
| AGENT_GRAILS_HOME=`cygpath --windows "$GRAILS_HOME"` | ||
| fi | ||
|
|
||
| if $mingw ; then | ||
| # Converts GRAILS_HOME path to Windows syntax | ||
| [ -n "$GRAILS_HOME" ] && | ||
| AGENT_GRAILS_HOME=`cmd //C echo "$GRAILS_HOME"` | ||
| fi | ||
|
|
||
| if [ -z "$GRAILS_AGENT_CACHE_DIR" ]; then | ||
| GRAILS_AGENT_CACHE_DIR=~/.grails/2.4.4/ | ||
| fi | ||
| SPRINGLOADED_PARAMS=profile=grails\;cacheDir=$GRAILS_AGENT_CACHE_DIR | ||
| if [ ! -d "$GRAILS_AGENT_CACHE_DIR" ]; then | ||
| mkdir -p "$GRAILS_AGENT_CACHE_DIR" | ||
| fi | ||
|
|
||
| # Process JVM args | ||
| AGENT_STRING="-javaagent:wrapper/springloaded-1.2.1.RELEASE.jar -Xverify:none -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=$SPRINGLOADED_PARAMS" | ||
| CMD_LINE_ARGS="" | ||
| DISABLE_RELOADING=true | ||
|
|
||
| while true; do | ||
| if [ "$1" = "-cp" ] || [ "$1" = "-classpath" ]; then | ||
| CP=$2 | ||
| shift 2 | ||
| break | ||
| fi | ||
|
|
||
| if [ "$1" = "-reloading" ]; then | ||
| AGENT=$AGENT_STRING | ||
| DISABLE_RELOADING=false | ||
| shift | ||
| break | ||
| fi | ||
|
|
||
| if [ "$1" = "-noreloading" ]; then | ||
| DISABLE_RELOADING=true | ||
| shift | ||
| break | ||
| fi | ||
|
|
||
| if [ "$1" = "-debug" ]; then | ||
| JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" | ||
| shift | ||
| break | ||
| fi | ||
|
|
||
| if [ "$1" != -* ]; then | ||
| break | ||
| fi | ||
|
|
||
| CMD_LINE_ARGS="$CMD_LINE_ARGS $1" | ||
| shift | ||
| done | ||
|
|
||
| # Enable agent-based reloading for the 'run-app' command. | ||
| if ! $DISABLE_RELOADING; then | ||
| for a in "$@"; do | ||
| if [ "$a" = "run-app" ]; then | ||
| AGENT=$AGENT_STRING | ||
| fi | ||
| done | ||
|
|
||
| if [ $# = 0 ]; then | ||
| AGENT=$AGENT_STRING | ||
| fi | ||
| fi | ||
|
|
||
| ARGUMENTS="$CMD_LINE_ARGS $@" | ||
|
|
||
| # Setup Profiler | ||
| useprofiler=false | ||
| if [ "x$PROFILER" != "x" ]; then | ||
| if [ -r "$PROFILER" ]; then | ||
| . $PROFILER | ||
| useprofiler=true | ||
| else | ||
| die "Profiler file not found: $PROFILER" | ||
| fi | ||
| fi | ||
|
|
||
| # For Darwin, use classes.jar for TOOLS_JAR | ||
| TOOLS_JAR="$JAVA_HOME/lib/tools.jar" | ||
| if $darwin; then | ||
| JAVA_OPTS="-Xdock:name=Grails -Xdock:icon=$GRAILS_HOME/media/icons/grails.icns $JAVA_OPTS" | ||
| # TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar" | ||
| fi | ||
|
|
||
| # For Cygwin, switch paths to Windows format before running java | ||
| if $cygwin; then | ||
| GRAILS_HOME=`cygpath --path --mixed "$GRAILS_HOME"` | ||
| JAVA_HOME=`cygpath --path --mixed "$JAVA_HOME"` | ||
| STARTER_CONF=`cygpath --path --mixed "$STARTER_CONF"` | ||
| if [ "x$CP" != "x" ] ; then | ||
| CP=`cygpath --path --mixed "$CP"` | ||
| fi | ||
| TOOLS_JAR=`cygpath --path --mixed "$TOOLS_JAR"` | ||
| STARTER_CLASSPATH=`cygpath --path --mixed "$STARTER_CLASSPATH"` | ||
| # We build the pattern for arguments to be converted via cygpath | ||
| ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
| SEP="" | ||
| for dir in $ROOTDIRSRAW; do | ||
| ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
| SEP="|" | ||
| done | ||
| OURCYGPATTERN="(^($ROOTDIRS))" | ||
| # Add a user-defined pattern to the cygpath arguments | ||
| if [ "$GROOVY_CYGPATTERN" != "" ] ; then | ||
| OURCYGPATTERN="$OURCYGPATTERN|($GROOVY_CYGPATTERN)" | ||
| fi | ||
| # Now convert the arguments | ||
| ARGUMENTS="" | ||
| for arg in "$@" ; do | ||
| CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
| if [ $CHECK -ne 0 ] ; then | ||
| convArg=`cygpath --path --ignore --mixed -- "$arg"` | ||
| else | ||
| convArg=$arg | ||
| fi | ||
| ARGUMENTS="$ARGUMENTS $convArg" | ||
| done | ||
| fi | ||
|
|
||
| STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper | ||
|
|
||
| lateInit | ||
|
|
||
| startGrails() { | ||
| CLASS=$1 | ||
| shift | ||
| if [ -n "$GRAILS_OPTS" ] | ||
| then | ||
| GRAILS_OPTS="$GRAILS_OPTS" | ||
| else | ||
| GRAILS_OPTS="-server -Xmx768M -Xms64M -Dfile.encoding=UTF-8" | ||
| if [ "$GRAILS_NO_PERMGEN" != "1" ]; then | ||
| GRAILS_OPTS="$GRAILS_OPTS -XX:PermSize=32m -XX:MaxPermSize=256m" | ||
| fi | ||
| fi | ||
| JAVA_OPTS="$GRAILS_OPTS $JAVA_OPTS $AGENT" | ||
| # Start the Profiler or the JVM | ||
| if $useprofiler; then | ||
| runProfiler | ||
| else | ||
| if [ $# -eq 0 ] ; then # no argument given | ||
| exec "$JAVACMD" $JAVA_OPTS \ | ||
| -classpath "$STARTER_CLASSPATH" \ | ||
| -Dgrails.home="$GRAILS_HOME" \ | ||
| -Dtools.jar="$TOOLS_JAR" \ | ||
| -Djava.net.preferIPv4Stack=true \ | ||
| $STARTER_MAIN_CLASS \ | ||
| --main $CLASS \ | ||
| --conf "$STARTER_CONF" \ | ||
| --classpath "$CP" | ||
| else | ||
| exec "$JAVACMD" $JAVA_OPTS \ | ||
| -classpath "$STARTER_CLASSPATH" \ | ||
| -Dgrails.home="$GRAILS_HOME" \ | ||
| -Dtools.jar="$TOOLS_JAR" \ | ||
| -Djava.net.preferIPv4Stack=true \ | ||
| $STARTER_MAIN_CLASS \ | ||
| --main $CLASS \ | ||
| --conf "$STARTER_CONF" \ | ||
| --classpath "$CP" \ | ||
| "${ARGUMENTS}" | ||
| fi | ||
| fi | ||
| } | ||
|
|
||
| startGrails $STARTER_MAIN_CLASS "$@" |
| @@ -0,0 +1,186 @@ | ||
| @if "%DEBUG%" == "" @echo off | ||
| @rem ########################################################################## | ||
| @rem ## | ||
| @rem Grails JVM Bootstrap for Windows ## | ||
| @rem ## | ||
| @rem ########################################################################## | ||
|
|
||
| @rem Set local scope for the variables with windows NT shell | ||
| if "%OS%"=="Windows_NT" setlocal | ||
|
|
||
| set CLASS=org.grails.wrapper.GrailsWrapper | ||
|
|
||
| if exist "%USERPROFILE%/.groovy/preinit.bat" call "%USERPROFILE%/.groovy/preinit.bat" | ||
|
|
||
| @rem Determine the command interpreter to execute the "CD" later | ||
| set COMMAND_COM="cmd.exe" | ||
| if exist "%SystemRoot%\system32\cmd.exe" set COMMAND_COM="%SystemRoot%\system32\cmd.exe" | ||
| if exist "%SystemRoot%\command.com" set COMMAND_COM="%SystemRoot%\command.com" | ||
|
|
||
| @rem Use explicit find.exe to prevent cygwin and others find.exe from being used | ||
| set FIND_EXE="find.exe" | ||
| if exist "%SystemRoot%\system32\find.exe" set FIND_EXE="%SystemRoot%\system32\find.exe" | ||
| if exist "%SystemRoot%\command\find.exe" set FIND_EXE="%SystemRoot%\command\find.exe" | ||
|
|
||
| :check_JAVA_HOME | ||
| @rem Make sure we have a valid JAVA_HOME | ||
| if not "%JAVA_HOME%" == "" goto have_JAVA_HOME | ||
|
|
||
| echo. | ||
| echo ERROR: Environment variable JAVA_HOME has not been set. | ||
| echo. | ||
| echo Please set the JAVA_HOME variable in your environment to match the | ||
| echo location of your Java installation. | ||
| echo. | ||
| goto end | ||
|
|
||
| :have_JAVA_HOME | ||
| @rem Remove trailing slash from JAVA_HOME if found | ||
| if "%JAVA_HOME:~-1%"=="\" SET JAVA_HOME=%JAVA_HOME:~0,-1% | ||
|
|
||
| @rem Validate JAVA_HOME | ||
| %COMMAND_COM% /C DIR "%JAVA_HOME%" 2>&1 | %FIND_EXE% /I /C "%JAVA_HOME%" >nul | ||
| if not errorlevel 1 goto check_GRAILS_HOME | ||
|
|
||
| echo. | ||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||
| echo. | ||
| echo Please set the JAVA_HOME variable in your environment to match the | ||
| echo location of your Java installation. | ||
| echo. | ||
| goto end | ||
|
|
||
| :check_GRAILS_HOME | ||
| @rem Define GRAILS_HOME if not set | ||
| if "%GRAILS_HOME%" == "" set GRAILS_HOME=%DIRNAME%.. | ||
|
|
||
| @rem Remove trailing slash from GRAILS_HOME if found | ||
| if "%GRAILS_HOME:~-1%"=="\" SET GRAILS_HOME=%GRAILS_HOME:~0,-1% | ||
|
|
||
| :init | ||
|
|
||
| for %%x in ("%USERPROFILE%") do set SHORTHOME=%%~fsx | ||
| if "x%GRAILS_AGENT_CACHE_DIR%" == "x" set GRAILS_AGENT_CACHE_DIR=%SHORTHOME%/.grails/2.4.4/ | ||
| set SPRINGLOADED_PARAMS="profile=grails;cacheDir=%GRAILS_AGENT_CACHE_DIR%" | ||
| if not exist "%GRAILS_AGENT_CACHE_DIR%" mkdir "%GRAILS_AGENT_CACHE_DIR%" | ||
|
|
||
| if "%GRAILS_NO_PERMGEN%" == "" ( | ||
| type "%JAVA_HOME%\include\classfile_constants.h" 2>nul | findstr /R /C:"#define JVM_CLASSFILE_MAJOR_VERSION 5[23]" >nul | ||
| if not errorlevel 1 set GRAILS_NO_PERMGEN=1 | ||
| ) | ||
|
|
||
| set AGENT_STRING=-javaagent:wrapper/springloaded-1.2.1.RELEASE.jar -Xverify:none -Dspringloaded.synchronize=true -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=\"%SPRINGLOADED_PARAMS%\" | ||
| set DISABLE_RELOADING= | ||
| if "%GRAILS_OPTS%" == "" ( | ||
| set GRAILS_OPTS=-server -Xmx768M -Xms64M -Dfile.encoding=UTF-8 | ||
| if not "%GRAILS_NO_PERMGEN%" == "1" ( | ||
| set GRAILS_OPTS=-server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 | ||
| ) | ||
| ) | ||
|
|
||
| @rem Get command-line arguments, handling Windows variants | ||
| if "%@eval[2+2]" == "4" goto 4NT_args | ||
|
|
||
| @rem Slurp the command line arguments. | ||
| set CMD_LINE_ARGS= | ||
| set CP= | ||
| set INTERACTIVE=true | ||
|
|
||
| :win9xME_args_slurp | ||
| if "x%~1" == "x" goto execute | ||
| set CURR_ARG=%~1 | ||
| if "%CURR_ARG:~0,2%" == "-D" ( | ||
| set CMD_LINE_ARGS=%CMD_LINE_ARGS% %~1=%~2 | ||
| shift | ||
| shift | ||
| goto win9xME_args_slurp | ||
| ) | ||
| if "x%~1" == "x-cp" ( | ||
| set CP=%~2 | ||
| shift | ||
| shift | ||
| goto win9xME_args_slurp | ||
| ) | ||
| if "x%~1" == "x-debug" ( | ||
| set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xnoagent -Dgrails.full.stacktrace=true -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 | ||
| shift | ||
| goto win9xME_args_slurp | ||
| ) | ||
| if "x%~1" == "x-classpath" ( | ||
| set CP=%~2 | ||
| shift | ||
| shift | ||
| goto win9xME_args_slurp | ||
| ) | ||
| if "x%~1" == "x-reloading" ( | ||
| set AGENT=%AGENT_STRING% | ||
| shift | ||
| goto win9xME_args_slurp | ||
| ) | ||
| if "x%~1" == "xrun-app" ( | ||
| set AGENT=%AGENT_STRING% | ||
| set INTERACTIVE= | ||
| set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 | ||
| shift | ||
| goto win9xME_args_slurp | ||
| ) | ||
| if "x%~1" == "x-noreloading" ( | ||
| set DISABLE_RELOADING=true | ||
| shift | ||
| goto win9xME_args_slurp | ||
| ) | ||
| set INTERACTIVE= | ||
| set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 | ||
| shift | ||
| goto win9xME_args_slurp | ||
|
|
||
| :4NT_args | ||
| @rem Get arguments from the 4NT Shell from JP Software | ||
| set CMD_LINE_ARGS=%$ | ||
|
|
||
| :execute | ||
| @rem Setup the command line | ||
| set STARTER_CLASSPATH=wrapper/grails-wrapper-runtime-2.4.4.jar;wrapper;. | ||
|
|
||
| if exist "%USERPROFILE%/.groovy/init.bat" call "%USERPROFILE%/.groovy/init.bat" | ||
|
|
||
| @rem Setting a classpath using the -cp or -classpath option means not to use | ||
| @rem the global classpath. Groovy behaves then the same as the java interpreter | ||
|
|
||
| if "x" == "x%CLASSPATH%" goto after_classpath | ||
| set CP=%CP%;%CLASSPATH% | ||
| :after_classpath | ||
|
|
||
| if "x%DISABLE_RELOADING%" == "xtrue" ( | ||
| set AGENT= | ||
| ) else ( | ||
| if "x%INTERACTIVE%" == "xtrue" ( | ||
| set AGENT=%AGENT_STRING% | ||
| ) | ||
| ) | ||
|
|
||
| set STARTER_MAIN_CLASS=org.grails.wrapper.GrailsWrapper | ||
| set STARTER_CONF=%GRAILS_HOME%\conf\groovy-starter.conf | ||
|
|
||
| set JAVA_EXE=%JAVA_HOME%\bin\java.exe | ||
| set TOOLS_JAR=%JAVA_HOME%\lib\tools.jar | ||
|
|
||
| set JAVA_OPTS=%GRAILS_OPTS% %JAVA_OPTS% %AGENT% | ||
|
|
||
| set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name="%PROGNAME%" | ||
| set JAVA_OPTS=%JAVA_OPTS% -Dgrails.home="%GRAILS_HOME%" | ||
| set JAVA_OPTS=%JAVA_OPTS% -Dgrails.version=2.4.4 | ||
| set JAVA_OPTS=%JAVA_OPTS% -Dbase.dir=. | ||
| set JAVA_OPTS=%JAVA_OPTS% -Dtools.jar="%TOOLS_JAR%" | ||
| set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%" | ||
|
|
||
| if exist "%USERPROFILE%/.groovy/postinit.bat" call "%USERPROFILE%/.groovy/postinit.bat" | ||
|
|
||
| @rem Execute Grails | ||
| CALL "%JAVA_EXE%" %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" "%CMD_LINE_ARGS%" | ||
| :end | ||
| @rem End local scope for the variables with windows NT shell | ||
| if "%OS%"=="Windows_NT" endlocal | ||
|
|
||
| @rem Optional pause the batch file | ||
| if "%GROOVY_BATCH_PAUSE%" == "on" pause |
| @@ -0,0 +1,24 @@ | ||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||
| <html> | ||
| <head> | ||
| <title>Overview</title> | ||
| <link rel="stylesheet" type="text/css" href="${createLink(action: 'dbdoc_stylesheet_css')}" title="Style"> | ||
| </head> | ||
|
|
||
| <body bgcolor="white"> | ||
|
|
||
| <font class="FrameItemFont"><a href="${createLink(action: 'currenttables')}" target="listFrame">Current Tables</a></font> | ||
| <br/> | ||
| <font class="FrameItemFont"><a href="${createLink(action: 'authors')}" target="listFrame">Authors</a></font> | ||
| <br/> | ||
| <font class="FrameItemFont"><a href="${createLink(action: 'changelogs')}" target="listFrame">Change Logs</a></font> | ||
| <br/> | ||
| <font class="FrameItemFont"><a href="${createLink(action: 'pending')}" target="objectFrame">Pending Changes</a></font> | ||
| <br/> | ||
| <font class="FrameItemFont"><a href="${createLink(action: 'pendingsql')}" target="objectFrame">Pending SQL</a></font> | ||
| <br/> | ||
| <font class="FrameItemFont"><a href="${createLink(action: 'recent')}" target="objectFrame">Most Recent Changes</a></font> | ||
| <br/> | ||
|
|
||
| </body> | ||
| </html> |
| @@ -0,0 +1,22 @@ | ||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> | ||
| <html> | ||
| <head> | ||
| <title>Database Documentation</title> | ||
| </head> | ||
| <frameset cols="20%,80%"> | ||
| <frameset rows="20%,80%"> | ||
| <frame src="${createLink(action: 'globalnav')}" name="globalNavFrame" title="Global Navigation"> | ||
| <frame src="${createLink(action: 'currenttables')}" name="listFrame" title="All Tables"> | ||
| </frameset> | ||
| <frame src="${createLink(action: 'overview-summary')}" name="objectFrame" title="Package, class and interface descriptions" scrolling="yes"> | ||
| <noframes> | ||
| <h2> | ||
| Frame Alert</h2> | ||
| <p> | ||
| This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. | ||
| <br/> | ||
| Link to<a href="${createLink(action: 'overview-summary')}">Non-frame version.</a> | ||
| </noframes> | ||
| </frameset> | ||
|
|
||
| </html> |
| @@ -0,0 +1,11 @@ | ||
| <html> | ||
| <head> | ||
| <title>Database Documentation Overview</title> | ||
| <link rel="stylesheet" type="text/css" href="${createLink(action: 'dbdoc_stylesheet_css')}" title="Style"/> | ||
| </head> | ||
| <body> | ||
| <h2>Database Documentation</h2> | ||
| <p>This report contains documentation on the database changes made.</p> | ||
| <p>Use the navigation to the left to navigate the documentation.</p> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,60 @@ | ||
| h1 { | ||
| } | ||
|
|
||
| .TableHeadingColor { | ||
| background: #ccccff; /* Dark mauve */ | ||
| } | ||
| .TableSubHeadingColor { | ||
| background: #eeeeff; /* Light mauve */ | ||
| } | ||
| .TableRowColor { | ||
| background: white; | ||
| } | ||
|
|
||
| .NavBarCell1 { | ||
| background-color: #eeeeff; /* Light mauve */ | ||
| } | ||
| .NavBarCell1Rev { | ||
| background-color: #00008b; /* Dark Blue */ | ||
| } | ||
| .NavBarFont1 { | ||
| color: black; | ||
| } | ||
| .NavBarFont1Rev { | ||
| color: white; | ||
| } | ||
|
|
||
| .NavBarCell2 { | ||
| background-color: white; | ||
| } | ||
| .NavBarCell3 { | ||
| background-color: white; | ||
| } | ||
|
|
||
| body { | ||
| background: #fff; | ||
| color: #333; | ||
| font: 12px verdana, arial, helvetica, sans-serif; | ||
| } | ||
|
|
||
| a:link, a:visited, a:hover { | ||
| color: #666; | ||
| font-weight: bold; | ||
| text-decoration: none; | ||
| } | ||
|
|
||
| td, th { | ||
| font: 11px verdana, arial, helvetica, sans-serif; | ||
| line-height: 12px; | ||
| padding: 5px 6px; | ||
| text-align: left; | ||
| vertical-align: top; | ||
| } | ||
|
|
||
| th { | ||
| color: #666; | ||
| font-size: 11px; | ||
| font-weight: bold; | ||
| line-height: 17px; | ||
| padding: 2px 6px; | ||
| } |
| @@ -0,0 +1,18 @@ | ||
| <?xml version='1.0' encoding='UTF-8'?> | ||
| <!DOCTYPE hibernate-configuration PUBLIC | ||
| '-//Hibernate/Hibernate Configuration DTD 3.0//EN' | ||
| 'http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd'> | ||
|
|
||
| <hibernate-configuration> | ||
|
|
||
| <session-factory> | ||
| <!-- | ||
| <mapping package='com.books' /> | ||
| <mapping class='com.books.Book' /> | ||
| <mapping resource='someresource.hbm.xml'/> | ||
| --> | ||
| </session-factory> | ||
|
|
||
| </hibernate-configuration> |
| @@ -0,0 +1 @@ | ||
| //=require jquery/jquery-${org.codehaus.groovy.grails.plugins.jquery.JQueryConfig.SHIPPED_VERSION} |
| @@ -0,0 +1,334 @@ | ||
| #!/usr/bin/env node | ||
| // -*- js -*- | ||
|
|
||
| global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); | ||
| var fs = require("fs"), path = require("path"); | ||
| var uglify = require("../uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js | ||
| consolidator = uglify.consolidator, | ||
| jsp = uglify.parser, | ||
| pro = uglify.uglify; | ||
|
|
||
| var options = { | ||
| ast: false, | ||
| consolidate: false, | ||
| mangle: true, | ||
| mangle_toplevel: false, | ||
| no_mangle_functions: false, | ||
| squeeze: true, | ||
| make_seqs: true, | ||
| dead_code: true, | ||
| verbose: false, | ||
| show_copyright: true, | ||
| out_same_file: false, | ||
| max_line_length: 32 * 1024, | ||
| unsafe: false, | ||
| reserved_names: null, | ||
| defines: { }, | ||
| lift_vars: false, | ||
| codegen_options: { | ||
| ascii_only: false, | ||
| beautify: false, | ||
| indent_level: 4, | ||
| indent_start: 0, | ||
| quote_keys: false, | ||
| space_colon: false, | ||
| inline_script: false | ||
| }, | ||
| make: false, | ||
| output: true // stdout | ||
| }; | ||
|
|
||
| var args = jsp.slice(process.argv, 2); | ||
| var filename; | ||
|
|
||
| out: while (args.length > 0) { | ||
| var v = args.shift(); | ||
| switch (v) { | ||
| case "-b": | ||
| case "--beautify": | ||
| options.codegen_options.beautify = true; | ||
| break; | ||
| case "-c": | ||
| case "--consolidate-primitive-values": | ||
| options.consolidate = true; | ||
| break; | ||
| case "-i": | ||
| case "--indent": | ||
| options.codegen_options.indent_level = args.shift(); | ||
| break; | ||
| case "-q": | ||
| case "--quote-keys": | ||
| options.codegen_options.quote_keys = true; | ||
| break; | ||
| case "-mt": | ||
| case "--mangle-toplevel": | ||
| options.mangle_toplevel = true; | ||
| break; | ||
| case "-nmf": | ||
| case "--no-mangle-functions": | ||
| options.no_mangle_functions = true; | ||
| break; | ||
| case "--no-mangle": | ||
| case "-nm": | ||
| options.mangle = false; | ||
| break; | ||
| case "--no-squeeze": | ||
| case "-ns": | ||
| options.squeeze = false; | ||
| break; | ||
| case "--no-seqs": | ||
| options.make_seqs = false; | ||
| break; | ||
| case "--no-dead-code": | ||
| options.dead_code = false; | ||
| break; | ||
| case "--no-copyright": | ||
| case "-nc": | ||
| options.show_copyright = false; | ||
| break; | ||
| case "-o": | ||
| case "--output": | ||
| options.output = args.shift(); | ||
| break; | ||
| case "--overwrite": | ||
| options.out_same_file = true; | ||
| break; | ||
| case "-v": | ||
| case "--verbose": | ||
| options.verbose = true; | ||
| break; | ||
| case "--ast": | ||
| options.ast = true; | ||
| break; | ||
| case "--unsafe": | ||
| options.unsafe = true; | ||
| break; | ||
| case "--max-line-len": | ||
| options.max_line_length = parseInt(args.shift(), 10); | ||
| break; | ||
| case "--reserved-names": | ||
| options.reserved_names = args.shift().split(","); | ||
| break; | ||
| case "--lift-vars": | ||
| options.lift_vars = true; | ||
| break; | ||
| case "-d": | ||
| case "--define": | ||
| var defarg = args.shift(); | ||
| try { | ||
| var defsym = function(sym) { | ||
| // KEYWORDS_ATOM doesn't include NaN or Infinity - should we check | ||
| // for them too ?? We don't check reserved words and the like as the | ||
| // define values are only substituted AFTER parsing | ||
| if (jsp.KEYWORDS_ATOM.hasOwnProperty(sym)) { | ||
| throw "Don't define values for inbuilt constant '"+sym+"'"; | ||
| } | ||
| return sym; | ||
| }, | ||
| defval = function(v) { | ||
| if (v.match(/^"(.*)"$/) || v.match(/^'(.*)'$/)) { | ||
| return [ "string", RegExp.$1 ]; | ||
| } | ||
| else if (!isNaN(parseFloat(v))) { | ||
| return [ "num", parseFloat(v) ]; | ||
| } | ||
| else if (v.match(/^[a-z\$_][a-z\$_0-9]*$/i)) { | ||
| return [ "name", v ]; | ||
| } | ||
| else if (!v.match(/"/)) { | ||
| return [ "string", v ]; | ||
| } | ||
| else if (!v.match(/'/)) { | ||
| return [ "string", v ]; | ||
| } | ||
| throw "Can't understand the specified value: "+v; | ||
| }; | ||
| if (defarg.match(/^([a-z_\$][a-z_\$0-9]*)(=(.*))?$/i)) { | ||
| var sym = defsym(RegExp.$1), | ||
| val = RegExp.$2 ? defval(RegExp.$2.substr(1)) : [ 'name', 'true' ]; | ||
| options.defines[sym] = val; | ||
| } | ||
| else { | ||
| throw "The --define option expects SYMBOL[=value]"; | ||
| } | ||
| } catch(ex) { | ||
| sys.print("ERROR: In option --define "+defarg+"\n"+ex+"\n"); | ||
| process.exit(1); | ||
| } | ||
| break; | ||
| case "--define-from-module": | ||
| var defmodarg = args.shift(); | ||
| var defmodule = require(defmodarg); | ||
| var sym, val; | ||
| for (sym in defmodule) { | ||
| if (defmodule.hasOwnProperty(sym)) { | ||
| options.defines[sym] = function(val) { | ||
| if (typeof val == "string") | ||
| return [ "string", val ]; | ||
| if (typeof val == "number") | ||
| return [ "num", val ]; | ||
| if (val === true) | ||
| return [ 'name', 'true' ]; | ||
| if (val === false) | ||
| return [ 'name', 'false' ]; | ||
| if (val === null) | ||
| return [ 'name', 'null' ]; | ||
| if (val === undefined) | ||
| return [ 'name', 'undefined' ]; | ||
| sys.print("ERROR: In option --define-from-module "+defmodarg+"\n"); | ||
| sys.print("ERROR: Unknown object type for: "+sym+"="+val+"\n"); | ||
| process.exit(1); | ||
| return null; | ||
| }(defmodule[sym]); | ||
| } | ||
| } | ||
| break; | ||
| case "--ascii": | ||
| options.codegen_options.ascii_only = true; | ||
| break; | ||
| case "--make": | ||
| options.make = true; | ||
| break; | ||
| case "--inline-script": | ||
| options.codegen_options.inline_script = true; | ||
| break; | ||
| default: | ||
| filename = v; | ||
| break out; | ||
| } | ||
| } | ||
|
|
||
| if (options.verbose) { | ||
| pro.set_logger(function(msg){ | ||
| sys.debug(msg); | ||
| }); | ||
| } | ||
|
|
||
| jsp.set_logger(function(msg){ | ||
| sys.debug(msg); | ||
| }); | ||
|
|
||
| if (options.make) { | ||
| options.out_same_file = false; // doesn't make sense in this case | ||
| var makefile = global.eval("(" + fs.readFileSync(filename || "Makefile.uglify.js").toString() + ")"); | ||
| var dir = path.dirname(filename); | ||
| output(makefile.files.map(function(file){ | ||
| var code = fs.readFileSync(path.join(dir, file.name)).toString(); | ||
| if (file.module) { | ||
| code = "!function(exports, global){global = this;\n" + code + "\n;this." + file.module + " = exports;}({})"; | ||
| } | ||
| else if (file.hide) { | ||
| code = "(function(){" + code + "}());"; | ||
| } | ||
| return squeeze_it(code); | ||
| }).join("\n")); | ||
| } | ||
| else if (filename) { | ||
| fs.readFile(filename, "utf8", function(err, text){ | ||
| if (err) throw err; | ||
| output(squeeze_it(text)); | ||
| }); | ||
| } | ||
| else { | ||
| var stdin = process.openStdin(); | ||
| stdin.setEncoding("utf8"); | ||
| var text = ""; | ||
| stdin.on("data", function(chunk){ | ||
| text += chunk; | ||
| }); | ||
| stdin.on("end", function() { | ||
| output(squeeze_it(text)); | ||
| }); | ||
| } | ||
|
|
||
| function output(text) { | ||
| var out; | ||
| if (options.out_same_file && filename) | ||
| options.output = filename; | ||
| if (options.output === true) { | ||
| out = process.stdout; | ||
| } else { | ||
| out = fs.createWriteStream(options.output, { | ||
| flags: "w", | ||
| encoding: "utf8", | ||
| mode: 0644 | ||
| }); | ||
| } | ||
| out.write(text.replace(/;*$/, ";")); | ||
| if (options.output !== true) { | ||
| out.end(); | ||
| } | ||
| }; | ||
|
|
||
| // --------- main ends here. | ||
|
|
||
| function show_copyright(comments) { | ||
| var ret = ""; | ||
| for (var i = 0; i < comments.length; ++i) { | ||
| var c = comments[i]; | ||
| if (c.type == "comment1") { | ||
| ret += "//" + c.value + "\n"; | ||
| } else { | ||
| ret += "/*" + c.value + "*/"; | ||
| } | ||
| } | ||
| return ret; | ||
| }; | ||
|
|
||
| function squeeze_it(code) { | ||
| var result = ""; | ||
| if (options.show_copyright) { | ||
| var tok = jsp.tokenizer(code), c; | ||
| c = tok(); | ||
| result += show_copyright(c.comments_before); | ||
| } | ||
| try { | ||
| var ast = time_it("parse", function(){ return jsp.parse(code); }); | ||
| if (options.consolidate) ast = time_it("consolidate", function(){ | ||
| return consolidator.ast_consolidate(ast); | ||
| }); | ||
| if (options.lift_vars) { | ||
| ast = time_it("lift", function(){ return pro.ast_lift_variables(ast); }); | ||
| } | ||
| ast = time_it("mangle", function(){ | ||
| return pro.ast_mangle(ast, { | ||
| mangle : options.mangle, | ||
| toplevel : options.mangle_toplevel, | ||
| defines : options.defines, | ||
| except : options.reserved_names, | ||
| no_functions : options.no_mangle_functions | ||
| }); | ||
| }); | ||
| if (options.squeeze) ast = time_it("squeeze", function(){ | ||
| ast = pro.ast_squeeze(ast, { | ||
| make_seqs : options.make_seqs, | ||
| dead_code : options.dead_code, | ||
| keep_comps : !options.unsafe, | ||
| unsafe : options.unsafe | ||
| }); | ||
| if (options.unsafe) | ||
| ast = pro.ast_squeeze_more(ast); | ||
| return ast; | ||
| }); | ||
| if (options.ast) | ||
| return sys.inspect(ast, null, null); | ||
| result += time_it("generate", function(){ return pro.gen_code(ast, options.codegen_options) }); | ||
| if (!options.codegen_options.beautify && options.max_line_length) { | ||
| result = time_it("split", function(){ return pro.split_lines(result, options.max_line_length) }); | ||
| } | ||
| return result; | ||
| } catch(ex) { | ||
| sys.debug(ex.stack); | ||
| sys.debug(sys.inspect(ex)); | ||
| sys.debug(JSON.stringify(ex)); | ||
| process.exit(1); | ||
| } | ||
| }; | ||
|
|
||
| function time_it(name, cont) { | ||
| if (!options.verbose) | ||
| return cont(); | ||
| var t1 = new Date().getTime(); | ||
| try { return cont(); } | ||
| finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); } | ||
| }; |
| @@ -0,0 +1,75 @@ | ||
| html { font-family: "Lucida Grande","Trebuchet MS",sans-serif; font-size: 12pt; } | ||
| body { max-width: 60em; } | ||
| .title { text-align: center; } | ||
| .todo { color: red; } | ||
| .done { color: green; } | ||
| .tag { background-color:lightblue; font-weight:normal } | ||
| .target { } | ||
| .timestamp { color: grey } | ||
| .timestamp-kwd { color: CadetBlue } | ||
| p.verse { margin-left: 3% } | ||
| pre { | ||
| border: 1pt solid #AEBDCC; | ||
| background-color: #F3F5F7; | ||
| padding: 5pt; | ||
| font-family: monospace; | ||
| font-size: 90%; | ||
| overflow:auto; | ||
| } | ||
| pre.src { | ||
| background-color: #eee; color: #112; border: 1px solid #000; | ||
| } | ||
| table { border-collapse: collapse; } | ||
| td, th { vertical-align: top; } | ||
| dt { font-weight: bold; } | ||
| div.figure { padding: 0.5em; } | ||
| div.figure p { text-align: center; } | ||
| .linenr { font-size:smaller } | ||
| .code-highlighted {background-color:#ffff00;} | ||
| .org-info-js_info-navigation { border-style:none; } | ||
| #org-info-js_console-label { font-size:10px; font-weight:bold; | ||
| white-space:nowrap; } | ||
| .org-info-js_search-highlight {background-color:#ffff00; color:#000000; | ||
| font-weight:bold; } | ||
|
|
||
| sup { | ||
| vertical-align: baseline; | ||
| position: relative; | ||
| top: -0.5em; | ||
| font-size: 80%; | ||
| } | ||
|
|
||
| sup a:link, sup a:visited { | ||
| text-decoration: none; | ||
| color: #c00; | ||
| } | ||
|
|
||
| sup a:before { content: "["; color: #999; } | ||
| sup a:after { content: "]"; color: #999; } | ||
|
|
||
| h1.title { border-bottom: 4px solid #000; padding-bottom: 5px; margin-bottom: 2em; } | ||
|
|
||
| #postamble { | ||
| color: #777; | ||
| font-size: 90%; | ||
| padding-top: 1em; padding-bottom: 1em; border-top: 1px solid #999; | ||
| margin-top: 2em; | ||
| padding-left: 2em; | ||
| padding-right: 2em; | ||
| text-align: right; | ||
| } | ||
|
|
||
| #postamble p { margin: 0; } | ||
|
|
||
| #footnotes { border-top: 1px solid #000; } | ||
|
|
||
| h1 { font-size: 200% } | ||
| h2 { font-size: 175% } | ||
| h3 { font-size: 150% } | ||
| h4 { font-size: 125% } | ||
|
|
||
| h1, h2, h3, h4 { font-family: "Bookman",Georgia,"Times New Roman",serif; font-weight: normal; } | ||
|
|
||
| @media print { | ||
| html { font-size: 11pt; } | ||
| } |
| @@ -0,0 +1,87 @@ | ||
| // var uglify = uglify || {}; | ||
| uglify.squeeze = function() { | ||
| var exports = this; | ||
|
|
||
| var jsp = uglify.parser, | ||
| pro = uglify.uglify, | ||
| slice = jsp.slice, | ||
| member = jsp.member, | ||
| curry = jsp.curry, | ||
| MAP = pro.MAP, | ||
| PRECEDENCE = jsp.PRECEDENCE, | ||
| OPERATORS = jsp.OPERATORS; | ||
|
|
||
| function ast_squeeze_more(ast) { | ||
| var w = pro.ast_walker(), walk = w.walk, scope; | ||
| function with_scope(s, cont) { | ||
| var save = scope, ret; | ||
| scope = s; | ||
| ret = cont(); | ||
| scope = save; | ||
| return ret; | ||
| }; | ||
| function _lambda(name, args, body) { | ||
| return [ this[0], name, args, with_scope(body.scope, curry(MAP, body, walk)) ]; | ||
| }; | ||
| return w.with_walkers({ | ||
| "toplevel": function(body) { | ||
| return [ this[0], with_scope(this.scope, curry(MAP, body, walk)) ]; | ||
| }, | ||
| "function": _lambda, | ||
| "defun": _lambda, | ||
| "new": function(ctor, args) { | ||
| if (ctor[0] == "name") { | ||
| if (ctor[1] == "Array" && !scope.has("Array")) { | ||
| if (args.length != 1) { | ||
| return [ "array", args ]; | ||
| } else { | ||
| return walk([ "call", [ "name", "Array" ], args ]); | ||
| } | ||
| } else if (ctor[1] == "Object" && !scope.has("Object")) { | ||
| if (!args.length) { | ||
| return [ "object", [] ]; | ||
| } else { | ||
| return walk([ "call", [ "name", "Object" ], args ]); | ||
| } | ||
| } else if ((ctor[1] == "RegExp" || ctor[1] == "Function" || ctor[1] == "Error") && !scope.has(ctor[1])) { | ||
| return walk([ "call", [ "name", ctor[1] ], args]); | ||
| } | ||
| } | ||
| }, | ||
| "call": function(expr, args) { | ||
| if (expr[0] == "dot" && expr[1][0] == "string" && args.length == 1 | ||
| && (args[0][1] > 0 && expr[2] == "substring" || expr[2] == "substr")) { | ||
| return [ "call", [ "dot", expr[1], "slice"], args]; | ||
| } | ||
| if (expr[0] == "dot" && expr[2] == "toString" && args.length == 0) { | ||
| // foo.toString() ==> foo+"" | ||
| if (expr[1][0] == "string") return expr[1]; | ||
| return [ "binary", "+", expr[1], [ "string", "" ]]; | ||
| } | ||
| if (expr[0] == "name") { | ||
| if (expr[1] == "Array" && args.length != 1 && !scope.has("Array")) { | ||
| return [ "array", args ]; | ||
| } | ||
| if (expr[1] == "Object" && !args.length && !scope.has("Object")) { | ||
| return [ "object", [] ]; | ||
| } | ||
| if (expr[1] == "String" && !scope.has("String")) { | ||
| return [ "binary", "+", args[0], [ "string", "" ]]; | ||
| } | ||
| } | ||
| } | ||
| }, function() { | ||
| return walk(pro.ast_add_scope(ast)); | ||
| }); | ||
| }; | ||
|
|
||
| exports.ast_squeeze_more = ast_squeeze_more; | ||
|
|
||
| // Local variables: | ||
| // js-indent-level: 4 | ||
| // End: | ||
| return this; | ||
| }(); | ||
|
|
||
|
|
||
| uglify.uglify.ast_squeeze_more = uglify.squeeze.ast_squeeze_more; |
| @@ -0,0 +1,32 @@ | ||
| { | ||
| "name" : "uglify-js", | ||
|
|
||
| "description" : "JavaScript parser and compressor/beautifier toolkit", | ||
|
|
||
| "author" : { | ||
| "name" : "Mihai Bazon", | ||
| "email" : "mihai.bazon@gmail.com", | ||
| "url" : "http://mihai.bazon.net/blog" | ||
| }, | ||
|
|
||
| "version" : "1.3.4", | ||
|
|
||
| "main" : "./uglify-js.js", | ||
|
|
||
| "bin" : { | ||
| "uglifyjs" : "./bin/uglifyjs" | ||
| }, | ||
|
|
||
| "repository": { | ||
| "type": "git", | ||
| "url": "git@github.com:mishoo/UglifyJS.git" | ||
| }, | ||
|
|
||
| "devDependencies": { | ||
| "nodeunit": "0.7.x" | ||
| }, | ||
|
|
||
| "scripts": { | ||
| "test": "$(which nodeunit || echo node_modules/nodeunit/bin/nodeunit) test/unit/scripts.js && test/testparser.js && test/testconsolidator.js" | ||
| } | ||
| } |
| @@ -0,0 +1,28 @@ | ||
| #! /usr/bin/env node | ||
|
|
||
| global.sys = require("sys"); | ||
| var fs = require("fs"); | ||
|
|
||
| var jsp = require("../lib/parse-js"); | ||
| var pro = require("../lib/process"); | ||
|
|
||
| var filename = process.argv[2]; | ||
| fs.readFile(filename, "utf8", function(err, text){ | ||
| try { | ||
| var ast = time_it("parse", function(){ return jsp.parse(text); }); | ||
| ast = time_it("mangle", function(){ return pro.ast_mangle(ast); }); | ||
| ast = time_it("squeeze", function(){ return pro.ast_squeeze(ast); }); | ||
| var gen = time_it("generate", function(){ return pro.gen_code(ast, false); }); | ||
| sys.puts(gen); | ||
| } catch(ex) { | ||
| sys.debug(ex.stack); | ||
| sys.debug(sys.inspect(ex)); | ||
| sys.debug(JSON.stringify(ex)); | ||
| } | ||
| }); | ||
|
|
||
| function time_it(name, cont) { | ||
| var t1 = new Date().getTime(); | ||
| try { return cont(); } | ||
| finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); } | ||
| }; |
| @@ -0,0 +1 @@ | ||
| 1e20,1e21 |
| @@ -0,0 +1 @@ | ||
| [],Array(1),[1,2,3] |
| @@ -0,0 +1 @@ | ||
| (function(){var a=function(){};return new a(1,2,3,4)})() |
| @@ -0,0 +1 @@ | ||
| (function(){function a(){}return new a(1,2,3,4)})() |
| @@ -0,0 +1 @@ | ||
| (function(){function a(){}(function(){return new a(1,2,3)})()})() |
| @@ -0,0 +1 @@ | ||
| a=1,b=a,c=1,d=b,e=d,longname=2;if(longname+1){x=3;if(x)var z=7}z=1,y=1,x=1,g+=1,h=g,++i,j=i,i++,j=i+17 |
| @@ -0,0 +1 @@ | ||
| var a=a+"a"+"b"+1+c,b=a+"c"+"ds"+123+c,c=a+"c"+123+d+"ds"+c |
| @@ -0,0 +1 @@ | ||
| var a=13,b=1/3 |
| @@ -0,0 +1 @@ | ||
| print(a/ /[a-z]/) |
| @@ -0,0 +1 @@ | ||
| function bar(){return--x}function foo(){while(bar());}function mak(){for(;;);}var x=5 |
| @@ -0,0 +1 @@ | ||
| _,_ |
| @@ -0,0 +1 @@ | ||
| var a=1;a==1?a=2:a=17 |
| @@ -0,0 +1 @@ | ||
| function a(a){return a==1?2:17} |
| @@ -0,0 +1 @@ | ||
| function x(a){return typeof a=="object"?a:a===42?0:a*2}function y(a){return typeof a=="object"?a:null} |
| @@ -0,0 +1 @@ | ||
| with({get NaN(){throw 0},get Infinity(){throw 0}})0/0,0/0,1/0,-1/0 |
| @@ -0,0 +1 @@ | ||
| function f(){var a;return(a="a")?a:a}f() |
| @@ -0,0 +1 @@ | ||
| new(A,B),new(A||B),new(X?A:B) |
| @@ -0,0 +1 @@ | ||
| var a={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"} |
| @@ -0,0 +1 @@ | ||
| var a=3250441966 |
| @@ -0,0 +1 @@ | ||
| var a=function(b){b(),a()} |
| @@ -0,0 +1 @@ | ||
| 1 |
| @@ -0,0 +1 @@ | ||
| var a=0;switch(a){case 0:a++} |
| @@ -0,0 +1 @@ | ||
| a:break a;console.log(1) |
| @@ -0,0 +1 @@ | ||
| (a?b:c)?d:e |
| @@ -0,0 +1 @@ | ||
| if(!x)debugger |
| @@ -0,0 +1 @@ | ||
| o={".5":.5},o={.5:.5},o={.5:.5} |
| @@ -0,0 +1 @@ | ||
| result=function(){return 1}() |
| @@ -0,0 +1 @@ | ||
| var a=8,b=4,c=4 |
| @@ -0,0 +1 @@ | ||
| var a={};a["this"]=1,a.that=2 |
| @@ -0,0 +1 @@ | ||
| (function(){var a;if(noFreeCakes)return;return a=new FreeCake,a})()(function(){var a;if(noFreeCakes)return;return a=new FreeCake,a})()(function(){var a;if(noFreeCakes)return;return a=new FreeCake,a})() |
| @@ -0,0 +1 @@ | ||
| function test(){debugger;return} |
| @@ -0,0 +1 @@ | ||
| "use strict";function a(){function a(){function a(){void "c"}function b(){"salmon";void "d"}void "b"}function b(){"salmon";function a(){void "f";for(var a=0;a<10;a++)var b=function(){void "g"}()}void "e"}void "a"} |
| @@ -0,0 +1 @@ | ||
| var a=2e3,b=.002,c=2e-5 |
| @@ -0,0 +1 @@ | ||
| ((a||b)&&c)() |
| @@ -0,0 +1 @@ | ||
| var s,i;s="",i=0 |
| @@ -0,0 +1 @@ | ||
| function bar(a){try{foo()}catch(b){alert("Exception caught (foo not defined)")}alert(a)}bar(10) |
| @@ -0,0 +1 @@ | ||
| x=(y,z) |
| @@ -0,0 +1 @@ | ||
| foo+"",a.toString(16),b.toString.call(c) |
| @@ -0,0 +1 @@ | ||
| function f(){function b(){}if(a)return;b()} |
| @@ -0,0 +1 @@ | ||
| [(a,b)] |
| @@ -0,0 +1 @@ | ||
| var a={a:1,b:2} |
| @@ -0,0 +1 @@ | ||
| (function(){var a=function b(a,b,c){return b}})() |
| @@ -0,0 +1 @@ | ||
| var nullString="\0" |
| @@ -0,0 +1 @@ | ||
| typeof a=="string",b+""!=c+"",d<e==f<g |
| @@ -0,0 +1 @@ | ||
| var a=1,b=2 |
| @@ -0,0 +1 @@ | ||
| function id(a){return a} |
| @@ -0,0 +1 @@ | ||
| with({}); |
| @@ -0,0 +1 @@ | ||
| 1e20,1e21 |
| @@ -0,0 +1,3 @@ | ||
| new Array(); | ||
| new Array(1); | ||
| new Array(1, 2, 3); |
| @@ -0,0 +1,4 @@ | ||
| (function(){ | ||
| var Array = function(){}; | ||
| return new Array(1, 2, 3, 4); | ||
| })(); |
| @@ -0,0 +1,4 @@ | ||
| (function(){ | ||
| return new Array(1, 2, 3, 4); | ||
| function Array() {}; | ||
| })(); |
| @@ -0,0 +1,6 @@ | ||
| (function(){ | ||
| (function(){ | ||
| return new Array(1, 2, 3); | ||
| })(); | ||
| function Array(){}; | ||
| })(); |
| @@ -0,0 +1,20 @@ | ||
| a=1; | ||
| b=a; | ||
| c=1; | ||
| d=b; | ||
| e=d; | ||
| longname=2; | ||
| if (longname+1) { | ||
| x=3; | ||
| if (x) var z = 7; | ||
| } | ||
| z=1,y=1,x=1 | ||
|
|
||
| g+=1; | ||
| h=g; | ||
|
|
||
| ++i; | ||
| j=i; | ||
|
|
||
| i++; | ||
| j=i+17; |
| @@ -0,0 +1,3 @@ | ||
| var a = a + "a" + "b" + 1 + c; | ||
| var b = a + "c" + "ds" + 123 + c; | ||
| var c = a + "c" + 123 + d + "ds" + c; |
| @@ -0,0 +1,5 @@ | ||
| // test that the calculation is fold to 13 | ||
| var a = 1 + 2 * 6; | ||
|
|
||
| // test that it isn't replaced with 0.3333 because that is more characters | ||
| var b = 1/3; |
| @@ -0,0 +1 @@ | ||
| print(a / /[a-z]/); |
| @@ -0,0 +1,4 @@ | ||
| var x = 5; | ||
| function bar() { return --x; } | ||
| function foo() { while (bar()); } | ||
| function mak() { for(;;); } |
| @@ -0,0 +1,10 @@ | ||
| a=func(); | ||
| b=z; | ||
| for (a++; i < 10; i++) { alert(i); } | ||
|
|
||
| var z=1; | ||
| g=2; | ||
| for (; i < 10; i++) { alert(i); } | ||
|
|
||
| var a = 2; | ||
| for (var i = 1; i < 10; i++) { alert(i); } |
| @@ -0,0 +1 @@ | ||
| if(_);if(_);else; |
| @@ -0,0 +1,6 @@ | ||
| var a = 1; | ||
| if (a == 1) { | ||
| a = 2; | ||
| } else { | ||
| a = 17; | ||
| } |
| @@ -0,0 +1,9 @@ | ||
| function a(b) { | ||
| if (b == 1) { | ||
| return 2; | ||
| } else { | ||
| return 17; | ||
| } | ||
|
|
||
| return 3; | ||
| } |
| @@ -0,0 +1,16 @@ | ||
| function x(a) { | ||
| if (typeof a === 'object') | ||
| return a; | ||
|
|
||
| if (a === 42) | ||
| return 0; | ||
|
|
||
| return a * 2; | ||
| } | ||
|
|
||
| function y(a) { | ||
| if (typeof a === 'object') | ||
| return a; | ||
|
|
||
| return null; | ||
| }; |
| @@ -0,0 +1 @@ | ||
| with({get NaN(){throw 0},get Infinity(){throw 0}})(1/0)/(1/0),0/0,123456/0,-123456/0 |
| @@ -0,0 +1 @@ | ||
| function f() { var a; if (a = 'a') { return a; } else { return a; } }; f(); |
| @@ -0,0 +1,3 @@ | ||
| new (A, B) | ||
| new (A || B) | ||
| new (X ? A : B) |
| @@ -0,0 +1 @@ | ||
| var a = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'}; |
| @@ -0,0 +1 @@ | ||
| var a = 0xC1BDCEEE; |
| @@ -0,0 +1,4 @@ | ||
| var a = function(b) { | ||
| b(); | ||
| a() | ||
| } |
| @@ -0,0 +1 @@ | ||
| {a: 1} |
| @@ -0,0 +1,6 @@ | ||
| var a = 0; | ||
| switch(a) { | ||
| case 0: | ||
| a++; | ||
| break; | ||
| } |
| @@ -0,0 +1,7 @@ | ||
| label1 : { | ||
| label2 : { | ||
| break label2; | ||
| console.log(2); | ||
| } | ||
| console.log(1); | ||
| } |
| @@ -0,0 +1 @@ | ||
| (a ? b : c) ? d : e |
| @@ -0,0 +1 @@ | ||
| if (!x) debugger; |
| @@ -0,0 +1,3 @@ | ||
| o = {'.5':.5} | ||
| o = {'0.5':.5} | ||
| o = {0.5:.5} |
| @@ -0,0 +1 @@ | ||
| result=(function(){ return 1;})() |
| @@ -0,0 +1,3 @@ | ||
| var a = 1 << 3; | ||
| var b = 8 >> 1; | ||
| var c = 8 >>> 1; |
| @@ -0,0 +1,3 @@ | ||
| var a = {}; | ||
| a["this"] = 1; | ||
| a["that"] = 2; |
| @@ -0,0 +1,25 @@ | ||
| (function () { | ||
| var cake | ||
| if (noFreeCakes) return /* I would | ||
| insert something | ||
| there, but I'm sort | ||
| of lazy so whatever. | ||
| */ cake = new FreeCake() | ||
| return cake | ||
| })() | ||
|
|
||
| (function () { | ||
| var cake | ||
| if (noFreeCakes) return /* I would insert something there, */ /* | ||
| but I'm sort of lazy so | ||
| */ /* whatever. */ cake = new FreeCake() | ||
| return cake | ||
| })() | ||
|
|
||
| (function () { | ||
| var cake | ||
| if (noFreeCakes) return // I would insert something there, but I'm sort of lazy so whatever. | ||
| cake = new FreeCake() | ||
| return cake | ||
| })() | ||
|
|
| @@ -0,0 +1,4 @@ | ||
| function test() { | ||
| debugger; | ||
| return; | ||
| } |
| @@ -0,0 +1,32 @@ | ||
| "use strict"; | ||
| "use strict"; | ||
|
|
||
| function a() { | ||
| void "a"; | ||
| function b() { | ||
| "use strict"; | ||
| void "b"; | ||
| function c() { | ||
| "use strict"; | ||
| void "c"; | ||
| } | ||
| function d() { | ||
| "salmon"; | ||
| void "d"; | ||
| } | ||
| } | ||
| function e() { | ||
| "salmon"; | ||
| void "e"; | ||
| function f() { | ||
| "use strict"; | ||
| "salmon"; | ||
| void "f"; | ||
| for (var i = 0; i < 10; i++) var g = function() { | ||
| "use strict"; | ||
| "salmon"; | ||
| void "g"; | ||
| }(); | ||
| } | ||
| } | ||
| }; |
| @@ -0,0 +1,3 @@ | ||
| var a = 2e3; | ||
| var b = 2e-3; | ||
| var c = 2e-5; |
| @@ -0,0 +1 @@ | ||
| ((a || b) && c)(); |
| @@ -0,0 +1 @@ | ||
| var s, i; s = ''; i = 0; |
| @@ -0,0 +1,9 @@ | ||
| function bar(a) { | ||
| try { | ||
| foo(); | ||
| } catch(e) { | ||
| alert("Exception caught (foo not defined)"); | ||
| } | ||
| alert(a); // 10 in FF, "[object Error]" in IE | ||
| } | ||
| bar(10); |
| @@ -0,0 +1 @@ | ||
| x = (y, z) |
| @@ -0,0 +1,3 @@ | ||
| foo.toString(); | ||
| a.toString(16); | ||
| b.toString.call(c); |
| @@ -0,0 +1,5 @@ | ||
| function f() { | ||
| if (a) return; | ||
| g(); | ||
| function g(){} | ||
| }; |
| @@ -0,0 +1 @@ | ||
| [(a,b)] |
| @@ -0,0 +1,4 @@ | ||
| var a = { | ||
| a: 1, | ||
| b: 2, // <-- trailing comma | ||
| }; |
| @@ -0,0 +1,82 @@ | ||
| !function() { | ||
| 'use strict'; | ||
|
|
||
| var 七, // issue #222 | ||
| $1, // issue #222 | ||
| ლ_ಠ益ಠ_ლ; // issue #324 | ||
| }; | ||
|
|
||
| !function() { | ||
| 'use strict'; | ||
|
|
||
| // test if Unicode canonical equivalence is ignored | ||
| var \u006E\u0303, | ||
| \u00F1; | ||
| }; | ||
|
|
||
| !function() { | ||
| 'use strict'; | ||
|
|
||
| var \uFF38, // X Lu (third to last) | ||
| \uFF58, // x Ll (third to last) | ||
| \u1FBC, // ᾼ Lt (third to last) | ||
| \uFF70, // ー Lm (third to last) | ||
| \u4DB3, // 䶳 Lo (third to last within a range) | ||
| \u97CA, // 韊 Lo (third to last within a range) | ||
| \uD7A1, // 힡 Lo (third to last within a range) | ||
| \uFFDA, // ᅳ Lo (third to last) | ||
| \uA6ED, // ꛭ Nl (third to last) | ||
| \u0024, // $ | ||
| \u005F, // _ | ||
| \u0024\uFF38, // X Lu (third to last) | ||
| \u0024\uFF58, // x Ll (third to last) | ||
| \u0024\u1FBC, // ᾼ Lt (third to last) | ||
| \u0024\uFF70, // ー Lm (third to last) | ||
| \u0024\u4DB3, // 䶳 Lo (third to last within a range) | ||
| \u0024\u97CA, // 韊 Lo (third to last within a range) | ||
| \u0024\uD7A1, // 힡 Lo (third to last within a range) | ||
| \u0024\uFFDA, // ᅳ Lo (third to last) | ||
| \u0024\uA6ED, // ꛭ Nl (third to last) | ||
| \u0024\uFE24, // ︤ Mn (third to last) | ||
| \u0024\uABE9, // ꯩ Mc (third to last) | ||
| \u0024\uFF17, // 7 Nd (third to last) | ||
| \u0024\uFE4E, // ﹎ Pc (third to last) | ||
| \u0024\u200C, // ZERO WIDTH NON-JOINER | ||
| \u0024\u200D, // ZERO WIDTH JOINER | ||
| \u0024\u0024, // $ | ||
| \u0024\u005F; // _ | ||
| }; | ||
|
|
||
| !function() { | ||
| 'use strict'; | ||
|
|
||
| var X, | ||
| x, | ||
| ᾼ, | ||
| ー, | ||
| 䶳, | ||
| 韊, | ||
| 힡, | ||
| ᅳ, | ||
| ꛭ, | ||
| $, | ||
| _, | ||
| $X, | ||
| $x, | ||
| $ᾼ, | ||
| $ー, | ||
| $䶳, | ||
| $韊, | ||
| $힡, | ||
| $ᅳ, | ||
| $ꛭ, | ||
| $︤, | ||
| $ꯩ, | ||
| $7, | ||
| $﹎, | ||
| $, | ||
| $, | ||
| $$, | ||
| $_; | ||
| }; | ||
|
|
| @@ -0,0 +1,5 @@ | ||
| (function() { | ||
| var x = function fun(a, fun, b) { | ||
| return fun; | ||
| }; | ||
| }()); |
| @@ -0,0 +1 @@ | ||
| var nullString = "\0" |
| @@ -0,0 +1,3 @@ | ||
| typeof a === 'string' | ||
| b + "" !== c + "" | ||
| d < e === f < g |
| @@ -0,0 +1,3 @@ | ||
| // var declarations after each other should be combined | ||
| var a = 1; | ||
| var b = 2; |
| @@ -0,0 +1,21 @@ | ||
| function id(a) { | ||
| // Form-Feed | ||
| // Vertical Tab | ||
| // No-Break Space | ||
| // Mongolian Vowel Separator | ||
| // En quad | ||
| // Em quad | ||
| // En space | ||
| // Em space | ||
| // Three-Per-Em Space | ||
| // Four-Per-Em Space | ||
| // Six-Per-Em Space | ||
| // Figure Space | ||
| // Punctuation Space | ||
| // Thin Space | ||
| // Hair Space | ||
| // Narrow No-Break Space | ||
| // Medium Mathematical Space | ||
| // Ideographic Space | ||
| return a; | ||
| } |
| @@ -0,0 +1,2 @@ | ||
| with({}) { | ||
| }; |
| @@ -0,0 +1,57 @@ | ||
| global.DIGITS_OVERRIDE_FOR_TESTING = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789"; | ||
|
|
||
| var fs = require('fs'), | ||
| uglify = require('../../uglify-js'), | ||
| jsp = uglify.parser, | ||
| nodeunit = require('nodeunit'), | ||
| path = require('path'), | ||
| pro = uglify.uglify; | ||
|
|
||
| var Script = process.binding('evals').Script; | ||
|
|
||
| var scriptsPath = __dirname; | ||
|
|
||
| function compress(code) { | ||
| var ast = jsp.parse(code); | ||
| ast = pro.ast_mangle(ast, { mangle: true }); | ||
| ast = pro.ast_squeeze(ast, { no_warnings: true }); | ||
| ast = pro.ast_squeeze_more(ast); | ||
| return pro.gen_code(ast); | ||
| }; | ||
|
|
||
| var testDir = path.join(scriptsPath, "compress", "test"); | ||
| var expectedDir = path.join(scriptsPath, "compress", "expected"); | ||
|
|
||
| function getTester(script) { | ||
| return function(test) { | ||
| var testPath = path.join(testDir, script); | ||
| var expectedPath = path.join(expectedDir, script); | ||
| var content = fs.readFileSync(testPath, 'utf-8'); | ||
| var outputCompress = compress(content); | ||
|
|
||
| // Check if the noncompressdata is larger or same size as the compressed data | ||
| test.ok(content.length >= outputCompress.length); | ||
|
|
||
| // Check that a recompress gives the same result | ||
| var outputReCompress = compress(content); | ||
| test.equal(outputCompress, outputReCompress); | ||
|
|
||
| // Check if the compressed output is what is expected | ||
| var expected = fs.readFileSync(expectedPath, 'utf-8'); | ||
| test.equal(outputCompress, expected.replace(/(\r?\n)+$/, "")); | ||
|
|
||
| test.done(); | ||
| }; | ||
| }; | ||
|
|
||
| var tests = {}; | ||
|
|
||
| var scripts = fs.readdirSync(testDir); | ||
| for (var i in scripts) { | ||
| var script = scripts[i]; | ||
| if (/\.js$/.test(script)) { | ||
| tests[script] = getTester(script); | ||
| } | ||
| } | ||
|
|
||
| module.exports = nodeunit.testCase(tests); |
| @@ -0,0 +1,33 @@ | ||
| function foo(arg1, arg2, arg3, arg4, arg5, arg6) { | ||
| var a = 5; | ||
| { | ||
| var d = 10, mak = 20, buz = 30; | ||
| var q = buz * 2; | ||
| } | ||
| if (moo) { | ||
| var a, b, c; | ||
| } | ||
| for (var arg1 = 0, d = 20; arg1 < 10; ++arg1) | ||
| console.log(arg3); | ||
| for (var i in mak) {} | ||
| for (j in d) {} | ||
| var d; | ||
|
|
||
| function test() { | ||
|
|
||
| }; | ||
|
|
||
| //test(); | ||
|
|
||
| (function moo(first, second){ | ||
| console.log(first); | ||
| })(1); | ||
|
|
||
| (function moo(first, second){ | ||
| console.log(moo()); | ||
| })(1); | ||
| } | ||
|
|
||
|
|
||
| var foo; | ||
| var bar; |