ruby-ext 0.2.16 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.git/index +0 -0
- data/.git/logs/HEAD +36 -0
- data/.git/logs/refs/heads/master +36 -0
- data/.git/logs/refs/remotes/origin/master +33 -0
- data/.git/objects/00/2395889decffa8e2f966a9db6451ff2a067e4c +2 -0
- data/.git/objects/00/783d209bd74ed88bbb205e61efa721be254b3f +0 -0
- data/.git/objects/00/e6d4f08f77d9fc0e56caeb27a249f31af0ab82 +0 -0
- data/.git/objects/01/61235e67eb14a9abb5799d9650e77e67ff0941 +0 -0
- data/.git/objects/01/6b92e94406bee1ac6cde06fc810e40568824b2 +0 -0
- data/.git/objects/01/c6f78396141742cf35ae0a956c224caecc485d +0 -0
- data/.git/objects/02/65d004380614194aaee78c2560633b592bf8a6 +0 -0
- data/.git/objects/02/88cf0d4884e142f8123f06bf4c210c58aa7cdd +0 -0
- data/.git/objects/03/674b6e06fb6d27e046b7b4eaeec4e2febf6ebb +0 -0
- data/.git/objects/03/c1321c9540ad8118be74a6d11096690f1548d0 +0 -0
- data/.git/objects/04/29a67e784d9cec94ef150df604895edb0d2018 +4 -0
- data/.git/objects/04/75ecb3debe8e5053ed55d441cdee799e8afee1 +0 -0
- data/.git/objects/05/aacf33ae50839effadf2babcfc1f4fd6d08a15 +0 -0
- data/.git/objects/06/efb0cc1682bab5eb690049fafa4eeb2f79a720 +0 -0
- data/.git/objects/08/c38295129c52a13171ee5c67152ffc3ae88779 +0 -0
- data/.git/objects/09/813024ff69db4e52ae4af7dc03c540ca80c448 +0 -0
- data/.git/objects/09/c1f25defbf97c1dc012d5ff7217da0900bb49d +0 -0
- data/.git/objects/0b/5519c74c16e3cbdbbebc30331399f3e2fc36e6 +0 -0
- data/.git/objects/0b/dcfeab6c8984d8e515cf9791143356f85d5aed +0 -0
- data/.git/objects/0c/4b7a2d4a0bec764483c81cc8f399f7eacddbd5 +0 -0
- data/.git/objects/0c/d5795c41ba574247b9a05816e50b4d01fd0305 +0 -0
- data/.git/objects/0d/af478beef086240a99ba1122c38ee9b170a10d +2 -0
- data/.git/objects/0d/bc72100165f3fbf8d88f846ed0e703a2a2a9cd +0 -0
- data/.git/objects/0e/296af571e4b971c56965d2be4cd563db794100 +0 -0
- data/.git/objects/0f/1fd03c9c66b0e2f58202521c1f8d2bb7c53dff +0 -0
- data/.git/objects/10/c8ec3898e9083187ccba174895068019b4f040 +2 -0
- data/.git/objects/11/0a11503cfc9ed68f9d2f38568557292c932270 +0 -0
- data/.git/objects/11/b38272b070023b03dd0696972d34393ba74536 +0 -0
- data/.git/objects/11/ff8a1e9de6105099627111e67a98bfeb208193 +0 -0
- data/.git/objects/13/1ff84e0d05d761ca379285ea7a1744590da1c1 +2 -0
- data/.git/objects/13/20a0b7bb07b70f3e91471b9720bdd5bcc8c472 +0 -0
- data/.git/objects/13/29c391135e092a94b368ca45fff11e85c39e96 +0 -0
- data/.git/objects/13/b1eb398251029d27a8eb8d402ee7e66875837c +0 -0
- data/.git/objects/13/d19faa3555469f790ef0e2a21c539f62cac04b +0 -0
- data/.git/objects/14/71a79b1cc8fdc9f952723341b00b112918da00 +0 -0
- data/.git/objects/15/31b175045c5c6ac72d0cf12601ea8ecf5ade18 +0 -0
- data/.git/objects/15/4906607b72c66c2702e6e63c45e0dcb320c275 +0 -0
- data/.git/objects/15/6f06ce1407f4adaabfb82554aaf2b6018afd50 +0 -0
- data/.git/objects/16/02b1e190c92777f724dd05b1cb9037ac87d5f8 +0 -0
- data/.git/objects/16/128d763653b006473637b027696d77355872a7 +0 -0
- data/.git/objects/16/bb5d24f5fd69a6ed0ceba5c0528152b28d94a8 +0 -0
- data/.git/objects/18/24d479dd5d75665a0e8035c7a47e87654c6a08 +0 -0
- data/.git/objects/18/59e8bb8adc0a1cf0d1735d63a0379d18b93835 +3 -0
- data/.git/objects/19/21e3d8b05e3a56117cbf85891f567492e92b39 +0 -0
- data/.git/objects/19/951524d55fb896cfc6f44f172033ea19d5aa08 +0 -0
- data/.git/objects/19/d2fdc76396cb8661785999ab1ee732d9558c5d +0 -0
- data/.git/objects/1a/0c05f9a424f7d10071399b511fe6aa101febbc +0 -0
- data/.git/objects/1a/68ed1743d2edd34630f022cccf6afd9fc34af1 +0 -0
- data/.git/objects/1a/d7e4f94f9fee3195472491ea40c3fb7dfe16c5 +0 -0
- data/.git/objects/1b/ca46c925970a70b46dbddc6041fca2482ef823 +0 -0
- data/.git/objects/1c/965138c39db8428557f7391ecfe0fca63502f1 +0 -0
- data/.git/objects/1c/fdf496e64ac7ab688c6c8fe9830d02bf5b3f5f +0 -0
- data/.git/objects/1d/cf384e74e185fa2b829203355e5282917b5f98 +0 -0
- data/.git/objects/1d/eefbc4a9e2de8f572f026089904ce1e2c91491 +2 -0
- data/.git/objects/20/5cc137dfb0d30965876f195293976957f79d65 +0 -0
- data/.git/objects/20/aec72f1b46da2322a6f6c77ae20be88d48e3c7 +4 -0
- data/.git/objects/22/004bda6693173daf8eea9224ae8b9cf76d7e97 +0 -0
- data/.git/objects/22/46e31e797496649b8799b3f1314af642f0122b +0 -0
- data/.git/objects/22/608165b9efee46360f68989e79e9857e883834 +0 -0
- data/.git/objects/22/ada36413c466ed845d411cc4e7c0cfdb5f18b1 +0 -0
- data/.git/objects/22/b92c4acb45df858694a9ab184a0ccf544f28cb +0 -0
- data/.git/objects/22/e64ac60d9587c20706a6e154a4d7b89fb568bf +0 -0
- data/.git/objects/23/885f54b5a082bc24ec62c4b9599fac0b0f179c +2 -0
- data/.git/objects/24/08e2735e2a4756aee56584f88ef4f383d214a7 +0 -0
- data/.git/objects/24/c0f7b637927b05bfb06ac13e221f59d4bafa9c +0 -0
- data/.git/objects/24/d431eba3f275f890bb257498392d0b0649a359 +0 -0
- data/.git/objects/25/5d96e353b85d55c41175394e4f99a3eff070ae +0 -0
- data/.git/objects/26/480787c05f71fe4544fead943e5648cb18d28e +0 -0
- data/.git/objects/26/c4c565f15f40a27250c582eee874799845f6c0 +0 -0
- data/.git/objects/27/46f3d9c904c3fa058729c3367ca14d2c259f9a +0 -0
- data/.git/objects/27/b2e628b4d1d3f987fefc1b3ba16fcf643f03dd +0 -0
- data/.git/objects/27/e56ec8917bb87069501f71537902abe42e994f +3 -0
- data/.git/objects/28/5f925dab06d7097ef7954b97a42e676d48ef96 +0 -0
- data/.git/objects/29/6c2091e4216ea4a0224eac65b0604e8f23d402 +0 -0
- data/.git/objects/29/83ca4cb4b3229723573079c9a7cc9a7e447896 +0 -0
- data/.git/objects/2a/1185a3d833a8876061db02236779cdbebc29aa +0 -0
- data/.git/objects/2a/2e599c60b30e2d46c17ae38a53441031d64690 +0 -0
- data/.git/objects/2a/5d31a3363268dd26fcb8357504bbada90212a4 +0 -0
- data/.git/objects/2a/d8aca540b6ffefffda29d9a13327b126914351 +0 -0
- data/.git/objects/2b/503e9e8690b5bc4364e51f8e81759cbdc84def +0 -0
- data/.git/objects/2b/d08f6aabd811cab4aedb878193b787a72757b8 +0 -0
- data/.git/objects/2c/ec937c20d2ad8b71090cbed7a4032dc837780b +0 -0
- data/.git/objects/2f/6ddc78c51e75dbbd6b2f34df530c3c7c026dc7 +0 -0
- data/.git/objects/2f/d2e4defd7e79c0c934d699cd90172a23b8fc07 +0 -0
- data/.git/objects/2f/f274ad8f36d75193f0537e0483da474fce4866 +0 -0
- data/.git/objects/2f/f972ca2ff463e86495eaafa63e77fe5a7a16a2 +0 -0
- data/.git/objects/30/df06dbb17d66f4f8c13b1c9646b41b279b1376 +0 -0
- data/.git/objects/31/6a0e7fbf1b6f23512cfc577940bdaa2e6fdeb6 +0 -0
- data/.git/objects/31/89bac6be07ebe9728a9c6e62c55a5f98965226 +0 -0
- data/.git/objects/32/647582700acc284c165f2a113736b28a77ff72 +0 -0
- data/.git/objects/33/04252c226db20d326993fdd121dd03402d4906 +0 -0
- data/.git/objects/34/98fd0067b73453b31c9164524487209dc0e1e6 +1 -0
- data/.git/objects/34/dafbffc72f89b92b509449e48da5ab4310ff2f +1 -0
- data/.git/objects/35/626d6c352f1a5e9f6749a4c5a4ce60aed28600 +0 -0
- data/.git/objects/36/177800b67cf9bb915bc4f4ba9a4b4fd92056cc +1 -0
- data/.git/objects/36/53e0d6b1aae1f02af2c2d698b4315c891e2f68 +1 -0
- data/.git/objects/36/9ed7f4472a7a569d09988186956afd7c88c1f8 +0 -0
- data/.git/objects/36/e54fc97e224630e5f4f3258178a909ff617080 +0 -0
- data/.git/objects/36/f4057662f0795571de97ae8377a48c596851f1 +0 -0
- data/.git/objects/37/6e70083ab152345d4ae538d69242966c0994c4 +0 -0
- data/.git/objects/37/7095c206380fcf736ab4ae96199745057285af +0 -0
- data/.git/objects/37/cd592dbceb2694501839c6065524cee16bd2ab +0 -0
- data/.git/objects/37/eb4b9671aa4e45483810ba55f3fba92c606618 +0 -0
- data/.git/objects/38/299bbcc74f3594f672580bcbe66002e1d58e4c +2 -0
- data/.git/objects/38/abd4bf7e081a659a4e783ad2e0c4a72762fc88 +0 -0
- data/.git/objects/39/443dda6227c5fd0f08fadb4e9bee475a5aca7d +0 -0
- data/.git/objects/39/8020887b76f9dd0789bb032c32703833e691fb +0 -0
- data/.git/objects/3a/174d1fefdf90c51ff7eb36834d6a46f2592fa2 +3 -0
- data/.git/objects/3a/ea0ed9dad193bcb93b37f2a6f02c92e61b17f9 +2 -0
- data/.git/objects/3d/3a9be3f69fb8c1b7aef4437bfc47f347fe9f6b +0 -0
- data/.git/objects/3d/8fa720fbf5eddd135fab612536279a64f0ac48 +0 -0
- data/.git/objects/3d/954e208978d7996b6f622c1842bd1e47a466e6 +0 -0
- data/.git/objects/3e/19b85d49127c7b91cdb61a507aa7f7c0cf4dc7 +0 -0
- data/.git/objects/3e/2b9ddb78ac842398b8bb092cd6305dba185d01 +0 -0
- data/.git/objects/3f/66c1d1ca300014ab42aa9489fe9d2ff7cbf8fb +0 -0
- data/.git/objects/3f/703e030267e729f2f9c3cb7ec2b008b4e9c4b5 +3 -0
- data/.git/objects/3f/d056af3e4d56ac85ead91443b3ecfcd6b2fa0c +2 -0
- data/.git/objects/3f/da21367599e5caba4a6cba57c1b2f85b1251ed +0 -0
- data/.git/objects/40/0d127d8143efa8a0d156124c558d342091b916 +2 -0
- data/.git/objects/40/6e1e346c8569903d82c348073e48c3aea0a932 +0 -0
- data/.git/objects/40/f8edcdabeec285ae413f69d3cf0649df9eaf38 +0 -0
- data/.git/objects/41/6e7fd23311bfbd610d18ae235b69deade7a27d +0 -0
- data/.git/objects/41/79f8469ad3d07ad097da200f6a3e05f465afd7 +0 -0
- data/.git/objects/41/9ff8f692c7a107cc73d25f2e19e5fad977a4a4 +0 -0
- data/.git/objects/41/f8e0203895e7cfd746291e57e9e7a943711761 +0 -0
- data/.git/objects/42/26317b0bb7af4768e6c088e7a5a2c286b5dcc7 +0 -0
- data/.git/objects/42/6a4fbc3e4a4e757777dbe89e7db29f67f43343 +0 -0
- data/.git/objects/42/7ccb78c37e2b50cea65c879047198dcdd6689b +0 -0
- data/.git/objects/42/932de361fb9939ac4292c321a8d9b9a7142cd3 +0 -0
- data/.git/objects/43/e7a15a14091001b28e2565617da2c2cd22c772 +0 -0
- data/.git/objects/44/715cc276e6bb8f1e7a5064bc318d603d0f5197 +0 -0
- data/.git/objects/47/eab9c539b21df5ef90ee7b2b55905cf66206fb +3 -0
- data/.git/objects/48/d4c36611a846694e2b317482d5cd25bea72879 +0 -0
- data/.git/objects/49/81d483e72c44d35bbafdc01ca21226b8cfba6b +0 -0
- data/.git/objects/4a/1d9c3e8260c032446bd9a057e1696f1b9a132d +0 -0
- data/.git/objects/4b/14e21e771891a7224ec81237f0f9ab53f8037e +0 -0
- data/.git/objects/4b/5f03ae737b4ddccee88e19fe01f778192b3278 +0 -0
- data/.git/objects/4b/b2eb5b0c2b60af9d14397ed5109dcdf420340e +0 -0
- data/.git/objects/4c/4af52f665eefb1d25654a371f7e6d6f4dbafb3 +0 -0
- data/.git/objects/4c/7d74b030d3650dff3d92cd5bfeaed8012f9062 +0 -0
- data/.git/objects/4c/f44376dde3b2019a85599531be21c7733943ca +0 -0
- data/.git/objects/4d/7e667fda6963209113f84594e404354cc582e8 +0 -0
- data/.git/objects/4d/9704955df155e2bfd5ac13017b1a3b01ccd6d3 +0 -0
- data/.git/objects/4d/a90d051a87ade6d172109cebba451ef76b90f0 +0 -0
- data/.git/objects/4e/21425b0845de1de7bd9f7e4ffd22fe28251898 +0 -0
- data/.git/objects/4f/99473eac64408d4d6709502ba8039304214d6c +0 -0
- data/.git/objects/4f/a066bf0a5599a8c04fbc240585a4e9716b9b5a +0 -0
- data/.git/objects/50/4efb663b698b26f3f044f4104d765c67133b15 +0 -0
- data/.git/objects/50/9ed21cbf85f55529619386471bba93e33da0bb +0 -0
- data/.git/objects/50/b6f2b0538eb1f31cc7aa3b29c195ba240e4637 +0 -0
- data/.git/objects/50/e4e4d6346229f05230a0e45599592a0787e714 +0 -0
- data/.git/objects/51/74e5d98750d1e3d7a4f8975740f195a3e2a27e +0 -0
- data/.git/objects/51/cdd46a3cc31fd350d00e6308dc45170fc791cb +0 -0
- data/.git/objects/52/60eb6439791d94f701893589dea79d4b50ccb7 +0 -0
- data/.git/objects/52/77d84ef7a006d1b4010d5af312fd60a2b6b602 +0 -0
- data/.git/objects/53/266f4e50d068848d24bb34440be7f6743b5c4b +0 -0
- data/.git/objects/53/431e1487c092e9a3ce9fca540279fa066470c8 +0 -0
- data/.git/objects/53/e9aa232e38e27dc1abd0359d81bd987184dcb3 +0 -0
- data/.git/objects/53/f93583e2d0aacf6851202f3134b78558178fd2 +0 -0
- data/.git/objects/54/5e89999b8afe2212bc1e7c19474ef4c7c43f59 +0 -0
- data/.git/objects/55/e3bc6fa8cc93f73c18d5d1e9e6fd618ef3ac76 +0 -0
- data/.git/objects/56/5ccaaab0b368dde5c76d1bafe626dc1e59070f +0 -0
- data/.git/objects/57/376202dbbcdd513e0db5588a577a6aee50a9fc +0 -0
- data/.git/objects/57/a44ff03d32887503db58f17f7741346713b3e2 +0 -0
- data/.git/objects/57/e7d31d34637a1d876ed5276a658e5a23716f30 +0 -0
- data/.git/objects/58/0f333667fb854facba0d4f239fca57f9d9f653 +0 -0
- data/.git/objects/59/39e265e8a76bda368fa4164eb9e7a552789cf2 +2 -0
- data/.git/objects/59/8b67f4d802b2efe9a92362ee37cf144d1d9faf +0 -0
- data/.git/objects/5b/07e74a5e0c6da543b53be0d3b05516ce3941fd +0 -0
- data/.git/objects/5b/18a3b14623f9440cf82c7efe1b5cde6af597d7 +0 -0
- data/.git/objects/5c/ebd3382a5f7f19a0659cb39dbcea9ad88ba1c2 +0 -0
- data/.git/objects/5d/4ae7c60a4cc1d3e2a6d282f235a1e9096f0bfe +0 -0
- data/.git/objects/5d/64bbca2c6c2e2aff30527ec4674061fa53fde0 +0 -0
- data/.git/objects/5d/d46ad92a7f9d81da7435bc5c83aec86c1be948 +0 -0
- data/.git/objects/5d/e88423ea237716e86b9bd27db09a569b0fc20f +0 -0
- data/.git/objects/5d/e8f2a6d724595ebbc29008a2edb6cce473918d +0 -0
- data/.git/objects/5e/62a3357c8e74a7904d7e706efb6b8fe63357a7 +0 -0
- data/.git/objects/60/cdc9a04b2b9e08289f23796ce482d798e2db92 +0 -0
- data/.git/objects/61/3424f453546d8a1f8fc2b0be1c4c95ff53ecb7 +0 -0
- data/.git/objects/63/00ee0a2a016d6b0794048aff55d3433be039c4 +0 -0
- data/.git/objects/63/6e394aa325e47db0eed342bf2e12aa399c3098 +2 -0
- data/.git/objects/63/ebf3d1a2749e3f057a1072f06eaa930bf5ad75 +0 -0
- data/.git/objects/64/5b3c75e715ddbb661f801c06b3adabf6a3e066 +0 -0
- data/.git/objects/64/dfc70de62efd6ea7541be7b5a36bacb1198fa0 +0 -0
- data/.git/objects/65/a0fb1b9e455b2b2cba0e8731de87280ac8aa22 +3 -0
- data/.git/objects/65/ba9692cf1899a03942d1b02d5c93e33821974d +0 -0
- data/.git/objects/66/b7e33bcc5622621035bff8a82bc171d664982f +0 -0
- data/.git/objects/67/00a716ad87fe78ead9713be45f5e0b1266cc21 +0 -0
- data/.git/objects/67/ce97268fbb33b735f807dde1a8efd1501c030e +3 -0
- data/.git/objects/67/df417008b64d7d72b6163ba474761aa6a17380 +0 -0
- data/.git/objects/69/2dccf75e84c9794b9797aaccd6320c6ea0ba37 +0 -0
- data/.git/objects/69/7d992ebcebbc881951b38eb500672675c5e7f8 +0 -0
- data/.git/objects/6a/a0dc813d71bb8347c94db948bf2aabd2c1f790 +0 -0
- data/.git/objects/6b/295f9cd0ff1efdd429d871c64209a5544cec7c +0 -0
- data/.git/objects/6b/86b6c9798979d6226bcaed7e873ac1afaad209 +0 -0
- data/.git/objects/6c/170abbcd3a502a378baf97bda2fa1e707c020d +0 -0
- data/.git/objects/6c/92bc7f0be37bc7f4a566ac14ee870a82a409d9 +0 -0
- data/.git/objects/6c/99771605f20f2378447e65628b05a84756545c +0 -0
- data/.git/objects/6c/a688550c1244cd6948f4a1c40deaa3b86cacd5 +0 -0
- data/.git/objects/6e/3f8cb98de3f9d1512044a7daa76f7d19e84f57 +0 -0
- data/.git/objects/6f/21816af73d7f191bc6eb9717410fe617e7bcfa +0 -0
- data/.git/objects/6f/407981eb856f527e3caeda4809ac7afc7e830f +0 -0
- data/.git/objects/6f/60f0227a959183eed086ad16d79046084a9776 +2 -0
- data/.git/objects/6f/e0bb96c78fd55fb4f3b358b42c667e153d10f6 +0 -0
- data/.git/objects/6f/e7881e6f0825bcb1f1d6de177800a2ef5b9b51 +0 -0
- data/.git/objects/70/c7e15fa85f591d6d8889b0f2b2844b95053ad1 +0 -0
- data/.git/objects/70/f2390dc75f65e3cf9362ab3010a9325b29d5d8 +0 -0
- data/.git/objects/71/11f95beb0111cec9893e69671dccae58edf2bc +0 -0
- data/.git/objects/71/3459b19870171e76cbc28d03fa18581c85325a +0 -0
- data/.git/objects/71/3e733cc5591ada03111aed97f6fc14e1932710 +0 -0
- data/.git/objects/71/4b0bd487c6ca2b251788e7534c5819bbc33412 +0 -0
- data/.git/objects/73/8c6a50e47be1e016fb14e2bb52d86c898e83a6 +1 -0
- data/.git/objects/75/320c6ecfa5be14e781e1b6ad2cd7d11b01c478 +0 -0
- data/.git/objects/75/90312a8b03581357866e73fa1054e056fb5462 +0 -0
- data/.git/objects/76/17d2a15c06e8fbf937cb47808ee5ceac6b5b2d +0 -0
- data/.git/objects/76/e7244dc60d80236145f7812c55f5d39cde3e7f +0 -0
- data/.git/objects/76/f7c6537295f713e4329fc66a2a63ce6e6ef72f +0 -0
- data/.git/objects/77/8e5e76c4ec22c489f12397d3b6ccde3349e07e +0 -0
- data/.git/objects/78/53a4c9e6ad7bd44cdd3fb1a6ed8cd2573adc9e +0 -0
- data/.git/objects/78/78c54fbccbe5c0e50e7a36ee6fa312193a024a +0 -0
- data/.git/objects/78/7be253e082c7109e7a8c808cd41fba1b3bf5a1 +0 -0
- data/.git/objects/78/97c1eeca4d2195c88c7c84ce96d3da7d13e562 +0 -0
- data/.git/objects/78/a8376298347629997530845ee1833f0fa5e6f4 +2 -0
- data/.git/objects/79/305ea902691c2cbf364486e4127f14846cebc9 +0 -0
- data/.git/objects/79/5e70e003f8503fb7a9c44f1c238288e1e4c3a7 +0 -0
- data/.git/objects/79/aae79039ff078fd48577bfca8fe531a8cad34a +0 -0
- data/.git/objects/7a/1d4924a53eec1daf12f305e689a71362a2752e +0 -0
- data/.git/objects/7b/0f7e086863f46eb752bd84e3c65b2fdd450e69 +0 -0
- data/.git/objects/7b/3ece1f51ecab91d56ebc756ca8a12683be4c28 +0 -0
- data/.git/objects/7b/8a8a6d109dc02f0157c8b057197084c1e31ae3 +2 -0
- data/.git/objects/7b/a8ad9999a890a0717d80d29151ca0ea6b7d911 +0 -0
- data/.git/objects/7b/ffce55d6b304f39415478d5964f7690b155094 +0 -0
- data/.git/objects/7c/1c5c24874f7408d7fc8e6487ae2ca8f8c4dc46 +0 -0
- data/.git/objects/7c/d89e5386c46610a9874e4c91ad564df3d30d22 +0 -0
- data/.git/objects/7e/1bb64631912de70ca18a342bd366a0761f7027 +3 -0
- data/.git/objects/7e/69f5cdac8d896357c005cf50f7fef9365ac5b7 +0 -0
- data/.git/objects/7e/9ed5afec22056a1d62b2ac620fc568726654dd +0 -0
- data/.git/objects/80/a1777bd32df0d8168596e67764bea543e364b6 +0 -0
- data/.git/objects/81/6b4d885daad51e09fe28f6fd15641a9f59a69a +0 -0
- data/.git/objects/83/126f3a04822d71b0b0e73654da341545ae9bce +0 -0
- data/.git/objects/83/4e09ad5a2489d3f0a3e87dbbd3597a1edffd5b +0 -0
- data/.git/objects/84/49fd043cf7a34eeb2c7f32a704143d48352b3a +0 -0
- data/.git/objects/84/70d095caf8bfac04f3e55c68cc894ec400aa7c +1 -0
- data/.git/objects/85/c92dd2c409f8f9c122e210c61382abdff455fb +0 -0
- data/.git/objects/86/9f87619de0aa96c1e07d6f78e0ee813158d0b6 +0 -0
- data/.git/objects/87/635d93bcdbafec9c80137643eb532cf983d6cb +0 -0
- data/.git/objects/88/1e5e54da73d7732f40ec61bcbcc40dfdfa6a32 +0 -0
- data/.git/objects/88/323db633ec2dcb8c8aa69e7b057811c518aa2e +0 -0
- data/.git/objects/88/777e3e8f9b98245b6ac25b35867968fa35de9b +0 -0
- data/.git/objects/89/2b4e8c0e692c60352e42e58c561f9260cf64f3 +0 -0
- data/.git/objects/8a/0cb85400031c1ca6586278360277b0eedd9b17 +4 -0
- data/.git/objects/8a/3ad66a857a353ec8731e137a7e8d084e311342 +0 -0
- data/.git/objects/8a/785b8373e204bddcb5b81dbef9e51bc03c50c8 +0 -0
- data/.git/objects/8a/c1a112440be65dbf997d0a4672256a22de26a4 +0 -0
- data/.git/objects/8b/04c172bd5eb0dc99e90171cc198f66d001c036 +3 -0
- data/.git/objects/8b/5d65b4902079ad03086e9df352e09e02811ba1 +0 -0
- data/.git/objects/8b/863d5cf4d837ea12203c7acce48e53722a8a98 +0 -0
- data/.git/objects/8b/d24176c9898f97a9fdcc5dff5d2247e1a84ec9 +0 -0
- data/.git/objects/8c/1b8b280ab3f2a7d75df63cf9c427328824960e +0 -0
- data/.git/objects/8c/828a466da87606833098e4e25cd15bffda090a +2 -0
- data/.git/objects/8d/6ff005fd51f6b3fd01378fb2c5b7648d1c216a +0 -0
- data/.git/objects/8d/79a728f42fca3b5439dccbd37cfa697d73dcec +0 -0
- data/.git/objects/8d/c03482a05fa309478eef762bb66875d215839d +4 -0
- data/.git/objects/8e/3765090e2352071d06dae581444322c5cd1c7f +0 -0
- data/.git/objects/90/359907f370a92516fc2324278c19fae8ee7d10 +0 -0
- data/.git/objects/91/1236dbd46fca67a4dfe398ba57a00a0d52ba87 +0 -0
- data/.git/objects/91/c98e89dad41640efcd127dd48c4f1e7a4b8a3d +0 -0
- data/.git/objects/92/9662b659f468e6a33942bad2bd18542e23c01f +0 -0
- data/.git/objects/93/f4b074b8b8487dea84b3e99f5a21d2f8fd8184 +0 -0
- data/.git/objects/94/1b2b78eec40959dc4dd2d17daef5928d083ced +0 -0
- data/.git/objects/95/a584fd118d43b5c6ab1fc39a0586f347bee687 +0 -0
- data/.git/objects/95/cde2fb622eb202b29721023e6841c4c2399333 +0 -0
- data/.git/objects/95/fa926b7fc9fac39ddeb63b00e3d5ada24587c6 +0 -0
- data/.git/objects/96/1b951bf21ae5bed28243e0caa0622985542ead +0 -0
- data/.git/objects/97/5b2d0c76a62a72bf6dbcbc5d9697a7602290b9 +0 -0
- data/.git/objects/97/aa57c81d9d531ba527a7d0e70751dc6e8c64f6 +0 -0
- data/.git/objects/97/b957c129ad40aa10e5571a63cb0ae8b481d941 +2 -0
- data/.git/objects/98/e552050c08e3b9603bb7427359a75cea3e353f +0 -0
- data/.git/objects/99/bd3a9fa19a7fdf5fc8c44a468af2f4bc077b76 +2 -0
- data/.git/objects/9a/ac55335e524ec8863e943ae7428fbf996c3304 +0 -0
- data/.git/objects/9b/062274d3658d30d62021967bebc0c6856934e6 +0 -0
- data/.git/objects/9b/2203d14e86a098f2c2ecef381ec59faec420cb +0 -0
- data/.git/objects/9b/636f6bfa8b4e8192115f52113443cf98447c88 +0 -0
- data/.git/objects/9b/73f7f56a1a84958578739f4be3c096d5924d74 +0 -0
- data/.git/objects/9c/3099d7d6ebf96b0be74f827cb0b10e3b87b672 +2 -0
- data/.git/objects/9c/9c0ee371afd3b0eb68f7d0226b599f08bcd482 +2 -0
- data/.git/objects/9d/13d10d00768f911caa8c8ca04dffa439ecf4ea +0 -0
- data/.git/objects/9d/e7071bd41dffb92bba3f9f86a721630fdc1aa9 +0 -0
- data/.git/objects/9e/3a9aec41ae84e3c06f7e4722552a0044b465b5 +0 -0
- data/.git/objects/9e/8afbc28b44770ae370c8b862e7aa23d7c50677 +0 -0
- data/.git/objects/9e/9b707e1b45892f331aab711e41cf180946eeb7 +0 -0
- data/.git/objects/9f/3e38fa0ab2f318dccf60deff7faa1627d786ff +0 -0
- data/.git/objects/9f/68c404894f1889d63149f7208fecde6a954ca6 +0 -0
- data/.git/objects/9f/702d060f867a0e718c358dd038cf0138aaac6a +0 -0
- data/.git/objects/a0/b3b3b57939fefb926ebc47cc54ce62cbdd4090 +0 -0
- data/.git/objects/a0/df06324014b1304ac19478e99f433d7b4418aa +0 -0
- data/.git/objects/a2/43f3f2f12cc3d49ba6e8a18d6b697a65e8f126 +0 -0
- data/.git/objects/a2/62095bd0baf1e49e213fce6ec0a0de56d853e3 +0 -0
- data/.git/objects/a2/856190ff943f0775766fca13349df397fa52c6 +0 -0
- data/.git/objects/a3/7350e946973d70cf427f9f7c3d6f6aad4c55eb +0 -0
- data/.git/objects/a4/e004d28e7d33b475a9103be6882829ebd2d6a3 +4 -0
- data/.git/objects/a6/1888b288c5e7af5c53b294d483d9070c0a7d3e +0 -0
- data/.git/objects/a6/94bca7ceec06c9bb79b9829071a489e9d4ebb8 +0 -0
- data/.git/objects/a6/a2cbb1fac2eaf774002042924b0712b26ae652 +3 -0
- data/.git/objects/a7/25e954ee21dca54e9f8d9b5417b3cd99ba886c +0 -0
- data/.git/objects/a7/87d79b2e97da0f5eb758ff025baaf511781046 +0 -0
- data/.git/objects/a8/b25cad8d209156ca2db13ea5bee20a2b3a05e6 +0 -0
- data/.git/objects/a8/dc0cd466b7c34722d897f4974c110bef836980 +0 -0
- data/.git/objects/a9/211499bcaf3f4fd7e2290cac12198f642d1282 +0 -0
- data/.git/objects/aa/6f08c49793188be786702d438987bad805766d +0 -0
- data/.git/objects/ab/010a868506a2d0a69bd0aed8d065d15baa69c9 +0 -0
- data/.git/objects/ab/c39534f0c26d68e3de8c97e34122669f18a09e +0 -0
- data/.git/objects/ac/2902dd65c3d61288402922a7efde1de10dd633 +0 -0
- data/.git/objects/ac/9c7cc8840a7cd6077296f7be3d7fb52d4466b6 +0 -0
- data/.git/objects/ad/413b9cae01a468afd60b971fc3d6ae86bb9361 +0 -0
- data/.git/objects/ae/249122582a305d1794dce9d6f6a049824b5308 +0 -0
- data/.git/objects/ae/ea27d8df3a106ef0525148b580a3948fef74dd +6 -0
- data/.git/objects/af/d8cdab71ffcf621e96e6fff93fc5ca45625127 +0 -0
- data/.git/objects/b0/29e153cf5218a7255551bdca19bb79feb17ea9 +0 -0
- data/.git/objects/b0/47fd6101725533a0fabc4b7199cfb73bc5bf9a +0 -0
- data/.git/objects/b0/82d678ee011d561d198665e7359ca406773159 +0 -0
- data/.git/objects/b0/a31881666ce8acca54c8d632bb553be1d91757 +0 -0
- data/.git/objects/b1/04d93a36e9f312d7b2351e5fb94eb016156f99 +0 -0
- data/.git/objects/b1/85f51014fec1b6c70726d4307663c924355114 +0 -0
- data/.git/objects/b2/84b25c437df91c282dc4820df09c4570d723ce +0 -0
- data/.git/objects/b2/a575826207db2d4b9d94723c1c3087f867f7e4 +0 -0
- data/.git/objects/b2/b137e3ca23c380a7f60fcb7bd28fe04f9441f5 +0 -0
- data/.git/objects/b2/f4ea4f1e671744ff14ffd56bd7d292c695d696 +3 -0
- data/.git/objects/b3/1de97d5075672602cb5c9fae6e95d940aaba36 +6 -0
- data/.git/objects/b3/35c376699feacea207abd0475cdc68b48747ee +0 -0
- data/.git/objects/b3/5dfc774dcf7ec444e19c9b6cc764ea5f41900c +0 -0
- data/.git/objects/b4/79d5a9bd49b1b8c32808f941ce65debee36139 +0 -0
- data/.git/objects/b4/cfb29ab1c73413ed6a6417b66a2eaae7bdf7e0 +0 -0
- data/.git/objects/b5/9adfc4a11c54d5f4398233e53d08267fef9b80 +0 -0
- data/.git/objects/b5/9d9d3446193a9692a8cccd8f562d9cf60ecaa7 +4 -0
- data/.git/objects/b5/b4c46e35b44660b2b93b3ef0155ecb1746a082 +0 -0
- data/.git/objects/b5/c8fa5ae84d212dfc0c64785882ec4cb20d85c9 +0 -0
- data/.git/objects/b6/dcaf42f3d422c3a8a1e0b2c18608de160548a8 +0 -0
- data/.git/objects/b8/1c8fa62133022e0a834c55b5815cf9cbdb9202 +0 -0
- data/.git/objects/b8/2384758cf98411f830df689943c0fbd674e022 +5 -0
- data/.git/objects/b8/a1758c0c10af63c7323e2373ac423252b99a93 +0 -0
- data/.git/objects/b8/b8c64cb25842612e714f22a8139cd44c65c926 +0 -0
- data/.git/objects/b8/ebebbca06dcb68c14ca429874b485ddf03ee27 +0 -0
- data/.git/objects/b9/7f88a23d0f792feefba8b5fc1e4df63b6620c8 +0 -0
- data/.git/objects/b9/954e8e721374701fdb776954c2f2f93a5edbe9 +0 -0
- data/.git/objects/b9/966ce383e367fe9b12c77ba678c4bfdc76a959 +0 -0
- data/.git/objects/b9/bb5e2c33bf4a5642838c20a2e35f22c40297c6 +0 -0
- data/.git/objects/b9/e726d4140a7131cee69472f6590c137f8521af +0 -0
- data/.git/objects/ba/2b4a2bc320220004708b81fc8cccef29e03fc4 +0 -0
- data/.git/objects/bb/2aac79cb6a0eb6566c8455bd12300d27d3343d +0 -0
- data/.git/objects/bb/73bf8f42ede6e354de9a590b930338f5570fa0 +1 -0
- data/.git/objects/bb/ae9af7f60461e20dd2d7a0f108104d9f160412 +3 -0
- data/.git/objects/bc/885cb5cf50501f14126dc532e6d09ac00b2238 +0 -0
- data/.git/objects/bc/c11e8a013ffd39fa6ed6b8bc9512bb83f67df9 +0 -0
- data/.git/objects/bd/efe7403bd68a2da2f387c722ff3b9ee5328523 +0 -0
- data/.git/objects/be/ff3b42a8ca5d75e07df86e2c17d871c1e68826 +0 -0
- data/.git/objects/bf/b002912c8378aa78cb0adcf50074b32bcf5ae3 +0 -0
- data/.git/objects/c0/9c0fbc504f6df8b9640b7d4ff87346e3144845 +0 -0
- data/.git/objects/c1/a3547a81cefabc98a12b5b5a50b0feae011c69 +0 -0
- data/.git/objects/c3/4066a76f249ccaa43fbaecb1eb557480cc3378 +0 -0
- data/.git/objects/c3/74191e5a1eba2d800dbf9b2c83973c6b51d713 +0 -0
- data/.git/objects/c3/d1e150f420d1a01ce6e2bd861934eee5e94026 +0 -0
- data/.git/objects/c4/7a9879b833c21e532db1b58e95e5467e418b35 +0 -0
- data/.git/objects/c5/57132215876f38688a4c181fe40bdd246f4c1c +0 -0
- data/.git/objects/c6/4f6c806b8dbd41d3db37dbbf0f6600d8f5fae3 +3 -0
- data/.git/objects/c6/6303e15cd2d9c32bb447bf5f7b603d726dbfc7 +0 -0
- data/.git/objects/c7/483a0bb0699fd9d7cfd319c0266e581f5ce915 +0 -0
- data/.git/objects/c7/97e471479581d0fb3be317565183cbc5f1dd5d +0 -0
- data/.git/objects/c8/998112ed02a9647e3938e496febdf6605ece5e +0 -0
- data/.git/objects/c9/eaadd36cfea47bc439959d677ae21edeab142b +0 -0
- data/.git/objects/ca/6d8694fa3ed50d8cd8a38b9cf034167b44e597 +0 -0
- data/.git/objects/cb/1329c9ec4f9e51b29f236e0e9474d986bb3da7 +0 -0
- data/.git/objects/cb/7c0924f9e118b2806fab38f360b7685b465289 +1 -0
- data/.git/objects/cb/7fbb34dc56f3d07ae17391753db4f75f19a798 +0 -0
- data/.git/objects/cc/63e2856effb0a8a3c6cc9fd6839be6a7b9f3a4 +0 -0
- data/.git/objects/cc/b7df65a08df09b5b8adce9042199d751291a94 +0 -0
- data/.git/objects/cd/515200225510faaa04d81008b9f43d43bd60b3 +0 -0
- data/.git/objects/cd/5fd0305fa6131307234aea7b47fabeddf4aaf7 +0 -0
- data/.git/objects/cd/9e2a04080e436522950a71722d82550113ae1e +0 -0
- data/.git/objects/cd/e7bd86b12df36ae8cfe3dda9f608bf494e728c +0 -0
- data/.git/objects/ce/34be5fc9a6c41074cc56d402931012c398ff04 +0 -0
- data/.git/objects/ce/d6d56c23c5d7e06f538b7a4facf45c989d86b2 +3 -0
- data/.git/objects/cf/76a1188f82bb08c37abc06091fdbbebeeb9718 +0 -0
- data/.git/objects/cf/dfef5517c784da0b43b881c567cf85370f5979 +0 -0
- data/.git/objects/cf/e213d32cc616dc681957a269828aa847bf5242 +4 -0
- data/.git/objects/d0/1b3a5d03d70a2cc152642b2917f1d80d197bd4 +0 -0
- data/.git/objects/d1/5b22644cd247fd073934b6133cc2bffd9fb5b5 +0 -0
- data/.git/objects/d1/f46a55e35c123dc75764ab31de10714bd04b1a +0 -0
- data/.git/objects/d2/c114c21fae06454fde660baed5d9c671e50333 +1 -0
- data/.git/objects/d3/6003f5eefacad8e83eb14cf84f262cb77025df +0 -0
- data/.git/objects/d4/716809130d42c7bef1a68aba435efcb89c4d98 +0 -0
- data/.git/objects/d5/b9bda062c482d8822a6ea3033f762c935e029a +0 -0
- data/.git/objects/d5/ca249aafdd9154263a71e910b5c622051f3b48 +0 -0
- data/.git/objects/d5/fab06efb5db0085e6e234a51a4793f18456572 +0 -0
- data/.git/objects/d6/b59131dead2efe6abc09b6cbf862b475573002 +0 -0
- data/.git/objects/da/1616e10e98c3f674c7b0883f1dc83ccaa2409b +0 -0
- data/.git/objects/db/0518a528f909980f135e069ab7bf114172bcaa +0 -0
- data/.git/objects/db/10ee359e46839c8c50b144adb968411046ad8d +0 -0
- data/.git/objects/db/3f2e650ed4862a0d41d02c6d36cd9b7f8834db +0 -0
- data/.git/objects/dd/53408884587bf078c70a4a14938fd9f305ea5e +0 -0
- data/.git/objects/dd/cfadc42bc18f6db186bfa8a1fc836c3fbbd4e8 +0 -0
- data/.git/objects/de/9b93fbe6acfad3b84c70e2a8b5a70b05690010 +0 -0
- data/.git/objects/de/ca26d2d1028d55f91623e81de3cc3466535f7d +0 -0
- data/.git/objects/df/116edf599e20eb744bcfe2abb2e341833c69af +0 -0
- data/.git/objects/e1/92debcc9cae10cb30ee20a4aa8704f00342a3a +0 -0
- data/.git/objects/e2/544e4579913a6b3aa2dbf2d9f109995e18c96e +0 -0
- data/.git/objects/e2/aeb737ec84f4242760bc415920699dc762404c +0 -0
- data/.git/objects/e2/fe6c652adafe350def706d7cdd94a5d8716e74 +2 -0
- data/.git/objects/e3/1b4da66505b8f78677ebe06c3db70b76083b0c +0 -0
- data/.git/objects/e3/650119a24537d22bf2bc1be4b90639bd2bee64 +0 -0
- data/.git/objects/e4/75098073c2c1b0fe03ef6c5e47b7eeb500ead0 +3 -0
- data/.git/objects/e4/833c84dbd110a660a04b1d30645cb2ff1cbffa +0 -0
- data/.git/objects/e4/bc2d37489ab33d7eb424068a4913bcae58488c +0 -0
- data/.git/objects/e5/160ab2e9f179c0558cae26a8650e3a7e7d2405 +0 -0
- data/.git/objects/e5/8944a7e9eec75020add195ae9a499c730ae4a5 +0 -0
- data/.git/objects/e5/c992394b0dd46eeaa81c43541135b8edc17937 +0 -0
- data/.git/objects/e6/3de9614877cf35a7f8c274dfb421cca3cdfb40 +0 -0
- data/.git/objects/e6/aac3b5ac998c4d7e17be35880b17abcf7542b0 +0 -0
- data/.git/objects/e6/f109b20ad9e989bd2ac1707a18061b35b62979 +0 -0
- data/.git/objects/e6/f2bb505d646d0a591b0c1585963dfa35bf73d2 +0 -0
- data/.git/objects/e6/fbe17ed585b0c1b887082104881b27b15c29e3 +2 -0
- data/.git/objects/e7/10843512f110ea8d2613c56381889b6a324e39 +0 -0
- data/.git/objects/e7/c2c34b04ad1d3901a7bc86ecf265d019dab705 +0 -0
- data/.git/objects/e8/9a2307dcbbff16a025de59b3bf26788cb23d09 +3 -0
- data/.git/objects/e8/c0bc7345708838fc9393a332e989a38a968d06 +0 -0
- data/.git/objects/ea/3941bdb32e8cb84043fc7af6b3231341325e2d +0 -0
- data/.git/objects/ea/d37982817997bbb8c8e8fffb4b7e98df0cf457 +0 -0
- data/.git/objects/ea/e0da3444fa6573864bfb7e48e9f6ba125869af +0 -0
- data/.git/objects/eb/153d0314b641c49d80f6dfbaf1cdc0dc8259ce +0 -0
- data/.git/objects/eb/9313d1f8f551d37baa1a7bad6d689a2d83f6e9 +0 -0
- data/.git/objects/ed/94fadd714587bb0fe351681a34372b419d0ff9 +0 -0
- data/.git/objects/ed/cd5f42804a33f5fb22bfa43ef1c47c9440251d +0 -0
- data/.git/objects/ed/ee148af9b450bc8590c372ae1ca4424fc143b7 +0 -0
- data/.git/objects/ed/f2eda0b5c0089e6e2c8fe1bdd839e994f8594a +0 -0
- data/.git/objects/ef/62ee17df4ecb637c6f13cd54aefb924eec53dc +0 -0
- data/.git/objects/ef/e3f3d6f4109a3548bc90e15d094d3530da5730 +0 -0
- data/.git/objects/f0/90346105855825e330ac497dae8d209e4570ce +0 -0
- data/.git/objects/f0/bd94709ad1de79406a72434884f4db615fdc43 +0 -0
- data/.git/objects/f0/be10fac5f4b2aed38ccd798df8d39e69e0a11b +0 -0
- data/.git/objects/f1/0f7f014de23ae992772585aea2be73895e651e +0 -0
- data/.git/objects/f1/4ea6e4fda79975aaa557562b76d7fd19066545 +0 -0
- data/.git/objects/f1/de5765db125e7aec2efaf7bb88e8ab4c1e6c77 +0 -0
- data/.git/objects/f1/f3ed0c35c329be28b20ea049b27f521867f3f5 +0 -0
- data/.git/objects/f2/e7a1aa43e1b62a11f49bede698eadb400695fd +0 -0
- data/.git/objects/f2/eb800dc21014ab10c68de7944dabdd4ae757f6 +0 -0
- data/.git/objects/f3/4c438428d2157177a3b3ee56d74fb8fa04727b +0 -0
- data/.git/objects/f4/9bea33da8b585c3b154be37a1a34520d275ce1 +0 -0
- data/.git/objects/f4/b0e30205ce1070a1cb715688e57312a0db0dfd +0 -0
- data/.git/objects/f4/b80886a90899ff86d844fd56e3bbf925664b19 +5 -0
- data/.git/objects/f5/1d1d64a22609cdeea03d5a2029a1c8fdf33317 +0 -0
- data/.git/objects/f5/7a5c8702ddaf9365b8a464d1f2ba30ba39682f +0 -0
- data/.git/objects/f6/07258715a85337f25171ca7ccc5eda10c4f4e4 +0 -0
- data/.git/objects/f7/623557748a510a7bc20a609dc24e71292a568f +0 -0
- data/.git/objects/f7/6da87c06061278e529eeb4d102f15af684e912 +0 -0
- data/.git/objects/f8/b613e7c2c2e8a40f95a568f28ad45927ceafc3 +0 -0
- data/.git/objects/fa/d2dc0d2e9eeafbfe4885ee062a134e633c0fda +0 -0
- data/.git/objects/fb/459110cdbd4084743451394a8bf4c90791d724 +0 -0
- data/.git/objects/fb/92a236a378b1216ae18b4c35cc4b26333a81bb +0 -0
- data/.git/objects/fb/dcc9a131a7386c62d92b7fb00492108ff87223 +0 -0
- data/.git/objects/fc/2bd57e5586210bc0906acd8aa1c19c22ad540a +0 -0
- data/.git/objects/fc/46a539285ca9be06d78d006fc3a2c7d56f5af6 +0 -0
- data/.git/objects/fc/5b6d94dedb958442689e3ebd17ac4bb40f6687 +0 -0
- data/.git/objects/fc/ca0d2385304e5e3649eaf1ef23737a03ac4313 +0 -0
- data/.git/objects/fe/32d1a12b7456f9424fb35c2937256d7bdd5e35 +0 -0
- data/.git/objects/fe/c5b7f532cd2e9f8e24e396a650e54fc0e572f9 +0 -0
- data/.git/objects/ff/16e24cd63fd0cd6109d7ce8ba8dfd8d395e950 +0 -0
- data/.git/objects/ff/473ca839d45f670c8a0f066f8463502e2324f5 +0 -0
- data/.git/objects/ff/c0240ab4c1bb4960f6927119f628d9524f12f3 +0 -0
- data/.git/refs/heads/master +1 -1
- data/.git/refs/remotes/origin/master +1 -1
- data/Rakefile +26 -26
- data/lib/micon/managed.rb +60 -0
- data/lib/micon/micon.rb +147 -0
- data/lib/micon.rb +6 -0
- data/lib/ruby_ext/class.rb +2 -2
- data/lib/ruby_ext/declarative_cache.rb +71 -68
- data/lib/ruby_ext/extra_blank_slate.rb +16 -0
- data/lib/ruby_ext/file.rb +14 -25
- data/lib/ruby_ext/kernel.rb +61 -18
- data/lib/ruby_ext/module.rb +34 -8
- data/lib/ruby_ext/must.rb +149 -0
- data/lib/ruby_ext/object.rb +3 -3
- data/lib/ruby_ext/observable2.rb +23 -0
- data/lib/ruby_ext/open_constructor.rb +49 -49
- data/lib/ruby_ext/prepare_arguments.rb +6 -6
- data/lib/ruby_ext/string.rb +23 -13
- data/lib/ruby_ext/symbol.rb +5 -5
- data/lib/ruby_ext/synchronize.rb +24 -0
- data/lib/ruby_ext.rb +17 -17
- data/lib/vresource/class_loader.rb +150 -0
- data/lib/vresource/file_system_provider.rb +181 -0
- data/lib/vresource/file_system_reloader.rb +106 -0
- data/lib/vresource/module.rb +24 -0
- data/lib/vresource/resource_extensions.rb +14 -0
- data/lib/vresource/vresource.rb +153 -0
- data/lib/vresource.rb +12 -0
- data/old/README +1 -1
- data/old/declarative_cache_rem.rb +172 -0
- data/old/declarative_cache_spec_rem.rb +98 -0
- data/old/lib/RubyExt/ImportAll.rb +7 -7
- data/old/lib/RubyExt/Localization/Module.rb +5 -5
- data/old/lib/RubyExt/Localization/Object.rb +17 -17
- data/old/lib/RubyExt/Localization.rb +6 -6
- data/old/lib/RubyExt/Log.config.sample +25 -25
- data/old/lib/RubyExt/Log.rb +51 -51
- data/old/lib/RubyExt/Path.rb +89 -89
- data/old/lib/RubyExt/array.rb +22 -22
- data/old/lib/RubyExt/debug.rb +66 -66
- data/old/lib/RubyExt/false_class.rb +3 -3
- data/old/lib/RubyExt/nil_class.rb +3 -3
- data/old/lib/RubyExt/true_class.rb +3 -3
- data/old/old_concurrency_spec.rb +79 -0
- data/old/old_custom_scope_spec.rb +181 -0
- data/old/old_general_spec.rb +108 -0
- data/old/spec/RubyExt/ForKernel/Raise2.rb +3 -3
- data/old/spec/RubyExt/ForKernel/RaiseWithoutSelf.rb +7 -7
- data/old/spec/RubyExt/ForModule/NS2/A.rb +1 -1
- data/old/spec/RubyExt/ForModule/NS2/B.rb +1 -1
- data/old/spec/RubyExt/ForModule/NS2/M.rb +1 -1
- data/old/spec/array_spec.rb +21 -21
- data/old/spec/import_all_spec.rb +14 -14
- data/old/spec/localization_spec.rb +43 -43
- data/old/spec/object_spec.rb +3 -3
- data/old/spec/path_spec.rb +164 -164
- data/old/spec/state_machine_spec.rb +196 -196
- data/readme.md +102 -0
- data/spec/micon/custom_scope_spec.rb +72 -0
- data/spec/micon/managed_spec.rb +47 -0
- data/spec/micon/static_scope_spec.rb +61 -0
- data/spec/micon_spec_helper.rb +8 -0
- data/spec/ruby_ext/declarative_cache_spec.rb +115 -0
- data/spec/ruby_ext/kernel_spec/TheNamespace/ClassA.rb +7 -0
- data/spec/ruby_ext/kernel_spec/another_class.rb +5 -0
- data/spec/ruby_ext/kernel_spec/the_namespace/class_b.rb +11 -0
- data/spec/ruby_ext/kernel_spec.rb +53 -0
- data/spec/ruby_ext/module_spec.rb +128 -0
- data/spec/ruby_ext/must_spec.rb +23 -0
- data/spec/ruby_ext/observable2_spec.rb +42 -0
- data/spec/ruby_ext/open_constructor_spec.rb +36 -0
- data/spec/{prepare_arguments_spec.rb → ruby_ext/prepare_arguments_spec.rb} +2 -6
- data/spec/ruby_ext/should_spec.rb +24 -0
- data/spec/ruby_ext/synchronize_spec.rb +80 -0
- data/spec/ruby_ext_spec_helper.rb +17 -0
- data/spec/vresource/class_loader_spec.rb +101 -0
- data/spec/vresource/class_loader_spec_data/ClassA.rb +4 -0
- data/{old/spec/RubyExt/ForClassLoader → spec/vresource/class_loader_spec_data}/LoadCount.rb +0 -0
- data/{old/spec/RubyExt/ForClassLoader → spec/vresource/class_loader_spec_data}/ModuleA/ClassB.rb +0 -0
- data/{old/spec/RubyExt/ForClassLoader → spec/vresource/class_loader_spec_data}/ModuleA/ClassInsideAnonymousClass.rb +1 -1
- data/{old/spec/RubyExt/ForClassLoader → spec/vresource/class_loader_spec_data}/ModuleA/InfinityLoop.rb +1 -1
- data/spec/vresource/class_loader_spec_data/ModuleA/ModuleB/ClassC.rb +3 -0
- data/{old/spec/RubyExt/ForClassLoader → spec/vresource/class_loader_spec_data}/ModuleA/SameName/SomeClass.rb +0 -0
- data/{old/spec/RubyExt/ForClassLoader → spec/vresource/class_loader_spec_data}/ModuleA/SameName.rb +0 -0
- data/{old/spec/RubyExt/ForClassLoader/Scope → spec/vresource/class_loader_spec_data/ScopeA}/ScopeA1.rb +1 -1
- data/spec/vresource/class_loader_spec_data/ScopeA/ScopeB1.rb +5 -0
- data/spec/vresource/module_spec.rb +39 -0
- data/spec/vresource/module_spec_data/NS1/A.data +1 -0
- data/spec/vresource/module_spec_data/NS1/A.rb +1 -0
- data/spec/vresource/module_spec_data/NS1/A2.rb +1 -0
- data/spec/vresource/module_spec_data/NS1/B.rb +2 -0
- data/spec/vresource/module_spec_data/NS1/B2.rb +1 -0
- data/spec/vresource/module_spec_data/NS1.data +1 -0
- data/spec/vresource/module_spec_data/NS2/A.data +1 -0
- data/spec/vresource/module_spec_data/NS2/A.rb +3 -0
- data/spec/vresource/module_spec_data/NS2/B.rb +3 -0
- data/spec/vresource/module_spec_data/NS2/M.data +1 -0
- data/spec/vresource/module_spec_data/NS2/M.rb +3 -0
- data/spec/vresource/vresource_spec.rb +137 -0
- data/{old/spec/RubyExt/ForResource → spec/vresource/vresource_spec_data}/ChangedClass.rb +0 -0
- data/{old/spec/RubyExt/ForResource → spec/vresource/vresource_spec_data}/ChangedClass.res/Text.txt +0 -0
- data/{old/spec/RubyExt/ForResource → spec/vresource/vresource_spec_data}/ChangedClass.txt +0 -0
- data/{old/spec/RubyExt/ForResource → spec/vresource/vresource_spec_data}/ResourceExtension.rb +0 -0
- data/{old/spec/RubyExt/ForResource → spec/vresource/vresource_spec_data}/ResourceTest/Test.rb +0 -0
- data/{old/spec/RubyExt/ForResource → spec/vresource/vresource_spec_data}/ResourceTest/Test.res/Data.txt +0 -0
- data/{old/spec/RubyExt/ForResource → spec/vresource/vresource_spec_data}/ResourceTest/Test.res/txt +0 -0
- data/spec/vresource/vresource_spec_data/provider_chaining/provider_a_dir/ChainTest.rb +3 -0
- data/{old/spec/RubyExt/ForResource/ProviderChaining/ProviderABaseDir → spec/vresource/vresource_spec_data/provider_chaining/provider_a_dir}/ChainTest.resource +0 -0
- data/{old/spec/RubyExt/ForResource/ProviderChaining/ProviderABaseDir → spec/vresource/vresource_spec_data/provider_chaining/provider_a_dir}/ClassExistOnlyInProviderA.rb +1 -1
- data/spec/vresource/vresource_spec_data/provider_chaining/provider_b_dir/ChainTest.rb +3 -0
- data/{old/spec/RubyExt/ForResource/ProviderChaining/ProviderBBaseDir → spec/vresource/vresource_spec_data/provider_chaining/provider_b_dir}/ChainTest.resource +0 -0
- data/spec/vresource_spec_helper.rb +9 -0
- metadata +564 -58
- data/README.rdoc +0 -3
- data/lib/ruby_ext/declarative_cache_rem.rb +0 -172
- data/lib/ruby_ext/synchronizer.rb +0 -31
- data/old/lib/RubyExt/ClassLoader.rb +0 -142
- data/old/lib/RubyExt/ExtraBlankSlate.rb +0 -14
- data/old/lib/RubyExt/Resource/file_system_provider.rb +0 -273
- data/old/lib/RubyExt/class.rb +0 -0
- data/old/lib/RubyExt/kernel.rb +0 -3
- data/old/lib/RubyExt/module.rb +0 -26
- data/old/lib/RubyExt/observable.rb +0 -25
- data/old/lib/RubyExt/resource.rb +0 -172
- data/old/rakefile +0 -52
- data/old/spec/RubyExt/ForClassLoader/ClassA.rb +0 -4
- data/old/spec/RubyExt/ForClassLoader/ModuleA/ModuleB/ClassC.rb +0 -3
- data/old/spec/RubyExt/ForClassLoader/Scope/ScopeB1.rb +0 -5
- data/old/spec/RubyExt/ForResource/ProviderChaining/ProviderABaseDir/ChainTest.rb +0 -3
- data/old/spec/RubyExt/ForResource/ProviderChaining/ProviderBBaseDir/ChainTest.rb +0 -3
- data/old/spec/RubyExt/ForResource/ResourceExtension.res/Data.yaml +0 -2
- data/old/spec/class_loader_spec.rb +0 -94
- data/old/spec/kernel_spec.rb +0 -29
- data/old/spec/module_spec.rb +0 -14
- data/old/spec/observable_spec.rb +0 -44
- data/old/spec/resource_spec.rb +0 -136
- data/spec/declarative_cache_rem.rb +0 -98
- data/spec/declarative_cache_spec.rb +0 -100
- data/spec/kernel_spec.rb +0 -16
- data/spec/module_spec.rb +0 -127
- data/spec/open_constructor_spec.rb +0 -39
- data/spec/should_spec.rb +0 -27
- data/spec/spec_require.rb +0 -10
- data/spec/synchronizer_spec.rb +0 -69
@@ -0,0 +1,23 @@
|
|
1
|
+
module Observable2
|
2
|
+
def add_observer observer
|
3
|
+
@observable_observers ||= []
|
4
|
+
@observable_observers << observer unless @observable_observers.include? observer
|
5
|
+
end
|
6
|
+
|
7
|
+
def notify_observers method, *args
|
8
|
+
raise "Invalid usage, method must be Symbol or String!" unless method.is_a?(Symbol) or method.is_a?(String)
|
9
|
+
@observable_observers.each{|observer| observer.respond_to method, *args} if @observable_observers
|
10
|
+
end
|
11
|
+
|
12
|
+
def delete_observer observer
|
13
|
+
@observable_observers.delete observer if @observable_observers
|
14
|
+
end
|
15
|
+
|
16
|
+
def delete_observers
|
17
|
+
@observable_observers.clear if @observable_observers
|
18
|
+
end
|
19
|
+
|
20
|
+
def observers_count
|
21
|
+
@observable_observers ? @observable_observers.size : 0
|
22
|
+
end
|
23
|
+
end
|
@@ -1,51 +1,51 @@
|
|
1
1
|
module OpenConstructor
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
2
|
+
def set values, list = nil
|
3
|
+
unless list
|
4
|
+
if values.is_a? Hash
|
5
|
+
values.each do |k, v|
|
6
|
+
self.respond_to k.to_writer, v
|
7
|
+
end
|
8
|
+
else
|
9
|
+
values.instance_variables.each do |name|
|
10
|
+
accessor = name[1..name.size].to_writer
|
11
|
+
if self.respond_to? accessor
|
12
|
+
self.send accessor, values.instance_variable_get(name)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
else
|
17
|
+
if values.is_a? Hash
|
18
|
+
values.each do |k, v|
|
19
|
+
self.respond_to k.to_writer, v if list.include? k
|
20
|
+
end
|
21
|
+
else
|
22
|
+
values.instance_variables.each do |name|
|
23
|
+
accessor = name[1..name.size]
|
24
|
+
if list.include?(accessor.to_sym)
|
25
|
+
accessor = accessor.to_writer
|
26
|
+
if self.respond_to?(accessor)
|
27
|
+
self.send accessor, values.instance_variable_get(name)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
return self
|
34
|
+
end
|
35
|
+
|
36
|
+
def set_with_check values
|
37
|
+
values.each do |k, v|
|
38
|
+
self.send k.to_writer, v
|
39
|
+
end
|
40
|
+
return self
|
41
|
+
end
|
42
|
+
alias_method :set!, :set_with_check
|
43
|
+
|
44
|
+
def to_hash
|
45
|
+
hash = {}
|
46
|
+
instance_variables.each do |name|
|
47
|
+
hash[name[1..name.size].to_sym] = instance_variable_get name
|
48
|
+
end
|
49
|
+
return hash
|
50
|
+
end
|
51
51
|
end
|
@@ -3,7 +3,7 @@ class ArgumentsParser
|
|
3
3
|
def register method, arguments
|
4
4
|
# check and prepare metadata
|
5
5
|
arguments.collect!{|meta| meta.is_a?(Hash) ? meta : {:type => meta}}
|
6
|
-
arguments.each{|meta| meta.
|
6
|
+
arguments.each{|meta| meta.must.include :type}
|
7
7
|
|
8
8
|
# register
|
9
9
|
@registry ||= {}
|
@@ -16,7 +16,7 @@ class ArgumentsParser
|
|
16
16
|
parsed_args = metadata.collect do |options|
|
17
17
|
send options[:type], args, block, options, index, (index == metadata.size - 1)
|
18
18
|
end
|
19
|
-
args.
|
19
|
+
args.must_be.empty
|
20
20
|
return parsed_args
|
21
21
|
end
|
22
22
|
|
@@ -34,7 +34,7 @@ class ArgumentsParser
|
|
34
34
|
args.shift
|
35
35
|
end
|
36
36
|
else
|
37
|
-
|
37
|
+
must_be.never_called
|
38
38
|
end
|
39
39
|
else
|
40
40
|
args.shift
|
@@ -59,7 +59,7 @@ class ArgumentsParser
|
|
59
59
|
tmp
|
60
60
|
end
|
61
61
|
else
|
62
|
-
|
62
|
+
must_be.never_called
|
63
63
|
end
|
64
64
|
else
|
65
65
|
args.shift
|
@@ -73,12 +73,12 @@ class ArgumentsParser
|
|
73
73
|
|
74
74
|
def hash args, block, options, index, last
|
75
75
|
a = object(args, block, options, index, last) || {}
|
76
|
-
a.
|
76
|
+
a.must_be.a Hash
|
77
77
|
a
|
78
78
|
end
|
79
79
|
|
80
80
|
def _common_options a, options
|
81
|
-
a.
|
81
|
+
a.must_not_be.nil if options[:require]
|
82
82
|
if (default = options[:default]) and a.eql?(nil)
|
83
83
|
a = default
|
84
84
|
end
|
data/lib/ruby_ext/string.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
String.class_eval do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
2
|
+
def to_reader
|
3
|
+
self.to_sym
|
4
|
+
end
|
5
|
+
|
6
|
+
def to_writer
|
7
|
+
"#{self}=".to_sym
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_iv
|
11
|
+
"@#{self}"
|
12
|
+
end
|
13
|
+
|
14
14
|
def interpolate binding
|
15
|
-
binding.
|
15
|
+
binding.must_be.a Binding
|
16
16
|
return gsub(/\#\{.+?\}/) do |term|
|
17
17
|
identifier = term.slice(2 .. term.size-2)
|
18
18
|
binding.eval identifier
|
@@ -23,4 +23,14 @@ String.class_eval do
|
|
23
23
|
original = [Time.now, (1..10).map{ rand.to_s }]
|
24
24
|
Digest::SHA1.hexdigest(original.flatten.join('--'))
|
25
25
|
end
|
26
|
+
|
27
|
+
def underscore
|
28
|
+
word = self.dup
|
29
|
+
word.gsub!(/::/, '/')
|
30
|
+
word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
31
|
+
word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
32
|
+
word.tr!("-", "_")
|
33
|
+
word.downcase!
|
34
|
+
word
|
35
|
+
end
|
26
36
|
end
|
data/lib/ruby_ext/symbol.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'monitor'
|
2
|
+
|
3
|
+
class Module
|
4
|
+
def synchronize_method *methods
|
5
|
+
methods.each do |method|
|
6
|
+
als = "sync_#{escape_method(method)}"
|
7
|
+
|
8
|
+
raise "Can't synchronize the '#{method}' twice!" if instance_methods.include?(als)
|
9
|
+
|
10
|
+
alias_method als, method
|
11
|
+
script = "\
|
12
|
+
def #{method} *p, &b
|
13
|
+
@monitor ||= Monitor.new
|
14
|
+
@monitor.synchronize{#{als} *p, &b}
|
15
|
+
end"
|
16
|
+
class_eval script, __FILE__, __LINE__
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def synchronize_all_methods include_super = false
|
21
|
+
methods = self.instance_methods(include_super).collect{|m| m.to_sym}
|
22
|
+
synchronize_method *methods
|
23
|
+
end
|
24
|
+
end
|
data/lib/ruby_ext.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
core = [
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
2
|
+
'facets/array/indexable', # Array first!, last!
|
3
|
+
'facets/enumerable/every',
|
4
|
+
'facets/enumerable/group_by',
|
5
|
+
'facets/exception/detail', # pretty print
|
6
|
+
'facets/duplicable', # false.dup(), false.clone() and so on.
|
7
|
+
'facets/blank',
|
8
|
+
'facets/numeric/round.rb', # round_at, round_to
|
9
|
+
'facets/hash',
|
10
|
+
'facets/string/interpolate',
|
11
|
+
'facets/ostruct',
|
12
|
+
'facets/openobject'
|
13
13
|
]
|
14
14
|
|
15
15
|
more = [
|
@@ -29,11 +29,11 @@ more = [
|
|
29
29
|
string
|
30
30
|
symbol
|
31
31
|
|
32
|
-
|
32
|
+
extra_blank_slate
|
33
33
|
declarative_cache
|
34
|
+
must
|
35
|
+
observable2
|
34
36
|
open_constructor
|
35
|
-
prepare_arguments
|
36
|
-
|
37
|
-
}.each
|
38
|
-
require "#{File.dirname __FILE__}/ruby_ext/#{f}"
|
39
|
-
end
|
37
|
+
prepare_arguments
|
38
|
+
synchronize
|
39
|
+
}.each{|f| require "ruby_ext/#{f}"}
|
@@ -0,0 +1,150 @@
|
|
1
|
+
module VResource
|
2
|
+
module ClassLoader
|
3
|
+
class << self
|
4
|
+
include Observable2
|
5
|
+
|
6
|
+
attr_accessor :error_on_defined_constant
|
7
|
+
def loaded_classes; @loaded_classes ||= {} end
|
8
|
+
|
9
|
+
def reload_class class_name
|
10
|
+
class_name = class_name.sub(/^::/, "")
|
11
|
+
namespace = Module.namespace_for(class_name);
|
12
|
+
name = class_name.sub(/^#{namespace}::/, "")
|
13
|
+
return load_class namespace, name, true
|
14
|
+
end
|
15
|
+
synchronize_method :reload_class
|
16
|
+
|
17
|
+
|
18
|
+
def load_class namespace, const, reload = false
|
19
|
+
namespace = nil if namespace == Object or namespace == Module
|
20
|
+
target_namespace = namespace
|
21
|
+
|
22
|
+
# Name hack (for anonymous classes)
|
23
|
+
namespace = eval "#{name_hack(namespace)}" if namespace
|
24
|
+
|
25
|
+
class_name = namespace ? "#{namespace.name}::#{const}" : const
|
26
|
+
simple_also_tried = false
|
27
|
+
begin
|
28
|
+
simple_also_tried = (namespace == nil)
|
29
|
+
|
30
|
+
if try_load(class_name, const)
|
31
|
+
defined_in_home_scope = namespace ? namespace.const_defined?(const) : Object.const_defined?(const)
|
32
|
+
|
33
|
+
unless defined_in_home_scope
|
34
|
+
msg = "Class Name '#{class_name}' doesn't correspond to File Name '#{VResource.class_to_virtual_file(class_name)}'!"
|
35
|
+
raise_without_self NameError, msg, ClassLoader
|
36
|
+
end
|
37
|
+
|
38
|
+
unless reload
|
39
|
+
if loaded_classes.include? class_name
|
40
|
+
if error_on_defined_constant
|
41
|
+
raise_without_self NameError, "Class '#{class_name}' is not defined in the '#{target_namespace}' Namespace!", ClassLoader
|
42
|
+
else
|
43
|
+
warn "Warn: Class '#{class_name}' is not defined in the '#{target_namespace}' Namespace!"
|
44
|
+
puts caller
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
result = namespace ? namespace.const_get(const) : Object.const_get(const)
|
50
|
+
|
51
|
+
loaded_classes[class_name] = target_namespace
|
52
|
+
notify_observers :update_class, result
|
53
|
+
return result
|
54
|
+
elsif namespace
|
55
|
+
namespace = Module.namespace_for(namespace.name)
|
56
|
+
class_name = namespace ? "#{namespace.name}::#{const}" : const
|
57
|
+
end
|
58
|
+
end until simple_also_tried
|
59
|
+
|
60
|
+
raise_without_self NameError, "uninitialized constant '#{class_name}'!", ClassLoader
|
61
|
+
end
|
62
|
+
synchronize_method :load_class
|
63
|
+
|
64
|
+
def wrap_inside_namespace namespace, script
|
65
|
+
nesting = []
|
66
|
+
if namespace
|
67
|
+
current_scope = ""
|
68
|
+
namespace.name.split("::").each do |level|
|
69
|
+
current_scope += "::#{level}"
|
70
|
+
type = eval current_scope, TOPLEVEL_BINDING, __FILE__, __LINE__
|
71
|
+
nesting << [level, (type.class == Module ? "module" : "class")]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
begining = nesting.collect{|l, t| "#{t} #{l};"}.join(' ')
|
75
|
+
ending = nesting.collect{"end"}.join('; ')
|
76
|
+
return "#{begining}#{script} \n#{ending}"
|
77
|
+
end
|
78
|
+
|
79
|
+
def hook!
|
80
|
+
unless @hooked
|
81
|
+
::Module.class_eval do
|
82
|
+
alias_method :cl_const_missing, :const_missing
|
83
|
+
def const_missing const
|
84
|
+
return VResource::ClassLoader.load_class self, const.to_s
|
85
|
+
end
|
86
|
+
end
|
87
|
+
@hooked = true
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def unhook!
|
92
|
+
if @hooked
|
93
|
+
::Module.class_eval do
|
94
|
+
alias_method :const_missing, :cl_const_missing
|
95
|
+
end
|
96
|
+
@hooked = false
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
protected
|
101
|
+
|
102
|
+
def try_load class_name, const
|
103
|
+
if VResource.class_exist? class_name
|
104
|
+
script = VResource.class_get class_name
|
105
|
+
script = wrap_inside_namespace Module.namespace_for(class_name), script
|
106
|
+
eval script, TOPLEVEL_BINDING, VResource.class_to_virtual_file(class_name)
|
107
|
+
# elsif Resource.class_namespace_exist? class_name
|
108
|
+
# script = "#{begining} module #{const}; end; #{ending}"
|
109
|
+
# eval script, TOPLEVEL_BINDING, __FILE__, __LINE__
|
110
|
+
else
|
111
|
+
return false
|
112
|
+
end
|
113
|
+
return true
|
114
|
+
end
|
115
|
+
|
116
|
+
def name_hack namespace
|
117
|
+
if namespace
|
118
|
+
namespace.to_s.gsub("#<Class:", "").gsub(">", "")
|
119
|
+
else
|
120
|
+
""
|
121
|
+
end
|
122
|
+
# Namespace Hack description
|
123
|
+
# Module.name doesn't works correctly for Anonymous classes.
|
124
|
+
# try to execute this code:
|
125
|
+
#
|
126
|
+
#class Module
|
127
|
+
# def const_missing const
|
128
|
+
# p self.to_s
|
129
|
+
# end
|
130
|
+
#end
|
131
|
+
#
|
132
|
+
#class A
|
133
|
+
# class << self
|
134
|
+
# def a
|
135
|
+
# p self
|
136
|
+
# MissingConst
|
137
|
+
# end
|
138
|
+
# end
|
139
|
+
#end
|
140
|
+
#
|
141
|
+
#A.a
|
142
|
+
#
|
143
|
+
# the output will be:
|
144
|
+
# A
|
145
|
+
# "#<Class:A>"
|
146
|
+
#
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
module VResource
|
2
|
+
class FileSystemProvider
|
3
|
+
attr_accessor :directories
|
4
|
+
|
5
|
+
def initialize directories = File.expand_path('.')
|
6
|
+
@directories = Array(directories).collect{|path| File.expand_path path}
|
7
|
+
end
|
8
|
+
|
9
|
+
def class_get class_name
|
10
|
+
path = ensure_exist!(real_class_path(class_name))
|
11
|
+
|
12
|
+
if File.directory? path
|
13
|
+
"module #{File.basename(path)}; end;"
|
14
|
+
else
|
15
|
+
File.read path
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# It updates existing class, if class doesn't exist it creates one in directory provided by filter
|
20
|
+
def class_set class_name, data, directory_for_class_file = nil
|
21
|
+
directory_for_class_file ||= Dir.getwd
|
22
|
+
directory_for_class_file = File.expand_path directory_for_class_file
|
23
|
+
unless directories.include? directory_for_class_file
|
24
|
+
raise "Dirctories should include '#{directory_for_class_file}'!"
|
25
|
+
end
|
26
|
+
|
27
|
+
path = real_class_path class_name
|
28
|
+
unless path
|
29
|
+
path = class_to_files(class_name).select{|f| f.include?(directory_for_class_file)}.first
|
30
|
+
dir = path.sub(/\w+\.rb/, "")
|
31
|
+
FileUtils.mkdir dir unless dir.empty? or File.exist? dir
|
32
|
+
end
|
33
|
+
|
34
|
+
length = File.write path, data
|
35
|
+
|
36
|
+
reloader.remember_file path
|
37
|
+
return length
|
38
|
+
end
|
39
|
+
|
40
|
+
def class_exist? class_name
|
41
|
+
real_class_path(class_name) != nil
|
42
|
+
end
|
43
|
+
|
44
|
+
def class_delete class_name
|
45
|
+
path = real_class_path class_name
|
46
|
+
File.delete path if path
|
47
|
+
end
|
48
|
+
|
49
|
+
# def class_namespace_exist? namespace_name
|
50
|
+
# File.exist? class_to_basefile(namespace_name)
|
51
|
+
# end
|
52
|
+
|
53
|
+
# First search for "./class_name.resource_name" files
|
54
|
+
# And then search for "./class_name.res/resource_name" files
|
55
|
+
def resource_get class_name, resource_name
|
56
|
+
path = ensure_exist!(real_resource_path(class_name, resource_name))
|
57
|
+
|
58
|
+
File.read path
|
59
|
+
end
|
60
|
+
|
61
|
+
def resource_delete class_name, resource_name
|
62
|
+
path = real_resource_path class_name, resource_name
|
63
|
+
File.delete path if path
|
64
|
+
end
|
65
|
+
|
66
|
+
# It can only update existing resource, it can't create a new one
|
67
|
+
# First search for the same resource and owerwrites it
|
68
|
+
# If such resource doesn't exists writes to
|
69
|
+
# "./class_name.res/resource_name" file.
|
70
|
+
def resource_set class_name, resource_name, data
|
71
|
+
class_path = ensure_exist!(real_class_path(class_name))
|
72
|
+
|
73
|
+
path = real_resource_path class_name, resource_name
|
74
|
+
unless path
|
75
|
+
class_path = class_path.sub(/\.rb$/, "")
|
76
|
+
dir = "#{class_path}.res"
|
77
|
+
FileUtils.mkdir dir unless File.exist? dir
|
78
|
+
path = "#{dir}/#{resource_name}"
|
79
|
+
end
|
80
|
+
|
81
|
+
length = File.write path, data
|
82
|
+
reloader.remember_file path
|
83
|
+
return length
|
84
|
+
end
|
85
|
+
|
86
|
+
def resource_exist? class_name, resource_name
|
87
|
+
class_path = ensure_exist!(real_class_path(class_name))
|
88
|
+
|
89
|
+
real_resource_path(class_name, resource_name) != nil
|
90
|
+
end
|
91
|
+
|
92
|
+
# def class_to_virtual_path class_name
|
93
|
+
# result = nil
|
94
|
+
# if @cache.include? class_name
|
95
|
+
# result = @cache[class_name]
|
96
|
+
# else
|
97
|
+
# result = nil
|
98
|
+
# path = "#{base_dir}/#{class_name.gsub("::", "/")}"
|
99
|
+
# if File.exist? path
|
100
|
+
# result = path
|
101
|
+
# else
|
102
|
+
# path2 = "#{path}.rb"
|
103
|
+
# if File.exist? path2
|
104
|
+
# result = path
|
105
|
+
# else
|
106
|
+
# path3 = "#{path}.res"
|
107
|
+
# if File.exist? path3
|
108
|
+
# result = path
|
109
|
+
# end
|
110
|
+
# end
|
111
|
+
# end
|
112
|
+
# @cache[class_name] = result
|
113
|
+
# end
|
114
|
+
#
|
115
|
+
# if result
|
116
|
+
# return result
|
117
|
+
# else
|
118
|
+
# raise Resource::NotExist, "Class '#{class_name}' doesn't Exist!"
|
119
|
+
# end
|
120
|
+
# end
|
121
|
+
|
122
|
+
# Different Providers can use different class path interpretation.
|
123
|
+
# So we return virtual path only if this path really exist.
|
124
|
+
def class_to_virtual_file class_name
|
125
|
+
path = ensure_exist!(real_class_path(class_name), "Class '#{class_name}' doesn't Exist!")
|
126
|
+
File.expand_path path
|
127
|
+
end
|
128
|
+
cache_method_with_params :class_to_virtual_file
|
129
|
+
|
130
|
+
def reloader
|
131
|
+
@reloader ||= FileSystemReloader.new directories
|
132
|
+
end
|
133
|
+
|
134
|
+
protected
|
135
|
+
def ensure_exist! path, msg = ""
|
136
|
+
raise VResource::NotExist, msg unless path
|
137
|
+
path
|
138
|
+
end
|
139
|
+
|
140
|
+
def real_class_path class_name
|
141
|
+
path = class_to_files(class_name).find{|f| File.exist? f}
|
142
|
+
path ||= class_to_basefiles(class_name).find{|f| File.exist? f}
|
143
|
+
return path
|
144
|
+
end
|
145
|
+
|
146
|
+
def real_resource_path class_name, resource_name
|
147
|
+
file = class_to_basefiles(class_name).collect{|f| "#{f}.#{resource_name}"}.find{|f| File.exist? f}
|
148
|
+
file ||= class_to_basefiles(class_name).collect{|f| "#{f}.res/#{resource_name}"}.find{|f| File.exist? f}
|
149
|
+
return file
|
150
|
+
end
|
151
|
+
|
152
|
+
def class_to_files class_name
|
153
|
+
class_to_basefiles(class_name).collect{|name| "#{name}.rb"}
|
154
|
+
end
|
155
|
+
|
156
|
+
# Different Providers can use different class path interpretation.
|
157
|
+
# So we return virtual path only if this path really exist.
|
158
|
+
def class_to_basefiles class_name
|
159
|
+
relative = class_name.gsub("::", "/")
|
160
|
+
return directories.collect{|dir| "#{dir}/#{relative}"}
|
161
|
+
end
|
162
|
+
|
163
|
+
# Doesn't make Sense for Virtual Resource System
|
164
|
+
# def resource_path class_name, resource_name
|
165
|
+
# @monitor.synchronize do
|
166
|
+
# path = "#{class_to_path(class_name)}.#{resource_name}"
|
167
|
+
# if File.exist? path
|
168
|
+
# return path
|
169
|
+
# else
|
170
|
+
# path = "#{class_to_path(class_name)}.res/#{resource_name}"
|
171
|
+
# if File.exist? path
|
172
|
+
# return path
|
173
|
+
# else
|
174
|
+
# nil
|
175
|
+
# end
|
176
|
+
# end
|
177
|
+
# end
|
178
|
+
# end
|
179
|
+
|
180
|
+
end
|
181
|
+
end
|