Compare commits
672 commits
release-1.
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| a2e96cc1fa | |||
| c1af55a9de | |||
| 87640ed8da | |||
| ad4e35f452 | |||
| ae79a59639 | |||
| 354c9788c8 | |||
| 67573db0e0 | |||
| 22013f2267 | |||
| 8370b2ba98 | |||
| 144d2475cb | |||
| 96ae3ad7fb | |||
| a7fc1df893 | |||
| 5b929bf0ca | |||
| 0b326e71e6 | |||
| c6d86368c5 | |||
| 1d59aff5a6 | |||
| 50b5c4d09e | |||
| 42a0d7e610 | |||
| c5b9a613a8 | |||
| 362ca05ab8 | |||
| a7cabf0d63 | |||
| f25b3c0b76 | |||
| 543070a94f | |||
| 786a110b48 | |||
| 348fa4607d | |||
| f90d1e0667 | |||
| e5216c6c5f | |||
| 6ed24ef0d2 | |||
| 829ee33c32 | |||
| 44a3e406a8 | |||
| cdbbe92e89 | |||
| d62ada6c53 | |||
| 342712e72f | |||
| 59c17419a9 | |||
| ac978f9555 | |||
| 4f97663619 | |||
| 7723a55306 | |||
| 45c8131c84 | |||
| 147bd635fc | |||
| a0e78d7fa6 | |||
| 7e32c3ad6f | |||
| 6e6a5ce191 | |||
| eb3f749ba1 | |||
| f005cb7b17 | |||
| dbec9f22b2 | |||
| ab7c1a4c1c | |||
| e37c4ad69b | |||
| cbcdb22670 | |||
| babf14a8d2 | |||
| bae8079268 | |||
| cf5405478f | |||
| 31029a8cac | |||
| 7821dd0142 | |||
| 12023e23e0 | |||
| c9853f6217 | |||
| 5a6f1d14c2 | |||
| 4d62d2083a | |||
| 6364067bac | |||
| 542beb0c67 | |||
| 8a9dc51b73 | |||
| 12d827ae67 | |||
| b8ae49178c | |||
| 461c481607 | |||
| 24d1d29944 | |||
| a51e2557c9 | |||
| 8f0887ac8d | |||
| 8ba66866e2 | |||
| 358ad425b8 | |||
| 5ffc647e64 | |||
| ef572aa7f8 | |||
| 6c54afad92 | |||
| 8df5414e6e | |||
| ae550148d4 | |||
| ff30bc43a3 | |||
| bdcaf06d8d | |||
| 9f5e19bfcf | |||
| 318fd04ff7 | |||
| f723404f96 | |||
| 6114af4cc6 | |||
| 9b5fe093b0 | |||
| c336fc1f97 | |||
| 38b0667d2b | |||
| 9c9f8317b2 | |||
| 9ad65bbae5 | |||
| ffe73e0e5a | |||
| f258bbc81f | |||
| 72286377df | |||
| dee6227989 | |||
| 29bf38aab2 | |||
| b6004b3a31 | |||
| a53ff1b03c | |||
| 95aa91f33b | |||
| 583f27f95d | |||
| 4df9ce571a | |||
| c9f7ce7b1a | |||
| 41f3d384c5 | |||
| d25965a116 | |||
| 45603d8794 | |||
| 3aeb363485 | |||
| 02d566809c | |||
| c7386c4ef2 | |||
| 31e86e0af9 | |||
| 8e38572d31 | |||
| fcb6b286f3 | |||
| 14e3c538ff | |||
| 83b02c7eb6 | |||
| 16448dab95 | |||
| 0e21a8adb6 | |||
| 45cafda543 | |||
| b774c997da | |||
| 19b99919d2 | |||
| c5f556a901 | |||
| 95aa3009dc | |||
| d03e0b2987 | |||
| 998025b55c | |||
| 42fa5a1c6d | |||
|
|
b20a7ca05c | ||
| 6e085b82cb | |||
| e26760bdc4 | |||
| 508c193c50 | |||
| da393c74f0 | |||
| 88b8391673 | |||
| 1e071fd0cc | |||
| 63bfe34e35 | |||
| 6f632e9d4f | |||
| 81c442d5b0 | |||
| 893b8f98a8 | |||
| 7db39d5c5b | |||
| d74547ce41 | |||
| e44539454f | |||
| 49ee8ace0d | |||
| 6960102a81 | |||
| dafab7f85f | |||
| 23923fd694 | |||
| f20e5d36a6 | |||
| d4bb902410 | |||
| aec7a9195b | |||
| 56aff15a70 | |||
| 264ac59cbe | |||
| f2fa11cfca | |||
| dbd0071bc9 | |||
| 3bd9f96c6c | |||
| 3cf01e6bf5 | |||
| 8abb8c8efd | |||
| 91921c809f | |||
| 6eeb0e12b6 | |||
| eb58b19791 | |||
| a558d8c78f | |||
| 118fcf23b6 | |||
| c7d2e99de3 | |||
| 1e2cb8a3e3 | |||
| b1869dc000 | |||
| 806d2b6cfd | |||
| c7822b9fc2 | |||
|
|
6467b38d04 | ||
| 187cbba693 | |||
| 09384070f9 | |||
| c0cf251e97 | |||
| 7e17ff6f78 | |||
| b2e5fbbe9d | |||
| b9e557e6b8 | |||
| 4396dd2b44 | |||
| 9ffc935ded | |||
| 5bd5e0a5e4 | |||
| 763594b3ec | |||
| cd35c1c26d | |||
| 6a8f1f2813 | |||
| 7bf5dafec5 | |||
|
|
2fbf09911f | ||
| 5ab37a5227 | |||
|
|
7bec2586fb | ||
| 44037fb22d | |||
|
|
fa8c56144a | ||
| dc551a972f | |||
|
|
4070dcf19f | ||
| 8bd1dad245 | |||
|
|
dd14305803 | ||
| 5fee872830 | |||
| 4593e66e55 | |||
| 38d18dc8c2 | |||
| 48adee4823 | |||
|
|
68e2197d24 | ||
|
|
d3630b919b | ||
|
|
78d151f5ea | ||
|
|
4291709620 | ||
| 0edd1e2bff | |||
|
|
9c3c69fd07 | ||
| 786208c09e | |||
| e11eafa795 | |||
|
|
8fbb19a349 | ||
|
|
9f8737ed3d | ||
| 1db17b29ae | |||
| c38ed1e1b4 | |||
| 2147f68168 | |||
| a7d60cd0e7 | |||
| 772d06b3ef | |||
| dcf1821398 | |||
| 726dd77649 | |||
| a0ec7b148b | |||
| eb62053bf4 | |||
| 2dda30ed75 | |||
| 3d85327afe | |||
| 6256e83f9e | |||
|
|
3134a0053f | ||
| ba2e3199cb | |||
|
|
65d3631194 | ||
| d344903d40 | |||
|
|
1619fc5675 | ||
| e33f92b07a | |||
| b92c0f9c50 | |||
| 4529c9c372 | |||
|
|
27d1ee65d9 | ||
|
|
748825e40c | ||
|
|
29cee882c0 | ||
|
|
934735e15d | ||
| 3f554e1266 | |||
|
|
ff1d283448 | ||
| fe83d13b48 | |||
| 32c56b5c9d | |||
| 5f45255c24 | |||
| 1a5d2d8a13 | |||
| 69e46539d0 | |||
| 5fc1852035 | |||
| d2501c2d3a | |||
| 8c5cbde7b5 | |||
| fd517885f8 | |||
| b196d285cd | |||
| c4f7a7991a | |||
| 816c7151ab | |||
| 18c80b047d | |||
| fab5fa2e14 | |||
| b8a87576c0 | |||
| 9e371e7012 | |||
| 70d0b51c92 | |||
| e9d1014e3f | |||
| 413e5ca70d | |||
| 7d91d5bcf7 | |||
| 8a2d0a3209 | |||
| a9e5c204fe | |||
| e59635f4ae | |||
| f9c8214348 | |||
| 3e29317264 | |||
| 6a12114927 | |||
| c437076c49 | |||
| ffa3f65f10 | |||
| 31a1cb0a86 | |||
| 50ff264517 | |||
| 416898f83b | |||
| f42812d771 | |||
| f25200f5fd | |||
| a55999a14c | |||
| c9f25316a2 | |||
| ab10032de9 | |||
| 1356b7cb67 | |||
| e3dfbc704e | |||
| c7cf535652 | |||
| a5424825b8 | |||
|
|
9ab30b47e8 | ||
|
|
04550673f9 | ||
|
|
7852d26b6c | ||
|
|
40e1d2d6fa | ||
| af1f560c66 | |||
| 6ec7fccac9 | |||
| 288e21a710 | |||
|
|
b063643e2f | ||
| 81a5bac780 | |||
| 1f5094c165 | |||
| f4de3114b8 | |||
| c9f7043a90 | |||
| b7e7645eef | |||
|
|
0dc29460e4 | ||
| 5f4dc8b314 | |||
| dbe96d4cdd | |||
| cf4486e397 | |||
| 180d271c66 | |||
| 71c3eec62d | |||
|
|
99c9f00db4 | ||
| e27958fd2f | |||
| 174864b3aa | |||
|
|
adf2d4002d | ||
|
|
559d95cf16 | ||
| 9c737b5552 | |||
| e82eda3252 | |||
| 229209c3a3 | |||
| 1d445b72f0 | |||
| 2ec999c49d | |||
| 8f8a5fa341 | |||
| dbec5531e8 | |||
| ce68275e4e | |||
| 96ca0b6690 | |||
| e437bec53e | |||
| bddbfe6547 | |||
| 42799ec995 | |||
| 7fef2bfaa8 | |||
| 32e1a595eb | |||
| 0bf402827f | |||
| 750f174508 | |||
| 675d0c4182 | |||
|
|
dc80cf2ccd | ||
|
|
745e594941 | ||
|
|
0115e0382b | ||
|
|
5ba9989c93 | ||
|
|
233e7f1023 | ||
|
|
f73400884f | ||
| d0d0ba7ddb | |||
|
|
d4495fa735 | ||
|
|
00be74d8dd | ||
| 6e40b1fdec | |||
| 628caae82c | |||
| 4276bd7862 | |||
| 099f9e7fa6 | |||
| 178441ab87 | |||
| 8c4bf49270 | |||
| bf5c7e257d | |||
| 631258b5f6 | |||
| c6488102c1 | |||
| ddf7c80b3a | |||
| fd84b89f12 | |||
| ae74311d11 | |||
|
|
f6105b7476 | ||
|
|
75f8dfe60d | ||
|
|
b67f421edc | ||
|
|
9c39d75cc7 | ||
| 0ecc3c8c8d | |||
| ad0f7e0c65 | |||
| f87eac943e | |||
|
|
d1e605cadb | ||
| d8f52a063f | |||
|
|
5154650c25 | ||
| 394fbe9c66 | |||
| 3ec835cb73 | |||
|
|
281232f0a9 | ||
| 00cc3f780c | |||
| 900fd2635c | |||
| 8edd8d1dcd | |||
| e7750a2281 | |||
| 735f580b32 | |||
| 287df1e4ec | |||
| 1144db0434 | |||
| 25d309fe81 | |||
| 29d25a08ad | |||
| 60c9f486d0 | |||
| 4835eb8884 | |||
| a24e9681ec | |||
|
|
c96fdb8c49 | ||
| 8918870bde | |||
|
|
196bb0f435 | ||
| 9d53108f4f | |||
| 5066a6d21d | |||
| 9e0b760237 | |||
| 48793c4190 | |||
|
|
6dada559f1 | ||
|
|
2b006cc113 | ||
|
|
4772796817 | ||
| 82c4072160 | |||
| 468b046104 | |||
|
|
e317b74aba | ||
| 8b993edc28 | |||
| 94f727a993 | |||
| 8656b9be92 | |||
| 23a510d9d3 | |||
| a4a1fc757a | |||
|
|
f2463752e5 | ||
|
|
2e906a8d94 | ||
|
|
6c641f1125 | ||
|
|
f59cedcea0 | ||
|
|
cdab84b54b | ||
|
|
c91a765a31 | ||
| 8050d7ed6c | |||
| 0ec3464962 | |||
| 1e78e4da64 | |||
| 34f61ea7d9 | |||
| 6f6b15f6a1 | |||
| 956dcec279 | |||
|
|
154aa4235b | ||
| af9f74594b | |||
| f32621f991 | |||
|
|
630971076c | ||
|
|
c9cf3ce5cf | ||
| b08268b311 | |||
| 382449c574 | |||
| 32d0682163 | |||
| 3ba5d22723 | |||
| 97b2d790c7 | |||
| b0de833542 | |||
| 83575dd27d | |||
| 05603b7dc8 | |||
| 4194c7849d | |||
| 2e368ce13f | |||
| c92d6f93d6 | |||
| 9119dd7ea6 | |||
| 08b2d96eba | |||
| 1c5b661a3e | |||
| 11639f9319 | |||
| f64a1fa25d | |||
| 9fc91c221d | |||
| 751d1d2523 | |||
| 6c407d72b3 | |||
| 820d11f35f | |||
| ef5ac1c83c | |||
| 707fd6391f | |||
| 3e50f2a636 | |||
| cd6fd202c7 | |||
| 51036916f8 | |||
| 3fb8b91f89 | |||
| 9e9c929847 | |||
| 8e6e401cec | |||
| 207091aee8 | |||
| b1c60cbf00 | |||
| 5d2ccc7c47 | |||
| a83378d719 | |||
| 44b59e87fd | |||
| 97f1bad6e0 | |||
| 8b5a26a4ac | |||
| 9d3fef0e4f | |||
| 764ac7eac0 | |||
| c4ddaa2f60 | |||
| 0f18744ee6 | |||
| 1c3889fae8 | |||
| 7ba2421018 | |||
| 8f377d0150 | |||
| 22ccbedd47 | |||
| cfb9cdb590 | |||
| 2ecad42879 | |||
| 319186547e | |||
| eaa3ba2357 | |||
| 21191ded75 | |||
| a7fe64b70e | |||
| a5fd70eba5 | |||
| e214e9c80f | |||
| 95b4baf2cd | |||
| 1cad3ea794 | |||
| c74d616e77 | |||
| 49fad937e8 | |||
| a554aed6d0 | |||
| 28988c34fb | |||
| da4ac4333c | |||
| da17ed5855 | |||
| 1041d5cc49 | |||
| 9e28a3af94 | |||
| 93d2efed58 | |||
| 501c060ed1 | |||
| 0cfd2abe5e | |||
| b46838df69 | |||
| ef43475897 | |||
| da1c419875 | |||
| 23d248bef2 | |||
| 1e83a393c3 | |||
| 1e8ac45da8 | |||
| 302d2e3729 | |||
| 307723572a | |||
| 23e7af26a6 | |||
| 0bdaa332e7 | |||
| 9260adc98d | |||
| 38c203b89e | |||
| b41116c3f5 | |||
| 6cb6e4cd3e | |||
| 1952ca19f6 | |||
| a90fff0c9f | |||
| 0c77ab756c | |||
| 37817b382f | |||
| 6427aaf9ce | |||
| 2d486f197b | |||
| 5f8482092a | |||
| 0cdd3385cf | |||
| 7ed88a16b4 | |||
| c588441add | |||
| 72068d0d8c | |||
| 4ee6d89bf5 | |||
| 243e80d8ac | |||
| bf6aa7a90b | |||
| eff0f1f47c | |||
| d217d85e04 | |||
| d47cf60be5 | |||
| f555a0e417 | |||
| e86d3f0a9e | |||
| 7cc3adedbf | |||
| af9b02de26 | |||
| d29a2a1c3f | |||
| 1205d82fda | |||
| 9ca613268f | |||
| e1660721ef | |||
| e3f3e29502 | |||
| 9cf539c382 | |||
| 4d83a7e941 | |||
| 6986a8507e | |||
| 8930a73b5a | |||
| 175989447e | |||
| 4cce47686c | |||
| ff78289daa | |||
| 95777db1fa | |||
| 74e76accb8 | |||
| 5340dbfac5 | |||
| ac83a5e474 | |||
| c36302a83f | |||
| a978ad7c59 | |||
| 5ed3ad138f | |||
| 12df0060f7 | |||
| 09585e21df | |||
| a21c378b7a | |||
| 0ba3b4800c | |||
| 4e46065e87 | |||
| 4764649789 | |||
| 386690a818 | |||
| 2b48d309f3 | |||
| 5683b35d12 | |||
| 70d8c67f07 | |||
| 4f0b0ab834 | |||
| a4ff04909a | |||
| 5f96e314db | |||
| e121967bbc | |||
| 0cb91214c7 | |||
| 4c85e79dec | |||
| 704f80de75 | |||
| 3f9d03a6f6 | |||
| 62bd495564 | |||
| 6dde17b8e8 | |||
| b8b58a2ce7 | |||
| f65eff0015 | |||
| 2120bc3ed8 | |||
| fc044132bb | |||
| 2352a788e4 | |||
| a1e8a00957 | |||
| cdefd37ee8 | |||
| 0713ac5db7 | |||
| 94bd4c1f59 | |||
| 922f2ed732 | |||
| 1defbc8240 | |||
| 24a41030e7 | |||
| b36609006e | |||
| b61940c2e1 | |||
| 48c415cd2c | |||
| bdf8d227b9 | |||
| c66b372748 | |||
| 72680a2659 | |||
| aae43d3051 | |||
| f35eaef6aa | |||
| f6da6748cc | |||
| 2726768ddf | |||
| 2e8fba1f31 | |||
| eed7d08028 | |||
| c3d64dc829 | |||
| ca2040d429 | |||
| 3b4112fcfb | |||
| b42772eef1 | |||
| 6a62937005 | |||
| fb654a6c46 | |||
| 5a2af525e1 | |||
| c388e71203 | |||
| 8b45d5acf7 | |||
| 3feee29c0f | |||
| 3a34a2fb0e | |||
| 8f83797e44 | |||
| ef097ff020 | |||
| 9f7d1a8529 | |||
| 97bfba00d0 | |||
| 065679f7f0 | |||
| c2c3684ae0 | |||
| 8c86db2eb0 | |||
| 10736fff35 | |||
| 0f44650110 | |||
| 4d85afcf8a | |||
| b31be0f3aa | |||
| 9ec39eaf98 | |||
| fcc889a480 | |||
| 6d85a22091 | |||
| 1681ea1ec0 | |||
| 6663e220d8 | |||
| d864e5e9d3 | |||
| 4befcbac0d | |||
| 66f0813c4d | |||
| 4d18de1f59 | |||
| 45a47e47c1 | |||
| c9527ef194 | |||
| 81eade1e27 | |||
| 13b9782cf0 | |||
| d33f0eeaae | |||
| 1b2bd820a0 | |||
| 4136683d2e | |||
| b8d9958060 | |||
| f617e44d83 | |||
| 7520783ff9 | |||
| f283f83553 | |||
| 9619351f9b | |||
| 658a595dbd | |||
| 79ceae33a4 | |||
| ac5d7dbe49 | |||
| 19316ee98c | |||
| df04fb91dc | |||
| b77469b33c | |||
| 7cb6c70f60 | |||
| c8f0c8ade9 | |||
| dcad7a4df4 | |||
| 4c0c009e05 | |||
| aca84e15f4 | |||
| 2274d2081a | |||
| 6b30e1c71f | |||
| dba702341f | |||
| 92be9c8079 | |||
| 99f6d714bb | |||
| 503e2025ac | |||
| 86108f1bc8 | |||
| 3632095276 | |||
| b3a9a82382 | |||
| 9ad4989583 | |||
| 55fb6d57e8 | |||
| e2d4447fbe | |||
| 5ab19df7d9 | |||
| 88f65c007d | |||
| 7393f28e66 | |||
| c115f03867 | |||
| c2d8c557fc | |||
| ceeba55018 | |||
| 49b1b357a0 | |||
| f6b76518ac | |||
| 951f9a0983 | |||
| b7d55cbc88 | |||
| df1a87eab4 | |||
| 59bedf9e78 | |||
| 37909691e5 | |||
| 901cbc7aaf | |||
| 76d98b32e1 | |||
| f5cff5ba44 | |||
| 97d2813df2 | |||
| 122818697b | |||
| 472104fa75 | |||
| 52144cfa84 | |||
| e04e1daeaf | |||
| d69cf54e43 | |||
| 0e3bb7216c | |||
| d28d18c0fe | |||
| 70e55bc853 | |||
| 6619322053 | |||
| 59377e4676 | |||
| b322ac79f6 | |||
| 93194492ad | |||
| cd5cd15018 | |||
| d8fdba526a | |||
| dd49a26a57 | |||
| 9748633b78 | |||
| 7f6584dcbd | |||
| 02371689c8 | |||
| 313833ecce | |||
| f27a4cf5ac | |||
| c58bedeb0b | |||
| 3ead0b8019 | |||
| 4be343d768 | |||
| 1fc175018a | |||
| 2d61c0dafa | |||
| d75e3437a9 | |||
| fdfee2e50d | |||
| 2eeb4549ce | |||
| 79d6c265e2 | |||
| 2d0b1d6790 | |||
| a8b37e39ba | |||
| ee28a1466a | |||
| 4b451cd84c | |||
| 0fe4d4b160 | |||
| b5851313b9 | |||
| e9c9fb7ae5 | |||
| 2e16d8b179 | |||
| 780ad73c2a | |||
| ac64092624 | |||
| a4b85d40e6 | |||
| 8b3a41191e | |||
| 4d2867d744 | |||
| 7644cc4ec0 | |||
| 95297f5f14 | |||
| 6180ee475c | |||
| aeb13485e9 | |||
| 342974fdc9 | |||
| 34af2b0bd9 |
317 changed files with 17383 additions and 115693 deletions
17
.editorconfig
Normal file
17
.editorconfig
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.{java,skin}]
|
||||
indent_size = 3
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
48
.github/workflows/deploy.yml
vendored
Normal file
48
.github/workflows/deploy.yml
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
name: Deploy
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
hostname:
|
||||
description: Hostname
|
||||
type: string
|
||||
required: true
|
||||
default: antville.org
|
||||
|
||||
jobs:
|
||||
stage:
|
||||
runs-on: antville
|
||||
|
||||
environment:
|
||||
name: production
|
||||
url: ${{ inputs.hostname }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew :build
|
||||
|
||||
- name: Copy files to server
|
||||
run: |
|
||||
rsync ./build/install/antville/ ${{ inputs.hostname }}:./apps/antville/ \
|
||||
--archive --compress --delete --verbose \
|
||||
--filter '+ /claustra' \
|
||||
--filter '+ /code' \
|
||||
--filter '+ /compat' \
|
||||
--filter '+ /db' \
|
||||
--filter '+ /i18n' \
|
||||
--filter '+ /lib' \
|
||||
--filter '- /*'
|
||||
rsync ./build/install/antville/static/ ${{ inputs.hostname }}:./apps/antville/static/ \
|
||||
--archive --compress --verbose \
|
||||
--filter '+ /fonts' \
|
||||
--filter '+ /formica.html' \
|
||||
--filter '+ /img' \
|
||||
--filter '+ /scripts' \
|
||||
--filter '+ /styles' \
|
||||
--filter '- /*'
|
||||
|
||||
- name: Restart Helma
|
||||
run: ssh ${{ inputs.hostname }} restart
|
||||
|
||||
60
.github/workflows/release.yml
vendored
Normal file
60
.github/workflows/release.yml
vendored
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags: '1.6.*'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: antville
|
||||
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
LC_TIME: en_US.UTF-8
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew assembleDist
|
||||
|
||||
- name: Create release notes
|
||||
id: create_release_notes
|
||||
run: |
|
||||
release_notes=$(npx git-cliff@latest --latest)
|
||||
# Write the release notes as a heredoc to the workflow output
|
||||
# ⚠️ No white space around `<<` is crucial!
|
||||
echo "release_notes<<.eot0x03" >> $GITHUB_OUTPUT
|
||||
echo "$release_notes" >> $GITHUB_OUTPUT
|
||||
echo ".eot0x03" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create release
|
||||
uses: actions/forgejo-release@v2
|
||||
with:
|
||||
direction: upload
|
||||
url: https://code.host.antville.org
|
||||
token: ${{ github.token }}
|
||||
title: Antville ${{ github.ref_name }}
|
||||
release-dir: build/distributions
|
||||
release-notes: ${{ steps.create_release_notes.outputs.release_notes }}
|
||||
hide-archive-link: true
|
||||
verbose: true
|
||||
|
||||
- name: Create release at GitHub
|
||||
run: |
|
||||
gh release create "$GITHUB_REF_NAME" \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--title "Antville ${{ github.ref_name }}" \
|
||||
--notes "${{ steps.create_release_notes.outputs.release_notes }}"
|
||||
|
||||
- name: Upload release assets to GitHub
|
||||
run: |
|
||||
gh release upload "$GITHUB_REF_NAME" build/distributions/ant*.* \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--clobber
|
||||
41
.github/workflows/renovate.yml
vendored
Normal file
41
.github/workflows/renovate.yml
vendored
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
name: Run Renovate
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "42 * * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
renovate:
|
||||
runs-on: antville
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Run Renovate
|
||||
# See <https://docs.renovatebot.com/troubleshooting/#log-debug-levels>
|
||||
# debug | info | warn | error | fatal
|
||||
run: LOG_LEVEL=info npx renovate
|
||||
env:
|
||||
# Renovate is using this token to retrieve release notes
|
||||
GITHUB_COM_TOKEN: ${{ secrets.renovate_github_com_token }}
|
||||
RENOVATE_CONFIG_FILE: renovate.json
|
||||
RENOVATE_ENDPOINT: ${{ github.api_url }}
|
||||
RENOVATE_GIT_AUTHOR: Renovate Bot <mail+renovate@antville.org>
|
||||
RENOVATE_IGNORE_PR_AUTHOR: 'true'
|
||||
RENOVATE_LOG_FILE: renovate-log.ndjson
|
||||
RENOVATE_LOG_FILE_LEVEL: debug
|
||||
RENOVATE_PLATFORM: gitea
|
||||
RENOVATE_REPOSITORIES: ${{ github.repository }}
|
||||
RENOVATE_REPOSITORY_CACHE: 'enabled'
|
||||
# github.token is not working here, it lacks some permissions required by Renovate
|
||||
RENOVATE_TOKEN: ${{ secrets.renovate_token }}
|
||||
|
||||
- name: Save log file
|
||||
# FIXME: v4 of this action causes an error on Forgejo (“You must configure a GitHub token”)
|
||||
uses: actions/upload-artifact@v3
|
||||
if: always()
|
||||
with:
|
||||
name: renovate-log.ndjson
|
||||
path: renovate-log.ndjson
|
||||
|
||||
27
.gitignore
vendored
27
.gitignore
vendored
|
|
@ -1,13 +1,16 @@
|
|||
.*
|
||||
•*
|
||||
*.eml
|
||||
*.iml
|
||||
build/work
|
||||
build/dist
|
||||
claustra/
|
||||
code/domains.map
|
||||
jobs/
|
||||
local/
|
||||
node_modules/
|
||||
static/sites/*
|
||||
static/scripts/*.map.json
|
||||
build/
|
||||
|
||||
/claustra/
|
||||
/docs/
|
||||
/jobs/
|
||||
/local/
|
||||
/lib/
|
||||
/node_modules/
|
||||
|
||||
/static/
|
||||
!/static/img
|
||||
!/static/formica.html
|
||||
|
||||
/code/domains.map
|
||||
/i18n/*.js
|
||||
|
|
|
|||
1
.npmrc
Normal file
1
.npmrc
Normal file
|
|
@ -0,0 +1 @@
|
|||
save-exact = true
|
||||
1
.nvmrc
Normal file
1
.nvmrc
Normal file
|
|
@ -0,0 +1 @@
|
|||
lts/*
|
||||
59
CHANGES.md
Normal file
59
CHANGES.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# Change Log
|
||||
|
||||
## 2024 January 13
|
||||
|
||||
* Fix cross-site scripting vulnerability in search output
|
||||
* Fix new choices being added to an existing poll at the wrong position
|
||||
* Fix errors in the client-side code filtering the referrers
|
||||
* Correctly load and initialize Alpine.js
|
||||
|
||||
## 2024 January 7
|
||||
|
||||
* Upgrade third-party dependencies
|
||||
|
||||
## 2023 December 30
|
||||
|
||||
* Fix initialization of MarkDown in UIKit editor
|
||||
* Add support for images in webp format
|
||||
|
||||
## 2023 August 26
|
||||
|
||||
* Migrate from Yarn back to NPM
|
||||
* Some major upgrades of third-party dependencies
|
||||
* Rewrite `for…each` loops with `for…of` (needs enabled ES6 features in Rhino)
|
||||
|
||||
## 2023 March 5
|
||||
|
||||
* Fix SQL injection vulnerability
|
||||
|
||||
## 2020 May 23
|
||||
|
||||
* Render tables with stripes and hover colors extrapolated from layout settings
|
||||
* Replaced Google’s ReCaptcha with [hCaptcha](https://hcaptcha.com)
|
||||
|
||||
## 2020 May 17
|
||||
|
||||
* Reverted Yarn scripts into Gradle tasks
|
||||
* Implemented complete build system in Gradle
|
||||
* Added color support for console messages
|
||||
* Replaced Node module for rendering Markdown (marked) with Java implementation ([CommonMark](https://github.com/atlassian/commonmark-java))
|
||||
* Replaced Node module for sanitizing HTML (string-strip-html) with Java implementation ([jsoup](https://jsoup.org))
|
||||
|
||||
## 2020 May 1
|
||||
|
||||
* Upgraded jQuery to version 3
|
||||
* Refactored remaining cient-side jQuery code using [Alpine](https://github.com/alpinejs/alpine) (jQuery is still a dependency of UIkit, though)
|
||||
* Moved code for jQuery [CollagePlus](https://github.com/antville/jquery-collagePlus) plugin into extra file
|
||||
|
||||
## 2020 April 13
|
||||
|
||||
* Rewrote most client-side code without using jQuery
|
||||
* Refactored Formica bookmarklet
|
||||
* Improved Proxy Claustra for use with Formica bookmarklet
|
||||
* Fixed output missing Markdown filter in multiple places
|
||||
* Replaced Gradle and Ant build tasks with Yarn scripts
|
||||
* Removed support for Instant Articles
|
||||
* Removed support for Accelerated Mobile Pages
|
||||
* Replaced Rhino-incompatible sanitize-html NPM package with string-strip-html
|
||||
* Upgraded NPM dependencies to latest compatible versions
|
||||
* Incorporated some claustra as integral part of Antville
|
||||
37
INSTALL.md
37
INSTALL.md
|
|
@ -2,18 +2,19 @@
|
|||
|
||||
## Helma Object Publisher
|
||||
|
||||
Antville needs Helma Object Publisher to be installed on the desired machine. If not already done so please [download Helma](http://helma.org/download) and follow the [installation instructions](http://helma.org/download/installation).
|
||||
Antville needs Helma Object Publisher to be installed on the desired machine. If not already done so please [download Helma](https://code.host.antville.org/antville/helma/releases) and follow the [installation instructions](https://code.host.antville.org/antville/helma/#how-to-helma).
|
||||
|
||||
## SQL Database
|
||||
|
||||
Furthermore, Antville needs an SQL database to be installed as well. Currently supported products are PostgreSQL and MySQL. If not already done so please install the desired database before you continue.
|
||||
Furthermore, Antville needs an SQL database to be installed as well. Currently supported products are PostgreSQL and MySQL/MariaDB. Be sure to install the desired database before you continue.
|
||||
|
||||
For connecting Antville to the database the corresponding JDBC driver is also necessary. If not already done so please copy the driver to the directory `lib/ext` of Helma’s installation directory.
|
||||
Finally, you need the corresponding JDBC driver for connecting Antville to the database. Please copy the driver to the directory `lib/ext` of Helma’s installation directory.
|
||||
|
||||
As of writing this installation guide the drivers could be downloaded via the following URLs:
|
||||
As of writing this installation guide the drivers can be downloaded via the following URLs:
|
||||
|
||||
- [http://jdbc.postgresql.org/download.html]()
|
||||
- [http://dev.mysql.com/downloads/connector/j/]()
|
||||
- <http://jdbc.postgresql.org/download.html>
|
||||
- <http://dev.mysql.com/downloads/connector/j/>
|
||||
- <https://mariadb.com/kb/en/mariadb-connector-j/>
|
||||
|
||||
Of course you can also use a packet manager like aptitude or MacPorts if the JDBC driver is available from there. However, you then need to create a symbolic link to the driver from within Helma’s `lib/ext` directory.
|
||||
|
||||
|
|
@ -21,9 +22,9 @@ Now unpack the Antville distribution package. Move the resulting directory `antv
|
|||
|
||||
Inside the directory `antville` you will find a directory called `db`. This directory contains all database-related files, ie. several SQL scripts for creating the database needed by the application. Change to that directory.
|
||||
|
||||
Antville currently comes with scripts for PostgreSQL (`postgre.sql`) and for MySQL databases (`my.sql`).
|
||||
Antville currently comes with scripts for PostgreSQL (`postgre.sql`) and for MySQL/MariaDB databases (`my.sql`).
|
||||
|
||||
_Note:_ Antville is preconfigured for PostgreSQL out of the box but it is easy to modify the configuration to be compatible with MySQL.
|
||||
_Note:_ Antville is preconfigured for PostgreSQL out of the box but it is easy to modify the configuration to be compatible with MySQL/MariaDB.
|
||||
|
||||
Each of these SQL scripts creates the tables, indexes and initial records and also the account used by the application to communicate with the database.
|
||||
|
||||
|
|
@ -31,7 +32,7 @@ Each of these SQL scripts creates the tables, indexes and initial records and al
|
|||
|
||||
The default password of this account is `antville`, so you should change it if you want to secure your installation. Open the desired SQL script and scroll down to the `create user` (for PostgreSQL) or `grant user` (for MySQL) statement. Search for `password` (PostgreSQL) or `identified by` (MySQL) and change the trailing value in quotes to the password of your choice.
|
||||
|
||||
Please refer to the documentation of your database on how to run the appropriate script. Afterwards you will have to tell Antville how it can access your database. This is done in a configuration file named `db.properties` which is located in the `code` directory, or – if you are going for MySQL – in the `db/my.compat` directory.
|
||||
Please refer to the documentation of your database on how to run the appropriate script. Afterwards you will have to tell Antville how it can access your database. This is done in a configuration file named `db.properties` which is located in the `code` directory, or – if you are going for MySQL/MariaDB – in the `db/my.compat` directory.
|
||||
|
||||
Open the desired file and ensure that the line beginning with `antville.url` points to the server that runs the database. By default, this is the local machine aka localhost which will be just right in most cases.
|
||||
|
||||
|
|
@ -39,11 +40,11 @@ Check that the password is set accordingly to the one you entered in the SQL scr
|
|||
|
||||
## Enabling an Application
|
||||
|
||||
Finally, you need to tell Helma about the new application. This is done by adding the contents of the file `apps.properties` in the `extra` directory to the file `apps.properties` located in the top installation directory.
|
||||
Finally, you need to tell Helma about the new application. This is done by adding the contents of the file `apps.properties` in the `tools/config` directory to the file `apps.properties` located in the top installation directory.
|
||||
|
||||
_Note:_ If you are using MySQL you need to edit and enable line 5 (the one defining `antville.repository.1`) of the file by removing the leading comment symbol `#`.
|
||||
_Note:_ If you are using MySQL/MariaDB you need to edit and enable line 5 (the one defining `antville.repository.1`) of the file by removing the leading comment symbol `#`.
|
||||
|
||||
## Starting Up!
|
||||
## Starting Up
|
||||
|
||||
Now start up Helma and point your browser to
|
||||
|
||||
|
|
@ -58,11 +59,11 @@ Have fun!
|
|||
## TL;DR
|
||||
|
||||
1. Install Helma if not already done so
|
||||
2. Install PostgreSQL or MySQL database if not already done so
|
||||
3. Install corresponding JDBC driver in helma/lib/ext
|
||||
2. Install PostgreSQL or MySQL/MariaDB database if not already done so
|
||||
3. Install or symlink corresponding JDBC driver in helma/lib/ext
|
||||
4. Unpack Antville distribution file
|
||||
5. Move antville directory into helma/app directory
|
||||
6. Run the desired script in antville/db for either PostgreSQL or MySQL
|
||||
7. Copy contents of antville/extra/apps.properties to helma/apps.properties
|
||||
8. If necessary, enable MySQL compatibility in apps.properties
|
||||
9. Start up Helma and browse to [http://localhost:8080/antville]()
|
||||
6. Run the desired SQL script in antville/db for either PostgreSQL or MySQL/MariaDB
|
||||
7. Copy contents of antville/tools/config/apps.properties to helma/apps.properties
|
||||
8. If necessary, enable MySQL/MariaDB compatibility in apps.properties
|
||||
9. Start up Helma and browse to <http://localhost:8080/antville>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
Copyright 2001-2014 by the Workers of Antville.
|
||||
# License
|
||||
|
||||
Copyright 2001-2025 by Antville – Verein für Entwicklung, Betrieb und
|
||||
Unterstützung freier Publishing-Software, Austria.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
<http://www.apache.org/licenses/LICENSE-2.0>
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
50
README.md
50
README.md
|
|
@ -1,58 +1,52 @@
|
|||
# About Antville
|
||||
|
||||
Antville is an open source project aimed at the development of a high performance, feature rich weblog hosting software. It can easily host up to several thousands of sites (the number of weblogs is rather limited by the installation owner’s choice and server power than by software limitations).
|
||||
Antville is an open source project providing a high performance, feature-rich blog hosting software. Antville can host tens of thousands of blogs. Server power is the only limit. Installation and use is easy.
|
||||
|
||||
Antville is entirely written in JavaScript (ECMAScript, to be precise) and based on Helma Object Publisher, a powerful and fast scriptable open source web application server (which itself is written in Java). Antville works with a relational database in the backend.
|
||||
Antville is written in server-side JavaScript and developed with Helma Object Publisher. Antville works with a relational database in the back-end.
|
||||
|
||||
[Check out the project site for more information.](http://project.antville.org)
|
||||
[Look at the project site for more information.](https://project.antville.org)
|
||||
|
||||
## Status
|
||||
|
||||
Antville can be considered stable quality code. It is heavily used by several thousands of users at [Antville.org](http://antville.org) and [several other sites](http://code.google.com/p/antville/wiki/AntvilleSites). Nevertheless, there still could be bugs hidden somewhere in this application.
|
||||
Antville’s codebase is of stable quality and ready for production deployment. Try out [Antville.org](https://antville.org) for a demonstration.
|
||||
|
||||
Antville can be used for production purposes, but please bear in mind that the creators of Antville do not take any warranty, whichever kind.
|
||||
There still could be bugs hidden in Antville’s source code. If you find one please let us know. The creators of Antville do not take any responsibility for what the software might do.
|
||||
|
||||
## System Requirements
|
||||
|
||||
To run Antville you need [Helma Object Publisher](http://helma.org) and a relational database in the backend. Antville was thoroughly tested with [PostgreSQL](http://postgresql.org) and [MySQL](http://mysql.com).
|
||||
To run Antville you need [Helma Object Publisher](https://code.host.antville.org/antville/helma) and a relational database software. We tested Antville with [PostgreSQL](https://postgresql.org) and [MySQL](https://mysql.com) – [MariaDB](https://mariadb.com) should work, too.
|
||||
|
||||
For setting up Helma Object Publisher and the database of your choice please refer to the corresponding installation instructions.
|
||||
To enable Antville sending notification e-mails you need access to an SMTP server.
|
||||
|
||||
To enable Antville sending confirmation mails to users (e.g. after registration) you will also need access to an SMTP server.
|
||||
Helma comes with an embedded webserver (Jetty) so you do not need to install one. Yet, you can also use the webserver of your choice.
|
||||
|
||||
Helma comes with its own embedded webserver (Jetty) so you do not need to install one, although you can easily use Apache httpd as front-end webserver, too.
|
||||
For details please refer to the installation instructions of Helma Object Publisher and the corresponding software packages.
|
||||
|
||||
Please refer to the Install.md file for detailed information on how to install Antville.
|
||||
The `INSTALL.md` file contains detailed instructions to install Antville.
|
||||
|
||||
## Documentation and Further Information
|
||||
|
||||
For documentation and further information regarding Antville you can refer to:
|
||||
For documentation and further information about Antville you can refer to:
|
||||
- [project.antville.org](https://project.antville.org)
|
||||
- [about.antville.org](https://about.antville.org)
|
||||
- [help.antville.org](https://help.antville.org)
|
||||
|
||||
- [project.antville.org](http://project.antville.org)
|
||||
- [about.antville.org](http://about.antville.org)
|
||||
- [help.antville.org](http://help.antville.org)
|
||||
|
||||
Feel free to ask any question about Antville at our [support site](http://help.antville.org).
|
||||
|
||||
You should follow Antville on [Facebook](http://facebook.com/Antville) and [Twitter](http://twitter.com/antville_org)!
|
||||
Feel free to ask any question about Antville at our [support site](https://help.antville.org).
|
||||
|
||||
## Bug Reporting and Feature Requests
|
||||
|
||||
If you think you found a bug [please report it](http://project.antville.org).
|
||||
If you think you found a bug [please let us know](https://project.antville.org).
|
||||
|
||||
A good place for your feature requests or proposals is the [project development site](http://project.antville.org).
|
||||
A great place for your feature requests or proposals is the [project development site](https://project.antville.org).
|
||||
|
||||
Since Antville is open-source, you are definitely encouraged to modify the application, we would be happy to hear from your ideas, suggestions and changes – drop us a message via <mail@antville.org> or use any of the aforementioned channels.
|
||||
|
||||
For those of you who demonstrated a commitment to collaborative open-source development through sustained participation and contributions within the development of Antville, there will also be other ways to participate.
|
||||
Antville is open-source, and we want to encourage you to change its code according to your likeness. We are curious about your ideas and suggestions. Feel free to drop us a message to <mail@antville.org> or through any channels mentioned before.
|
||||
|
||||
## About Helma Object Publisher
|
||||
|
||||
[Helma Object Publisher](http://helma.org) is a web application server.
|
||||
[Helma Object Publisher](https://code.host.antville.org/antville/helma) is an open source project providing a powerful, fast and scriptable web application server written in Java.
|
||||
|
||||
With Helma Object Publisher (sometimes simply referred to as Helma or Hop) you can define Objects and map them to a relational database table. These so-called HopObjects can be created, modified and deleted using a comfortable object/container model. Hence, no manual fiddling around with database code is necessary.
|
||||
Define HopObjects and map them to a relational database table. Create, change and delete HopObjects at your whim using a comfortable object-container model. Manual fiddling around with database code is not necessary.
|
||||
|
||||
HopObjects are extended JavaScript objects which can be scripted using server-side JavaScript. Beyond the common JavaScript features, Helma provides special “skin” and template functionalities which facilitate the rendering of objects via a web interface.
|
||||
|
||||
Thanks to Helma’s relational database mapping technology, HopObjects create a hierarchical structure, the URL space of a Helma site. The parts between slashes in a Helma URL represent HopObjects (similar to the document tree in static sites). The Helma URL space can be thought of as an analogy to the Document Object Model (DOM) in client-side JavaScript.
|
||||
HopObjects extend the native JavaScript object. They got all the common features you know – and more. One highlight are the special templating features to ease the rendering of objects for the Web.
|
||||
|
||||
Combine HopObjects to create a hierarchical structure. A URL in Helma mirrors this structure. Each part of the URL path corresponds to a relational database mapping, similar to the document tree of static websites. Helma’s URL space is an analogy to the Document Object Model implemented in client-side JavaScript.
|
||||
|
|
|
|||
374
build.gradle
Normal file
374
build.gradle
Normal file
|
|
@ -0,0 +1,374 @@
|
|||
plugins {
|
||||
id 'base'
|
||||
id 'java'
|
||||
id 'com.github.node-gradle.node' version '7.1.0'
|
||||
}
|
||||
|
||||
tasks.build.dependsOn 'assemble'
|
||||
|
||||
node {
|
||||
version = '20.9.0'
|
||||
download = true
|
||||
}
|
||||
|
||||
allprojects {
|
||||
apply plugin: 'java'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
project.ext.distVersion = { ->
|
||||
def json = new groovy.json.JsonSlurper()
|
||||
def packageData = json.parse(file("${rootProject.projectDir}/package.json"))
|
||||
return packageData.version;
|
||||
}
|
||||
|
||||
project.ext.antvilleBuildDir = "${rootProject.buildDir}/tmp/antville"
|
||||
project.ext.antvilleInstallDir = "${rootProject.buildDir}/install/antville"
|
||||
|
||||
project.ext.antvilleDistFiles = copySpec {
|
||||
from fileTree(antvilleBuildDir).matching {}
|
||||
}
|
||||
|
||||
// Hide some purely Java-related tasks
|
||||
project.tasks.buildDependents.group = null;
|
||||
project.tasks.buildNeeded.group = null;
|
||||
project.tasks.classes.group = null;
|
||||
project.tasks.jar.group = null;
|
||||
project.tasks.javadoc.group = null;
|
||||
project.tasks.testClasses.group = null;
|
||||
}
|
||||
|
||||
version = distVersion()
|
||||
|
||||
configurations {
|
||||
lessCss
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'org.commonmark:commonmark:0.24.0'
|
||||
implementation 'org.commonmark:commonmark-ext-autolink:0.24.0'
|
||||
implementation 'org.commonmark:commonmark-ext-gfm-strikethrough:0.24.0'
|
||||
implementation 'org.commonmark:commonmark-ext-gfm-tables:0.24.0'
|
||||
implementation 'org.jsoup:jsoup:1.19.1'
|
||||
implementation 'rome:rome:1.0'
|
||||
|
||||
lessCss('org.lesscss:lesscss:1.7.0.1.1') {
|
||||
exclude group: 'org.mozilla', module: 'rhino'
|
||||
exclude group: 'org.slf4j', module: 'slf4j-api'
|
||||
exclude group: 'org.slf4j', module: 'slf4j-simple'
|
||||
}
|
||||
}
|
||||
|
||||
assemble {
|
||||
dependsOn 'installAntville'
|
||||
dependsOn 'installJars'
|
||||
dependsOn 'buildStaticFiles'
|
||||
|
||||
doFirst {
|
||||
copy {
|
||||
from fileTree(antvilleBuildDir).matching {
|
||||
exclude 'node_modules'
|
||||
exclude 'package.json'
|
||||
exclude 'tests'
|
||||
exclude 'tools/client'
|
||||
exclude 'tools/antclick'
|
||||
exclude 'package-lock.json'
|
||||
} into antvilleInstallDir
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('installAntville') {
|
||||
description 'Clone the Antville repository and remove all unnecessary files.'
|
||||
group 'installation'
|
||||
|
||||
outputs.dirs antvilleBuildDir
|
||||
|
||||
doLast {
|
||||
def date = new Date().format('d MMM yyyy')
|
||||
def gitOutput = new ByteArrayOutputStream()
|
||||
|
||||
exec {
|
||||
commandLine 'git', 'rev-parse', '--short', 'HEAD'
|
||||
standardOutput = gitOutput
|
||||
errorOutput = new ByteArrayOutputStream()
|
||||
ignoreExitValue = true
|
||||
}
|
||||
|
||||
def tag = gitOutput.toString().trim()
|
||||
|
||||
copy {
|
||||
from "${project.projectDir}/code/app.properties"
|
||||
into "$antvilleBuildDir/code"
|
||||
filter { line -> line.replaceAll('(version =) 0.0.0', "\$1 $version.$tag")
|
||||
.replaceAll('(buildDate =) 18 Jun 2001', "\$1 $date")
|
||||
}
|
||||
}
|
||||
|
||||
copy {
|
||||
from fileTree(project.projectDir).matching {
|
||||
include 'claustra/**'
|
||||
include 'code/**'
|
||||
exclude 'code/app.properties'
|
||||
include 'compat/**'
|
||||
include 'db/**'
|
||||
include 'i18n/**'
|
||||
exclude 'i18n/*.po*'
|
||||
include 'static/**'
|
||||
include 'tools/**'
|
||||
include 'CHANGES.md'
|
||||
include 'INSTALL.md'
|
||||
include 'README.md'
|
||||
} into antvilleBuildDir
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('installJars', Copy) {
|
||||
description 'Download required JAR libraries.'
|
||||
group 'installation'
|
||||
dependsOn 'installAntville'
|
||||
|
||||
def outputDir = "$antvilleBuildDir/lib"
|
||||
|
||||
outputs.dir outputDir
|
||||
|
||||
from configurations.runtimeClasspath
|
||||
into outputDir
|
||||
}
|
||||
|
||||
tasks.register('installNodeModules', NpmTask) {
|
||||
description 'Download required Node modules.'
|
||||
group 'build'
|
||||
dependsOn 'installAntville'
|
||||
|
||||
inputs.files "${project.projectDir}/package-lock.json"
|
||||
outputs.dir "${project.projectDir}/node_modules"
|
||||
|
||||
args = ['--silent', 'install']
|
||||
|
||||
execOverrides {
|
||||
it.workingDir = antvilleBuildDir
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('buildStaticFiles', Copy) {
|
||||
description 'Build fonts, client-side scripts and stylesheets.'
|
||||
group 'build'
|
||||
|
||||
dependsOn 'installAntville'
|
||||
dependsOn 'installNodeModules'
|
||||
dependsOn 'buildMainScript'
|
||||
dependsOn 'buildMainStyles'
|
||||
dependsOn 'buildEditorScript'
|
||||
dependsOn 'buildEditorStyles'
|
||||
dependsOn 'buildGalleryScript'
|
||||
dependsOn 'buildLicenses'
|
||||
|
||||
def inputDir = "${project.projectDir}/node_modules/uikit/dist/fonts"
|
||||
def outputDir = "$antvilleBuildDir/static/fonts"
|
||||
|
||||
inputs.dir inputDir
|
||||
outputs.dir outputDir
|
||||
|
||||
from inputDir
|
||||
into outputDir
|
||||
}
|
||||
|
||||
['main', 'editor', 'gallery'].each { name ->
|
||||
tasks.register("build${name.capitalize()}Script", NpmTask) {
|
||||
description "Build the ${name} client-side scripts."
|
||||
group 'build'
|
||||
dependsOn 'installNodeModules'
|
||||
|
||||
def inputFile = "${project.projectDir}/tools/client/${name}.js"
|
||||
def outputFile = "$antvilleBuildDir/static/scripts/${name}.min.js"
|
||||
|
||||
inputs.files inputFile
|
||||
outputs.files outputFile
|
||||
|
||||
args = [
|
||||
'--silent',
|
||||
'exec', '--',
|
||||
'browserify', inputFile,
|
||||
'--outfile', outputFile,
|
||||
'-g', 'uglifyify'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
['main', 'editor'].each { name ->
|
||||
tasks.register("build${name.capitalize()}Styles", NpmTask) {
|
||||
description "Build the ${name} stylesheet."
|
||||
group 'build'
|
||||
dependsOn 'installNodeModules'
|
||||
|
||||
def inputFile = "${project.projectDir}/tools/client/${name}.less"
|
||||
def outputFile = "$antvilleBuildDir/static/styles/${name}.min.css"
|
||||
|
||||
inputs.files inputFile
|
||||
outputs.files outputFile
|
||||
|
||||
args = [
|
||||
'--silent',
|
||||
'exec', '--',
|
||||
'lessc',
|
||||
'--clean-css',
|
||||
inputFile,
|
||||
outputFile
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('buildLicenses', NpmTask) {
|
||||
description 'Build licenses file from client-side dependencies.'
|
||||
group 'build'
|
||||
dependsOn 'installNodeModules'
|
||||
|
||||
def outputFile = "$antvilleBuildDir/static/licenses.txt"
|
||||
|
||||
inputs.file "${project.projectDir}/package-lock.json"
|
||||
outputs.file outputFile
|
||||
|
||||
args = [
|
||||
'--silent',
|
||||
'exec', '--',
|
||||
'generate-license-file',
|
||||
'--input', "${project.projectDir}/package.json",
|
||||
'--output', outputFile,
|
||||
'--overwrite',
|
||||
'--eol', 'lf'
|
||||
]
|
||||
|
||||
execOverrides {
|
||||
it.workingDir = antvilleBuildDir
|
||||
it.standardOutput = new FileOutputStream(outputFile)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('jsdoc', NpmTask) {
|
||||
description 'Generates JavaScript API documentation for the main source code.'
|
||||
group 'documentation'
|
||||
dependsOn 'installNodeModules'
|
||||
|
||||
def inputDir = "$antvilleBuildDir/code"
|
||||
def outputDir = "${project.buildDir}/docs/jsdoc"
|
||||
|
||||
inputs.dir inputDir
|
||||
outputs.dir outputDir
|
||||
|
||||
args = [
|
||||
'--silent',
|
||||
'exec', '--',
|
||||
'jsdoc',
|
||||
'--recurse',
|
||||
'--destination',
|
||||
outputDir,
|
||||
inputDir
|
||||
]
|
||||
|
||||
execOverrides {
|
||||
it.workingDir = antvilleBuildDir
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('assembleDist') {
|
||||
description 'Creates the Antville download packages.'
|
||||
group 'distribution'
|
||||
|
||||
dependsOn 'assemble'
|
||||
dependsOn 'distZip'
|
||||
dependsOn 'distTar'
|
||||
}
|
||||
|
||||
tasks.register('distZip', Zip) {
|
||||
description 'Creates the Antville download package as Zip file.'
|
||||
group 'distribution'
|
||||
dependsOn 'assemble'
|
||||
|
||||
def version = project.distVersion()
|
||||
def outputDir = "${project.buildDir}/distributions"
|
||||
def outputFile = "antville-${version}.zip"
|
||||
|
||||
inputs.dir antvilleInstallDir
|
||||
outputs.file "$outputDir/$outputFile"
|
||||
|
||||
from (antvilleInstallDir) {
|
||||
into "antville-${version}"
|
||||
}
|
||||
|
||||
destinationDirectory = file(outputDir)
|
||||
archiveFileName = outputFile
|
||||
}
|
||||
|
||||
tasks.register('distTar', Tar) {
|
||||
description 'Creates the Antville download package as compressed archive file.'
|
||||
group 'distribution'
|
||||
dependsOn 'assemble'
|
||||
|
||||
def version = project.distVersion()
|
||||
def outputDir = "${project.buildDir}/distributions"
|
||||
def outputFile = "antville-${version}.tgz"
|
||||
|
||||
inputs.dir antvilleInstallDir
|
||||
outputs.file "$outputDir/$outputFile"
|
||||
|
||||
from (antvilleInstallDir) {
|
||||
into "antville-${version}"
|
||||
}
|
||||
|
||||
compression = Compression.GZIP
|
||||
destinationDirectory = file(outputDir)
|
||||
archiveFileName = outputFile
|
||||
}
|
||||
|
||||
// Task to patch the lesscss JAR file
|
||||
// This task modifies the lessc-rhino-1.7.0.js file in the JAR to comment out an annoying console.log statement (“done”)
|
||||
def patchLessCssJar = tasks.register('patchLessCssJar') {
|
||||
def name = 'lesscss-1.7.0.1.1'
|
||||
def targetFile = 'META-INF/lessc-rhino-1.7.0.js' // File to patch
|
||||
def tempDir = file("${buildDir}/${name}") // Temporary directory for extraction
|
||||
def patchedJar = file("${buildDir}/${name}-patched.jar") // Output patched JAR
|
||||
|
||||
outputs.file patchedJar
|
||||
|
||||
doLast {
|
||||
if (tempDir.exists()) {
|
||||
tempDir.deleteDir()
|
||||
}
|
||||
tempDir.mkdirs()
|
||||
|
||||
def jarFile = configurations.lessCss.find {
|
||||
it.name.contains(name)
|
||||
}
|
||||
|
||||
println "Patching $jarFile…"
|
||||
ant.unzip(src: jarFile, dest: tempDir)
|
||||
|
||||
def targetFilePath = new File(tempDir, targetFile)
|
||||
def content = targetFilePath.text
|
||||
content = content.replace('console.log("done")', '// console.log("done")')
|
||||
targetFilePath.text = content
|
||||
|
||||
ant.zip(destfile: patchedJar) {
|
||||
fileset(dir: tempDir)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure the patchLessCssJar task runs before the classes task
|
||||
tasks.named('build').configure {
|
||||
dependsOn patchLessCssJar
|
||||
}
|
||||
|
||||
// Exclude the original lesscss JAR from the runtime classpath
|
||||
// and include the patched JAR instead
|
||||
configurations.runtimeClasspath {
|
||||
exclude group: 'org.lesscss', module: 'lesscss'
|
||||
|
||||
dependencies {
|
||||
runtimeOnly(patchLessCssJar.map { it.outputs.files })
|
||||
}
|
||||
}
|
||||
337
build.xml
337
build.xml
|
|
@ -1,337 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
~ The Antville Project
|
||||
~ http://code.google.com/p/antville
|
||||
~
|
||||
~ Copyright 2001-2014 by the Workers of Antville.
|
||||
~
|
||||
~ Copyright 2001–2007 Robert Gaggl, Hannes Wallnöfer, Tobi Schäfer,
|
||||
~ Matthias & Michael Platzer, Christoph Lincke.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the ``License'');
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an ``AS IS'' BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<project name="antville" default="dist" basedir=".">
|
||||
<target name="help" depends="usage"/>
|
||||
<target name="usage">
|
||||
<echo message="Antville Build Instructions"/>
|
||||
<echo message="==========================="/>
|
||||
<echo message="Available targets are:"/>
|
||||
<echo message=" clean Clean up build directory"/>
|
||||
<echo message=" click Generate the AntClick packages"/>
|
||||
<echo message=" client Build client-side scripts and styles"/>
|
||||
<echo message=" dist Generate the Antville and AntClick packages (default)"/>
|
||||
<echo message=" docs Generate the API documentation"/>
|
||||
<echo message=" help Show these build instructions"/>
|
||||
<echo message=" messages Generate JavaScript message files"/>
|
||||
<echo message=" patch Apply patch file to Antville installation"/>
|
||||
<echo message=" pot Extract gettext call strings into POT file"/>
|
||||
<echo message=" ville Generate the Antville packages"/>
|
||||
<echo message=" +claustra Scaffolds a new claustra, ready for implementation"/>
|
||||
<echo message=" +patch Scaffolds a new patch, ready for implementation"/>
|
||||
</target>
|
||||
|
||||
<target name="dist" depends="antville, antclick"/>
|
||||
<target name="all" depends="dist"/>
|
||||
<target name="build" depends="dist"/>
|
||||
|
||||
<target name="init">
|
||||
<tstamp>
|
||||
<format property="date" pattern="d MMM yyyy" locale="en"/>
|
||||
</tstamp>
|
||||
<tstamp>
|
||||
<format property="file-date" pattern="yyyyMMdd" locale="en"/>
|
||||
</tstamp>
|
||||
|
||||
<property name="name" value="antville"/>
|
||||
<property name="year" value="2001-${year}"/>
|
||||
<property name="version" value="1.5"/>
|
||||
<property name="package.name" value="${name}-${version}"/>
|
||||
|
||||
<property name="antville.src" value="https://github.com/antville/antville.git"/>
|
||||
<property name="helma.src" value="https://github.com/antville/helma.git"/>
|
||||
<property name="jala.src" value="https://github.com/antville/helma-jala.git"/>
|
||||
|
||||
<property name="uikit.dir" location="./node_modules/uikit-bower"/>
|
||||
|
||||
<property name="build.dir" location="${basedir}/build"/>
|
||||
<property file="${build.dir}/build.properties"/>
|
||||
|
||||
<property name="helma.dir" location="/opt/helma"/>
|
||||
<property name="extra.dir" location="${build.dir}/extra"/>
|
||||
<property name="dist.dir" location="${build.dir}/dist"/>
|
||||
<property name="work.dir" location="${build.dir}/work"/>
|
||||
<property name="source.dir" location="${work.dir}/src"/>
|
||||
<property name="export.dir" location="${work.dir}/export"/>
|
||||
<property name="modules.dir" location="${export.dir}/helma/modules"/>
|
||||
<property name="antville.dir" location="${export.dir}/antville"/>
|
||||
|
||||
<property name="docs.title" value="Antville&#32;${version}&#32;API&#32;Reference"/>
|
||||
<property name="docs.infiles" location="${basedir}/code"/>
|
||||
<property name="docs.outfiles" location="${basedir}/docs"/>
|
||||
|
||||
<property name="i18n.scan" value="claustra code compat extra"/>
|
||||
<property name="i18n.destination" location="${basedir}/i18n"/>
|
||||
<property name="i18n.poDirectory" location="${i18n.destination}"/>
|
||||
<property name="i18n.template" location="${i18n.destination}/antville.pot"/>
|
||||
<property name="i18n.namespace" value=""/>
|
||||
</target>
|
||||
|
||||
<target name="export" depends="init">
|
||||
<mkdir dir="${source.dir}"/>
|
||||
<exec dir="${source.dir}" executable="git">
|
||||
<arg line="clone ${antville.src}"/>
|
||||
</exec>
|
||||
<exec dir="${source.dir}/antville" executable="git">
|
||||
<arg line="checkout-index -f -a --prefix=${antville.dir}/"/>
|
||||
</exec>
|
||||
<delete includeemptydirs="true">
|
||||
<fileset dir="${antville.dir}" includes="build.xml build/** docs/** i18n/*.po*"/>
|
||||
</delete>
|
||||
<exec dir="${source.dir}/antville" executable="git" outputproperty="hash">
|
||||
<arg line="rev-parse --short HEAD"/>
|
||||
</exec>
|
||||
<replace file="${antville.dir}/code/Root/Root.js" value="${version}">
|
||||
<replacetoken><![CDATA[<v>0</v>]]></replacetoken>
|
||||
</replace>
|
||||
<replace file="${antville.dir}/code/Root/Root.js" value="${hash}">
|
||||
<replacetoken><![CDATA[<h>0</h>]]></replacetoken>
|
||||
</replace>
|
||||
<replace file="${antville.dir}/code/Root/Root.js" value="${date}">
|
||||
<replacetoken><![CDATA[<d/>]]></replacetoken>
|
||||
</replace>
|
||||
</target>
|
||||
|
||||
<target name="ville" depends="antville"/>
|
||||
<target name="click" depends="antclick"/>
|
||||
|
||||
<target name="antville" depends="export">
|
||||
<antcall target="make-tar">
|
||||
<param name="filename" value="${package.name}"/>
|
||||
<param name="path" value="${antville.dir}"/>
|
||||
</antcall>
|
||||
<antcall target="make-zip">
|
||||
<param name="filename" value="${package.name}"/>
|
||||
<param name="path" value="${antville.dir}"/>
|
||||
</antcall>
|
||||
</target>
|
||||
|
||||
<target name="antclick" depends="export">
|
||||
<!-- Export the Helma and Jala repositories to a temporary directory -->
|
||||
<exec dir="${source.dir}" executable="git">
|
||||
<arg line="clone ${helma.src}"/>
|
||||
</exec>
|
||||
<exec dir="${source.dir}" executable="git">
|
||||
<arg line="clone ${jala.src}"/>
|
||||
</exec>
|
||||
|
||||
<!-- Checkout each repository index to the export directory -->
|
||||
<mkdir dir="${export.dir}"/>
|
||||
<exec dir="${source.dir}/helma" executable="git">
|
||||
<arg line="checkout-index -f -a --prefix=${export.dir}/helma/"/>
|
||||
</exec>
|
||||
<exec dir="${source.dir}/helma-jala" executable="git">
|
||||
<arg line="checkout-index -f -a --prefix=${export.dir}/helma/modules/jala/"/>
|
||||
</exec>
|
||||
|
||||
<!-- Copy exported files to final destinations -->
|
||||
<copy todir="${work.dir}">
|
||||
<fileset dir="${export.dir}/helma" includes="lib/** licenses/**"/>
|
||||
</copy>
|
||||
<copy todir="${work.dir}/apps/antville">
|
||||
<fileset dir="${antville.dir}"/>
|
||||
</copy>
|
||||
<copy todir="${work.dir}/modules">
|
||||
<fileset dir="${modules.dir}" includes="core/** helma/** jala/**"/>
|
||||
</copy>
|
||||
|
||||
<!-- Copy extra files to final destinations -->
|
||||
<copy file="${export.dir}/helma/license.txt" tofile="${work.dir}/licenses/helma.txt"/>
|
||||
<copy todir="${work.dir}">
|
||||
<fileset dir="${extra.dir}" includes="start.bat apps.properties server.properties launcher.jar"/>
|
||||
</copy>
|
||||
<exec dir="${extra.dir}" executable="cp">
|
||||
<arg line="-p start.sh ${work.dir}"/>
|
||||
</exec>
|
||||
|
||||
<copy file="${extra.dir}/helma.jar" todir="${work.dir}/lib"/>
|
||||
<copy file="${extra.dir}/h2-1.3.176.jar" todir="${work.dir}/lib/ext"/>
|
||||
<copy file="${extra.dir}/h2.txt" todir="${work.dir}/licenses"/>
|
||||
|
||||
<copy todir="${build.dir}/work/db">
|
||||
<fileset dir="${extra.dir}" includes="antville.h2.db"/>
|
||||
</copy>
|
||||
<copy todir="${work.dir}/licenses">
|
||||
<fileset dir="${antville.dir}/legal" includes="**"/>
|
||||
</copy>
|
||||
<copy file="${modules.dir}/jala/licenses/jala.txt" todir="${work.dir}/licenses"/>
|
||||
|
||||
<!-- Delete unnecessary files -->
|
||||
<delete>
|
||||
<fileset dir="${work.dir}/modules/helma" includes="*.jar Search.js Ssh.js Chart.js"/>
|
||||
</delete>
|
||||
<delete includeemptydirs="true">
|
||||
<fileset dir="${work.dir}/modules/jala" includes="build.properties docs/** lib/** licenses/** tests/** util/**"/>
|
||||
</delete>
|
||||
<delete dir="${work.dir}/apps/antville/legal"/>
|
||||
<delete dir="${source.dir}"/>
|
||||
<delete dir="${export.dir}"/>
|
||||
|
||||
<!-- Create the packages -->
|
||||
<antcall target="make-zip">
|
||||
<param name="filename" value="antclick-${version}"/>
|
||||
<param name="path" value="${work.dir}"/>
|
||||
</antcall>
|
||||
<antcall target="make-tar">
|
||||
<param name="filename" value="antclick-${version}"/>
|
||||
<param name="path" value="${work.dir}"/>
|
||||
</antcall>
|
||||
</target>
|
||||
|
||||
<target name="client" depends="init">
|
||||
<copy todir="static/fonts">
|
||||
<fileset dir="${uikit.dir}/fonts" includes="**"/>
|
||||
</copy>
|
||||
<mkdir dir="static/scripts"/>
|
||||
<exec executable="node_modules/.bin/browserify" output="static/scripts/main.min.js">
|
||||
<arg line="build/client/main.js -d -p [minifyify --map /static/scripts/main.min.map.json --output static/scripts/main.min.map.json]"/>
|
||||
</exec>
|
||||
<exec executable="node_modules/.bin/browserify" output="static/scripts/editor.min.js">
|
||||
<arg line="build/client/editor.js -d -p [minifyify --map /static/scripts/editor.min.map.json --output static/scripts/editor.min.map.json]"/>
|
||||
</exec>
|
||||
<mkdir dir="static/styles"/>
|
||||
<exec executable="node_modules/.bin/lessc" output="static/styles/main.min.css">
|
||||
<arg line="-x build/client/main.less"/>
|
||||
</exec>
|
||||
<exec executable="node_modules/.bin/lessc" output="static/styles/editor.min.css">
|
||||
<arg line="--clean-css build/client/editor.less"/>
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="server" depends="init">
|
||||
<exec executable="node_modules/.bin/browserify" output="code/Global/0.node.js">
|
||||
<arg line="build/server.js -d"/>
|
||||
</exec>
|
||||
<concat destfile="code/Global/0.node.js" append="true">
|
||||
<fileset file="node_modules/less/dist/less-rhino-1.7.5.js"/>
|
||||
<fileset file="node_modules/marked/lib/marked.js"/>
|
||||
</concat>
|
||||
</target>
|
||||
|
||||
<target name="docs" depends="init">
|
||||
<exec dir="${build.dir}/jsdoc/toolkit" executable="${build.dir}/jsdoc/jsrunwrapper.sh">
|
||||
<arg line='-D="title:${docs.title}" -q -r=2 -p -t=../templates/codeview
|
||||
-d=${docs.outfiles} ${docs.infiles}'/>
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="pot" depends="init">
|
||||
<java dir="${helma.dir}" classpath="${helma.dir}/launcher.jar" classname="helma.main.launcher.Commandline"
|
||||
fork="true">
|
||||
<!-- Root.extractMessages is currently located in Global/i18n.js -->
|
||||
<arg value="antville.extractMessages"/>
|
||||
<arg value="${build.dir}/MessageParser.js"/>
|
||||
<arg value="${i18n.scan}"/>
|
||||
<arg value="${i18n.template}"/>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
<target name="messages" depends="init">
|
||||
<java dir="${helma.dir}" classpath="${helma.dir}/lib/rhino.jar"
|
||||
classname="org.mozilla.javascript.tools.shell.Main">
|
||||
<arg value="${build.dir}/PoParser.js"/>
|
||||
<arg value="${i18n.poDirectory}"/>
|
||||
<arg value="${i18n.destination}"/>
|
||||
<arg value="${i18n.namespace}"/>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
<target name="make-tar" depends="init">
|
||||
<mkdir dir="${dist.dir}"/>
|
||||
<fixcrlf srcdir="${path}" eol="lf" eof="remove" includes="**/*.txt,
|
||||
**/*.properties, **/*.hac, **/*.js, **/*.skin, **/.xml, **/.sh"/>
|
||||
<tar tarfile="${dist.dir}/${filename}.tar" basedir="${path}" excludes="**">
|
||||
<tarfileset prefix="${filename}" dir="${path}" mode="755">
|
||||
<include name="**/*.sh"/>
|
||||
</tarfileset>
|
||||
<tarfileset prefix="${filename}" dir="${path}">
|
||||
<include name="**"/>
|
||||
<exclude name="**/*.sh"/>
|
||||
</tarfileset>
|
||||
</tar>
|
||||
<bzip2 zipfile="${dist.dir}/${filename}.tbz" src="${dist.dir}/${filename}.tar"/>
|
||||
<delete file="${dist.dir}/${filename}.tar"/>
|
||||
</target>
|
||||
|
||||
<target name="make-zip" depends="init">
|
||||
<mkdir dir="${dist.dir}"/>
|
||||
<fixcrlf srcdir="${path}" eol="crlf" includes="**/*.txt, **/*.properties, **/*.hac, **/*.js, **/*.skin, **/*.xml, **/.bat"/>
|
||||
<zip zipfile="${dist.dir}/${filename}.zip">
|
||||
<zipfileset dir="${path}" prefix="${filename}" includes="**"/>
|
||||
</zip>
|
||||
</target>
|
||||
|
||||
<target name="patch" depends="init">
|
||||
<input message="Please enter the patch ID: " addproperty="patch.id"/>
|
||||
<loadfile property="patch" srcFile="${basedir}/extra/updater/patch-${patch.id}.js"/>
|
||||
<echo message="${patch}"/>
|
||||
<input message="Apply the displayed patch? " validargs="y,n" addproperty="patch.confirm"/>
|
||||
<condition property="patch.abort">
|
||||
<equals arg1="${patch.confirm}" arg2="n" casesensitive="false" trim="true"/>
|
||||
</condition>
|
||||
<fail if="patch.abort">Build aborted by user.</fail>
|
||||
<java dir="${helma.dir}" classpath="${helma.dir}/launcher.jar" classname="helma.main.launcher.Commandline" fork="true">
|
||||
<arg value="antville.patch"/>
|
||||
<arg value="${patch}"/>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
<target name="+patch" depends="init">
|
||||
<property name="patch.dir" value="extra/updater"/>
|
||||
<echo file="${patch.dir}/patch-${file-date}.js">// Apply with enabled updater repository using `ant patch -Dpatch.id=${file-date}`${line.separator}<!--
|
||||
-->var sql = new Sql();
|
||||
</echo>
|
||||
</target>
|
||||
|
||||
<target name="+claustra" depends="init">
|
||||
<input message="Please enter the name of the new claustra: " addproperty="claustra.name"/>
|
||||
<script language="javascript"><![CDATA[
|
||||
name = project.getProperty('claustra.name');
|
||||
firstLetter = name.substr(0, 1).toUpperCase();
|
||||
title = firstLetter + name.substr(1);
|
||||
project.setProperty('claustra.title', title);
|
||||
]]></script>
|
||||
<property name="claustra.dir" value="claustra/${claustra.name}/${claustra.title}"/>
|
||||
<mkdir dir="${claustra.dir}"/>
|
||||
<echo file="${claustra.dir}/${claustra.title}.properties" append="true">#sites = collection(Site)</echo>
|
||||
<echo file="${claustra.dir}/${claustra.title}.js" append="true">${claustra.title}.prototype.main_action = function () {${line.separator}<!--
|
||||
--> //res.debug(this.sites.count());${line.separator}<!--
|
||||
-->};${line.separator}</echo>
|
||||
<mkdir dir="${claustra.dir}/../Claustra"/>
|
||||
<echo file="${claustra.dir}/../Claustra/Claustra.properties" append="true">${claustra.name} = mountpoint(${claustra.title})${line.separator}</echo>
|
||||
</target>
|
||||
|
||||
<target name="clean" depends="init">
|
||||
<delete dir="${work.dir}"/>
|
||||
<delete dir="${dist.dir}"/>
|
||||
</target>
|
||||
|
||||
<target name="file-exists" unless="file.exists">
|
||||
<available property="file.exists" file="${file}"/>
|
||||
</target>
|
||||
|
||||
<target name="debug" depends="init">
|
||||
<!-- For debugging and testing purposes -->
|
||||
</target>
|
||||
</project>
|
||||
|
|
@ -1,481 +0,0 @@
|
|||
// Jala Project [http://opensvn.csie.org/traccgi/jala]
|
||||
//
|
||||
// Copyright 2004 ORF Online und Teletext GmbH.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* MessageParser script that extracts all gettext message macros
|
||||
* out of skin files and all calls of gettext functions
|
||||
* (that is "gettext", "ngettext" and "_") out of function
|
||||
* files and directly generates a .pot file from it.
|
||||
* If an argument "-o" is given and it is followed by
|
||||
* a path to a file, the output is written to this file.
|
||||
* Any other argument is interpreted as directory or file
|
||||
* that should be parsed.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
var Message = function(id, pluralId) {
|
||||
this.id = id && String(id);
|
||||
this.pluralId = pluralId && String(pluralId);
|
||||
this.locations = [];
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Static method that constructs a message key by
|
||||
* which a message can be identified in the messages map.
|
||||
* @param {String} id The message Id
|
||||
* @param {String} pluralId The plural message Id
|
||||
* @returns The generated message key
|
||||
* @type String
|
||||
*/
|
||||
Message.getKey = function(id, pluralId) {
|
||||
if (id && pluralId) {
|
||||
return id + pluralId;
|
||||
} else {
|
||||
return id;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Encloses the string passed as argument in quotes
|
||||
* and wraps the string if it is longer than 80 characters.
|
||||
* @param {String} str The string to format
|
||||
* @param {Boolean} wrap If true the message string will be splitted in
|
||||
* parts where each one is max. 80 characters long
|
||||
* @returns The formatted string.
|
||||
* @type String
|
||||
*/
|
||||
Message.formatId = function(str, wrap) {
|
||||
var escapeQuotes = function(s) {
|
||||
return s.replace(/(^|[^\\])"/g, '$1\\"');
|
||||
};
|
||||
|
||||
var len = 80;
|
||||
var buf = new java.lang.StringBuffer();
|
||||
if (wrap == true && str.length > len) {
|
||||
buf.append('""\n');
|
||||
var offset = 0;
|
||||
while (offset < str.length) {
|
||||
buf.append('"');
|
||||
buf.append(escapeQuotes(str.substring(offset, offset += len)));
|
||||
buf.append('"');
|
||||
buf.append("\n");
|
||||
}
|
||||
return buf.toString();
|
||||
} else {
|
||||
buf.append('"');
|
||||
buf.append(escapeQuotes(str));
|
||||
buf.append('"\n');
|
||||
}
|
||||
return buf.toString();
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds a new location to this Message instance.
|
||||
* @param {String} filePath The path to the file this message
|
||||
* is located in.
|
||||
* @param {Number} lineNum The line number at which this message
|
||||
* was found at
|
||||
*/
|
||||
Message.prototype.addLocation = function(filePath, lineNum) {
|
||||
this.locations.push(filePath + ":" + lineNum);
|
||||
};
|
||||
|
||||
/**
|
||||
* Writes this Message instance as .po compatible string to
|
||||
* the StringBuffer passed as argument.
|
||||
* @param {java.lang.StringBuffer} buf The StringBuffer instance
|
||||
* to write into
|
||||
*/
|
||||
Message.prototype.write = function(buf) {
|
||||
for (var i=0;i<this.locations.length;i++) {
|
||||
buf.append("#: ");
|
||||
buf.append(this.locations[i]);
|
||||
buf.append("\n");
|
||||
}
|
||||
if (this.id.indexOf("{") > -1
|
||||
|| (this.pluralId != null && this.pluralId.indexOf("{") > -1)) {
|
||||
buf.append("#, java-format\n");
|
||||
}
|
||||
buf.append('msgid ');
|
||||
buf.append(Message.formatId(this.id));
|
||||
if (this.pluralId != null) {
|
||||
buf.append('msgid_plural ');
|
||||
buf.append(Message.formatId(this.pluralId));
|
||||
buf.append('msgstr[0] ""\nmsgstr[1] ""\n')
|
||||
} else {
|
||||
buf.append('msgstr ""\n')
|
||||
}
|
||||
buf.append("\n");
|
||||
return;
|
||||
};
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
var MessageParser = function() {
|
||||
this.messages = {};
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Object containing the accepted function names, currently
|
||||
* supported are "gettext", "ngettext" and "_". This is used
|
||||
* as a lookup map during function file parsing.
|
||||
* @type Object
|
||||
*/
|
||||
MessageParser.FUNCTION_NAMES = {
|
||||
"_": true,
|
||||
"gettext": true,
|
||||
"ngettext": true,
|
||||
"markgettext": true,
|
||||
"cgettext": true
|
||||
};
|
||||
|
||||
/**
|
||||
* The name of the gettext macro
|
||||
* @type String
|
||||
*/
|
||||
MessageParser.MACRO_NAME = "message";
|
||||
|
||||
/**
|
||||
* The name of the macro attribute that will be interpreted
|
||||
* as gettext attribute.
|
||||
* @type String
|
||||
*/
|
||||
MessageParser.ATTRIBUTE_NAME = MessageParser.MACRO_NAME;
|
||||
|
||||
/**
|
||||
* A regular expression for parsing macros in a skin. The result
|
||||
* of this regular expression contains:
|
||||
* result[1] = macro handler name (can be empty for global macros)
|
||||
* result[2] = macro name
|
||||
* result[3] = the macro's attributes
|
||||
* @type RegExp
|
||||
*/
|
||||
MessageParser.REGEX_MACRO = /<%\s*(?:([\w]+)\.)?([\w]+)\s+([^%]+?)\s*%>/gm;
|
||||
|
||||
/**
|
||||
* A regular expression for parsing the attributes of a macro. The result
|
||||
* of this regular expression contains:
|
||||
* result[1] = attribute name
|
||||
* result[2] = attribute value
|
||||
* @type RegExp
|
||||
*/
|
||||
MessageParser.REGEX_PARAM = /([\w]*)\s*=\s*["'](.*?)["']\s*(?=\w+=|$)/gm;
|
||||
|
||||
/**
|
||||
* Calculates the line number in the string passed as argument
|
||||
* at which the specified index position is located.
|
||||
* @param {String} str The source string
|
||||
* @param {Number} idx The index position to get the line number for.
|
||||
* @returns The line number of the index position in the source string.
|
||||
* @type Number
|
||||
*/
|
||||
MessageParser.getLineNum = function(str, idx) {
|
||||
return str.substring(0, idx).split(/.*(?:\r\n|\n\r|\r|\n)/).length;
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses the file passed as argument. If the file
|
||||
* is a directory, this method recurses down the directory
|
||||
* tree and parses all skin and function files.
|
||||
* @param {java.io.File} file The file or directory to start at.
|
||||
* @param {String} encoding The encoding to use
|
||||
*/
|
||||
MessageParser.prototype.parse = function(file, encoding) {
|
||||
if (file.isDirectory()) {
|
||||
var list = file.list();
|
||||
for (var i=0;i<list.length;i++) {
|
||||
this.parse(new java.io.File(file, list[i]), encoding);
|
||||
}
|
||||
} else {
|
||||
var fName, dotIdx;
|
||||
fName = file.getName();
|
||||
if ((dotIdx = fName.lastIndexOf(".")) > -1) {
|
||||
switch (String(fName.substring(dotIdx+1))) {
|
||||
case "skin":
|
||||
print("Parsing skin file " + file.getCanonicalPath() + "...");
|
||||
this.parseSkinFile(file, encoding);
|
||||
break;
|
||||
case "hac":
|
||||
case "js":
|
||||
print("Parsing function file " + file.getCanonicalPath() + "...");
|
||||
this.parseFunctionFile(file, encoding);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
};
|
||||
|
||||
/** @ignore */
|
||||
MessageParser.prototype.toString = function() {
|
||||
return "[Jala Message Parser]";
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses a .js file and creates Message instances for all
|
||||
* calls of "gettext", "ngettext", "markgettext" and "_".
|
||||
* @param {java.io.File} file The function file to parse
|
||||
* @param {String} encoding The encoding to use
|
||||
*/
|
||||
MessageParser.prototype.parseFunctionFile = function(file, encoding) {
|
||||
var fis = new java.io.FileInputStream(file);
|
||||
var isr = new java.io.InputStreamReader(fis, encoding || "UTF-8");
|
||||
var reader = new java.io.BufferedReader(isr);
|
||||
var tokenizer = new java.io.StreamTokenizer(reader);
|
||||
var messages = [], stack = [];
|
||||
var c;
|
||||
while ((c = tokenizer.nextToken()) != java.io.StreamTokenizer.TT_EOF) {
|
||||
switch (c) {
|
||||
case java.io.StreamTokenizer.TT_WORD:
|
||||
if (MessageParser.FUNCTION_NAMES[tokenizer.sval] == true) {
|
||||
stack.push({name: tokenizer.sval, lineNr: tokenizer.lineno()});
|
||||
} else if (stack.length > 0) {
|
||||
// it's something else than a string argument inside a gettext method call
|
||||
// so finalize the argument parsing here as we aren't interested in that
|
||||
messages.push(stack.pop());
|
||||
}
|
||||
break;
|
||||
case java.io.StreamTokenizer.TT_NUMBER:
|
||||
break;
|
||||
default:
|
||||
if (stack.length > 0) {
|
||||
if ("\u0028".charCodeAt(0) == c) {
|
||||
// start of arguments (an opening bracket)
|
||||
stack[stack.length-1].args = [];
|
||||
} else if ("\u0029".charCodeAt(0) == c) {
|
||||
// end of arguments (a closing bracket)
|
||||
messages.push(stack.pop());
|
||||
} else if ("\u0022".charCodeAt(0) == c || "\u0027".charCodeAt(0) == c) {
|
||||
// a quoted string argument
|
||||
stack[stack.length-1].args.push(tokenizer.sval);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (messages.length > 0) {
|
||||
var msgParam, key, msg;
|
||||
for (var i=0;i<messages.length;i++) {
|
||||
msgParam = messages[i];
|
||||
if (msgParam.args && msgParam.args.length > 0) {
|
||||
if (msgParam.name === "cgettext" || msgParam.name === "markgettext") {
|
||||
msgParam.args[0] = cgettext.getKey(msgParam.args[0], msgParam.args[1]);
|
||||
delete msgParam.args[1];
|
||||
}
|
||||
key = Message.getKey(msgParam.args[0]);
|
||||
if (!(msg = this.messages[key])) {
|
||||
this.messages[key] = msg = new Message(msgParam.args[0], msgParam.args[1]);
|
||||
}
|
||||
if (!msg.pluralId && msgParam.args.length > 1) {
|
||||
msg.pluralId = msgParam.args[1];
|
||||
}
|
||||
msg.addLocation(file.getCanonicalPath(), msgParam.lineNr);
|
||||
}
|
||||
}
|
||||
}
|
||||
fis.close();
|
||||
isr.close();
|
||||
reader.close();
|
||||
return;
|
||||
};
|
||||
|
||||
/**
|
||||
* =================================================
|
||||
* FIXME: This is a patched version of the method in
|
||||
* jala/util/HopKit/scripts/MessageParser.js
|
||||
* It needs skin/macro introspection features enabled
|
||||
* in Helma. See also the file Skin.java.patch.
|
||||
* ==================================================
|
||||
* Parses a skin file and creates Message instances for
|
||||
* all macros which name is either "message" or
|
||||
* that have attributes named "message" and optional
|
||||
* "plural"
|
||||
* @param {java.io.File} file The skin file to parse
|
||||
* @param {String} encoding The encoding to use
|
||||
*/
|
||||
MessageParser.prototype.parseSkinFile = function(file, encoding) {
|
||||
var self = this;
|
||||
var source = readFile(file.getAbsolutePath(), encoding || "UTF-8");
|
||||
|
||||
var checkNestedMacros = function(iterator) {
|
||||
var macros = [];
|
||||
while (iterator.hasNext()) {
|
||||
macro = iterator.next();
|
||||
if (macro && macro.constructor !== String) {
|
||||
macros.push(macro);
|
||||
}
|
||||
}
|
||||
processMacros(macros);
|
||||
}
|
||||
|
||||
var processMacros = function(macros) {
|
||||
var re = gettext_macro.REGEX;
|
||||
var id, pluralId, name, args, param, key, msg;
|
||||
for each (var macro in macros) {
|
||||
id = pluralId = null;
|
||||
name = macro.getName();
|
||||
param = macro.getNamedParams();
|
||||
if (param) {
|
||||
checkNestedMacros(param.values().iterator());
|
||||
if (name === MessageParser.MACRO_NAME) {
|
||||
id = param.get("text");
|
||||
pluralId = param.get("plural");
|
||||
} else if (param.containsKey("message") === MessageParser.ATTRIBUTE_NAME) {
|
||||
id = param.get("message");
|
||||
pluralId = param.get("plural");
|
||||
}
|
||||
}
|
||||
args = macro.getPositionalParams();
|
||||
if (args) {
|
||||
checkNestedMacros(args.iterator());
|
||||
if (name === "gettext" || name === "markgettext") {
|
||||
id = cgettext.getKey(args.get(0), param && param.get("context"));
|
||||
} else if (name === "ngettext") {
|
||||
id = args.get(0);
|
||||
pluralId = args.get(1);
|
||||
}
|
||||
}
|
||||
if (id != null) {
|
||||
if (id.constructor !== String) {
|
||||
continue;
|
||||
}
|
||||
// create new Message instance or update the existing one
|
||||
id = id.replace(re, String.SPACE);
|
||||
pluralId && (pluralId = pluralId.replace(re, String.SPACE));
|
||||
key = Message.getKey(id);
|
||||
if (!(msg = self.messages[key])) {
|
||||
self.messages[key] = msg = new Message(id, pluralId, file.getCanonicalPath());
|
||||
}
|
||||
msg.addLocation(file.getCanonicalPath(), MessageParser.getLineNum(source, macro.start));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var skin = createSkin(source);
|
||||
if (skin.hasMainskin()) {
|
||||
processMacros(skin.getMacros());
|
||||
}
|
||||
for each (var name in skin.getSubskinNames()) {
|
||||
var subskin = skin.getSubskin(name);
|
||||
processMacros(subskin.getMacros());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* FIXME: Patched with adequate header data
|
||||
* Prints a standard Header of a .po file
|
||||
* FIXME: why the hell is Plural-Forms ignored in poEdit?
|
||||
* @see http://drupal.org/node/17564
|
||||
*/
|
||||
MessageParser.prototype.getPotString = function() {
|
||||
var date = new Date;
|
||||
var buf = new java.lang.StringBuffer();
|
||||
buf.append('#\n');
|
||||
buf.append('# The Antville Project\n');
|
||||
buf.append('# http://code.google.com/p/antville\n');
|
||||
buf.append('#\n');
|
||||
buf.append('# Copyright 2001-' + date.getFullYear() + ' by the Workers of Antville.\n');
|
||||
buf.append('#\n');
|
||||
buf.append("# Licensed under the Apache License, Version 2.0 (the ``License''\n");
|
||||
buf.append('# you may not use this file except in compliance with the License.\n');
|
||||
buf.append('# You may obtain a copy of the License at\n');
|
||||
buf.append('#\n');
|
||||
buf.append('# http://www.apache.org/licenses/LICENSE-2.0\n');
|
||||
buf.append('#\n');
|
||||
buf.append('# Unless required by applicable law or agreed to in writing, software\n');
|
||||
buf.append("# distributed under the License is distributed on an ``AS IS'' BASIS,\n");
|
||||
buf.append('# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n');
|
||||
buf.append('# See the License for the specific language governing permissions and\n');
|
||||
buf.append('# limitations under the License.\n');
|
||||
buf.append('#\n\n');
|
||||
buf.append('#, fuzzy\n');
|
||||
buf.append('msgid ""\n');
|
||||
buf.append('msgstr ""\n');
|
||||
buf.append('"Project-Id-Version: Antville-' + Root.VERSION + '\\n"\n');
|
||||
buf.append('"Report-Msgid-Bugs-To: mail@antville.org\\n"\n');
|
||||
var sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mmZ");
|
||||
buf.append('"POT-Creation-Date: ' + sdf.format(new java.util.Date()) + '\\n"\n');
|
||||
buf.append('"PO-Revision-Date: ' + sdf.format(new java.util.Date()) + '\\n"\n');
|
||||
//buf.append('"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"\n');
|
||||
buf.append('"Language-Team: The Antville People <mail@antville.org>\\n"\n');
|
||||
buf.append('"MIME-Version: 1.0\\n"\n');
|
||||
buf.append('"Content-Type: text/plain; charset=utf-8\\n"\n');
|
||||
buf.append('"Content-Transfer-Encoding: 8bit\\n"\n');
|
||||
buf.append('"Plural-Forms: nplurals=2; plural=(n != 1);\\n"\n');
|
||||
buf.append('\n');
|
||||
|
||||
// sort all messages by their singular key
|
||||
var keys = [];
|
||||
for (var i in this.messages) {
|
||||
keys[keys.length] = this.messages[i].id;
|
||||
}
|
||||
keys.sort();
|
||||
// add all the messages
|
||||
for (var i=0;i<keys.length;i++) {
|
||||
this.messages[keys[i]].write(buf);
|
||||
}
|
||||
return new java.lang.String(buf);
|
||||
};
|
||||
|
||||
/**
|
||||
* Write the parsed contents into the file passed as argument.
|
||||
* @param {java.io.File} file The file to write to
|
||||
*/
|
||||
MessageParser.prototype.writeToFile = function(file) {
|
||||
var writer = new java.io.FileWriter(file);
|
||||
writer.write(new java.lang.String(this.getPotString().getBytes("UTF-8")));
|
||||
writer.close();
|
||||
return;
|
||||
};
|
||||
|
||||
/**
|
||||
* Main script body
|
||||
*/
|
||||
var toParse = [];
|
||||
var arg, outFile, file, fileEncoding;
|
||||
|
||||
for (var i=0;i<arguments.length;i++) {
|
||||
arg = arguments[i];
|
||||
if (arg.indexOf("-o") === 0 && i < arguments.length -1) {
|
||||
outFile = new java.io.File(arguments[i += 1]);
|
||||
} else if (arg.indexOf("-e") === 0 && i < arguments.length -1) {
|
||||
fileEncoding = arguments[i += 1];
|
||||
} else {
|
||||
// add argument to list of files and directories to parse
|
||||
toParse.push(new java.io.File(arg));
|
||||
}
|
||||
}
|
||||
|
||||
// start parsing
|
||||
var parser = new MessageParser();
|
||||
for (var i=0;i<toParse.length;i++) {
|
||||
parser.parse(toParse[i], fileEncoding);
|
||||
}
|
||||
if (outFile != null) {
|
||||
parser.writeToFile(outFile);
|
||||
} else {
|
||||
print(parser.getPotString());
|
||||
}
|
||||
|
|
@ -1,328 +0,0 @@
|
|||
// Jala Project [http://opensvn.csie.org/traccgi/jala]
|
||||
//
|
||||
// Copyright 2004 ORF Online und Teletext GmbH.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
/**
|
||||
* @fileoverview
|
||||
* A parser script that converts GNU Gettext .po files into plain JavaScript objects
|
||||
* for use with jala.I18n. To run it either start the build script of HopKit
|
||||
* or call it directly using the JavaScript shell of Rhino:
|
||||
* <code>java -cp rhino.jar org.mozilla.javascript.tools.shell.Main PoParser.js <input> <output> [namespace]</code>
|
||||
*
|
||||
* The accepted arguments are:
|
||||
* <ul>
|
||||
* <li><code>input</code>: Either a single .po file or a directory containing multiple files</li>
|
||||
* <li><code>output</code>: The directory where to put the generated message files</li>
|
||||
* <li><code>namespace</code>: An optional namespace in which the generated message object will reside
|
||||
* (eg. if the namespace is called "jala", the messages will be stored in global.jala.messages)</li>
|
||||
* </ul>
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Constructs a new PoParser instance.
|
||||
* @class Instances of this class can generate JavaScript message files out
|
||||
* of GNU Gettext .po files for use with jala.I18n (and possibly other internationalization
|
||||
* environments too).
|
||||
* @param {String} handler An optional namespace where the parsed messages should be stored
|
||||
* @returns A newly created instance of PoParser
|
||||
* @constructor
|
||||
*/
|
||||
var PoParser = function(namespace) {
|
||||
/**
|
||||
* An array containing the parsed messages
|
||||
* @type Array
|
||||
*/
|
||||
this.messages = [];
|
||||
|
||||
/**
|
||||
* The locale key string (eg. "de_AT") of the .po file
|
||||
* @type String
|
||||
*/
|
||||
this.localeKey = null;
|
||||
|
||||
/**
|
||||
* The namespace (optional) where to store the generated messages
|
||||
* @type String
|
||||
*/
|
||||
this.namespace = namespace;
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* A regular expression for splitting the contents of a .po file into
|
||||
* single lines
|
||||
* @type RegExp
|
||||
*/
|
||||
PoParser.REGEX_LINES = /\r\n|\r|\n|\u0085|\u2028|\u2029/;
|
||||
|
||||
/**
|
||||
* A regular expression for parsing singular message keys
|
||||
* @type RegExp
|
||||
*/
|
||||
PoParser.REGEX_MSGID = /^\s*msgid(?!_plural)\s+\"(.*)\"\s*$/;
|
||||
|
||||
/**
|
||||
* A regular expression for parsing plural message keys
|
||||
* @type RegExp
|
||||
*/
|
||||
PoParser.REGEX_MSGID_PLURAL = /^\s*msgid_plural\s+\"(.*)\"\s*$/;
|
||||
|
||||
/**
|
||||
* A regular expression for parsing message key continuations
|
||||
* @type RegExp
|
||||
*/
|
||||
PoParser.REGEX_MSG_CONT = /^\s*\"(.*)\"\s*$/;
|
||||
|
||||
/**
|
||||
* A regular expression for parsing a message translation
|
||||
* @type RegExp
|
||||
*/
|
||||
PoParser.REGEX_MSGSTR = /^\s*msgstr(?:\[(\d)\])?\s+\"(.*)\"\s*$/;
|
||||
|
||||
/**
|
||||
* A regular expression used to detect lines other than whitespace
|
||||
* and comments
|
||||
* @type RegExp
|
||||
*/
|
||||
PoParser.REGEX_DATA = /^\s*msg/;
|
||||
|
||||
PoParser.isData = function(str) {
|
||||
return PoParser.REGEX_DATA.test(str);
|
||||
};
|
||||
|
||||
/**
|
||||
* Reads the file passed as argument, assuming that it is UTF-8 encoded
|
||||
* @param {java.io.File} file The file to read
|
||||
* @returns The contents of the file
|
||||
* @type java.lang.String
|
||||
*/
|
||||
PoParser.readFile = function(file) {
|
||||
var inStream = new java.io.InputStreamReader(new java.io.FileInputStream(file), "UTF-8");
|
||||
var buffer = new java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 2048);
|
||||
var read = 0;
|
||||
var r = 0;
|
||||
while ((r = inStream.read(buffer, read, buffer.length - read)) > -1) {
|
||||
read += r;
|
||||
if (read == buffer.length) {
|
||||
// grow input buffer
|
||||
var newBuffer = new java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, buffer.length * 2);
|
||||
java.lang.System.arraycopy(buffer, 0, newBuffer, 0, buffer.length);
|
||||
buffer = newBuffer;
|
||||
}
|
||||
}
|
||||
inStream.close();
|
||||
return new java.lang.String(buffer, 0, read);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the PO file passed as argument into the messages array
|
||||
* of this PoParser instance.
|
||||
* @param {java.io.File} file The .po file to parse
|
||||
*/
|
||||
PoParser.prototype.parse = function(file) {
|
||||
// parse the locale key out of the file name
|
||||
var fileName = file.getName();
|
||||
if (!(this.localeKey = fileName.substring(0, fileName.indexOf(".")))) {
|
||||
throw "Invalid PO file name: " + fileName;
|
||||
}
|
||||
|
||||
// read the PO file content and parse it into messages
|
||||
var content = PoParser.readFile(file);
|
||||
var start = new Date();
|
||||
var lines = content.split(PoParser.REGEX_LINES);
|
||||
var idx = -1;
|
||||
var line = null;
|
||||
var m, value, nr;
|
||||
var msg;
|
||||
|
||||
var hasMoreLines = function() {
|
||||
return idx < lines.length - 1;
|
||||
};
|
||||
|
||||
var nextLine = function() {
|
||||
return (line = lines[idx += 1]) != null;
|
||||
};
|
||||
|
||||
var getContinuation = function(str) {
|
||||
var nLine;
|
||||
while ((nLine = lines[idx + 1]) != null) {
|
||||
if ((m = nLine.match(PoParser.REGEX_MSG_CONT)) != null) {
|
||||
str += m[1];
|
||||
nextLine();
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
while (nextLine()) {
|
||||
if ((m = line.match(PoParser.REGEX_MSGID)) != null) {
|
||||
value = getContinuation(m[1]);
|
||||
if (value) {
|
||||
msg = this.messages[this.messages.length] = new Message(value);
|
||||
}
|
||||
} else if ((m = line.match(PoParser.REGEX_MSGID_PLURAL)) != null) {
|
||||
value = getContinuation(m[1]);
|
||||
if (value && msg != null) {
|
||||
msg.pluralKey = value;
|
||||
}
|
||||
} else if ((m = line.match(PoParser.REGEX_MSGSTR)) != null) {
|
||||
nr = m[1];
|
||||
value = getContinuation(m[2]);
|
||||
if (value && msg != null) {
|
||||
nr = parseInt(nr, 10);
|
||||
msg.translations[nr || 0] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts the array containing the parsed messages into a message
|
||||
* catalog script file and saves it on disk.
|
||||
* @param {java.io.File} outputDir The directory where the message
|
||||
* file should be saved
|
||||
*/
|
||||
PoParser.prototype.writeToFile = function(output) {
|
||||
var buf = new java.lang.StringBuffer();
|
||||
// write header
|
||||
buf.append('/**\n');
|
||||
buf.append(' * Instantiate the messages namespace if it\'s not already existing\n');
|
||||
buf.append(' */\n');
|
||||
var objPath = "";
|
||||
if (this.namespace) {
|
||||
objPath += this.namespace;
|
||||
buf.append('if (!global.' + objPath + ') {\n');
|
||||
buf.append(' global.' + objPath + ' = {};\n');
|
||||
buf.append('}\n');
|
||||
objPath += ".";
|
||||
}
|
||||
objPath += "messages";
|
||||
buf.append('if (!global.' + objPath + ') {\n');
|
||||
buf.append(' global.' + objPath + ' = {};\n');
|
||||
buf.append('}\n\n');
|
||||
|
||||
buf.append('/**\n');
|
||||
buf.append(' * Messages for locale "' + this.localeKey + '"\n');
|
||||
buf.append(' */\n');
|
||||
var fname = objPath + "." + this.localeKey + ".js";
|
||||
objPath += "['" + this.localeKey + "']";
|
||||
buf.append('global.' + objPath + ' = {\n');
|
||||
// write messages
|
||||
for (var i=0;i<this.messages.length; i++) {
|
||||
this.messages[i].write(buf);
|
||||
}
|
||||
// write footer
|
||||
buf.append('};\n');
|
||||
|
||||
// write the message catalog into the outFile
|
||||
var file = new java.io.File(output, fname);
|
||||
var writer = new java.io.FileWriter(file);
|
||||
writer.write(new java.lang.String(buf.toString().getBytes("UTF-8")));
|
||||
writer.close();
|
||||
print("generated messages file " + file.getAbsolutePath());
|
||||
return;
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructs a new message object containing the singular- and
|
||||
* plural key plus their translations
|
||||
* @param {String} singularKey The singular key of the message
|
||||
* @returns A newly created Message instance
|
||||
* @constructor
|
||||
*/
|
||||
var Message = function(singularKey) {
|
||||
this.singularKey = singularKey;
|
||||
this.pluralKey = null;
|
||||
this.translations = [];
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dumps this message as JavaScript literal key-value pair(s)
|
||||
* @param {java.lang.StringBuffer} buf The buffer to append the dumped
|
||||
* string to
|
||||
*/
|
||||
Message.prototype.write = function(buf) {
|
||||
var writeLine = function(key, value) {
|
||||
buf.append(' "');
|
||||
buf.append(key);
|
||||
buf.append('": "');
|
||||
if (value !== null && value !== undefined) {
|
||||
buf.append(value);
|
||||
}
|
||||
buf.append('",\n');
|
||||
};
|
||||
|
||||
if (this.singularKey != null) {
|
||||
writeLine(this.singularKey, this.translations[0]);
|
||||
if (this.pluralKey != null) {
|
||||
writeLine(this.pluralKey, this.translations[1]);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Main script body
|
||||
*/
|
||||
if (arguments.length < 2) {
|
||||
print("Usage:");
|
||||
print("PoParser.js <input> <output> [namespace]");
|
||||
print("<input>: Either a single .po file or a directory containing .po files");
|
||||
print("<output>: The directory where the generated messages files should be stored");
|
||||
print("[namespace]: An optional global namespace where the messages should be");
|
||||
print(" stored (eg. a namespace like 'jala' will lead to messages");
|
||||
print(" stored in global.jala.messages by their locale.");
|
||||
quit();
|
||||
}
|
||||
|
||||
var input = new java.io.File(arguments[0]);
|
||||
var output = new java.io.File(arguments[1]);
|
||||
var namespace = arguments[2];
|
||||
|
||||
// check if the output destination is a directory
|
||||
if (output.isFile()) {
|
||||
print("Invalid arguments: the output destination must be a directory.");
|
||||
quit();
|
||||
}
|
||||
|
||||
if (namespace && namespace.indexOf(".") != -1) {
|
||||
print("Invalid arguments: Please don't specify complex object paths, as this");
|
||||
print("would corrupt the messages file.");
|
||||
quit();
|
||||
}
|
||||
|
||||
// parse the PO file(s) and create the message catalog files
|
||||
var parser;
|
||||
if (input.isDirectory()) {
|
||||
var files = input.listFiles();
|
||||
var file;
|
||||
for (var i=0;i<files.length;i++) {
|
||||
file = files[i];
|
||||
if (file.getName().endsWith(".po")) {
|
||||
parser = new PoParser(namespace);
|
||||
parser.parse(file);
|
||||
parser.writeToFile(output);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
parser = new PoParser(namespace);
|
||||
parser.parse(input);
|
||||
parser.writeToFile(output);
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
@import (inline) 'node_modules/codemirror/lib/codemirror.css';
|
||||
@import (inline) 'node_modules/uikit-bower/css/components/htmleditor.almost-flat.css';
|
||||
|
|
@ -1,172 +0,0 @@
|
|||
window.$ = window.jQuery = require('jquery');
|
||||
jQuery.md5 = require('js-md5/src/md5');
|
||||
|
||||
require('jquery-collagePlus/jquery.collagePlus');
|
||||
require('jquery-collagePlus/extras/jquery.collageCaption');
|
||||
require('jquery-collagePlus/extras/jquery.removeWhitespace');
|
||||
|
||||
require('uikit-bower/js/uikit');
|
||||
require('uikit-bower/js/components/form-password');
|
||||
require('uikit-bower/js/components/tooltip');
|
||||
require('uikit-bower/js/components/upload');
|
||||
|
||||
$(function() {
|
||||
// Extend jQuery with selectText() method.
|
||||
$.fn.selectText = function() {
|
||||
var element = this.get(0);
|
||||
if (document.body.createTextRange) { // ms
|
||||
var range = document.body.createTextRange();
|
||||
range.moveToElementText(element);
|
||||
range.select();
|
||||
} else if (window.getSelection) { // moz, opera, webkit
|
||||
var selection = window.getSelection();
|
||||
var range = document.createRange();
|
||||
range.selectNodeContents(element);
|
||||
selection.removeAllRanges();
|
||||
selection.addRange(range);
|
||||
}
|
||||
};
|
||||
|
||||
// Highlight the current navigation menu item
|
||||
var counter = 0;
|
||||
$('.uk-nav li').each(function (index, element) {
|
||||
if (counter > 0) {
|
||||
return;
|
||||
}
|
||||
var href = String($(element).find('a').attr('href')) + location.hash;
|
||||
var index = location.href.lastIndexOf(href);
|
||||
if (href && index > -1 && index + href.length === location.href.length) {
|
||||
$(element).addClass('uk-active');
|
||||
counter += 1;
|
||||
}
|
||||
});
|
||||
|
||||
// Prevent redundant submits of a form
|
||||
$('form').one('submit', function (event) {
|
||||
var submit = $(this).find('[type=submit]');
|
||||
setTimeout(function () {
|
||||
submit.attr('disabled', true);
|
||||
}, 1);
|
||||
});
|
||||
|
||||
// Show prompt to copy macro code
|
||||
$('a.av-clipboard-copy').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
prompt($(this).data('text'), $(this).data('value'));
|
||||
});
|
||||
|
||||
// Select the macro code when clicking on elements with the macro-code class.
|
||||
// FIXME: Obsolete (should move to compat layer)
|
||||
$('.macro-code').click(function(event) {
|
||||
$(this).selectText();
|
||||
});
|
||||
|
||||
// Compatibility: Go back when cancel link is clicked
|
||||
$('a.cancel').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
history.back()
|
||||
});
|
||||
|
||||
// Add the skin controls for the layout sandbox
|
||||
/*$('body').prepend($('<div>').attr('class', 'layout-sandbox')
|
||||
.append($('<div>')
|
||||
.append($('<button>')
|
||||
.html('Exit Sandbox')
|
||||
.click(function() {
|
||||
location.replace($('a[href$='sandbox']').attr('href'));
|
||||
}))));*/
|
||||
$('.av-skin').each(function() {
|
||||
var skinButton = $('<span class="av-skin-control"><a class="av-skin-edit-link">');
|
||||
skinButton.find('a').attr({
|
||||
'data-uk-tooltip': true,
|
||||
href: $(this).data('href'),
|
||||
title: 'Click to edit ' + $(this).data('name') + ' skin'
|
||||
}).mouseover(function() {
|
||||
$(this).parents('.av-skin').eq(0).addClass('av-skin-active');
|
||||
}).mouseout(function() {
|
||||
$(this).parents('.av-skin').eq(0).removeClass('av-skin-active');
|
||||
}).html('<i class="uk-icon-pencil"></i>');
|
||||
$(this).prepend(skinButton);
|
||||
});
|
||||
});
|
||||
|
||||
Antville = {};
|
||||
Antville.prefix = 'Antville_';
|
||||
|
||||
Antville.encode = function(str) {
|
||||
var chars = ['&', '<', '>', '\''];
|
||||
for (var i in chars) {
|
||||
var c = chars[i];
|
||||
var re = new RegExp(c, 'g');
|
||||
str = str.replace(re, '&#' + c.charCodeAt() + ';');
|
||||
}
|
||||
return str;
|
||||
};
|
||||
|
||||
Antville.decode = function(str) {
|
||||
return str.replace(/&/g, '&');
|
||||
};
|
||||
|
||||
Antville.Referrer = function(url, text, count) {
|
||||
this.url = url;
|
||||
var re = new RegExp('https?://(?:www\.)?');
|
||||
this.text = String(text).replace(re, '');
|
||||
var pos = this.text.lastIndexOf('/');
|
||||
if (pos === this.text.length - 1) {
|
||||
this.text = this.text.substr(0, pos);
|
||||
}
|
||||
this.count = parseInt(count, 10);
|
||||
this.compose = function(prefix, key) {
|
||||
prefix || (prefix = '');
|
||||
var query = new Antville.Query(this.url);
|
||||
if (query[key]) {
|
||||
return prefix + ' ' + Antville.encode(query[key]);
|
||||
}
|
||||
return this.text;
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
Antville.Query = function(str) {
|
||||
if (str == undefined)
|
||||
var str = location.search.substring(1);
|
||||
else if (str.indexOf('?') > -1)
|
||||
var str = str.split('?')[1];
|
||||
if (str == '')
|
||||
return this;
|
||||
var parts = Antville.decode(decodeURIComponent(str)).split('&');
|
||||
for (var i in parts) {
|
||||
var pair = parts[i].split('=');
|
||||
var key = pair[0];
|
||||
if (key) {
|
||||
key = key.replace(/\+/g, ' ');
|
||||
var value = pair[1];
|
||||
if (value)
|
||||
value = value.replace(/\+/g, ' ');
|
||||
this[key] = value;
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
Antville.Filter = function(def, key) {
|
||||
this.key = key;
|
||||
if (def == null)
|
||||
this.items = [];
|
||||
else if (def instanceof Array)
|
||||
this.items = def;
|
||||
else
|
||||
this.items = def.replace(/\r/g, '\n').split('\n');
|
||||
this.test = function(str) {
|
||||
if (!str)
|
||||
return false;
|
||||
str = str.replace(/&/g, '&');
|
||||
for (var n in this.items) {
|
||||
var re = new RegExp(this.items[n], 'i');
|
||||
if (re.test(str))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
@import (inline) 'node_modules/uikit-bower/css/uikit.almost-flat.css';
|
||||
@import (inline) 'node_modules/uikit-bower/css/components/form-password.almost-flat.css';
|
||||
@import (inline) 'node_modules/uikit-bower/css/components/tooltip.almost-flat.css';
|
||||
|
||||
@import './sprites';
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,12 +0,0 @@
|
|||
H2 is dual licensed and available under a modified version of the MPL 1.1 (Mozilla Public License) or under the (unmodified) EPL 1.0 (Eclipse Public License). The changes to the MPL are underlined. There is a License FAQ for both the MPL and the EPL, most of that is applicable to the H2 License as well.
|
||||
|
||||
* You can use H2 for free. You can integrate it into your application (including commercial applications), and you can distribute it.
|
||||
* Files containing only your code are not covered by this license (it is 'commercial friendly').
|
||||
* Modifications to the H2 source code must be published.
|
||||
* You don't need to provide the source code of H2 if you did not modify anything.
|
||||
|
||||
However, nobody is allowed to rename H2, modify it a little, and sell it as a database engine without telling the customers it is in fact H2. This happened to HSQLDB: a company called 'bungisoft' copied HSQLDB, renamed it to 'RedBase', and tried to sell it, hiding the fact that it was in fact just HSQLDB. It seems 'bungisoft' does not exist any more, but you can use the Wayback Machine and visit old web pages of http://www.bungisoft.com.
|
||||
|
||||
About porting the source code to another language (for example C# or C++): converted source code (even if done manually) stays under the same copyright and license as the original code. The copyright of the ported source code does not (automatically) go to the person who ported the code.
|
||||
|
||||
For the full license text see http://www.h2database.com/html/license.html.
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,23 +0,0 @@
|
|||
# The Antville Project
|
||||
# http://code.google.com/p/antville
|
||||
#
|
||||
# Copyright 2001–2014 by the Workers of Antville.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the ``License'');
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an ``AS IS'' BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
country = AT
|
||||
language = en
|
||||
smtp = localhost
|
||||
# Login to manage console: admin/admin
|
||||
adminAccess = 32ff9ee7e841b26a966870c144fdcaec
|
||||
allowAdmin = 127.0.0.1, ::1
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
::
|
||||
:: The Antville Project
|
||||
:: http://code.google.com/p/antville
|
||||
::
|
||||
:: Copyright 2001–2014 by the Workers of Antville.
|
||||
::
|
||||
:: Licensed under the Apache License, Version 2.0 (the ``License'');
|
||||
:: you may not use this file except in compliance with the License.
|
||||
:: You may obtain a copy of the License at
|
||||
::
|
||||
:: http://www.apache.org/licenses/LICENSE-2.0
|
||||
::
|
||||
:: Unless required by applicable law or agreed to in writing, software
|
||||
:: distributed under the License is distributed on an ``AS IS'' BASIS,
|
||||
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
:: See the License for the specific language governing permissions and
|
||||
:: limitations under the License.
|
||||
::
|
||||
|
||||
@echo off
|
||||
|
||||
set JAVA_HOME=
|
||||
set HOP_HOME=
|
||||
set HTTP_PORT=
|
||||
set XMLRPC_PORT=
|
||||
set AJP13_PORT=
|
||||
set RMI_PORT=
|
||||
set CONFIG_FILE=
|
||||
set OPTIONS=
|
||||
|
||||
set HTTP_PORT=8080
|
||||
rem set XMLRPC_PORT=8081
|
||||
rem set AJP13_PORT=8009
|
||||
rem set RMI_PORT=5050
|
||||
rem set CONFIGFILE=./etc/jetty.xml
|
||||
|
||||
rem set HOP_HOME="c:\program files\helma"
|
||||
rem set JAVA_HOME="c:\program files\java"
|
||||
|
||||
set JAVA_OPTIONS=-Djava.awt.headless=true -Dfile.encoding=utf-8
|
||||
|
||||
set INSTALL_DIR=%~d0%~p0
|
||||
|
||||
if "%JAVA_HOME%"=="" goto default
|
||||
set JAVACMD=%JAVA_HOME%\bin\java
|
||||
goto end
|
||||
:default
|
||||
set JAVACMD=java
|
||||
:end
|
||||
|
||||
if "%HOP_HOME%"=="" (
|
||||
set HOP_HOME=%INSTALL_DIR%
|
||||
)
|
||||
cd %HOP_HOME%
|
||||
|
||||
if not "%CONFIG_FILE%"=="" (
|
||||
echo Using configuration file %CONFIG_FILE%
|
||||
set OPTION=%OPTIONS% -c %CONFIG_FILE%
|
||||
goto java
|
||||
)
|
||||
if not "%HTTP_PORT%"=="" (
|
||||
echo Starting HTTP server on port %HTTP_PORT%
|
||||
set OPTIONS=%OPTIONS% -w %HTTP_PORT%
|
||||
)
|
||||
if not "%XMLRPC_PORT%"=="" (
|
||||
echo Starting XML-RPC server on port %XMLRPC_PORT%
|
||||
set OPTIONS=%OPTIONS% -x %XMLRPC_PORT%
|
||||
)
|
||||
if not "%AJP13_PORT%"=="" (
|
||||
echo Starting AJP13 listener on port %AJP13_PORT%
|
||||
set OPTIONS=%OPTIONS% -jk %AJP13_PORT%
|
||||
)
|
||||
if not "%RMI_PORT%"=="" (
|
||||
echo Starting RMI server on port %RMI_PORT%
|
||||
set OPTIONS=%OPTIONS% -p %RMI_PORT%
|
||||
)
|
||||
if not "%HOP_HOME%"=="" (
|
||||
echo Serving applications from %HOP_HOME%
|
||||
set OPTIONS=%OPTIONS% -h "%HOP_HOME%
|
||||
)
|
||||
|
||||
:java
|
||||
%JAVACMD% %JAVA_OPTIONS% -jar "%INSTALL_DIR%\launcher.jar" %OPTIONS%
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# The Antville Project
|
||||
# http://code.google.com/p/antville
|
||||
#
|
||||
# Copyright 2001–2014 by the Workers of Antville.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the ``License'');
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an ``AS IS'' BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
HTTP_PORT=8080
|
||||
#XMLRPC_PORT=8081
|
||||
#AJP13_PORT=8009
|
||||
#RMI_PORT=5050
|
||||
#CONFIG_FILE=./etc/jetty.xml
|
||||
|
||||
#JAVA_HOME=/usr/lib/java
|
||||
#HOP_HOME=/usr/local/helma
|
||||
|
||||
JAVA_OPTIONS="-Djava.awt.headless=true -Dfile.encoding=utf-8"
|
||||
|
||||
if [ "$JAVA_HOME" ]; then
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
# Check if java command is executable
|
||||
if [ ! -x $JAVACMD ]; then
|
||||
echo "Warning: JAVA_HOME variable may be set incorrectly:"
|
||||
echo " No executable found at $JAVACMD"
|
||||
fi
|
||||
else
|
||||
JAVACMD=java
|
||||
fi
|
||||
|
||||
INSTALL_DIR="${0%/*}"
|
||||
cd $INSTALL_DIR
|
||||
INSTALL_DIR=$PWD
|
||||
|
||||
if [ -z "$HOP_HOME" ]; then
|
||||
HOP_HOME="${0%/*}"
|
||||
cd $HOP_HOME
|
||||
HOP_HOME=$PWD
|
||||
else
|
||||
cd $HOP_HOME
|
||||
fi
|
||||
echo "Starting Helma in directory $HOP_HOME"
|
||||
|
||||
if [ "$CONFIG_FILE" ]; then
|
||||
SWITCHES="$SWITCHES -c $CONFIG_FILE"
|
||||
echo Using configuration file $CONFIG_FILE
|
||||
else
|
||||
if [ "$HTTP_PORT" ]; then
|
||||
SWITCHES="$SWITCHES -w $HTTP_PORT"
|
||||
echo Starting HTTP server on port $HTTP_PORT
|
||||
fi
|
||||
if [ "$XMLRPC_PORT" ]; then
|
||||
SWITCHES="$SWITCHES -x $XMLRPC_PORT"
|
||||
echo Starting XML-RPC server on port $XMLRPC_PORT
|
||||
fi
|
||||
if [ "$AJP13_PORT" ]; then
|
||||
SWITCHES="$SWITCHES -jk $AJP13_PORT"
|
||||
echo Starting AJP13 listener on port $AJP13_PORT
|
||||
fi
|
||||
if [ "$RMI_PORT" ]; then
|
||||
SWITCHES="$SWITCHES -p $RMI_PORT"
|
||||
echo Starting RMI server on port $RMI_PORT
|
||||
fi
|
||||
if [ "$HOP_HOME" ]; then
|
||||
SWITCHES="$SWITCHES -h $HOP_HOME"
|
||||
fi
|
||||
fi
|
||||
|
||||
$JAVACMD $JAVA_OPTIONS -jar "$INSTALL_DIR/launcher.jar" $SWITCHES
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Simple wrapper for the JSDoc runner which is checked out
|
||||
# from the JSDoc repository w/o executable permission.
|
||||
|
||||
. jsrun.sh
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
{! Link.base = ""; /* all generated links will be relative to this */ !}
|
||||
{+subtemplate("subtemplates/head.tmpl", {subtitle: "Class Index"})+}
|
||||
{+subtemplate("subtemplates/menu.tmpl")+}
|
||||
<div class="content">
|
||||
<div class="innerContent">
|
||||
<h1 class="classTitle"><span>Class Index</span></h1>
|
||||
|
||||
<ul id="ClassList2">
|
||||
<for each="thisClass" in="data">
|
||||
<li>
|
||||
<h2 class="classname">{+(new Link().toSymbol(thisClass.alias))+}</h2>
|
||||
<p>{+resolveLinks(summarize(thisClass.classDesc))+}</p>
|
||||
</li>
|
||||
</for>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{+subtemplate("subtemplates/foot.tmpl")+}
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
{! Link.base = ""; /* all generated links will be relative to this */ !}
|
||||
{+subtemplate("subtemplates/head.tmpl", {subtitle: "File Index"})+}
|
||||
{+subtemplate("subtemplates/menu.tmpl")+}
|
||||
<div class="content">
|
||||
<div class="innerContent">
|
||||
<h1 class="classTitle"><span>File Index</span></h1>
|
||||
|
||||
<ul class="fileList" id="FileList">
|
||||
<for each="item" in="data">
|
||||
<li>
|
||||
<h2 class="filename">{+new Link().toSrc(item.alias).withText(item.name)+}</h2>
|
||||
|
||||
<if test="item.desc">{+resolveLinks(item.desc)+}</if>
|
||||
|
||||
<dl class="detailList">
|
||||
<if test="item.author">
|
||||
<dt class="heading">Author:</dt>
|
||||
<dd>{+item.author+}</dd>
|
||||
</if>
|
||||
|
||||
<if test="item.version">
|
||||
<dt class="heading">Version:</dt>
|
||||
<dd>{+item.version+}</dd>
|
||||
</if>
|
||||
|
||||
{! var locations = item.comment.getTag('location').map(function($){return $.toString().replace(/(^\$ ?| ?\$$)/g, '').replace(/^HeadURL: https:/g, 'http:');}) !}
|
||||
<if test="locations.length">
|
||||
<dt class="heading">Location:</dt>
|
||||
<for each="location" in="locations">
|
||||
<dd><a href="{+location+}">{+location+}</a></dd>
|
||||
</for>
|
||||
</if>
|
||||
</dl>
|
||||
</li>
|
||||
</for>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{+subtemplate("subtemplates/foot.tmpl")+}
|
||||
|
|
@ -1,679 +0,0 @@
|
|||
{! Link.base = "../"; /* all generated links will be relative to this */ !}
|
||||
{+subtemplate("subtemplates/head.tmpl", {subtitle: data.alias})+}
|
||||
{+subtemplate("subtemplates/menu.tmpl")+}
|
||||
<div class="content">
|
||||
<div class="innerContent">
|
||||
<h1 class="classTitle">
|
||||
{!
|
||||
var classType = "";
|
||||
|
||||
if (data.isBuiltin()) {
|
||||
classType += "Built-In ";
|
||||
}
|
||||
|
||||
if (data.isNamespace) {
|
||||
if (data.is('FUNCTION')) {
|
||||
classType += "Function ";
|
||||
}
|
||||
classType += "Namespace ";
|
||||
} else {
|
||||
classType += "Class ";
|
||||
}
|
||||
!}
|
||||
{+classType+}<span>{+data.alias+}</span>
|
||||
</h1>
|
||||
|
||||
<div class="intro">
|
||||
<p class="description summary">
|
||||
{+resolveLinks(data.classDesc)+}
|
||||
</p>
|
||||
|
||||
<if test="data.version || !data.isBuiltin() || data.augments.length">
|
||||
<ul class="summary">
|
||||
<if test="data.version">
|
||||
<li>Version {+ data.version +}</li>
|
||||
</if>
|
||||
|
||||
<if test="!data.isBuiltin()">{# isn't defined in any file #}
|
||||
<li>Defined in: {+new Link().toSrc(data.srcFile)+}</li>
|
||||
</if>
|
||||
<if test="data.augments.length"><li>Extends <span class="fixedFont">
|
||||
{+
|
||||
data.augments
|
||||
.sort()
|
||||
.map(
|
||||
function($) { return new Link().toSymbol($); }
|
||||
)
|
||||
.join(", ")
|
||||
+}</span></li>
|
||||
</if>
|
||||
</ul>
|
||||
</if>
|
||||
</div>
|
||||
|
||||
<if test="!data.isBuiltin() && (data.isNamespace || data.is('CONSTRUCTOR'))">
|
||||
<div class="props">
|
||||
<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class {+data.alias+}.">
|
||||
<caption class="sectionTitle">{+classType+}Summary</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Constructor Attributes</th>
|
||||
<th scope="col">Constructor Name and Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="attributes">{!
|
||||
if (data.isPrivate) output += "<private> ";
|
||||
if (data.isInner) output += "<inner> ";
|
||||
!} </td>
|
||||
<td class="nameDescription" {!if (data.comment.getTag("hilited").length){output += 'style="color: red"'}!}>
|
||||
<div class="fixedFont">
|
||||
<b>{+ new Link().toSymbol(data.alias).inner('constructor')+}</b><if test="classType != 'Namespace '">{+ makeSignature(data.params) +}</if>
|
||||
</div>
|
||||
<div class="description">{+resolveLinks(summarize(data.desc))+}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</if>
|
||||
|
||||
<if test="data.properties.length">
|
||||
{! var ownProperties = data.properties.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
|
||||
<if test="ownProperties.length">
|
||||
<div class="props">
|
||||
<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class {+data.alias+}.">
|
||||
<caption class="sectionTitle">Field Summary</caption>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Field Attributes</th>
|
||||
<th scope="col">Field Name and Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<for each="member" in="ownProperties">
|
||||
<tr>
|
||||
<td class="attributes">{!
|
||||
if (member.isPrivate) output += "<private> ";
|
||||
if (member.isInner) output += "<inner> ";
|
||||
if (member.isStatic) output += "<static> ";
|
||||
if (member.isConstant) output += "<constant> ";
|
||||
!} </td>
|
||||
<td class="nameDescription">
|
||||
<div class="fixedFont">
|
||||
<if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>
|
||||
</div>
|
||||
<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</for>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</if>
|
||||
|
||||
<if test="data.inheritsFrom.length">
|
||||
<dl class="inheritsList">
|
||||
{!
|
||||
var borrowedMembers = data.properties.filter(function($) {return $.memberOf != data.alias});
|
||||
|
||||
var contributers = [];
|
||||
borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
|
||||
for (var i = 0, l = contributers.length; i < l; i++) {
|
||||
output +=
|
||||
"<dt>Fields borrowed from class "+new Link().toSymbol(contributers[i])+": </dt>"
|
||||
+
|
||||
"<dd>" +
|
||||
borrowedMembers
|
||||
.filter(
|
||||
function($) { return $.memberOf == contributers[i] }
|
||||
)
|
||||
.sort(makeSortby("name"))
|
||||
.map(
|
||||
function($) { return new Link().toSymbol($.alias).withText($.name) }
|
||||
)
|
||||
.join(", ")
|
||||
+
|
||||
"</dd>";
|
||||
}
|
||||
!}
|
||||
</dl>
|
||||
</if>
|
||||
</if>
|
||||
<!--
|
||||
#### METHODS SUMMARY
|
||||
-->
|
||||
<if test="data.methods.length">
|
||||
{! var ownMethods = data.methods.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
|
||||
|
||||
<div class="props">
|
||||
<h2 class="sectionTitle">Method Summary</h2>
|
||||
|
||||
<if test="ownMethods.length">
|
||||
<table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class {+data.alias+}.">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Method Attributes</th>
|
||||
<th scope="col">Method Name and Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{!
|
||||
var methodSummaryCount = 0;
|
||||
!}
|
||||
<for each="member" in="ownMethods">
|
||||
<tr
|
||||
{!
|
||||
output += " class='item"+ methodSummaryCount +"'";
|
||||
methodSummaryCount++
|
||||
!}
|
||||
>
|
||||
<td class="attributes">{!
|
||||
if (member.isPrivate) output += "<private> ";
|
||||
if (member.isInner) output += "<inner> ";
|
||||
if (member.isStatic) output += "<static> ";
|
||||
!} </td>
|
||||
<td class="nameDescription">
|
||||
<div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name.replace(/\^\d+$/, ''))+}</b>{+makeSignature(member.params)+}
|
||||
</div>
|
||||
<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</for>
|
||||
</tbody>
|
||||
</table>
|
||||
</if>
|
||||
|
||||
<if test="data.inheritsFrom.length">
|
||||
<dl class="inheritsList" id="MethodsListInherited">
|
||||
{!
|
||||
var borrowedMembers = data.methods.filter(function($) {return $.memberOf != data.alias});
|
||||
var contributers = [];
|
||||
borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
|
||||
for (var i = 0, l = contributers.length; i < l; i++) {
|
||||
output +=
|
||||
"<dt>Methods borrowed from class <span class='fixedFont'>"+new Link().toSymbol(contributers[i])+"</span>: </dt>"
|
||||
+
|
||||
borrowedMembers
|
||||
.filter(
|
||||
function($) { return $.memberOf == contributers[i] }
|
||||
)
|
||||
.sort(makeSortby("name"))
|
||||
.map(
|
||||
function($) {
|
||||
var link = "";
|
||||
link += "<dd><span class='fixedFont'>";
|
||||
link += new Link().toSymbol($.alias).withText($.name);
|
||||
link += "</span></dd>";
|
||||
return link;
|
||||
}
|
||||
)
|
||||
.join(" ");
|
||||
}
|
||||
!}
|
||||
</dl>
|
||||
</if>
|
||||
</div>
|
||||
</if>
|
||||
|
||||
<!--
|
||||
#### EVENTS SUMMARY
|
||||
-->
|
||||
<if test="data.events.length">
|
||||
{! var ownEvents = data.events.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
|
||||
<if test="ownEvents.length">
|
||||
<div class="props">
|
||||
<table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class {+data.alias+}.">
|
||||
<caption class="sectionTitle">Event Summary</caption>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Event Attributes</th>
|
||||
<th scope="col">Event Name and Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<for each="member" in="ownEvents">
|
||||
<tr>
|
||||
<td class="attributes">{!
|
||||
if (member.isPrivate) output += "<private> ";
|
||||
if (member.isInner) output += "<inner> ";
|
||||
if (member.isStatic) output += "<static> ";
|
||||
!} </td>
|
||||
<td class="nameDescription">
|
||||
<div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>{+makeSignature(member.params)+}
|
||||
</div>
|
||||
<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</for>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</if>
|
||||
|
||||
<if test="data.inheritsFrom.length">
|
||||
<dl class="inheritsList">
|
||||
{!
|
||||
var borrowedMembers = data.events.filter(function($) {return $.memberOf != data.alias});
|
||||
var contributers = [];
|
||||
borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
|
||||
for (var i = 0, l = contributers.length; i < l; i++) {
|
||||
output +=
|
||||
"<dt>Events borrowed from class "+new Link().toSymbol(contributers[i])+": </dt>"
|
||||
+
|
||||
"<dd>" +
|
||||
borrowedMembers
|
||||
.filter(
|
||||
function($) { return $.memberOf == contributers[i] }
|
||||
)
|
||||
.sort(makeSortby("name"))
|
||||
.map(
|
||||
function($) { return new Link().toSymbol($.alias).withText($.name) }
|
||||
)
|
||||
.join(", ")
|
||||
+
|
||||
"</dd>";
|
||||
}
|
||||
|
||||
!}
|
||||
</dl>
|
||||
</if>
|
||||
</if>
|
||||
<!--
|
||||
#### CONSTRUCTOR DETAILS
|
||||
-->
|
||||
<if test="!data.isBuiltin() && (data.isNamespace || data.is('CONSTRUCTOR'))">
|
||||
<div class="details props">
|
||||
<div class="innerProps">
|
||||
<h2 class="sectionTitle" id="constructor">
|
||||
{+classType+}Detail
|
||||
</h2>
|
||||
|
||||
<div class="fixedFont">{!
|
||||
if (data.isPrivate) output += "<private> ";
|
||||
if (data.isInner) output += "<inner> ";
|
||||
!}
|
||||
<b>{+ data.alias +}</b><if test="classType != 'Namespace '">{+ makeSignature(data.params) +}</if>
|
||||
</div>
|
||||
|
||||
<div class="description">
|
||||
{+resolveLinks(data.desc)+}
|
||||
<if test="data.author"><br /><i>Author: </i>{+data.author+}.</if>
|
||||
</div>
|
||||
|
||||
<if test="data.example.length">
|
||||
<for each="example" in="data.example">
|
||||
<pre class="code">{+example+}</pre>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="data.params.length">
|
||||
<dl class="detailList params">
|
||||
<dt class="heading">Parameters:</dt>
|
||||
<for each="item" in="data.params">
|
||||
<dt>
|
||||
{+((item.type)?""+("<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type)+"}</span> ")) : "")+} <b>{+item.name+}</b>
|
||||
<if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
|
||||
</dt>
|
||||
<dd>{+resolveLinks(item.desc)+}</dd>
|
||||
</for>
|
||||
</dl>
|
||||
</if>
|
||||
|
||||
<if test="data.deprecated || data.since || data.exceptions.length || data.returns.length || data.requires.length || data.see.length">
|
||||
<dl class="detailList nomargin">
|
||||
<if test="data.deprecated">
|
||||
<dt>
|
||||
{+resolveLinks(data.deprecated)+}
|
||||
</dt>
|
||||
</if>
|
||||
|
||||
<if test="data.since">
|
||||
<dt class="heading">Since:</dt>
|
||||
<dd>{+ data.since +}</dd>
|
||||
</if>
|
||||
|
||||
<if test="data.exceptions.length">
|
||||
<dt class="heading">Throws:</dt>
|
||||
<for each="item" in="data.exceptions">
|
||||
<dt>
|
||||
{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
|
||||
</dt>
|
||||
<dd>{+resolveLinks(item.desc)+}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="data.returns.length">
|
||||
<dt class="heading">Returns:</dt>
|
||||
<for each="item" in="data.returns">
|
||||
<dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="data.requires.length">
|
||||
<dt class="heading">Requires:</dt>
|
||||
<for each="item" in="data.requires">
|
||||
<dd>{+ resolveLinks(item) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="data.see.length">
|
||||
<dt class="heading">See:</dt>
|
||||
<for each="item" in="data.see">
|
||||
<dd>{+ new Link().toSymbol(item) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
</dl>
|
||||
</if>
|
||||
</div>
|
||||
</div>
|
||||
</if>
|
||||
<!--
|
||||
#### FIELD DETAILS
|
||||
-->
|
||||
<if test="defined(ownProperties) && ownProperties.length">
|
||||
<div class="details props">
|
||||
<div class="innerProps">
|
||||
<h2 class="sectionTitle">
|
||||
Field Detail
|
||||
</h2>
|
||||
|
||||
<for each="member" in="ownProperties">
|
||||
<div class="fixedFont heading" id="{+Link.symbolNameToLinkName(member)+}">
|
||||
<span class='lighter'>
|
||||
{!
|
||||
if (member.isPrivate) output += "<private> ";
|
||||
if (member.isInner) output += "<inner> ";
|
||||
if (member.isStatic) output += "<static> ";
|
||||
if (member.isConstant) output += "<constant> ";
|
||||
!}
|
||||
</span>
|
||||
|
||||
<if test="member.type"><span class="light">{{+new Link().toSymbol(member.type)+}}</span></if>
|
||||
|
||||
<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b>
|
||||
</div>
|
||||
|
||||
<div class="description">
|
||||
{+resolveLinks(member.desc)+}
|
||||
<if test="member.srcFile != data.srcFile">
|
||||
<br />
|
||||
<i>Defined in: </i> {+new Link().toSrc(member.srcFile)+}.
|
||||
</if>
|
||||
|
||||
<if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
|
||||
</div>
|
||||
|
||||
<if test="member.example.length">
|
||||
<for each="example" in="member.example">
|
||||
<pre class="code">{+example+}</pre>
|
||||
</for>
|
||||
</if>
|
||||
<if test="member.deprecated || member.since || member.see.length || member.defaultValue">
|
||||
<dl class="detailList nomargin">
|
||||
|
||||
<if test="member.deprecated">
|
||||
<dt class="heading">Deprecated:</dt>
|
||||
<dt>
|
||||
{+ resolveLinks(member.deprecated) +}
|
||||
</dt>
|
||||
</if>
|
||||
<if test="member.since">
|
||||
<dt class="heading">Since:</dt>
|
||||
<dd>{+ member.since +}</dd>
|
||||
</if>
|
||||
<if test="member.see.length">
|
||||
<dt class="heading">See:</dt>
|
||||
<for each="item" in="member.see">
|
||||
<dd>{+ new Link().toSymbol(item) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
<if test="member.defaultValue">
|
||||
<dt class="heading">Default Value:</dt>
|
||||
<dd>
|
||||
{+resolveLinks(member.defaultValue)+}
|
||||
</dd>
|
||||
</if>
|
||||
</dl>
|
||||
</if>
|
||||
|
||||
<if test="!$member_last"><div class="hr"></div></if>
|
||||
</for>
|
||||
</div>
|
||||
</div>
|
||||
</if>
|
||||
<!--
|
||||
#### METHOD DETAILS
|
||||
-->
|
||||
<if test="defined(ownMethods) && ownMethods.length">
|
||||
<div class="details props">
|
||||
<div class="innerProps">
|
||||
<h2 class="sectionTitle">
|
||||
Method Detail
|
||||
</h2>
|
||||
|
||||
<ul class="methodDetail" id="MethodDetail">
|
||||
{!
|
||||
var methodDetailCount = 0;
|
||||
!}
|
||||
<for each="member" in="ownMethods">
|
||||
<li
|
||||
{!
|
||||
output += " class='item"+ methodDetailCount +"'";
|
||||
methodDetailCount++
|
||||
!}
|
||||
>
|
||||
<div class="fixedFont heading" id="{+Link.symbolNameToLinkName(member)+}">
|
||||
<span class='lighter'>
|
||||
{!
|
||||
if (member.isPrivate) output += "<private> ";
|
||||
if (member.isInner) output += "<inner> ";
|
||||
if (member.isStatic) output += "<static> ";
|
||||
!}
|
||||
</span>
|
||||
|
||||
<if test="member.type"><span class="light">{{+new Link().toSymbol(member.type)+}}</span></if>
|
||||
|
||||
<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name.replace(/\^\d+$/, '')+}</b>{+makeSignature(member.params)+}
|
||||
</div>
|
||||
|
||||
<div class="description">
|
||||
{+resolveLinks(member.desc)+}
|
||||
|
||||
<if test="member.srcFile != data.srcFile">
|
||||
<br />
|
||||
<i>Defined in: </i> {+new Link().toSrc(member.srcFile)+}.
|
||||
</if>
|
||||
|
||||
<if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
|
||||
</div>
|
||||
|
||||
<if test="member.example.length">
|
||||
<for each="example" in="member.example">
|
||||
<pre class="code">{+example+}</pre>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.params.length">
|
||||
<dl class="detailList params">
|
||||
<dt class="heading">Parameters:</dt>
|
||||
<for each="item" in="member.params">
|
||||
<dt>
|
||||
{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}<b>{+item.name+}</b>
|
||||
<if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
|
||||
</dt>
|
||||
<dd>{+resolveLinks(item.desc)+}</dd>
|
||||
</for>
|
||||
</dl>
|
||||
</if>
|
||||
|
||||
<if test="member.deprecated || member.since || member.exceptions.length || member.returns.length || member.requires.length || member.see.length">
|
||||
<dl class="detailList nomargin">
|
||||
|
||||
<if test="member.deprecated">
|
||||
<dt class="heading">Deprecated:</dt>
|
||||
<dt>
|
||||
{+ resolveLinks(member.deprecated) +}
|
||||
</dt>
|
||||
</if>
|
||||
|
||||
<if test="member.since">
|
||||
<dt class="heading">Since:</dt>
|
||||
<dd>{+ member.since +}</dd>
|
||||
</if>
|
||||
|
||||
<if test="member.exceptions.length">
|
||||
<dt class="heading">Throws:</dt>
|
||||
<for each="item" in="member.exceptions">
|
||||
<dt>
|
||||
{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
|
||||
</dt>
|
||||
<dd>{+resolveLinks(item.desc)+}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.returns.length">
|
||||
<dt class="heading">Returns:</dt>
|
||||
<for each="item" in="member.returns">
|
||||
<dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.requires.length">
|
||||
<dt class="heading">Requires:</dt>
|
||||
<for each="item" in="member.requires">
|
||||
<dd>{+ resolveLinks(item) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.see.length">
|
||||
<dt class="heading">See:</dt>
|
||||
<for each="item" in="member.see">
|
||||
<dd>{+ new Link().toSymbol(item) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
</dl>
|
||||
</if>
|
||||
<if test="!$member_last"><div class="hr"></div></if>
|
||||
</li>
|
||||
</for>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</if>
|
||||
|
||||
<!--
|
||||
#### EVENT DETAILS
|
||||
-->
|
||||
<if test="defined(ownEvents) && ownEvents.length">
|
||||
<div class="details props">
|
||||
<div class="innerProps">
|
||||
<h2 class="sectionTitle">
|
||||
Event Detail
|
||||
</h2>
|
||||
|
||||
<for each="member" in="ownEvents">
|
||||
<div class="fixedFont heading" id="event:{+Link.symbolNameToLinkName(member)+}">
|
||||
<span class='lighter'>
|
||||
{!
|
||||
if (member.isPrivate) output += "<private> ";
|
||||
if (member.isInner) output += "<inner> ";
|
||||
if (member.isStatic) output += "<static> ";
|
||||
!}
|
||||
</span>
|
||||
|
||||
<if test="member.type"><span class="light">{{+new Link().toSymbol(member.type)+}}</span></if>
|
||||
|
||||
<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b>{+makeSignature(member.params)+}
|
||||
</div>
|
||||
|
||||
<div class="description">
|
||||
{+resolveLinks(member.desc)+}
|
||||
|
||||
<if test="member.srcFile != data.srcFile">
|
||||
<br />
|
||||
<i>Defined in: </i> {+new Link().toSrc(member.srcFile)+}.
|
||||
</if>
|
||||
|
||||
<if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
|
||||
</div>
|
||||
|
||||
<if test="member.example.length">
|
||||
<for each="example" in="member.example">
|
||||
<pre class="code">{+example+}</pre>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.params.length">
|
||||
<dl class="detailList params">
|
||||
<dt class="heading">Parameters:</dt>
|
||||
<for each="item" in="member.params">
|
||||
<dt>
|
||||
{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}<b>{+item.name+}</b>
|
||||
<if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
|
||||
</dt>
|
||||
<dd>{+ resolveLinks(item.desc) +}</dd>
|
||||
</for>
|
||||
</dl>
|
||||
</if>
|
||||
|
||||
<if test="member.deprecated || member.since || member.exceptions.length || member.returns.length || member.see.length">
|
||||
<dl class="detailList nomargin">
|
||||
<if test="member.deprecated">
|
||||
<dt class="heading">Deprecated:</dt>
|
||||
<dt>{+ resolveLinks(member.deprecated) +}</dt>
|
||||
</if>
|
||||
|
||||
<if test="member.since">
|
||||
<dt class="heading">Since:</dt>
|
||||
<dd>{+ member.since +}</dd>
|
||||
</if>
|
||||
|
||||
<if test="member.exceptions.length">
|
||||
<dt class="heading">Throws:</dt>
|
||||
<for each="item" in="member.exceptions">
|
||||
<dt>
|
||||
{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
|
||||
</dt>
|
||||
<dd>{+ resolveLinks(item.desc) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.returns.length">
|
||||
<dt class="heading">Returns:</dt>
|
||||
<for each="item" in="member.returns">
|
||||
<dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.requires.length">
|
||||
<dt class="heading">Requires:</dt>
|
||||
<for each="item" in="member.requires">
|
||||
<dd>{+ resolveLinks(item) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
|
||||
<if test="member.see.length">
|
||||
<dt class="heading">See:</dt>
|
||||
<for each="item" in="member.see">
|
||||
<dd>{+ new Link().toSymbol(item) +}</dd>
|
||||
</for>
|
||||
</if>
|
||||
</dl>
|
||||
</if>
|
||||
|
||||
<if test="!$member_last"><div class="hr"></div></if>
|
||||
</for>
|
||||
</div>
|
||||
</div>
|
||||
</if>
|
||||
</div>
|
||||
</div>
|
||||
{+subtemplate("subtemplates/foot.tmpl")+}
|
||||
|
|
@ -1,358 +0,0 @@
|
|||
/* TABLE OF CONTENTS:
|
||||
* - Browser reset
|
||||
* - HTML elements
|
||||
* - JsDoc styling
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BEGIN BROWSER RESET
|
||||
*/
|
||||
|
||||
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,p,pre,form,fieldset,input,textarea,p,blockquote,th,td {
|
||||
margin:0;
|
||||
padding:0
|
||||
}
|
||||
html {
|
||||
height:100%;
|
||||
overflow:-moz-scrollbars-vertical;
|
||||
overflow-x:auto
|
||||
}
|
||||
table {
|
||||
border:0;
|
||||
border-collapse:collapse;
|
||||
border-spacing:0
|
||||
}
|
||||
fieldset,img {
|
||||
border:0
|
||||
}
|
||||
address,caption,cite,code,dfn,em,strong,th,var {
|
||||
font-style:normal;
|
||||
font-weight:normal
|
||||
}
|
||||
em,cite {
|
||||
font-style:italic
|
||||
}
|
||||
strong {
|
||||
font-weight:bold
|
||||
}
|
||||
ol,ul {
|
||||
list-style:none
|
||||
}
|
||||
caption,th {
|
||||
text-align:left
|
||||
}
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
font-size:100%;
|
||||
font-weight:normal;
|
||||
margin:0;
|
||||
padding:0
|
||||
}
|
||||
q:before,q:after {
|
||||
content:''
|
||||
}
|
||||
abbr,acronym {
|
||||
border:0
|
||||
}
|
||||
section,article,header,footer,nav,aside,hgroup {
|
||||
display:block
|
||||
}
|
||||
|
||||
/*
|
||||
* END BROWSER RESET
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* HTML ELEMENTS
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'M1m';
|
||||
src: url('fonts/mplus-1m-regular-webfont.eot');
|
||||
src: local('☺'), url('fonts/mplus-1m-regular-webfont.woff') format('woff'), url('fonts/mplus-1m-regular-webfont.ttf') format('truetype'), url('fonts/mplus-1m-regular-webfont.svg#webfontVd14f4NN') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'M1m';
|
||||
src: url('fonts/mplus-1m-bold-webfont.eot');
|
||||
src: local('☺'), url('fonts/mplus-1m-bold-webfont.woff') format('woff'), url('fonts/mplus-1m-bold-webfont.ttf') format('truetype'), url('fonts/mplus-1m-bold-webfont.svg#webfontIjI5mZqE') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
* {
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 0.75em;
|
||||
padding: 15px 0;
|
||||
background: #eee;
|
||||
background-image: -moz-linear-gradient(left, #dddddd, #f9f9f9) fixed;
|
||||
background-image: -webkit-gradient(linear,left bottom,right bottom,color-stop(0, #dddddd),color-stop(1, #f9f9f9)) fixed;
|
||||
}
|
||||
|
||||
body,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
color: #000;
|
||||
font-family: Arial, Geneva, sans-serif;
|
||||
}
|
||||
|
||||
a:link,
|
||||
a:hover,
|
||||
a:active,
|
||||
a:visited {
|
||||
color: #19199e;
|
||||
}
|
||||
a:hover,
|
||||
a:focus {
|
||||
color: #00f;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 1.5em 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* END HTML ELEMENTS
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BEGIN HACK
|
||||
*/
|
||||
|
||||
div.containerMain:after,
|
||||
div.safeBox:after {
|
||||
content:"";
|
||||
display:block;
|
||||
height:0;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
/*
|
||||
* END HACK
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BEGIN JSDOC
|
||||
*/
|
||||
|
||||
/* Start menu */
|
||||
div.index *.heading1 {
|
||||
margin-bottom: 0.5em;
|
||||
border-bottom: 1px solid #999999;
|
||||
font-family: M1m, Arial, sans-serif;
|
||||
font-size: 1.6em;
|
||||
letter-spacing: 1px;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
div.index div.menu {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
*+html div.index div.menu {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
* html div.index div.menu {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
div.index div.menu div {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.index div.menu a {
|
||||
text-decoration: none;
|
||||
}
|
||||
div.index div.menu a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
div.index ul.classList {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
div.index ul.classList a {
|
||||
display: block;
|
||||
margin: 1px 0;
|
||||
padding: 4px 0 2px 10px;
|
||||
text-indent: -10px;
|
||||
}
|
||||
|
||||
div.index div.fineprint {
|
||||
color: #777;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
div.index div.fineprint a {
|
||||
color: #777;
|
||||
}
|
||||
/* End menu */
|
||||
|
||||
|
||||
|
||||
/* Start content */
|
||||
div.content ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
div.content *.classTitle {
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
div.content *.classTitle span {
|
||||
display: block;
|
||||
font-size: 2em;
|
||||
letter-spacing: 2px;
|
||||
line-height: 1em;
|
||||
padding-top: 5px;
|
||||
text-shadow: 1px 1px 1px #999999;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
div.content p.summary {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
div.content ul *.classname a,
|
||||
div.content ul *.filename a {
|
||||
font-family: Consolas, "Courier New", Courier, monospace;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
div.content ul *.classname a:hover,
|
||||
div.content ul *.filename a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
div.content div.props {
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background: #fff;
|
||||
background: -moz-linear-gradient(top, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.2)); /* FF3.6 */
|
||||
background: -webkit-gradient(linear,left top,left bottom,color-stop(0, rgba(255, 255, 255, 0.7)),color-stop(1, rgba(255, 255, 255, 0.2)));
|
||||
-moz-box-shadow: 0px 0px 10px #ccc;
|
||||
-webkit-box-shadow: 0px 0px 5px #bbb;
|
||||
box-shadow: 0px 0px 5px #bbb;
|
||||
}
|
||||
|
||||
|
||||
|
||||
*.sectionTitle {
|
||||
font-family: M1m, sans-serif;
|
||||
font-size: 1.6em;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
table.summaryTable td,
|
||||
table.summaryTable th {
|
||||
vertical-align: top;
|
||||
}
|
||||
table.summaryTable tr:last-child td {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
table.summaryTable th {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.summaryTable td.attributes {
|
||||
font-family: Consolas, "Courier New", Courier, monospace;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
table.summaryTable td.nameDescription div.fixedFont {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.summaryTable div.description {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
|
||||
|
||||
dl.detailList dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dl.inheritsList dd + dt {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
dl.inheritsList dd {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.fixedFont {
|
||||
font-family: Consolas, "Courier New", Courier, monospace;
|
||||
}
|
||||
|
||||
.fixedFont.heading {
|
||||
font-size: 1.25em;
|
||||
line-height: 1.1em
|
||||
}
|
||||
|
||||
.fixedFont.heading + .description {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.fixedFont.heading .light,
|
||||
.fixedFont.heading .lighter {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre.code {
|
||||
overflow: auto;
|
||||
font-family: Consolas, "Courier New", Courier, monospace;
|
||||
background: #eee;
|
||||
}
|
||||
/* Start content */
|
||||
|
||||
|
||||
|
||||
/* Start general styles */
|
||||
.light {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.lighter {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
span.break {
|
||||
font-size: 1px;
|
||||
line-height: 1px;
|
||||
}
|
||||
/* End general styles */
|
||||
|
||||
/*
|
||||
* END JSDOC
|
||||
*/
|
||||
Binary file not shown.
|
|
@ -1,134 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
This is a custom SVG webfont generated by Font Squirrel.
|
||||
Foundry URL : http://mplus-fonts.sourceforge.jp
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="webfontIjI5mZqE" horiz-adv-x="500" >
|
||||
<font-face units-per-em="1000" ascent="860" descent="-140" />
|
||||
<missing-glyph horiz-adv-x="500" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="!" d="M165 730h170l-20 -495h-130zM170 0v150h160v-150h-160z" />
|
||||
<glyph unicode=""" d="M270 780h160l-30 -320h-100zM70 780h160l-30 -320h-100z" />
|
||||
<glyph unicode="#" d="M20 165v120h62l24 185h-51v120h67l18 140h135l-18 -140h45l18 140h135l-18 -140h43v-120h-59l-24 -185h48v-120h-64l-21 -165h-135l21 165h-45l-21 -165h-135l21 165h-46zM217 285h45l24 185h-45z" />
|
||||
<glyph unicode="$" d="M357 397q55 -32 76.5 -74t21.5 -108q0 -190 -192 -199v-101h-110v112q-51 16 -88 43v140q38 -35 88 -55v191q-53 33 -75.5 75.5t-22.5 103.5q0 89 50 138.5t142 51.5v100h110v-112q42 -12 78 -33v-135q-32 25 -78 42v-180zM247 445v149q-54 -9 -54 -69q0 -55 54 -80z M263 295v-157q52 13 52 77q0 55 -52 80z" />
|
||||
<glyph unicode="%" d="M40 310l420 220v-110l-420 -220v110zM160 740q70 0 110 -41t40 -119t-40 -119t-110 -41t-110 41t-40 119t40 119t110 41zM340 310q70 0 110 -41t40 -119t-40 -119t-110 -41t-110 41t-40 119t40 119t110 41zM160 518q38 0 38 62t-38 62t-38 -62t38 -62zM340 88q38 0 38 62 t-38 62t-38 -62t38 -62z" />
|
||||
<glyph unicode="&" d="M235 615q-23 0 -36.5 -14.5t-13.5 -40.5q0 -18 7.5 -37.5t33.5 -65.5q35 30 47 52.5t12 50.5q0 26 -13.5 40.5t-36.5 14.5zM118 368q-47 77 -62.5 116t-15.5 76q0 80 51.5 130t138.5 50t141 -50.5t54 -129.5q0 -114 -130 -220l55 -94v2v132h125v-225q-16 -25 -41 -52 l61 -103h-150l-15 24q-66 -34 -130 -34q-88 0 -136.5 45.5t-48.5 134.5q0 99 103 198zM269 124l-77 125q-27 -37 -27 -74q0 -60 65 -60q20 0 39 9z" />
|
||||
<glyph unicode="'" d="M160 780h180l-35 -320h-110z" />
|
||||
<glyph unicode="(" d="M100 300q0 136 50 256.5t144 213.5h126q-196 -194 -196 -470t196 -470h-126q-94 93 -144 213.5t-50 256.5z" />
|
||||
<glyph unicode=")" d="M400 300q0 -136 -50 -256.5t-144 -213.5h-126q196 194 196 470t-196 470h126q94 -93 144 -213.5t50 -256.5z" />
|
||||
<glyph unicode="*" d="M193 750h114l-4 -144l136 48l35 -109l-138 -40l88 -115l-93 -67l-81 119l-81 -119l-93 67l88 115l-138 40l35 109l136 -48z" />
|
||||
<glyph unicode="+" d="M315 545v-195h135v-110h-135v-195h-130v195h-135v110h135v195h130z" />
|
||||
<glyph unicode="," d="M180 190h190l-130 -320h-120z" />
|
||||
<glyph unicode="-" d="M90 240v110h320v-110h-320z" />
|
||||
<glyph unicode="." d="M155 0v190h190v-190h-190z" />
|
||||
<glyph unicode="/" d="M465 730l-310 -770h-120l310 770h120z" />
|
||||
<glyph unicode="0" d="M250 740q73 0 117.5 -32.5t68.5 -116t24 -226.5t-24 -226.5t-68.5 -116t-117.5 -32.5t-117.5 32.5t-68.5 116t-24 226.5t24 226.5t68.5 116t117.5 32.5zM171 317l142 248q-9 34 -24.5 47t-38.5 13q-28 0 -44.5 -19.5t-26 -77.5t-9.5 -163q0 -33 1 -48zM183 179 q9 -41 25.5 -57.5t41.5 -16.5q28 0 44.5 19.5t26 77.5t9.5 163q0 47 -1 67z" />
|
||||
<glyph unicode="1" d="M240 592l-2 1l-173 -91v128l175 100h140v-730h-140v592z" />
|
||||
<glyph unicode="2" d="M220 122v-2h220v-120h-380v120q127 141 181 237t54 173q0 43 -21 66.5t-59 23.5q-31 0 -74 -22t-81 -58v130q78 70 185 70q90 0 140 -51t50 -149q0 -180 -215 -418z" />
|
||||
<glyph unicode="3" d="M290 608v2h-230v120h385v-120l-170 -178v-2h10q79 0 122 -51.5t43 -153.5q0 -121 -54 -178t-166 -57q-51 0 -81.5 6.5t-78.5 28.5v130q80 -45 150 -45q46 0 68 27t22 88q0 58 -26 76.5t-114 18.5h-40v120z" />
|
||||
<glyph unicode="4" d="M400 150v-150h-135v150h-245v120l230 460h150v-460h80v-120h-80zM265 270v255h-2l-127 -253v-2h129z" />
|
||||
<glyph unicode="5" d="M202 455q36 19 82 19q161 0 161 -239q0 -245 -230 -245q-76 0 -150 35v130q80 -45 140 -45q51 0 75.5 29t24.5 96t-14.5 93t-46.5 26q-34 0 -64 -34h-110l10 410h345v-120h-220l-5 -155h2z" />
|
||||
<glyph unicode="6" d="M295 625q-54 0 -76.5 -34.5t-28.5 -135.5h2q45 35 98 35q92 0 133.5 -54.5t41.5 -185.5q0 -141 -51 -200.5t-159 -59.5q-75 0 -119 28.5t-67.5 101t-23.5 200.5q0 162 25 254t75 129t135 37q66 0 135 -20v-125q-57 30 -120 30zM255 107q39 0 55.5 29.5t16.5 113.5 q0 79 -14 104.5t-53 25.5q-38 0 -56.5 -29.5t-18.5 -100.5q0 -81 17 -112t53 -31z" />
|
||||
<glyph unicode="7" d="M55 730h390v-120q-113 -273 -200 -610h-146q92 325 216 608v2h-260v120z" />
|
||||
<glyph unicode="8" d="M258 625q-41 0 -59.5 -20.5t-18.5 -64.5q0 -74 75 -105q33 16 51.5 43.5t18.5 61.5q0 40 -18 62.5t-49 22.5zM250 -10q-105 0 -162.5 52t-57.5 148q0 116 105 179v2q-42 31 -66 80t-24 104q0 87 53.5 136t151.5 49t151.5 -48.5t53.5 -136.5q0 -98 -100 -164v-2 q115 -62 115 -199q0 -96 -58 -148t-162 -52zM242 105q93 0 93 100q0 75 -103 115q-33 -17 -52.5 -48.5t-19.5 -66.5q0 -48 22.5 -74t59.5 -26z" />
|
||||
<glyph unicode="9" d="M205 110q55 0 77 32.5t28 132.5h-2q-45 -35 -98 -35q-89 0 -132 57.5t-43 192.5q0 131 51 190.5t159 59.5q79 0 123 -27.5t65.5 -99.5t21.5 -203q0 -162 -25 -254t-75 -129t-135 -37q-66 0 -135 20v130q57 -30 120 -30zM245 623q-39 0 -55.5 -28t-16.5 -105 q0 -83 15.5 -111.5t51.5 -28.5q75 0 75 140q0 73 -17 103t-53 30z" />
|
||||
<glyph unicode=":" d="M160 390v190h180v-190h-180zM160 0v190h180v-190h-180z" />
|
||||
<glyph unicode=";" d="M170 190h190l-130 -320h-120zM170 390v190h180v-190h-180z" />
|
||||
<glyph unicode="<" d="M445 470l-320 -174v-2l320 -174v-120l-400 225v140l400 225v-120z" />
|
||||
<glyph unicode="=" d="M50 125v110h400v-110h-400zM50 362v103h400v-103h-400z" />
|
||||
<glyph unicode=">" d="M55 470v120l400 -225v-140l-400 -225v120l320 174v2z" />
|
||||
<glyph unicode="?" d="M460 575q0 -36 -12.5 -69t-25 -51t-38.5 -49q-25 -30 -38 -48.5t-27.5 -52.5t-18.5 -70h-130q0 49 17 94.5t32 66.5t44 57q21 25 30.5 38t19 33.5t9.5 40.5q0 58 -82 58t-180 -53v130q95 40 200 40q95 0 147.5 -44t52.5 -121zM155 0v150h160v-150h-160z" />
|
||||
<glyph unicode="@" d="M285 635q-72 0 -108.5 -62.5t-36.5 -207.5q0 -265 160 -265q58 0 125 30v-115q-70 -25 -150 -25q-260 0 -260 375q0 194 64 284.5t191 90.5q99 0 152 -51.5t53 -148.5v-325q-28 -28 -76 -46.5t-94 -18.5q-69 0 -102 49t-33 166q0 114 31.5 164.5t93.5 50.5q36 0 68 -25h2 v15q0 26 -23.5 45.5t-56.5 19.5zM290 365q0 -72 8 -93.5t29 -21.5q20 0 28 18v147q0 41 -6 53t-25 12t-26.5 -22t-7.5 -93z" />
|
||||
<glyph unicode="A" d="M249 620h-2l-55 -335h112zM323 170h-150l-28 -170h-140l165 730h160l165 -730h-144z" />
|
||||
<glyph unicode="B" d="M190 445h15q59 0 85 20.5t26 64.5q0 49 -23 71t-73 22q-17 0 -30 -5v-173zM190 330v-218q20 -5 45 -5q51 0 75 27.5t24 90.5q0 57 -25.5 81t-88.5 24h-30zM470 210q0 -220 -240 -220q-93 0 -180 15v720q92 15 190 15q210 0 210 -185q0 -62 -32 -105t-83 -54v-2 q57 -10 96 -61.5t39 -122.5z" />
|
||||
<glyph unicode="C" d="M30 365q0 195 64.5 285t190.5 90q80 0 150 -25v-115q-70 25 -125 25q-74 0 -109.5 -58.5t-35.5 -201.5q0 -260 150 -260q57 0 125 30v-120q-70 -25 -150 -25q-260 0 -260 375z" />
|
||||
<glyph unicode="D" d="M344 365q0 142 -30 198.5t-94 56.5q-23 0 -40 -5v-500q17 -5 40 -5q63 0 93.5 55.5t30.5 199.5zM480 365q0 -144 -28.5 -226.5t-83.5 -115.5t-148 -33q-92 0 -180 15v720q88 15 180 15q141 0 200.5 -82t59.5 -293z" />
|
||||
<glyph unicode="E" d="M210 610v-165h220v-115h-220v-210h230v-120h-370v730h370v-120h-230z" />
|
||||
<glyph unicode="F" d="M220 330v-330h-140v730h360v-120h-220v-165h210v-115h-210z" />
|
||||
<glyph unicode="G" d="M310 625q-82 0 -116 -55t-34 -205q0 -143 32 -201.5t93 -58.5q27 0 48 10v215h-98v115h230v-415q-83 -40 -180 -40q-260 0 -260 375q0 196 69.5 285.5t215.5 89.5q70 0 130 -25v-115q-72 25 -130 25z" />
|
||||
<glyph unicode="H" d="M318 330h-140v-330h-138v730h138v-280h140v280h142v-730h-142v330z" />
|
||||
<glyph unicode="I" d="M430 0h-360v115h108v500h-108v115h360v-115h-108v-500h108v-115z" />
|
||||
<glyph unicode="J" d="M410 730v-515q0 -126 -48.5 -175.5t-166.5 -49.5q-86 0 -155 30v130q29 -18 68 -30t67 -12q50 0 71 26.5t21 95.5v385h-147v115h290z" />
|
||||
<glyph unicode="K" d="M192 330h-2v-330h-140v730h140v-300h2l135 300h148l-160 -345l165 -385h-150z" />
|
||||
<glyph unicode="L" d="M230 730v-610h210v-120h-350v730h140z" />
|
||||
<glyph unicode="M" d="M338 500h-2l-38 -300h-100l-38 300h-2v-500h-133v730h167l59 -400h2l59 400h163v-730h-137v500z" />
|
||||
<glyph unicode="N" d="M187 460h-2v-460h-140v730h147l125 -460h2v460h136v-730h-143z" />
|
||||
<glyph unicode="O" d="M250 740q121 0 175.5 -84t54.5 -291t-54.5 -291t-175.5 -84t-175.5 84t-54.5 291t54.5 291t175.5 84zM250 108q52 0 75 53.5t23 203.5t-23 203.5t-75 53.5t-75 -53.5t-23 -203.5t23 -203.5t75 -53.5z" />
|
||||
<glyph unicode="P" d="M334 503q0 120 -104 120q-23 0 -40 -5v-235q18 -5 40 -5q53 0 78.5 28t25.5 97zM470 503q0 -127 -57 -184.5t-173 -57.5q-26 0 -50 5v-266h-140v725q90 15 185 15q122 0 178.5 -56t56.5 -181z" />
|
||||
<glyph unicode="Q" d="M250 740q121 0 175.5 -84t54.5 -291q0 -257 -92 -333v-2q39 -22 68.5 -74t33.5 -106h-145q-15 81 -36.5 110.5t-58.5 29.5q-121 0 -175.5 84t-54.5 291t54.5 291t175.5 84zM250 108q52 0 75 53.5t23 203.5t-23 203.5t-75 53.5t-75 -53.5t-23 -203.5t23 -203.5t75 -53.5z " />
|
||||
<glyph unicode="R" d="M465 513q0 -151 -98 -199l-1 -2q27 -19 58 -118l61 -194h-145l-57 204q-12 43 -25.5 57.5t-42.5 14.5h-30v-276h-140v725q90 15 185 15q124 0 179.5 -53.5t55.5 -173.5zM185 393h30q64 0 89 24.5t25 95.5q0 58 -25.5 84t-78.5 26q-23 0 -40 -5v-225z" />
|
||||
<glyph unicode="S" d="M440 575q-84 48 -165 48q-41 0 -65 -21t-24 -57q0 -71 69 -100q116 -48 160.5 -103t44.5 -142q0 -210 -225 -210q-100 0 -180 50v135q83 -68 173 -68q94 0 94 88q0 76 -77 110q-108 46 -151.5 99.5t-43.5 135.5q0 90 57 145t153 55q102 0 180 -35v-130z" />
|
||||
<glyph unicode="T" d="M320 615v-615h-140v615h-145v115h430v-115h-145z" />
|
||||
<glyph unicode="U" d="M250 -10q-112 0 -161 54t-49 186v500h142v-460q0 -101 14.5 -131.5t55.5 -30.5t55.5 30.5t14.5 131.5v460h138v-500q0 -132 -49 -186t-161 -54z" />
|
||||
<glyph unicode="V" d="M253 110l92 620h140l-155 -730h-160l-155 730h144l92 -620h2z" />
|
||||
<glyph unicode="W" d="M164 190h2l38 440h100l38 -440h2l15 540h126l-45 -730h-157l-34 420h-2l-34 -420h-153l-45 730h134z" />
|
||||
<glyph unicode="X" d="M251 470h2l74 260h145l-132 -360l135 -370h-152l-74 270h-2l-74 -270h-148l135 370l-132 360h149z" />
|
||||
<glyph unicode="Y" d="M251 415h2l84 315h148l-165 -455v-275h-140v275l-165 455h152z" />
|
||||
<glyph unicode="Z" d="M290 613v2h-235v115h390v-115l-235 -498v-2h235v-115h-390v115z" />
|
||||
<glyph unicode="[" d="M410 675h-170v-750h170v-95h-290v940h290v-95z" />
|
||||
<glyph unicode="\" d="M35 730h120l310 -770h-120z" />
|
||||
<glyph unicode="]" d="M90 675v95h290v-940h-290v95h170v750h-170z" />
|
||||
<glyph unicode="^" d="M251 655h-2l-111 -375h-123l145 450h180l145 -450h-123z" />
|
||||
<glyph unicode="_" d="M40 -170v88h420v-88h-420z" />
|
||||
<glyph unicode="`" d="M90 810h190l100 -320h-120z" />
|
||||
<glyph unicode="a" d="M65 495q39 14 95 24.5t90 10.5q111 0 155.5 -45t44.5 -160v-325h-127l-2 65h-2q-49 -75 -134 -75q-68 0 -106.5 42t-38.5 118q0 88 63.5 136.5t186.5 48.5h25v10q0 40 -16 56.5t-54 16.5q-32 0 -86.5 -11.5t-93.5 -26.5v115zM315 245h-25q-59 0 -89.5 -23t-30.5 -62 q0 -31 15 -48t40 -17q90 0 90 130v20z" />
|
||||
<glyph unicode="b" d="M45 730h137v-275h2q49 75 116 75q83 0 129 -66.5t46 -203.5q0 -133 -47.5 -201.5t-127.5 -68.5q-35 0 -62.5 17.5t-56.5 62.5h-2l-2 -70h-132v730zM338 260q0 150 -78 150q-80 0 -80 -145v-10q0 -145 80 -145q35 0 56.5 36.5t21.5 113.5z" />
|
||||
<glyph unicode="c" d="M305 420q-115 0 -115 -160q0 -163 120 -163q60 0 120 28v-110q-68 -25 -140 -25q-116 0 -178 67.5t-62 202.5t60 202.5t175 67.5q67 0 135 -25v-110q-61 25 -115 25z" />
|
||||
<glyph unicode="d" d="M455 0h-132l-2 70h-2q-29 -45 -56.5 -62.5t-62.5 -17.5q-80 0 -127.5 68.5t-47.5 201.5q0 137 46 203.5t129 66.5q67 0 116 -75h2v275h137v-730zM162 260q0 -77 21.5 -113.5t56.5 -36.5q80 0 80 145v10q0 145 -80 145q-78 0 -78 -150z" />
|
||||
<glyph unicode="e" d="M182 206q7 -62 33 -85.5t80 -23.5q52 0 135 28v-110q-84 -25 -155 -25q-112 0 -173.5 68t-61.5 202q0 270 220 270q200 0 200 -270q0 -31 -2 -54h-276zM181 310h142q-1 63 -15.5 88t-47.5 25q-41 0 -58 -23t-21 -90z" />
|
||||
<glyph unicode="f" d="M60 391v109h100v45q0 104 40.5 149.5t129.5 45.5q56 0 110 -15v-110q-36 16 -80 16q-37 0 -50 -20.5t-13 -85.5v-25h143v-109h-143v-391h-137v391h-100z" />
|
||||
<glyph unicode="g" d="M323 75h-2q-45 -75 -116 -75q-78 0 -126.5 66.5t-48.5 193.5q0 137 46 203.5t129 66.5q35 0 62.5 -17.5t56.5 -62.5h2l2 70h132v-505q0 -245 -240 -245q-81 0 -150 25v115q76 -33 145 -33q55 0 81.5 34t26.5 114v50zM167 260q0 -70 22 -105t56 -35q80 0 80 135v10 q0 145 -80 145q-78 0 -78 -150z" />
|
||||
<glyph unicode="h" d="M50 730h137v-275h2q47 75 126 75t112 -47.5t33 -172.5v-310h-135v290q0 74 -12.5 98t-47.5 24t-56.5 -43.5t-21.5 -131.5v-237h-137v730z" />
|
||||
<glyph unicode="i" d="M110 520h240v-413h100v-107h-370v107h130v306h-100v107zM190 630v130h160v-130h-160z" />
|
||||
<glyph unicode="j" d="M225 -20v433h-110v107h250v-540q0 -68 -10.5 -106t-44 -63t-87.5 -33t-148 -8v109q39 0 60.5 0.5t41 5t27 9.5t13.5 18t7 27.5t1 40.5zM205 630v130h160v-130h-160z" />
|
||||
<glyph unicode="k" d="M480 520l-185 -250l185 -270h-162l-131 224v-224h-137v730h137v-418l133 208h160z" />
|
||||
<glyph unicode="l" d="M310 190q0 -68 9 -80.5t56 -12.5q31 0 75 6v-108q-44 -5 -100 -5q-111 0 -145.5 32.5t-34.5 137.5v463h-120v107h260v-540z" />
|
||||
<glyph unicode="m" d="M360 0v340q0 40 -21 40q-8 0 -12.5 -5t-7 -22.5t-2.5 -52.5v-300h-130v340q0 40 -21 40q-8 0 -12.5 -5t-7 -22.5t-2.5 -52.5v-300h-134v520h120l2 -65h2q15 34 39.5 54.5t48.5 20.5q28 0 45 -16t32 -59h2q42 75 99 75q48 0 69 -36t21 -134v-360h-130z" />
|
||||
<glyph unicode="n" d="M50 520h132l2 -70h2q49 80 129 80q79 0 112 -47.5t33 -172.5v-310h-135v290q0 74 -12.5 98t-47.5 24t-56.5 -43.5t-21.5 -131.5v-237h-137v520z" />
|
||||
<glyph unicode="o" d="M250 530q220 0 220 -270t-220 -270t-220 270t220 270zM250 97q44 0 62 33.5t18 129.5t-18 129.5t-62 33.5t-62 -33.5t-18 -129.5t18 -129.5t62 -33.5z" />
|
||||
<glyph unicode="p" d="M179 70h-2v-290h-137v740h132l2 -70h2q29 45 56.5 62.5t62.5 17.5q83 0 129 -66.5t46 -203.5q0 -133 -47.5 -201.5t-127.5 -68.5q-71 0 -116 80zM333 260q0 150 -78 150q-80 0 -80 -145v-10q0 -145 80 -145q35 0 56.5 36.5t21.5 113.5z" />
|
||||
<glyph unicode="q" d="M321 70q-45 -80 -116 -80q-80 0 -127.5 68.5t-47.5 201.5q0 137 46 203.5t129 66.5q35 0 62.5 -17.5t56.5 -62.5h2l2 70h132v-740h-137v290h-2zM167 260q0 -77 21.5 -113.5t56.5 -36.5q80 0 80 145v10q0 145 -80 145q-78 0 -78 -150z" />
|
||||
<glyph unicode="r" d="M375 416q-69 0 -111 -52t-42 -144v-220h-137v520h135v-85h2q36 53 70.5 74t82.5 21q36 0 70 -10v-115q-36 11 -70 11z" />
|
||||
<glyph unicode="s" d="M265 418q-73 0 -73 -43q0 -22 14.5 -35t48.5 -20q109 -21 149.5 -60t40.5 -115q0 -74 -50.5 -114.5t-144.5 -40.5q-107 0 -190 35v120q87 -43 165 -43q45 0 64 11.5t19 36.5q0 22 -14 34t-54 21q-99 21 -142 62.5t-43 112.5t49 110.5t146 39.5q99 0 180 -30v-115 q-87 33 -165 33z" />
|
||||
<glyph unicode="t" d="M445 500v-109h-158v-201q0 -61 10.5 -74.5t57.5 -13.5q43 0 80 17v-114q-50 -15 -110 -15q-98 0 -136.5 36.5t-38.5 133.5v231h-105v109h105v190h137v-190h158z" />
|
||||
<glyph unicode="u" d="M445 0h-132l-2 70h-2q-50 -80 -124 -80q-77 0 -108.5 44.5t-31.5 165.5v320h135v-300q0 -70 11 -91t44 -21q73 0 73 175v237h137v-520z" />
|
||||
<glyph unicode="v" d="M251 90h2l79 430h138l-130 -520h-180l-130 520h142z" />
|
||||
<glyph unicode="w" d="M343 120h2l29 400h116l-70 -520h-137l-37 358h-2l-31 -358h-133l-70 520h124l29 -400h2l39 400h100z" />
|
||||
<glyph unicode="x" d="M251 335h2l69 185h143l-125 -260l125 -260h-152l-64 180h-2l-64 -180h-148l125 260l-125 260h147z" />
|
||||
<glyph unicode="y" d="M254 170h2l87 350h142l-237 -740h-138l85 230l-170 510h142z" />
|
||||
<glyph unicode="z" d="M275 411h-210v109h370v-109l-210 -300v-2h210v-109h-370v109l210 300v2z" />
|
||||
<glyph unicode="{" d="M187 301v-2q58 -24 85.5 -62t27.5 -100v-112q0 -73 12 -86.5t75 -13.5h53v-95h-107q-80 0 -116.5 37t-36.5 123v147q0 61 -22 88t-68 27h-40v96h40q46 0 68 27t22 88v147q0 86 36.5 123t116.5 37h107v-95h-53q-63 0 -75 -13.5t-12 -86.5v-112q0 -62 -27.5 -100t-85.5 -62 z" />
|
||||
<glyph unicode="|" d="M188 -220v1030h124v-1030h-124z" />
|
||||
<glyph unicode="}" d="M313 301q-58 24 -85.5 62t-27.5 100v112q0 73 -12 86.5t-75 13.5h-53v95h107q80 0 116.5 -37t36.5 -123v-147q0 -61 22 -88t68 -27h40v-96h-40q-46 0 -68 -27t-22 -88v-147q0 -86 -36.5 -123t-116.5 -37h-107v95h53q63 0 75 13.5t12 86.5v112q0 62 27.5 100t85.5 62v2z " />
|
||||
<glyph unicode="~" d="M40 568v107q45 35 100 35q63 0 131 -50q49 -37 84 -37q49 0 105 51v-107q-45 -35 -100 -35q-63 0 -131 50q-49 37 -84 37q-49 0 -105 -51z" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="¥" d="M251 415h2l84 315h148l-132 -365h97v-95h-130v-65h130v-95h-130v-110h-140v110h-130v95h130v65h-130v95h97l-132 365h152z" />
|
||||
<glyph unicode="­" d="M90 240v110h320v-110h-320z" />
|
||||
<glyph unicode=" " horiz-adv-x="407" />
|
||||
<glyph unicode=" " horiz-adv-x="815" />
|
||||
<glyph unicode=" " horiz-adv-x="407" />
|
||||
<glyph unicode=" " horiz-adv-x="815" />
|
||||
<glyph unicode=" " horiz-adv-x="271" />
|
||||
<glyph unicode=" " horiz-adv-x="203" />
|
||||
<glyph unicode=" " horiz-adv-x="135" />
|
||||
<glyph unicode=" " horiz-adv-x="135" />
|
||||
<glyph unicode=" " horiz-adv-x="101" />
|
||||
<glyph unicode=" " horiz-adv-x="163" />
|
||||
<glyph unicode=" " horiz-adv-x="45" />
|
||||
<glyph unicode="‐" d="M90 240v110h320v-110h-320z" />
|
||||
<glyph unicode="‑" d="M90 240v110h320v-110h-320z" />
|
||||
<glyph unicode="–" d="M50 240v110h400v-110h-400z" />
|
||||
<glyph unicode="—" d="M10 240v110h480v-110h-480z" />
|
||||
<glyph unicode="‘" d="M305 460h-190l130 320h120z" />
|
||||
<glyph unicode="’" d="M190 780h190l-130 -320h-120z" />
|
||||
<glyph unicode="“" d="M405 460h-170l130 320h100zM195 460h-170l130 320h100z" />
|
||||
<glyph unicode="”" d="M300 780h170l-130 -320h-100zM90 780h170l-130 -320h-100z" />
|
||||
<glyph unicode="…" horiz-adv-x="1000" d="M72 270v190h190v-190h-190zM405 270v190h190v-190h-190zM738 270v190h190v-190h-190z" />
|
||||
<glyph unicode=" " horiz-adv-x="163" />
|
||||
<glyph unicode=" " horiz-adv-x="203" />
|
||||
<glyph unicode="™" horiz-adv-x="1000" d="M838 500h-2l-38 -300h-100l-38 300h-2v-500h-133v730h167l59 -400h2l59 400h163v-730h-137v500zM320 615v-615h-140v615h-145v115h430v-115h-145z" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,134 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
This is a custom SVG webfont generated by Font Squirrel.
|
||||
Foundry URL : http://mplus-fonts.sourceforge.jp
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="webfontVd14f4NN" horiz-adv-x="500" >
|
||||
<font-face units-per-em="1000" ascent="860" descent="-140" />
|
||||
<missing-glyph horiz-adv-x="500" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="!" d="M200 730h100l-10 -515h-80zM195 0v130h110v-130h-110z" />
|
||||
<glyph unicode=""" d="M275 780h100l-20 -280h-60zM125 780h100l-20 -280h-60z" />
|
||||
<glyph unicode="#" d="M40 188v72h77l29 228h-71v72h80l21 170h82l-21 -170h76l21 170h82l-21 -170h65v-72h-74l-29 -228h68v-72h-77l-23 -188h-82l23 188h-76l-23 -188h-82l23 188h-68zM199 260h76l29 228h-76z" />
|
||||
<glyph unicode="$" d="M293 311v-214q58 21 58 108q0 71 -58 106zM293 19v-104h-76v101q-70 6 -137 49v95q65 -57 137 -69v251q-77 31 -109.5 75.5t-32.5 117.5q0 76 37 122.5t105 55.5v102h76v-102q69 -8 127 -38v-90q-52 38 -127 52v-237q77 -31 109.5 -76.5t32.5 -118.5q0 -163 -142 -186z M217 429v207q-58 -18 -58 -101q0 -73 58 -106z" />
|
||||
<glyph unicode="%" d="M60 260l380 290v-80l-380 -290v80zM160 740q61 0 95.5 -41t34.5 -119t-34.5 -119t-95.5 -41t-95.5 41t-34.5 119t34.5 119t95.5 41zM340 310q61 0 95.5 -41t34.5 -119t-34.5 -119t-95.5 -41t-95.5 41t-34.5 119t34.5 119t95.5 41zM160 488q52 0 52 92t-52 92t-52 -92 t52 -92zM340 58q52 0 52 92t-52 92t-52 -92t52 -92z" />
|
||||
<glyph unicode="&" d="M228 665q-38 0 -60.5 -20t-22.5 -55q0 -29 12.5 -59t53.5 -95q59 51 79 83.5t20 70.5q0 33 -22 54t-60 21zM151 385l-9 14q-47 71 -63.5 111.5t-16.5 79.5q0 66 45 108t118 42t119 -42t46 -108q0 -57 -30.5 -106.5t-106.5 -112.5l119 -183v217h80v-253q-13 -28 -26 -46 l69 -106h-87l-33 49q-69 -59 -175 -59q-82 0 -128.5 46t-46.5 129q0 107 126 220zM331 115l-137 206q-84 -79 -84 -153q0 -51 27 -77t78 -26q70 0 116 50z" />
|
||||
<glyph unicode="'" d="M195 780h110l-25 -280h-60z" />
|
||||
<glyph unicode="(" d="M125 315q0 275 194 455h76q-196 -184 -196 -455t196 -455h-76q-194 180 -194 455z" />
|
||||
<glyph unicode=")" d="M375 315q0 -275 -194 -455h-76q196 184 196 455t-196 455h76q194 -180 194 -455z" />
|
||||
<glyph unicode="*" d="M214 750h72l-3 -169l160 55l22 -68l-161 -50l101 -135l-58 -42l-97 138l-97 -138l-58 42l101 135l-161 50l22 68l160 -55z" />
|
||||
<glyph unicode="+" d="M291 555v-214h149v-72h-149v-214h-82v214h-149v72h149v214h82z" />
|
||||
<glyph unicode="," d="M210 150h120l-110 -280h-70z" />
|
||||
<glyph unicode="-" d="M100 269v72h300v-72h-300z" />
|
||||
<glyph unicode="." d="M185 0v150h130v-150h-130z" />
|
||||
<glyph unicode="/" d="M452 730l-332 -770h-72l332 770h72z" />
|
||||
<glyph unicode="0" d="M250 740q48 0 82 -18t59 -60t37 -115.5t12 -181.5t-12 -181.5t-37 -115.5t-59 -60t-82 -18t-82 18t-59 60t-37 115.5t-12 181.5t12 181.5t37 115.5t59 60t82 18zM142 249l196 339q-26 82 -88 82q-36 0 -60 -26t-38 -95t-14 -184q0 -50 4 -116zM158 155q26 -95 92 -95 q36 0 60 26t38 95t14 184q0 78 -6 133z" />
|
||||
<glyph unicode="1" d="M258 0v645l-2 1l-173 -101v80l175 105h82v-730h-82z" />
|
||||
<glyph unicode="2" d="M175 74v-2h245v-72h-340v72q251 288 251 478q0 116 -93 116q-30 0 -76 -22.5t-82 -55.5v87q75 65 170 65q85 0 125 -47t40 -143q0 -99 -54 -208t-186 -268z" />
|
||||
<glyph unicode="3" d="M330 656v2h-250v72h345v-72l-180 -229v-2h10q91 0 133 -51t42 -166q0 -220 -195 -220q-73 0 -145 30v87q77 -43 130 -43q64 0 95 34.5t31 111.5q0 89 -25 117t-101 28h-70v72z" />
|
||||
<glyph unicode="4" d="M293 590h-2l-175 -341v-2h177v343zM293 175h-253v82l243 473h92v-483h85v-72h-85v-175h-82v175z" />
|
||||
<glyph unicode="5" d="M180 430h2q33 30 88 30q160 0 160 -230q0 -125 -49.5 -182.5t-145.5 -57.5q-74 0 -145 30v87q75 -43 140 -43q116 0 116 166q0 156 -96 156q-46 0 -80 -41h-75l10 385h305v-72h-223z" />
|
||||
<glyph unicode="6" d="M285 740q61 0 115 -20v-77q-50 25 -105 25q-70 0 -101 -48.5t-39 -184.5h2q50 50 113 50q87 0 128.5 -56t41.5 -184q0 -134 -46.5 -194.5t-138.5 -60.5q-65 0 -104 28.5t-60 101.5t-21 200q0 158 25.5 252t71 131t118.5 37zM255 62q54 0 78.5 39t24.5 144q0 94 -23.5 132 t-74.5 38q-106 0 -106 -160q0 -107 25 -150t76 -43z" />
|
||||
<glyph unicode="7" d="M345 656v2h-270v72h350v-72q-128 -296 -210 -658h-88q84 353 218 656z" />
|
||||
<glyph unicode="8" d="M255 670q-53 0 -81.5 -27.5t-28.5 -77.5q0 -54 29 -94t76 -51q52 14 80.5 51.5t28.5 93.5q0 47 -28.5 76t-75.5 29zM250 -10q-96 0 -148 51t-52 149q0 68 33 119t92 75v2q-48 23 -79 73.5t-31 105.5q0 82 49 128.5t136 46.5t136 -47t49 -128q0 -56 -30.5 -103.5 t-79.5 -70.5v-2q59 -23 92 -75t33 -124q0 -98 -52 -149t-148 -51zM255 60q53 0 84 33.5t31 96.5q0 130 -125 160q-61 -16 -90 -54.5t-29 -105.5q0 -62 35 -96t94 -34z" />
|
||||
<glyph unicode="9" d="M215 -10q-61 0 -115 20v80q52 -26 105 -26q70 0 101 47.5t39 183.5h-2q-50 -50 -113 -50q-84 0 -127 59t-43 191q0 126 46 185.5t139 59.5q68 0 107 -28t58.5 -100.5t19.5 -201.5q0 -158 -25.5 -252t-71 -131t-118.5 -37zM245 668q-55 0 -79 -38t-24 -135t25 -138.5 t73 -41.5q49 0 77.5 41.5t28.5 128.5q0 100 -25 141.5t-76 41.5z" />
|
||||
<glyph unicode=":" d="M190 390v150h120v-150h-120zM190 0v150h120v-150h-120z" />
|
||||
<glyph unicode=";" d="M200 150h120l-110 -280h-70zM200 390v150h120v-150h-120z" />
|
||||
<glyph unicode="<" d="M435 510l-330 -204v-2l330 -204v-80l-380 245v80l380 245v-80z" />
|
||||
<glyph unicode="=" d="M60 165v72h380v-72h-380zM60 373v72h380v-72h-380z" />
|
||||
<glyph unicode=">" d="M65 510v80l380 -245v-80l-380 -245v80l330 204v2z" />
|
||||
<glyph unicode="?" d="M445 580q0 -41 -14 -77t-28.5 -55t-42.5 -49q-29 -33 -43 -52t-28 -55t-14 -77h-80q0 55 16.5 101.5t32.5 68t47 56.5q24 27 36 42.5t23 41.5t11 55q0 41 -29.5 63.5t-86.5 22.5q-85 0 -180 -61v90q93 45 190 45q91 0 140.5 -42t49.5 -118zM180 0v130h110v-130h-110z" />
|
||||
<glyph unicode="@" d="M375 258v167q0 41 -16 63t-44 22q-40 0 -56 -29.5t-16 -115.5q0 -82 17 -113.5t55 -31.5q44 0 60 38zM165 365q0 215 140 215q38 0 73 -25h2v5q0 50 -27.5 79t-72.5 29q-83 0 -124 -70.5t-41 -232.5q0 -166 40 -234.5t125 -68.5q62 0 125 38v-80q-59 -30 -130 -30 q-122 0 -181 86t-59 289q0 197 60.5 286t179.5 89q87 0 133.5 -50t46.5 -150v-325q-65 -65 -140 -65q-76 0 -113 49t-37 166z" />
|
||||
<glyph unicode="A" d="M249 660h-2l-83 -380h168zM348 210h-200l-46 -210h-82l180 730h100l180 -730h-86z" />
|
||||
<glyph unicode="B" d="M157 430h45q80 0 116.5 29.5t36.5 90.5q0 57 -36 88.5t-102 31.5q-36 0 -60 -8v-232zM157 360v-292q37 -8 90 -8q126 0 126 160q0 140 -161 140h-55zM455 210q0 -220 -225 -220q-80 0 -155 15v720q75 15 155 15q205 0 205 -180q0 -61 -30.5 -103t-84.5 -56v-2 q58 -11 96.5 -64t38.5 -125z" />
|
||||
<glyph unicode="C" d="M55 365q0 197 60.5 286t179.5 89q66 0 125 -30v-75q-60 33 -120 33q-165 0 -165 -303q0 -164 42 -233.5t123 -69.5q62 0 125 38v-80q-59 -30 -130 -30q-122 0 -181 86t-59 289z" />
|
||||
<glyph unicode="D" d="M383 365q0 168 -43.5 235.5t-137.5 67.5q-33 0 -55 -8v-590q22 -8 55 -8q65 0 102.5 24.5t58 91.5t20.5 187zM465 365q0 -207 -63.5 -291t-199.5 -84q-70 0 -137 15v720q67 15 137 15q137 0 200 -85.5t63 -289.5z" />
|
||||
<glyph unicode="E" d="M162 658v-228h248v-70h-248v-288h258v-72h-340v730h340v-72h-258z" />
|
||||
<glyph unicode="F" d="M172 360v-360h-82v730h330v-72h-248v-228h238v-70h-238z" />
|
||||
<glyph unicode="G" d="M370 85v275h-155v70h235v-400q-80 -40 -170 -40q-118 0 -179 89t-61 286q0 196 63.5 285.5t191.5 89.5q59 0 130 -25v-77q-66 30 -130 30q-87 0 -132 -72t-45 -231q0 -303 167 -303q45 0 85 23z" />
|
||||
<glyph unicode="H" d="M140 730v-298h216v298h84v-730h-84v360h-216v-360h-80v730h80z" />
|
||||
<glyph unicode="I" d="M410 0h-320v70h118v590h-118v70h320v-70h-118v-590h118v-70z" />
|
||||
<glyph unicode="J" d="M400 730v-540q0 -110 -43.5 -155t-146.5 -45q-82 0 -150 30v87q29 -17 75.5 -31t74.5 -14q53 0 79 30.5t26 99.5v468h-165v70h250z" />
|
||||
<glyph unicode="K" d="M157 400h2l206 330h95l-225 -350l230 -380h-95l-211 360h-2v-360h-82v730h82v-330z" />
|
||||
<glyph unicode="L" d="M182 730v-658h238v-72h-320v730h82z" />
|
||||
<glyph unicode="M" d="M378 540h-2l-88 -340h-80l-88 340h-2v-540h-78v730h92l119 -450h2l119 450h88v-730h-82v540z" />
|
||||
<glyph unicode="N" d="M151 550h-2v-550h-84v730h84l204 -550h2v550h80v-730h-80z" />
|
||||
<glyph unicode="O" d="M250 740q107 0 158.5 -84.5t51.5 -290.5t-51.5 -290.5t-158.5 -84.5t-158.5 84.5t-51.5 290.5t51.5 290.5t158.5 84.5zM250 62q44 0 71 25.5t43 93.5t16 184t-16 184t-43 93.5t-71 25.5t-71 -25.5t-43 -93.5t-16 -184t16 -184t43 -93.5t71 -25.5z" />
|
||||
<glyph unicode="P" d="M375 520q0 79 -36 114.5t-112 35.5q-41 0 -70 -8v-292q30 -5 70 -5q77 0 112.5 35.5t35.5 119.5zM455 520q0 -120 -52.5 -172.5t-165.5 -52.5q-35 0 -80 5v-300h-82v725q78 15 160 15q114 0 167 -52.5t53 -167.5z" />
|
||||
<glyph unicode="Q" d="M250 740q107 0 158.5 -84.5t51.5 -290.5q0 -273 -100 -344v-2q41 -21 73 -66t47 -103h-88q-21 78 -54 109t-88 31q-107 0 -158.5 84.5t-51.5 290.5t51.5 290.5t158.5 84.5zM250 62q44 0 71 25.5t43 93.5t16 184t-16 184t-43 93.5t-71 25.5t-71 -25.5t-43 -93.5t-16 -184 t16 -184t43 -93.5t71 -25.5z" />
|
||||
<glyph unicode="R" d="M370 540q0 130 -148 130q-41 0 -70 -8v-272h60q87 0 122.5 33.5t35.5 116.5zM152 320v-320h-82v725q78 15 160 15q112 0 166 -49.5t54 -150.5q0 -143 -109 -193v-2q31 -15 66 -131l63 -214h-86l-59 216q-17 64 -41 84t-82 20h-50z" />
|
||||
<glyph unicode="S" d="M260 668q-47 0 -77.5 -30.5t-30.5 -77.5q0 -50 21.5 -82.5t71.5 -55.5q111 -49 153 -102.5t42 -139.5q0 -94 -51.5 -142t-148.5 -48q-91 0 -165 55v95q80 -78 170 -78q113 0 113 118q0 55 -26 91t-87 64q-94 42 -134.5 95.5t-40.5 129.5q0 80 51 130t134 50q53 0 87 -8 t78 -32v-90q-77 58 -160 58z" />
|
||||
<glyph unicode="T" d="M209 0v660h-154v70h390v-70h-154v-660h-82z" />
|
||||
<glyph unicode="U" d="M250 -10q-95 0 -142.5 48.5t-47.5 151.5v540h84v-520q0 -81 26.5 -114.5t81.5 -33.5t81.5 33.5t26.5 114.5v520h80v-540q0 -103 -47.5 -151.5t-142.5 -48.5z" />
|
||||
<glyph unicode="V" d="M253 70l135 660h82l-170 -730h-100l-170 730h86l135 -660h2z" />
|
||||
<glyph unicode="W" d="M153 120h2l54 510h90l54 -510h2l45 610h75l-60 -730h-109l-55 520h-2l-55 -520h-109l-60 730h83z" />
|
||||
<glyph unicode="X" d="M251 440h2l112 290h83l-148 -355l150 -375h-90l-111 305h-2l-112 -305h-85l150 375l-148 355h88z" />
|
||||
<glyph unicode="Y" d="M251 375h2l132 355h85l-179 -440v-290h-82v290l-179 440h90z" />
|
||||
<glyph unicode="Z" d="M335 658v2h-260v70h350v-70l-260 -588v-2h260v-70h-350v70z" />
|
||||
<glyph unicode="[" d="M390 710h-178v-790h178v-60h-250v910h250v-60z" />
|
||||
<glyph unicode="\" d="M48 730h72l332 -770h-72z" />
|
||||
<glyph unicode="]" d="M110 710v60h250v-910h-250v60h178v790h-178z" />
|
||||
<glyph unicode="^" d="M251 680h-2l-147 -400h-72l170 450h100l170 -450h-72z" />
|
||||
<glyph unicode="_" d="M50 -140v56h400v-56h-400z" />
|
||||
<glyph unicode="`" d="M130 810h120l100 -280h-70z" />
|
||||
<glyph unicode="a" d="M255 530q100 0 137.5 -40t37.5 -150v-340h-72l-2 75h-2q-47 -85 -149 -85q-65 0 -105 41.5t-40 113.5q0 91 61.5 140.5t183.5 49.5h48v25q0 57 -22 80t-76 23q-33 0 -84 -12t-86 -28v72q35 15 85 25t85 10zM353 275h-48q-170 0 -170 -125q0 -45 23 -69t62 -24q59 0 96 48 t37 135v35z" />
|
||||
<glyph unicode="b" d="M144 445h2q43 85 134 85q175 0 175 -270q0 -135 -48 -202.5t-127 -67.5q-84 0 -137 85h-2l-2 -75h-74v730h79v-285zM376 260q0 195 -116 195q-51 0 -83.5 -49.5t-32.5 -140.5v-10q0 -91 32.5 -140.5t83.5 -49.5q53 0 84.5 48.5t31.5 146.5z" />
|
||||
<glyph unicode="c" d="M70 260q0 134 55 202t155 68q61 0 125 -25v-80q-60 33 -120 33q-63 0 -98 -50t-35 -148q0 -101 37 -151t101 -50q59 0 120 36v-80q-64 -25 -125 -25q-102 0 -158.5 67.5t-56.5 202.5z" />
|
||||
<glyph unicode="d" d="M356 730h79v-730h-74l-2 75h-2q-53 -85 -137 -85q-79 0 -127 67.5t-48 202.5q0 270 175 270q91 0 134 -85h2v285zM124 260q0 -98 31.5 -146.5t84.5 -48.5q51 0 83.5 49.5t32.5 140.5v10q0 91 -32.5 140.5t-83.5 49.5q-116 0 -116 -195z" />
|
||||
<glyph unicode="e" d="M138 234q4 -93 38 -134t99 -41q61 0 135 36v-80q-74 -25 -140 -25q-215 0 -215 270q0 141 50 205.5t150 64.5q91 0 135.5 -62t44.5 -203q0 -11 -2 -31h-295zM138 300h218q-1 161 -101 161q-57 0 -85 -36t-32 -125z" />
|
||||
<glyph unicode="f" d="M75 431v69h120v60q0 98 33 139t107 41q45 0 90 -15v-72q-38 18 -75 18q-47 0 -61.5 -23.5t-14.5 -107.5v-40h151v-69h-151v-431h-79v431h-120z" />
|
||||
<glyph unicode="g" d="M50 260q0 270 175 270q83 0 137 -85h2l2 75h74v-515q0 -125 -50.5 -180t-154.5 -55q-71 0 -140 25v80q71 -36 140 -36q126 0 126 166v80h-2q-43 -85 -134 -85q-80 0 -127.5 66t-47.5 194zM129 260q0 -92 31.5 -138.5t84.5 -46.5q52 0 84 45.5t32 134.5v10 q0 91 -32.5 140.5t-83.5 49.5q-58 0 -87 -46.5t-29 -148.5z" />
|
||||
<glyph unicode="h" d="M440 330v-330h-77v312q0 88 -20 117.5t-73 29.5q-50 0 -85.5 -56t-35.5 -151v-252h-79v730h79v-285h2q19 39 56.5 62t82.5 23q79 0 114.5 -45.5t35.5 -154.5z" />
|
||||
<glyph unicode="i" d="M316 520v-452h109v-68h-330v68h139v384h-109v68h191zM214 640v120h102v-120h-102z" />
|
||||
<glyph unicode="j" d="M249 -33v485h-119v68h201v-553q0 -65 -8.5 -101t-36.5 -59t-72 -30t-123 -7v68q40 0 63 1t42.5 6.5t28.5 12.5t15.5 23.5t7.5 34.5t1 51zM229 640v120h102v-120h-102z" />
|
||||
<glyph unicode="k" d="M460 520l-230 -250l230 -270h-95l-206 253v-253h-79v730h79v-444l207 234h94z" />
|
||||
<glyph unicode="l" d="M281 150q0 -66 10.5 -79t63.5 -13q33 0 75 6v-69q-47 -5 -85 -5q-90 0 -118 28.5t-28 121.5v522h-129v68h211v-580z" />
|
||||
<glyph unicode="m" d="M290 0h-78v360q-1 58 -10.5 77.5t-32.5 19.5q-20 0 -35 -24t-25 -83.5t-10 -149.5v-200h-79v520h70l2 -70h2q17 38 42.5 59t53.5 21q31 0 50.5 -18.5t33.5 -61.5h2q39 80 104 80q53 0 76.5 -32.5t23.5 -117.5v-380h-77v360q-1 59 -11.5 78t-37.5 19q-64 0 -64 -197v-260z " />
|
||||
<glyph unicode="n" d="M440 330v-330h-77v312q0 88 -20 117.5t-73 29.5q-50 0 -85.5 -56t-35.5 -151v-252h-79v520h74l2 -75h2q19 38 58 61.5t84 23.5q79 0 114.5 -45.5t35.5 -154.5z" />
|
||||
<glyph unicode="o" d="M250 530q200 0 200 -270t-200 -270t-200 270t200 270zM250 59q61 0 89.5 45.5t28.5 155.5t-28.5 155.5t-89.5 45.5t-89.5 -45.5t-28.5 -155.5t28.5 -155.5t89.5 -45.5z" />
|
||||
<glyph unicode="p" d="M141 75h-2v-295h-79v740h74l2 -75h2q54 85 137 85q175 0 175 -270q0 -135 -48 -202.5t-127 -67.5q-91 0 -134 85zM371 260q0 195 -116 195q-51 0 -83.5 -49.5t-32.5 -140.5v-10q0 -91 32.5 -140.5t83.5 -49.5q53 0 84.5 48.5t31.5 146.5z" />
|
||||
<glyph unicode="q" d="M359 75q-43 -85 -134 -85q-79 0 -127 67.5t-48 202.5q0 270 175 270q83 0 137 -85h2l2 75h74v-740h-79v295h-2zM129 260q0 -98 31.5 -146.5t84.5 -48.5q51 0 83.5 49.5t32.5 140.5v10q0 91 -32.5 140.5t-83.5 49.5q-116 0 -116 -195z" />
|
||||
<glyph unicode="r" d="M186 520v-100h2q62 110 172 110q37 0 70 -10v-70q-35 11 -70 11q-73 0 -122 -61t-49 -160v-240h-79v520h76z" />
|
||||
<glyph unicode="s" d="M255 463q-96 0 -96 -73q0 -34 21 -54.5t75 -35.5q106 -30 140.5 -63t34.5 -102t-47 -107t-133 -38t-165 40v80q78 -53 155 -53q111 0 111 78q0 37 -21.5 57t-84.5 38q-92 26 -128.5 62t-36.5 98q0 66 43.5 103t126.5 37q84 0 160 -35v-75q-79 43 -155 43z" />
|
||||
<glyph unicode="t" d="M244 500h181v-69h-181v-281q0 -56 16.5 -74.5t64.5 -18.5q50 0 90 18v-70q-48 -15 -100 -15q-84 0 -117 32.5t-33 117.5v291h-100v69h100v190h79v-190z" />
|
||||
<glyph unicode="u" d="M65 180v340h77v-322q0 -83 18.5 -110t69.5 -27q49 0 82.5 55t33.5 152v252h79v-520h-74l-2 75h-2q-19 -40 -56 -62.5t-81 -22.5q-77 0 -111 43t-34 147z" />
|
||||
<glyph unicode="v" d="M251 60h2l115 460h82l-145 -520h-110l-145 520h86z" />
|
||||
<glyph unicode="w" d="M351 80h2l49 440h78l-80 -520h-99l-54 440h-2l-49 -440h-96l-80 520h82l49 -440h2l49 440h100z" />
|
||||
<glyph unicode="x" d="M251 305h2l104 215h88l-145 -260l145 -260h-94l-102 215h-2l-102 -215h-90l145 260l-145 260h92z" />
|
||||
<glyph unicode="y" d="M259 120h2l117 400h87l-240 -740h-83l78 230l-175 510h88z" />
|
||||
<glyph unicode="z" d="M80 520h340v-69l-248 -380v-2h248v-69h-340v69l248 380v2h-248v69z" />
|
||||
<glyph unicode="{" d="M195 316l4 -2q81 -38 81 -149v-135q0 -72 16.5 -91t78.5 -19h40v-60h-65q-73 0 -107.5 35.5t-34.5 114.5v150q0 66 -21.5 95.5t-66.5 29.5h-45v60h45q45 0 66.5 29.5t21.5 95.5v150q0 79 34.5 114.5t107.5 35.5h65v-60h-40q-62 0 -78.5 -19t-16.5 -91v-135q0 -61 -20 -95 t-65 -54z" />
|
||||
<glyph unicode="|" d="M212 -220v1030h76v-1030h-76z" />
|
||||
<glyph unicode="}" d="M305 316q-45 20 -65 54t-20 95v135q0 72 -16.5 91t-78.5 19h-40v60h65q73 0 107.5 -35.5t34.5 -114.5v-150q0 -66 21.5 -95.5t66.5 -29.5h45v-60h-45q-45 0 -66.5 -29.5t-21.5 -95.5v-150q0 -79 -34.5 -114.5t-107.5 -35.5h-65v60h40q62 0 78.5 19t16.5 91v135 q0 111 81 149z" />
|
||||
<glyph unicode="~" d="M50 602v75q42 33 95 33q61 0 125 -48q48 -35 80 -35q25 0 47 10t53 39v-75q-42 -33 -95 -33q-61 0 -125 48q-47 35 -80 35q-25 0 -47 -10t-53 -39z" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="¥" d="M251 375h2l132 355h85l-153 -375h123v-65h-149v-85h149v-65h-149v-140h-82v140h-149v65h149v85h-149v65h123l-153 375h90z" />
|
||||
<glyph unicode="­" d="M100 269v72h300v-72h-300z" />
|
||||
<glyph unicode=" " horiz-adv-x="407" />
|
||||
<glyph unicode=" " horiz-adv-x="815" />
|
||||
<glyph unicode=" " horiz-adv-x="407" />
|
||||
<glyph unicode=" " horiz-adv-x="815" />
|
||||
<glyph unicode=" " horiz-adv-x="271" />
|
||||
<glyph unicode=" " horiz-adv-x="203" />
|
||||
<glyph unicode=" " horiz-adv-x="135" />
|
||||
<glyph unicode=" " horiz-adv-x="135" />
|
||||
<glyph unicode=" " horiz-adv-x="101" />
|
||||
<glyph unicode=" " horiz-adv-x="163" />
|
||||
<glyph unicode=" " horiz-adv-x="45" />
|
||||
<glyph unicode="‐" d="M100 269v72h300v-72h-300z" />
|
||||
<glyph unicode="‑" d="M100 269v72h300v-72h-300z" />
|
||||
<glyph unicode="–" d="M60 269v72h380v-72h-380z" />
|
||||
<glyph unicode="—" d="M20 269v72h460v-72h-460z" />
|
||||
<glyph unicode="‘" d="M275 500h-120l110 280h70z" />
|
||||
<glyph unicode="’" d="M220 780h120l-110 -280h-70z" />
|
||||
<glyph unicode="“" d="M340 500h-110l110 280h60zM190 500h-110l110 280h60z" />
|
||||
<glyph unicode="”" d="M300 780h110l-110 -280h-60zM150 780h110l-110 -280h-60z" />
|
||||
<glyph unicode="…" horiz-adv-x="1000" d="M102 288v150h130v-150h-130zM435 288v150h130v-150h-130zM768 288v150h130v-150h-130z" />
|
||||
<glyph unicode=" " horiz-adv-x="163" />
|
||||
<glyph unicode=" " horiz-adv-x="203" />
|
||||
<glyph unicode="™" horiz-adv-x="1000" d="M878 540h-2l-88 -340h-80l-88 340h-2v-540h-78v730h92l119 -450h2l119 450h88v-730h-82v540zM209 0v660h-154v70h390v-70h-154v-660h-82z" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
Binary file not shown.
|
|
@ -1,217 +0,0 @@
|
|||
/*
|
||||
* TABLE OF CONTENTS:
|
||||
* - Browser reset
|
||||
* - HTML elements
|
||||
* - JsDoc styling
|
||||
* - Media query check
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* HTML ELEMENTS
|
||||
*/
|
||||
|
||||
body {
|
||||
padding: 1% 4% 1% 4%;
|
||||
}
|
||||
|
||||
/*
|
||||
* HTML ELEMENTS
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BEGIN JSDOC
|
||||
*/
|
||||
|
||||
/* Start menu */
|
||||
div.index div.menu {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
-moz-border-radius-bottomleft: 15px;
|
||||
-webkit-border-bottom-left-radius: 15px;
|
||||
-border-bottom-left-radius: 15px;
|
||||
padding: 4px 5px 8px 10px;
|
||||
-moz-box-shadow: 0px 0px 10px #c4c4c4;
|
||||
-webkit-box-shadow: 0px 0px 10px #c4c4c4;
|
||||
box-shadow: 0px 0px 10px #c4c4c4;
|
||||
background-color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
div.index input.classFilter {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.index div.indexLinks a {
|
||||
float: right;
|
||||
clear: both;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
div.index *.heading1 {
|
||||
display:none;
|
||||
}
|
||||
|
||||
div.index ul.classList {
|
||||
display:none;
|
||||
}
|
||||
|
||||
div.index div.fineprint {
|
||||
display:none;
|
||||
}
|
||||
|
||||
div.indexStatic {
|
||||
display: none;
|
||||
}
|
||||
/* End menu */
|
||||
|
||||
|
||||
|
||||
/* Start content */
|
||||
div.content *.classTitle {
|
||||
margin-right: 60px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
div.content div.intro {
|
||||
margin: 15px 0 35px;
|
||||
}
|
||||
|
||||
div.content p.description.summary {
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
div.content div.props {
|
||||
margin: 1.5em -2% 0 -2%;
|
||||
padding: 2%;
|
||||
}
|
||||
|
||||
table.summaryTable {
|
||||
position: relative;
|
||||
left: -10px;
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
-ms-box-sizing: content-box;
|
||||
-o-box-sizing: content-box;
|
||||
-icab-box-sizing: content-box;
|
||||
-khtml-box-sizing: content-box;
|
||||
}
|
||||
|
||||
*.sectionTitle {
|
||||
padding: 0 10px 10px 0;
|
||||
}
|
||||
caption.sectionTitle {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
table.summaryTable td,
|
||||
table.summaryTable th {
|
||||
padding: 0px 10px 10px 10px;
|
||||
}
|
||||
table.summaryTable tr:last-child td {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
table.summaryTable td.attributes {
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
table.summaryTable td.nameDescription {
|
||||
width: 65%
|
||||
}
|
||||
|
||||
|
||||
|
||||
dl.detailList {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
dl.detailList.nomargin + dl.detailList.nomargin {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
dl.detailList dt {
|
||||
display: inline;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
dl.detailList dt:before {
|
||||
display: block;
|
||||
content: "";
|
||||
}
|
||||
|
||||
dl.detailList dd {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
dl.detailList.params dt {
|
||||
display: block;
|
||||
}
|
||||
dl.detailList.params dd {
|
||||
display: block;
|
||||
padding-left: 2em;
|
||||
padding-bottom: 0.4em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
ul.fileList li {
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.fixedFont.heading {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
pre.code {
|
||||
margin: 10px 0 10px 0;
|
||||
padding: 10px;
|
||||
border: 1px solid #ccc;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
/* End content */
|
||||
|
||||
/*
|
||||
* END JSDOC
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* START MEDIA QUERY CHECK
|
||||
*/
|
||||
|
||||
.cssLoadCheck {
|
||||
position: absolute;
|
||||
top: -99999px;
|
||||
left: -99999px;
|
||||
border: 0;
|
||||
width: 100px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/*
|
||||
* END MEDIA QUERY CHECK
|
||||
*/
|
||||
|
||||
|
|
@ -1,297 +0,0 @@
|
|||
/*
|
||||
* TABLE OF CONTENTS:
|
||||
* - JsDoc styling
|
||||
* - Media query check
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BEGIN JSDOC
|
||||
*/
|
||||
|
||||
/* Start menu */
|
||||
div.index {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
float: left;
|
||||
width: 30%;
|
||||
min-width: 100px;
|
||||
max-width: 300px;
|
||||
padding: 0 0 10px 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
div.index *.heading1 {
|
||||
padding: 8px 0 0 0;
|
||||
}
|
||||
|
||||
div.index div.menu {
|
||||
margin: 0 15px 0 -15px;
|
||||
-moz-border-radius-bottomright: 15px;
|
||||
-webkit-border-bottom-right-radius: 15px;
|
||||
-border-bottom-right-radius: 15px;
|
||||
padding: 15px 15px 15px 30px;
|
||||
-moz-box-shadow: 0px 0px 10px #c4c4c4;
|
||||
-webkit-box-shadow: 0px 0px 10px #c4c4c4;
|
||||
box-shadow: 0px 0px 10px #c4c4c4;
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
div.index div.indexLinks {
|
||||
margin-top: 13px;
|
||||
position: absolute;
|
||||
right: 30px;
|
||||
}
|
||||
|
||||
div.index div.indexLinks a {
|
||||
color: #999999;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
div.index div.indexLinks a:first-child {
|
||||
margin-right: 3px;
|
||||
border-right: 1px solid #999999;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
div.index input.classFilter {
|
||||
margin-bottom: 4px;
|
||||
width: 100%;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #CCCCCC #999999 #999999 #CCCCCC;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
-border-radius: 3px;
|
||||
}
|
||||
|
||||
div.index ul.classList a {
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
div.index ul.classList a + a {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
div.index div.fineprint {
|
||||
margin: 1em 0 0 15px;
|
||||
color: #777;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
div.index div.fineprint a {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
div.indexStatic {
|
||||
position: static;
|
||||
min-height: 1em;
|
||||
}
|
||||
/* End menu */
|
||||
|
||||
|
||||
/* Start content */
|
||||
div.content {
|
||||
float: left;
|
||||
width: 70%;
|
||||
min-width: 300px;
|
||||
max-width: 600px;
|
||||
}
|
||||
div.innerContent {
|
||||
padding: 0 0 0 2.5em;
|
||||
}
|
||||
|
||||
div.content ul,
|
||||
div.content ol {
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
|
||||
div.content ul.methodDetail {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.content *.classTitle {
|
||||
position: relative;
|
||||
left: -10px;
|
||||
margin: -30px 0 15px 0;
|
||||
-moz-border-radius: 15px;
|
||||
-webkit-border-radius: 15px;
|
||||
border-radius: 15px;
|
||||
padding: 25px 15px 15px 15px;
|
||||
background-color: #FFFFFF;
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
-moz-box-shadow: 0px 0px 10px #c4c4c4;
|
||||
-webkit-box-shadow: 0px 0px 10px #c4c4c4;
|
||||
box-shadow: 0px 0px 10px #c4c4c4;
|
||||
}
|
||||
|
||||
div.content div.intro {
|
||||
margin: 15px 0 45px
|
||||
}
|
||||
|
||||
div.content p.summary {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
div.content ul.summary {
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
div.content ul *.classname a,
|
||||
div.content ul *.filename a {
|
||||
font-family: Consolas, "Courier New", Courier, monospace;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
div.content ul *.classname a:hover,
|
||||
div.content ul *.filename a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
div.content div.props {
|
||||
position: relative;
|
||||
left: -10px;
|
||||
margin-bottom: 2.5em;
|
||||
padding: 10px 15px 15px 15px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.content div.hr {
|
||||
margin: 0 10px 0 0;
|
||||
height: 4em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
table.summaryTable {
|
||||
position: relative;
|
||||
left: -10px;
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
-ms-box-sizing: content-box;
|
||||
-o-box-sizing: content-box;
|
||||
-icab-box-sizing: content-box;
|
||||
-khtml-box-sizing: content-box;
|
||||
}
|
||||
|
||||
*.sectionTitle {
|
||||
padding: 0 10px 10px 0;
|
||||
}
|
||||
caption.sectionTitle {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
table.summaryTable td,
|
||||
table.summaryTable th {
|
||||
padding: 0px 10px 10px 10px;
|
||||
}
|
||||
table.summaryTable tr:last-child td {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
table.summaryTable td.attributes {
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
table.summaryTable td.nameDescription {
|
||||
width: 65%
|
||||
}
|
||||
|
||||
|
||||
|
||||
dl.detailList {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
dl.detailList.nomargin + dl.detailList.nomargin {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
dl.detailList dt {
|
||||
display: inline;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
dl.detailList dt:before {
|
||||
display: block;
|
||||
content: "";
|
||||
}
|
||||
|
||||
dl.detailList dd {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
dl.detailList.params dt {
|
||||
display: block;
|
||||
}
|
||||
dl.detailList.params dd {
|
||||
display: block;
|
||||
padding-left: 2em;
|
||||
padding-bottom: 0.4em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
ul.fileList li {
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.fixedFont.heading {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
pre.code {
|
||||
margin: 10px 0 10px 0;
|
||||
padding: 10px;
|
||||
border: 1px solid #ccc;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
/* End content */
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
width: 100%;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* END JSDOC
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* START MEDIA QUERY CHECK
|
||||
*/
|
||||
|
||||
.cssLoadCheck {
|
||||
position: absolute;
|
||||
top: -99999px;
|
||||
left: -99999px;
|
||||
border: 0;
|
||||
width: 100px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/*
|
||||
* END MEDIA QUERY CHECK
|
||||
*/
|
||||
|
||||
|
|
@ -1,326 +0,0 @@
|
|||
/**
|
||||
* @fileOverview Contains standard code in the namespace 'wbos' and code specifically written for Codeview in the namespace 'codeview'
|
||||
* @author Wouter Bos (www.thebrightlines.com)
|
||||
* @since 1.0 - 2010-09-10
|
||||
* @version 1.0 - 2010-09-10
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (typeof(wbos) == "undefined") {
|
||||
/**
|
||||
* @namespace Standard code of Wouter Bos (wbos)
|
||||
*/
|
||||
wbos = {}
|
||||
}
|
||||
if (typeof(wbos.CssTools) == "undefined") {
|
||||
/**
|
||||
* @namespace Namespace for CSS-related functionality
|
||||
*/
|
||||
wbos.CssTools = {}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @namespace Fallback for CSS advanced media query
|
||||
* @class
|
||||
* @since 1.0 - 2010-09-10
|
||||
* @version 1.0 - 2010-09-10
|
||||
*/
|
||||