From 1138ee220a7ed81e062f6d00fadc3caf1f0ecc7f Mon Sep 17 00:00:00 2001 From: devico Date: Thu, 13 Oct 2016 15:10:07 +0300 Subject: [PATCH 01/26] task10 complete --- css/bootstrap-theme.css | 587 -- css/bootstrap.css | 6757 ----------------- css/style.css | 1 - tt0012349.yml => data/tt0012349.yml | 0 data/tt0015864.yml | 2 + data/tt0017136.yml | 2 + data/tt0017925.yml | 2 + data/tt0021749.yml | 2 + data/tt0022100.yml | 2 + data/tt0025316.yml | 2 + data/tt0027977.yml | 2 + tt0031381.yml => data/tt0031381.yml | 0 data/tt0031679.yml | 2 + tt0032138.yml => data/tt0032138.yml | 0 data/tt0032551.yml | 2 + data/tt0032553.yml | 2 + data/tt0032976.yml | 2 + data/tt0033467.yml | 2 + data/tt0033870.yml | 2 + tt0034583.yml => data/tt0034583.yml | 0 tt0036775.yml => data/tt0036775.yml | 0 tt0036868.yml => data/tt0036868.yml | 0 data/tt0037008.yml | 2 + data/tt0038355.yml | 2 + data/tt0038650.yml | 2 + data/tt0038787.yml | 2 + data/tt0040522.yml | 2 + data/tt0040897.yml | 2 + tt0041959.yml => data/tt0041959.yml | 0 data/tt0042192.yml | 2 + data/tt0042876.yml | 2 + data/tt0043014.yml | 2 + data/tt0044079.yml | 2 + data/tt0044706.yml | 2 + data/tt0044741.yml | 2 + data/tt0045152.yml | 2 + data/tt0046250.yml | 2 + data/tt0046268.yml | 2 + data/tt0046911.yml | 2 + data/tt0046912.yml | 2 + tt0047296.yml => data/tt0047296.yml | 0 data/tt0047396.yml | 2 + data/tt0047478.yml | 2 + data/tt0047528.yml | 2 + tt0048424.yml => data/tt0048424.yml | 0 tt0049406.yml => data/tt0049406.yml | 0 tt0050083.yml => data/tt0050083.yml | 0 tt0050212.yml => data/tt0050212.yml | 0 data/tt0050613.yml | 2 + data/tt0050825.yml | 2 + data/tt0050976.yml | 2 + data/tt0050986.yml | 2 + data/tt0051201.yml | 2 + data/tt0052311.yml | 2 + data/tt0052357.yml | 2 + data/tt0052561.yml | 2 + tt0052618.yml => data/tt0052618.yml | 0 data/tt0053125.yml | 2 + data/tt0053198.yml | 2 + tt0053291.yml => data/tt0053291.yml | 0 data/tt0053604.yml | 2 + tt0054215.yml => data/tt0054215.yml | 0 data/tt0054997.yml | 2 + data/tt0055031.yml | 2 + data/tt0055630.yml | 2 + tt0056172.yml => data/tt0056172.yml | 0 tt0056592.yml => data/tt0056592.yml | 0 data/tt0056801.yml | 2 + tt0057012.yml => data/tt0057012.yml | 0 data/tt0057115.yml | 2 + tt0058461.yml => data/tt0058461.yml | 0 tt0058946.yml => data/tt0058946.yml | 0 data/tt0059578.yml | 2 + tt0060196.yml => data/tt0060196.yml | 0 data/tt0060827.yml | 2 + data/tt0061184.yml | 2 + data/tt0061512.yml | 2 + tt0061722.yml => data/tt0061722.yml | 0 tt0062622.yml => data/tt0062622.yml | 0 tt0064115.yml => data/tt0064115.yml | 0 data/tt0064116.yml | 2 + data/tt0066921.yml | 2 + tt0068646.yml => data/tt0068646.yml | 0 tt0070511.yml => data/tt0070511.yml | 0 tt0070735.yml => data/tt0070735.yml | 0 data/tt0071315.yml | 2 + data/tt0071562.yml | 2 + data/tt0071853.yml | 2 + data/tt0072684.yml | 2 + data/tt0072890.yml | 2 + tt0073195.yml => data/tt0073195.yml | 0 tt0073486.yml => data/tt0073486.yml | 0 data/tt0074958.yml | 2 + tt0075148.yml => data/tt0075148.yml | 0 tt0075314.yml => data/tt0075314.yml | 0 tt0075686.yml => data/tt0075686.yml | 0 tt0076759.yml => data/tt0076759.yml | 0 data/tt0077416.yml | 2 + tt0078748.yml => data/tt0078748.yml | 0 tt0078788.yml => data/tt0078788.yml | 0 data/tt0079470.yml | 2 + data/tt0079944.yml | 2 + data/tt0080678.yml | 2 + tt0080684.yml => data/tt0080684.yml | 0 data/tt0081398.yml | 2 + tt0081505.yml => data/tt0081505.yml | 0 tt0082096.yml => data/tt0082096.yml | 0 tt0082971.yml => data/tt0082971.yml | 0 tt0083658.yml => data/tt0083658.yml | 0 data/tt0083922.yml | 2 + tt0083987.yml => data/tt0083987.yml | 0 data/tt0084787.yml | 2 + tt0086190.yml => data/tt0086190.yml | 0 data/tt0086250.yml | 2 + tt0086879.yml => data/tt0086879.yml | 0 data/tt0087544.yml | 2 + tt0087843.yml => data/tt0087843.yml | 0 tt0088247.yml => data/tt0088247.yml | 0 tt0088763.yml => data/tt0088763.yml | 0 data/tt0089881.yml | 2 + tt0090605.yml => data/tt0090605.yml | 0 tt0091763.yml => data/tt0091763.yml | 0 tt0092005.yml => data/tt0092005.yml | 0 data/tt0092067.yml | 2 + tt0093058.yml => data/tt0093058.yml | 0 tt0093779.yml => data/tt0093779.yml | 0 tt0094625.yml => data/tt0094625.yml | 0 tt0095016.yml => data/tt0095016.yml | 0 data/tt0095327.yml | 2 + tt0095765.yml => data/tt0095765.yml | 0 data/tt0096283.yml | 2 + tt0097576.yml => data/tt0097576.yml | 0 tt0099685.yml => data/tt0099685.yml | 0 tt0101414.yml => data/tt0101414.yml | 0 tt0102926.yml => data/tt0102926.yml | 0 tt0103064.yml => data/tt0103064.yml | 0 tt0105236.yml => data/tt0105236.yml | 0 tt0105695.yml => data/tt0105695.yml | 0 tt0107048.yml => data/tt0107048.yml | 0 tt0107207.yml => data/tt0107207.yml | 0 tt0107290.yml => data/tt0107290.yml | 0 tt0108052.yml => data/tt0108052.yml | 0 tt0109830.yml => data/tt0109830.yml | 0 tt0110357.yml => data/tt0110357.yml | 0 tt0110413.yml => data/tt0110413.yml | 0 tt0110912.yml => data/tt0110912.yml | 0 tt0111161.yml => data/tt0111161.yml | 0 tt0112471.yml => data/tt0112471.yml | 0 tt0112573.yml => data/tt0112573.yml | 0 tt0112641.yml => data/tt0112641.yml | 0 data/tt0113247.yml | 2 + tt0113277.yml => data/tt0113277.yml | 0 tt0114369.yml => data/tt0114369.yml | 0 tt0114709.yml => data/tt0114709.yml | 0 data/tt0114746.yml | 2 + data/tt0114787.yml | 2 + tt0114814.yml => data/tt0114814.yml | 0 tt0116282.yml => data/tt0116282.yml | 0 tt0117951.yml => data/tt0117951.yml | 0 data/tt0118715.yml | 2 + tt0118799.yml => data/tt0118799.yml | 0 tt0119217.yml => data/tt0119217.yml | 0 tt0119488.yml => data/tt0119488.yml | 0 data/tt0119698.yml | 2 + tt0120382.yml => data/tt0120382.yml | 0 tt0120586.yml => data/tt0120586.yml | 0 tt0120689.yml => data/tt0120689.yml | 0 data/tt0120735.yml | 2 + tt0120737.yml => data/tt0120737.yml | 0 tt0120815.yml => data/tt0120815.yml | 0 tt0133093.yml => data/tt0133093.yml | 0 tt0137523.yml => data/tt0137523.yml | 0 tt0167260.yml => data/tt0167260.yml | 0 tt0167261.yml => data/tt0167261.yml | 0 data/tt0167404.yml | 2 + tt0169547.yml => data/tt0169547.yml | 0 tt0172495.yml => data/tt0172495.yml | 0 tt0180093.yml => data/tt0180093.yml | 0 tt0198781.yml => data/tt0198781.yml | 0 data/tt0208092.yml | 2 + tt0209144.yml => data/tt0209144.yml | 0 data/tt0211915.yml | 2 + data/tt0245429.yml | 2 + tt0245712.yml => data/tt0245712.yml | 0 tt0246578.yml => data/tt0246578.yml | 0 tt0253474.yml => data/tt0253474.yml | 0 tt0266543.yml => data/tt0266543.yml | 0 tt0266697.yml => data/tt0266697.yml | 0 tt0268978.yml => data/tt0268978.yml | 0 tt0317248.yml => data/tt0317248.yml | 0 tt0325980.yml => data/tt0325980.yml | 0 tt0338013.yml => data/tt0338013.yml | 0 data/tt0338564.yml | 2 + data/tt0347149.yml | 2 + data/tt0353969.yml | 2 + tt0361748.yml => data/tt0361748.yml | 0 data/tt0363163.yml | 2 + tt0364569.yml => data/tt0364569.yml | 0 tt0372784.yml => data/tt0372784.yml | 0 data/tt0374546.yml | 2 + tt0381681.yml => data/tt0381681.yml | 0 tt0395169.yml => data/tt0395169.yml | 0 tt0401792.yml => data/tt0401792.yml | 0 tt0405094.yml => data/tt0405094.yml | 0 tt0405159.yml => data/tt0405159.yml | 0 tt0407887.yml => data/tt0407887.yml | 0 tt0434409.yml => data/tt0434409.yml | 0 tt0435761.yml => data/tt0435761.yml | 0 tt0440963.yml => data/tt0440963.yml | 0 data/tt0457430.yml | 2 + tt0468569.yml => data/tt0468569.yml | 0 tt0469494.yml => data/tt0469494.yml | 0 tt0477348.yml => data/tt0477348.yml | 0 tt0482571.yml => data/tt0482571.yml | 0 tt0758758.yml => data/tt0758758.yml | 0 tt0816692.yml => data/tt0816692.yml | 0 tt0848228.yml => data/tt0848228.yml | 0 data/tt0892769.yml | 2 + tt0910970.yml => data/tt0910970.yml | 0 data/tt0978762.yml | 2 + data/tt0993846.yml | 2 + tt1028532.yml => data/tt1028532.yml | 0 tt1049413.yml => data/tt1049413.yml | 0 data/tt1069238.yml | 2 + tt1130884.yml => data/tt1130884.yml | 0 data/tt1187043.yml | 2 + tt1201607.yml => data/tt1201607.yml | 0 data/tt1205489.yml | 2 + data/tt1220719.yml | 2 + tt1255953.yml => data/tt1255953.yml | 0 tt1291584.yml => data/tt1291584.yml | 0 data/tt1305806.yml | 2 + tt1345836.yml => data/tt1345836.yml | 0 tt1375666.yml => data/tt1375666.yml | 0 tt1392190.yml => data/tt1392190.yml | 0 tt1392214.yml => data/tt1392214.yml | 0 tt1454029.yml => data/tt1454029.yml | 0 tt1504320.yml => data/tt1504320.yml | 0 data/tt1555149.yml | 2 + data/tt1675434.yml | 2 + tt1832382.yml => data/tt1832382.yml | 0 tt1853728.yml => data/tt1853728.yml | 0 tt1877832.yml => data/tt1877832.yml | 0 tt1979320.yml => data/tt1979320.yml | 0 tt2015381.yml => data/tt2015381.yml | 0 tt2024544.yml => data/tt2024544.yml | 0 tt2084970.yml => data/tt2084970.yml | 0 tt2096673.yml => data/tt2096673.yml | 0 tt2106476.yml => data/tt2106476.yml | 0 tt2267998.yml => data/tt2267998.yml | 0 data/tt2278388.yml | 2 + tt2582802.yml => data/tt2582802.yml | 0 tt3011894.yml => data/tt3011894.yml | 0 js/bootstrap.js | 2377 ------ .../fixtures}/vcr_cassettes/imdb/budget.yml | 0 .../vcr_cassettes/imdb/budget_imdb.yml | 0 .../fixtures}/vcr_cassettes/tmdb/posters.yml | 0 .../fixtures}/vcr_cassettes/tmdb/tmdb_id.yml | 0 spec/spec_helper.rb | 2 +- spec/support/vcr_setup.rb | 6 - test.rb | 6 - tt0015864.yml | 2 - tt0017136.yml | 2 - tt0017925.yml | 2 - tt0021749.yml | 2 - tt0022100.yml | 2 - tt0025316.yml | 2 - tt0027977.yml | 2 - tt0031679.yml | 2 - tt0032551.yml | 2 - tt0032553.yml | 2 - tt0032976.yml | 2 - tt0033467.yml | 2 - tt0033870.yml | 2 - tt0037008.yml | 2 - tt0038355.yml | 2 - tt0038650.yml | 2 - tt0038787.yml | 2 - tt0040522.yml | 2 - tt0040897.yml | 2 - tt0042192.yml | 2 - tt0042876.yml | 2 - tt0043014.yml | 2 - tt0044079.yml | 2 - tt0044706.yml | 2 - tt0044741.yml | 2 - tt0045152.yml | 2 - tt0046250.yml | 2 - tt0046268.yml | 2 - tt0046911.yml | 2 - tt0046912.yml | 2 - tt0047396.yml | 2 - tt0047478.yml | 2 - tt0047528.yml | 2 - tt0050613.yml | 2 - tt0050825.yml | 2 - tt0050976.yml | 2 - tt0050986.yml | 2 - tt0051201.yml | 2 - tt0052311.yml | 2 - tt0052357.yml | 2 - tt0052561.yml | 2 - tt0053125.yml | 2 - tt0053198.yml | 2 - tt0053604.yml | 2 - tt0054997.yml | 2 - tt0055031.yml | 2 - tt0055630.yml | 2 - tt0056801.yml | 2 - tt0057115.yml | 2 - tt0059578.yml | 2 - tt0060827.yml | 2 - tt0061184.yml | 2 - tt0061512.yml | 2 - tt0064116.yml | 2 - tt0066921.yml | 2 - tt0071315.yml | 2 - tt0071562.yml | 2 - tt0071853.yml | 2 - tt0072684.yml | 2 - tt0072890.yml | 2 - tt0074958.yml | 2 - tt0077416.yml | 2 - tt0079470.yml | 2 - tt0079944.yml | 2 - tt0080678.yml | 2 - tt0081398.yml | 2 - tt0083922.yml | 2 - tt0084787.yml | 2 - tt0086250.yml | 2 - tt0087544.yml | 2 - tt0089881.yml | 2 - tt0092067.yml | 2 - tt0095327.yml | 2 - tt0096283.yml | 2 - tt0113247.yml | 2 - tt0114746.yml | 2 - tt0114787.yml | 2 - tt0118715.yml | 2 - tt0119698.yml | 2 - tt0120735.yml | 2 - tt0167404.yml | 2 - tt0208092.yml | 2 - tt0211915.yml | 2 - tt0245429.yml | 2 - tt0338564.yml | 2 - tt0347149.yml | 2 - tt0353969.yml | 2 - tt0363163.yml | 2 - tt0374546.yml | 2 - tt0457430.yml | 2 - tt0892769.yml | 2 - tt0978762.yml | 2 - tt0993846.yml | 2 - tt1069238.yml | 2 - tt1187043.yml | 2 - tt1205489.yml | 2 - tt1220719.yml | 2 - tt1305806.yml | 2 - tt1555149.yml | 2 - tt1675434.yml | 2 - tt2278388.yml | 2 - web/css/bootstrap-theme.css | 587 -- web/css/bootstrap.css | 6757 ----------------- web/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes web/fonts/glyphicons-halflings-regular.svg | 288 - web/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes web/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes web/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes web/index.html | 32 - web/js/bootstrap.js | 2377 ------ 371 files changed, 203 insertions(+), 19978 deletions(-) delete mode 100644 css/bootstrap-theme.css delete mode 100644 css/bootstrap.css delete mode 100644 css/style.css rename tt0012349.yml => data/tt0012349.yml (100%) create mode 100644 data/tt0015864.yml create mode 100644 data/tt0017136.yml create mode 100644 data/tt0017925.yml create mode 100644 data/tt0021749.yml create mode 100644 data/tt0022100.yml create mode 100644 data/tt0025316.yml create mode 100644 data/tt0027977.yml rename tt0031381.yml => data/tt0031381.yml (100%) create mode 100644 data/tt0031679.yml rename tt0032138.yml => data/tt0032138.yml (100%) create mode 100644 data/tt0032551.yml create mode 100644 data/tt0032553.yml create mode 100644 data/tt0032976.yml create mode 100644 data/tt0033467.yml create mode 100644 data/tt0033870.yml rename tt0034583.yml => data/tt0034583.yml (100%) rename tt0036775.yml => data/tt0036775.yml (100%) rename tt0036868.yml => data/tt0036868.yml (100%) create mode 100644 data/tt0037008.yml create mode 100644 data/tt0038355.yml create mode 100644 data/tt0038650.yml create mode 100644 data/tt0038787.yml create mode 100644 data/tt0040522.yml create mode 100644 data/tt0040897.yml rename tt0041959.yml => data/tt0041959.yml (100%) create mode 100644 data/tt0042192.yml create mode 100644 data/tt0042876.yml create mode 100644 data/tt0043014.yml create mode 100644 data/tt0044079.yml create mode 100644 data/tt0044706.yml create mode 100644 data/tt0044741.yml create mode 100644 data/tt0045152.yml create mode 100644 data/tt0046250.yml create mode 100644 data/tt0046268.yml create mode 100644 data/tt0046911.yml create mode 100644 data/tt0046912.yml rename tt0047296.yml => data/tt0047296.yml (100%) create mode 100644 data/tt0047396.yml create mode 100644 data/tt0047478.yml create mode 100644 data/tt0047528.yml rename tt0048424.yml => data/tt0048424.yml (100%) rename tt0049406.yml => data/tt0049406.yml (100%) rename tt0050083.yml => data/tt0050083.yml (100%) rename tt0050212.yml => data/tt0050212.yml (100%) create mode 100644 data/tt0050613.yml create mode 100644 data/tt0050825.yml create mode 100644 data/tt0050976.yml create mode 100644 data/tt0050986.yml create mode 100644 data/tt0051201.yml create mode 100644 data/tt0052311.yml create mode 100644 data/tt0052357.yml create mode 100644 data/tt0052561.yml rename tt0052618.yml => data/tt0052618.yml (100%) create mode 100644 data/tt0053125.yml create mode 100644 data/tt0053198.yml rename tt0053291.yml => data/tt0053291.yml (100%) create mode 100644 data/tt0053604.yml rename tt0054215.yml => data/tt0054215.yml (100%) create mode 100644 data/tt0054997.yml create mode 100644 data/tt0055031.yml create mode 100644 data/tt0055630.yml rename tt0056172.yml => data/tt0056172.yml (100%) rename tt0056592.yml => data/tt0056592.yml (100%) create mode 100644 data/tt0056801.yml rename tt0057012.yml => data/tt0057012.yml (100%) create mode 100644 data/tt0057115.yml rename tt0058461.yml => data/tt0058461.yml (100%) rename tt0058946.yml => data/tt0058946.yml (100%) create mode 100644 data/tt0059578.yml rename tt0060196.yml => data/tt0060196.yml (100%) create mode 100644 data/tt0060827.yml create mode 100644 data/tt0061184.yml create mode 100644 data/tt0061512.yml rename tt0061722.yml => data/tt0061722.yml (100%) rename tt0062622.yml => data/tt0062622.yml (100%) rename tt0064115.yml => data/tt0064115.yml (100%) create mode 100644 data/tt0064116.yml create mode 100644 data/tt0066921.yml rename tt0068646.yml => data/tt0068646.yml (100%) rename tt0070511.yml => data/tt0070511.yml (100%) rename tt0070735.yml => data/tt0070735.yml (100%) create mode 100644 data/tt0071315.yml create mode 100644 data/tt0071562.yml create mode 100644 data/tt0071853.yml create mode 100644 data/tt0072684.yml create mode 100644 data/tt0072890.yml rename tt0073195.yml => data/tt0073195.yml (100%) rename tt0073486.yml => data/tt0073486.yml (100%) create mode 100644 data/tt0074958.yml rename tt0075148.yml => data/tt0075148.yml (100%) rename tt0075314.yml => data/tt0075314.yml (100%) rename tt0075686.yml => data/tt0075686.yml (100%) rename tt0076759.yml => data/tt0076759.yml (100%) create mode 100644 data/tt0077416.yml rename tt0078748.yml => data/tt0078748.yml (100%) rename tt0078788.yml => data/tt0078788.yml (100%) create mode 100644 data/tt0079470.yml create mode 100644 data/tt0079944.yml create mode 100644 data/tt0080678.yml rename tt0080684.yml => data/tt0080684.yml (100%) create mode 100644 data/tt0081398.yml rename tt0081505.yml => data/tt0081505.yml (100%) rename tt0082096.yml => data/tt0082096.yml (100%) rename tt0082971.yml => data/tt0082971.yml (100%) rename tt0083658.yml => data/tt0083658.yml (100%) create mode 100644 data/tt0083922.yml rename tt0083987.yml => data/tt0083987.yml (100%) create mode 100644 data/tt0084787.yml rename tt0086190.yml => data/tt0086190.yml (100%) create mode 100644 data/tt0086250.yml rename tt0086879.yml => data/tt0086879.yml (100%) create mode 100644 data/tt0087544.yml rename tt0087843.yml => data/tt0087843.yml (100%) rename tt0088247.yml => data/tt0088247.yml (100%) rename tt0088763.yml => data/tt0088763.yml (100%) create mode 100644 data/tt0089881.yml rename tt0090605.yml => data/tt0090605.yml (100%) rename tt0091763.yml => data/tt0091763.yml (100%) rename tt0092005.yml => data/tt0092005.yml (100%) create mode 100644 data/tt0092067.yml rename tt0093058.yml => data/tt0093058.yml (100%) rename tt0093779.yml => data/tt0093779.yml (100%) rename tt0094625.yml => data/tt0094625.yml (100%) rename tt0095016.yml => data/tt0095016.yml (100%) create mode 100644 data/tt0095327.yml rename tt0095765.yml => data/tt0095765.yml (100%) create mode 100644 data/tt0096283.yml rename tt0097576.yml => data/tt0097576.yml (100%) rename tt0099685.yml => data/tt0099685.yml (100%) rename tt0101414.yml => data/tt0101414.yml (100%) rename tt0102926.yml => data/tt0102926.yml (100%) rename tt0103064.yml => data/tt0103064.yml (100%) rename tt0105236.yml => data/tt0105236.yml (100%) rename tt0105695.yml => data/tt0105695.yml (100%) rename tt0107048.yml => data/tt0107048.yml (100%) rename tt0107207.yml => data/tt0107207.yml (100%) rename tt0107290.yml => data/tt0107290.yml (100%) rename tt0108052.yml => data/tt0108052.yml (100%) rename tt0109830.yml => data/tt0109830.yml (100%) rename tt0110357.yml => data/tt0110357.yml (100%) rename tt0110413.yml => data/tt0110413.yml (100%) rename tt0110912.yml => data/tt0110912.yml (100%) rename tt0111161.yml => data/tt0111161.yml (100%) rename tt0112471.yml => data/tt0112471.yml (100%) rename tt0112573.yml => data/tt0112573.yml (100%) rename tt0112641.yml => data/tt0112641.yml (100%) create mode 100644 data/tt0113247.yml rename tt0113277.yml => data/tt0113277.yml (100%) rename tt0114369.yml => data/tt0114369.yml (100%) rename tt0114709.yml => data/tt0114709.yml (100%) create mode 100644 data/tt0114746.yml create mode 100644 data/tt0114787.yml rename tt0114814.yml => data/tt0114814.yml (100%) rename tt0116282.yml => data/tt0116282.yml (100%) rename tt0117951.yml => data/tt0117951.yml (100%) create mode 100644 data/tt0118715.yml rename tt0118799.yml => data/tt0118799.yml (100%) rename tt0119217.yml => data/tt0119217.yml (100%) rename tt0119488.yml => data/tt0119488.yml (100%) create mode 100644 data/tt0119698.yml rename tt0120382.yml => data/tt0120382.yml (100%) rename tt0120586.yml => data/tt0120586.yml (100%) rename tt0120689.yml => data/tt0120689.yml (100%) create mode 100644 data/tt0120735.yml rename tt0120737.yml => data/tt0120737.yml (100%) rename tt0120815.yml => data/tt0120815.yml (100%) rename tt0133093.yml => data/tt0133093.yml (100%) rename tt0137523.yml => data/tt0137523.yml (100%) rename tt0167260.yml => data/tt0167260.yml (100%) rename tt0167261.yml => data/tt0167261.yml (100%) create mode 100644 data/tt0167404.yml rename tt0169547.yml => data/tt0169547.yml (100%) rename tt0172495.yml => data/tt0172495.yml (100%) rename tt0180093.yml => data/tt0180093.yml (100%) rename tt0198781.yml => data/tt0198781.yml (100%) create mode 100644 data/tt0208092.yml rename tt0209144.yml => data/tt0209144.yml (100%) create mode 100644 data/tt0211915.yml create mode 100644 data/tt0245429.yml rename tt0245712.yml => data/tt0245712.yml (100%) rename tt0246578.yml => data/tt0246578.yml (100%) rename tt0253474.yml => data/tt0253474.yml (100%) rename tt0266543.yml => data/tt0266543.yml (100%) rename tt0266697.yml => data/tt0266697.yml (100%) rename tt0268978.yml => data/tt0268978.yml (100%) rename tt0317248.yml => data/tt0317248.yml (100%) rename tt0325980.yml => data/tt0325980.yml (100%) rename tt0338013.yml => data/tt0338013.yml (100%) create mode 100644 data/tt0338564.yml create mode 100644 data/tt0347149.yml create mode 100644 data/tt0353969.yml rename tt0361748.yml => data/tt0361748.yml (100%) create mode 100644 data/tt0363163.yml rename tt0364569.yml => data/tt0364569.yml (100%) rename tt0372784.yml => data/tt0372784.yml (100%) create mode 100644 data/tt0374546.yml rename tt0381681.yml => data/tt0381681.yml (100%) rename tt0395169.yml => data/tt0395169.yml (100%) rename tt0401792.yml => data/tt0401792.yml (100%) rename tt0405094.yml => data/tt0405094.yml (100%) rename tt0405159.yml => data/tt0405159.yml (100%) rename tt0407887.yml => data/tt0407887.yml (100%) rename tt0434409.yml => data/tt0434409.yml (100%) rename tt0435761.yml => data/tt0435761.yml (100%) rename tt0440963.yml => data/tt0440963.yml (100%) create mode 100644 data/tt0457430.yml rename tt0468569.yml => data/tt0468569.yml (100%) rename tt0469494.yml => data/tt0469494.yml (100%) rename tt0477348.yml => data/tt0477348.yml (100%) rename tt0482571.yml => data/tt0482571.yml (100%) rename tt0758758.yml => data/tt0758758.yml (100%) rename tt0816692.yml => data/tt0816692.yml (100%) rename tt0848228.yml => data/tt0848228.yml (100%) create mode 100644 data/tt0892769.yml rename tt0910970.yml => data/tt0910970.yml (100%) create mode 100644 data/tt0978762.yml create mode 100644 data/tt0993846.yml rename tt1028532.yml => data/tt1028532.yml (100%) rename tt1049413.yml => data/tt1049413.yml (100%) create mode 100644 data/tt1069238.yml rename tt1130884.yml => data/tt1130884.yml (100%) create mode 100644 data/tt1187043.yml rename tt1201607.yml => data/tt1201607.yml (100%) create mode 100644 data/tt1205489.yml create mode 100644 data/tt1220719.yml rename tt1255953.yml => data/tt1255953.yml (100%) rename tt1291584.yml => data/tt1291584.yml (100%) create mode 100644 data/tt1305806.yml rename tt1345836.yml => data/tt1345836.yml (100%) rename tt1375666.yml => data/tt1375666.yml (100%) rename tt1392190.yml => data/tt1392190.yml (100%) rename tt1392214.yml => data/tt1392214.yml (100%) rename tt1454029.yml => data/tt1454029.yml (100%) rename tt1504320.yml => data/tt1504320.yml (100%) create mode 100644 data/tt1555149.yml create mode 100644 data/tt1675434.yml rename tt1832382.yml => data/tt1832382.yml (100%) rename tt1853728.yml => data/tt1853728.yml (100%) rename tt1877832.yml => data/tt1877832.yml (100%) rename tt1979320.yml => data/tt1979320.yml (100%) rename tt2015381.yml => data/tt2015381.yml (100%) rename tt2024544.yml => data/tt2024544.yml (100%) rename tt2084970.yml => data/tt2084970.yml (100%) rename tt2096673.yml => data/tt2096673.yml (100%) rename tt2106476.yml => data/tt2106476.yml (100%) rename tt2267998.yml => data/tt2267998.yml (100%) create mode 100644 data/tt2278388.yml rename tt2582802.yml => data/tt2582802.yml (100%) rename tt3011894.yml => data/tt3011894.yml (100%) delete mode 100644 js/bootstrap.js rename {fixtures => spec/fixtures}/vcr_cassettes/imdb/budget.yml (100%) rename {fixtures => spec/fixtures}/vcr_cassettes/imdb/budget_imdb.yml (100%) rename {fixtures => spec/fixtures}/vcr_cassettes/tmdb/posters.yml (100%) rename {fixtures => spec/fixtures}/vcr_cassettes/tmdb/tmdb_id.yml (100%) delete mode 100644 spec/support/vcr_setup.rb delete mode 100644 test.rb delete mode 100644 tt0015864.yml delete mode 100644 tt0017136.yml delete mode 100644 tt0017925.yml delete mode 100644 tt0021749.yml delete mode 100644 tt0022100.yml delete mode 100644 tt0025316.yml delete mode 100644 tt0027977.yml delete mode 100644 tt0031679.yml delete mode 100644 tt0032551.yml delete mode 100644 tt0032553.yml delete mode 100644 tt0032976.yml delete mode 100644 tt0033467.yml delete mode 100644 tt0033870.yml delete mode 100644 tt0037008.yml delete mode 100644 tt0038355.yml delete mode 100644 tt0038650.yml delete mode 100644 tt0038787.yml delete mode 100644 tt0040522.yml delete mode 100644 tt0040897.yml delete mode 100644 tt0042192.yml delete mode 100644 tt0042876.yml delete mode 100644 tt0043014.yml delete mode 100644 tt0044079.yml delete mode 100644 tt0044706.yml delete mode 100644 tt0044741.yml delete mode 100644 tt0045152.yml delete mode 100644 tt0046250.yml delete mode 100644 tt0046268.yml delete mode 100644 tt0046911.yml delete mode 100644 tt0046912.yml delete mode 100644 tt0047396.yml delete mode 100644 tt0047478.yml delete mode 100644 tt0047528.yml delete mode 100644 tt0050613.yml delete mode 100644 tt0050825.yml delete mode 100644 tt0050976.yml delete mode 100644 tt0050986.yml delete mode 100644 tt0051201.yml delete mode 100644 tt0052311.yml delete mode 100644 tt0052357.yml delete mode 100644 tt0052561.yml delete mode 100644 tt0053125.yml delete mode 100644 tt0053198.yml delete mode 100644 tt0053604.yml delete mode 100644 tt0054997.yml delete mode 100644 tt0055031.yml delete mode 100644 tt0055630.yml delete mode 100644 tt0056801.yml delete mode 100644 tt0057115.yml delete mode 100644 tt0059578.yml delete mode 100644 tt0060827.yml delete mode 100644 tt0061184.yml delete mode 100644 tt0061512.yml delete mode 100644 tt0064116.yml delete mode 100644 tt0066921.yml delete mode 100644 tt0071315.yml delete mode 100644 tt0071562.yml delete mode 100644 tt0071853.yml delete mode 100644 tt0072684.yml delete mode 100644 tt0072890.yml delete mode 100644 tt0074958.yml delete mode 100644 tt0077416.yml delete mode 100644 tt0079470.yml delete mode 100644 tt0079944.yml delete mode 100644 tt0080678.yml delete mode 100644 tt0081398.yml delete mode 100644 tt0083922.yml delete mode 100644 tt0084787.yml delete mode 100644 tt0086250.yml delete mode 100644 tt0087544.yml delete mode 100644 tt0089881.yml delete mode 100644 tt0092067.yml delete mode 100644 tt0095327.yml delete mode 100644 tt0096283.yml delete mode 100644 tt0113247.yml delete mode 100644 tt0114746.yml delete mode 100644 tt0114787.yml delete mode 100644 tt0118715.yml delete mode 100644 tt0119698.yml delete mode 100644 tt0120735.yml delete mode 100644 tt0167404.yml delete mode 100644 tt0208092.yml delete mode 100644 tt0211915.yml delete mode 100644 tt0245429.yml delete mode 100644 tt0338564.yml delete mode 100644 tt0347149.yml delete mode 100644 tt0353969.yml delete mode 100644 tt0363163.yml delete mode 100644 tt0374546.yml delete mode 100644 tt0457430.yml delete mode 100644 tt0892769.yml delete mode 100644 tt0978762.yml delete mode 100644 tt0993846.yml delete mode 100644 tt1069238.yml delete mode 100644 tt1187043.yml delete mode 100644 tt1205489.yml delete mode 100644 tt1220719.yml delete mode 100644 tt1305806.yml delete mode 100644 tt1555149.yml delete mode 100644 tt1675434.yml delete mode 100644 tt2278388.yml delete mode 100644 web/css/bootstrap-theme.css delete mode 100644 web/css/bootstrap.css delete mode 100644 web/fonts/glyphicons-halflings-regular.eot delete mode 100644 web/fonts/glyphicons-halflings-regular.svg delete mode 100644 web/fonts/glyphicons-halflings-regular.ttf delete mode 100644 web/fonts/glyphicons-halflings-regular.woff delete mode 100644 web/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 web/index.html delete mode 100644 web/js/bootstrap.js diff --git a/css/bootstrap-theme.css b/css/bootstrap-theme.css deleted file mode 100644 index 31d8882..0000000 --- a/css/bootstrap-theme.css +++ /dev/null @@ -1,587 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/css/bootstrap.css b/css/bootstrap.css deleted file mode 100644 index 6167622..0000000 --- a/css/bootstrap.css +++ /dev/null @@ -1,6757 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover, -a.text-primary:focus { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #eee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 11px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:focus, -.btn-default.focus { - color: #333; - background-color: #e6e6e6; - border-color: #8c8c8c; -} -.btn-default:hover { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:focus, -.btn-primary.focus { - color: #fff; - background-color: #286090; - border-color: #122b40; -} -.btn-primary:hover { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #fff; - background-color: #204d74; - border-color: #122b40; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:focus, -.btn-success.focus { - color: #fff; - background-color: #449d44; - border-color: #255625; -} -.btn-success:hover { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #fff; - background-color: #398439; - border-color: #255625; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #31b0d5; - border-color: #1b6d85; -} -.btn-info:hover { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #fff; - background-color: #269abc; - border-color: #1b6d85; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group .form-control:focus { - z-index: 3; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: middle; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - padding-right: 15px; - padding-left: 15px; - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item, -button.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - filter: alpha(opacity=0); - opacity: 0; - - line-break: auto; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - - line-break: auto; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - background-color: rgba(0, 0, 0, 0); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 8b13789..0000000 --- a/css/style.css +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tt0012349.yml b/data/tt0012349.yml similarity index 100% rename from tt0012349.yml rename to data/tt0012349.yml diff --git a/data/tt0015864.yml b/data/tt0015864.yml new file mode 100644 index 0000000..3459f63 --- /dev/null +++ b/data/tt0015864.yml @@ -0,0 +1,2 @@ +--- +tt0015864: diff --git a/data/tt0017136.yml b/data/tt0017136.yml new file mode 100644 index 0000000..167ea19 --- /dev/null +++ b/data/tt0017136.yml @@ -0,0 +1,2 @@ +--- +tt0017136: DEM 6,000,000 diff --git a/data/tt0017925.yml b/data/tt0017925.yml new file mode 100644 index 0000000..8963383 --- /dev/null +++ b/data/tt0017925.yml @@ -0,0 +1,2 @@ +--- +tt0017925: diff --git a/data/tt0021749.yml b/data/tt0021749.yml new file mode 100644 index 0000000..aba1b80 --- /dev/null +++ b/data/tt0021749.yml @@ -0,0 +1,2 @@ +--- +tt0021749: diff --git a/data/tt0022100.yml b/data/tt0022100.yml new file mode 100644 index 0000000..d1dedb2 --- /dev/null +++ b/data/tt0022100.yml @@ -0,0 +1,2 @@ +--- +tt0022100: diff --git a/data/tt0025316.yml b/data/tt0025316.yml new file mode 100644 index 0000000..0cd1d4e --- /dev/null +++ b/data/tt0025316.yml @@ -0,0 +1,2 @@ +--- +tt0025316: diff --git a/data/tt0027977.yml b/data/tt0027977.yml new file mode 100644 index 0000000..f40ab1b --- /dev/null +++ b/data/tt0027977.yml @@ -0,0 +1,2 @@ +--- +tt0027977: diff --git a/tt0031381.yml b/data/tt0031381.yml similarity index 100% rename from tt0031381.yml rename to data/tt0031381.yml diff --git a/data/tt0031679.yml b/data/tt0031679.yml new file mode 100644 index 0000000..906d16e --- /dev/null +++ b/data/tt0031679.yml @@ -0,0 +1,2 @@ +--- +tt0031679: diff --git a/tt0032138.yml b/data/tt0032138.yml similarity index 100% rename from tt0032138.yml rename to data/tt0032138.yml diff --git a/data/tt0032551.yml b/data/tt0032551.yml new file mode 100644 index 0000000..a923524 --- /dev/null +++ b/data/tt0032551.yml @@ -0,0 +1,2 @@ +--- +tt0032551: diff --git a/data/tt0032553.yml b/data/tt0032553.yml new file mode 100644 index 0000000..377e4a3 --- /dev/null +++ b/data/tt0032553.yml @@ -0,0 +1,2 @@ +--- +tt0032553: diff --git a/data/tt0032976.yml b/data/tt0032976.yml new file mode 100644 index 0000000..fea5e6c --- /dev/null +++ b/data/tt0032976.yml @@ -0,0 +1,2 @@ +--- +tt0032976: diff --git a/data/tt0033467.yml b/data/tt0033467.yml new file mode 100644 index 0000000..4f5c120 --- /dev/null +++ b/data/tt0033467.yml @@ -0,0 +1,2 @@ +--- +tt0033467: diff --git a/data/tt0033870.yml b/data/tt0033870.yml new file mode 100644 index 0000000..2879f32 --- /dev/null +++ b/data/tt0033870.yml @@ -0,0 +1,2 @@ +--- +tt0033870: diff --git a/tt0034583.yml b/data/tt0034583.yml similarity index 100% rename from tt0034583.yml rename to data/tt0034583.yml diff --git a/tt0036775.yml b/data/tt0036775.yml similarity index 100% rename from tt0036775.yml rename to data/tt0036775.yml diff --git a/tt0036868.yml b/data/tt0036868.yml similarity index 100% rename from tt0036868.yml rename to data/tt0036868.yml diff --git a/data/tt0037008.yml b/data/tt0037008.yml new file mode 100644 index 0000000..df06c22 --- /dev/null +++ b/data/tt0037008.yml @@ -0,0 +1,2 @@ +--- +tt0037008: diff --git a/data/tt0038355.yml b/data/tt0038355.yml new file mode 100644 index 0000000..54411c6 --- /dev/null +++ b/data/tt0038355.yml @@ -0,0 +1,2 @@ +--- +tt0038355: diff --git a/data/tt0038650.yml b/data/tt0038650.yml new file mode 100644 index 0000000..b952bf8 --- /dev/null +++ b/data/tt0038650.yml @@ -0,0 +1,2 @@ +--- +tt0038650: diff --git a/data/tt0038787.yml b/data/tt0038787.yml new file mode 100644 index 0000000..b4fe59f --- /dev/null +++ b/data/tt0038787.yml @@ -0,0 +1,2 @@ +--- +tt0038787: diff --git a/data/tt0040522.yml b/data/tt0040522.yml new file mode 100644 index 0000000..f8c2963 --- /dev/null +++ b/data/tt0040522.yml @@ -0,0 +1,2 @@ +--- +tt0040522: diff --git a/data/tt0040897.yml b/data/tt0040897.yml new file mode 100644 index 0000000..74c1554 --- /dev/null +++ b/data/tt0040897.yml @@ -0,0 +1,2 @@ +--- +tt0040897: diff --git a/tt0041959.yml b/data/tt0041959.yml similarity index 100% rename from tt0041959.yml rename to data/tt0041959.yml diff --git a/data/tt0042192.yml b/data/tt0042192.yml new file mode 100644 index 0000000..7b8a732 --- /dev/null +++ b/data/tt0042192.yml @@ -0,0 +1,2 @@ +--- +tt0042192: diff --git a/data/tt0042876.yml b/data/tt0042876.yml new file mode 100644 index 0000000..44317d8 --- /dev/null +++ b/data/tt0042876.yml @@ -0,0 +1,2 @@ +--- +tt0042876: diff --git a/data/tt0043014.yml b/data/tt0043014.yml new file mode 100644 index 0000000..59fa9bd --- /dev/null +++ b/data/tt0043014.yml @@ -0,0 +1,2 @@ +--- +tt0043014: diff --git a/data/tt0044079.yml b/data/tt0044079.yml new file mode 100644 index 0000000..233ed17 --- /dev/null +++ b/data/tt0044079.yml @@ -0,0 +1,2 @@ +--- +tt0044079: diff --git a/data/tt0044706.yml b/data/tt0044706.yml new file mode 100644 index 0000000..c10dced --- /dev/null +++ b/data/tt0044706.yml @@ -0,0 +1,2 @@ +--- +tt0044706: diff --git a/data/tt0044741.yml b/data/tt0044741.yml new file mode 100644 index 0000000..f1f0d11 --- /dev/null +++ b/data/tt0044741.yml @@ -0,0 +1,2 @@ +--- +tt0044741: diff --git a/data/tt0045152.yml b/data/tt0045152.yml new file mode 100644 index 0000000..e93b316 --- /dev/null +++ b/data/tt0045152.yml @@ -0,0 +1,2 @@ +--- +tt0045152: diff --git a/data/tt0046250.yml b/data/tt0046250.yml new file mode 100644 index 0000000..4a6163d --- /dev/null +++ b/data/tt0046250.yml @@ -0,0 +1,2 @@ +--- +tt0046250: diff --git a/data/tt0046268.yml b/data/tt0046268.yml new file mode 100644 index 0000000..4b9c9bf --- /dev/null +++ b/data/tt0046268.yml @@ -0,0 +1,2 @@ +--- +tt0046268: diff --git a/data/tt0046911.yml b/data/tt0046911.yml new file mode 100644 index 0000000..40426c0 --- /dev/null +++ b/data/tt0046911.yml @@ -0,0 +1,2 @@ +--- +tt0046911: diff --git a/data/tt0046912.yml b/data/tt0046912.yml new file mode 100644 index 0000000..412da57 --- /dev/null +++ b/data/tt0046912.yml @@ -0,0 +1,2 @@ +--- +tt0046912: diff --git a/tt0047296.yml b/data/tt0047296.yml similarity index 100% rename from tt0047296.yml rename to data/tt0047296.yml diff --git a/data/tt0047396.yml b/data/tt0047396.yml new file mode 100644 index 0000000..ff194d1 --- /dev/null +++ b/data/tt0047396.yml @@ -0,0 +1,2 @@ +--- +tt0047396: diff --git a/data/tt0047478.yml b/data/tt0047478.yml new file mode 100644 index 0000000..bac596a --- /dev/null +++ b/data/tt0047478.yml @@ -0,0 +1,2 @@ +--- +tt0047478: diff --git a/data/tt0047528.yml b/data/tt0047528.yml new file mode 100644 index 0000000..6c1681e --- /dev/null +++ b/data/tt0047528.yml @@ -0,0 +1,2 @@ +--- +tt0047528: diff --git a/tt0048424.yml b/data/tt0048424.yml similarity index 100% rename from tt0048424.yml rename to data/tt0048424.yml diff --git a/tt0049406.yml b/data/tt0049406.yml similarity index 100% rename from tt0049406.yml rename to data/tt0049406.yml diff --git a/tt0050083.yml b/data/tt0050083.yml similarity index 100% rename from tt0050083.yml rename to data/tt0050083.yml diff --git a/tt0050212.yml b/data/tt0050212.yml similarity index 100% rename from tt0050212.yml rename to data/tt0050212.yml diff --git a/data/tt0050613.yml b/data/tt0050613.yml new file mode 100644 index 0000000..4abcf94 --- /dev/null +++ b/data/tt0050613.yml @@ -0,0 +1,2 @@ +--- +tt0050613: diff --git a/data/tt0050825.yml b/data/tt0050825.yml new file mode 100644 index 0000000..245466b --- /dev/null +++ b/data/tt0050825.yml @@ -0,0 +1,2 @@ +--- +tt0050825: diff --git a/data/tt0050976.yml b/data/tt0050976.yml new file mode 100644 index 0000000..3939e48 --- /dev/null +++ b/data/tt0050976.yml @@ -0,0 +1,2 @@ +--- +tt0050976: diff --git a/data/tt0050986.yml b/data/tt0050986.yml new file mode 100644 index 0000000..a0a9ccf --- /dev/null +++ b/data/tt0050986.yml @@ -0,0 +1,2 @@ +--- +tt0050986: diff --git a/data/tt0051201.yml b/data/tt0051201.yml new file mode 100644 index 0000000..5433522 --- /dev/null +++ b/data/tt0051201.yml @@ -0,0 +1,2 @@ +--- +tt0051201: diff --git a/data/tt0052311.yml b/data/tt0052311.yml new file mode 100644 index 0000000..418c70e --- /dev/null +++ b/data/tt0052311.yml @@ -0,0 +1,2 @@ +--- +tt0052311: diff --git a/data/tt0052357.yml b/data/tt0052357.yml new file mode 100644 index 0000000..d5b6295 --- /dev/null +++ b/data/tt0052357.yml @@ -0,0 +1,2 @@ +--- +tt0052357: diff --git a/data/tt0052561.yml b/data/tt0052561.yml new file mode 100644 index 0000000..17bcba4 --- /dev/null +++ b/data/tt0052561.yml @@ -0,0 +1,2 @@ +--- +tt0052561: diff --git a/tt0052618.yml b/data/tt0052618.yml similarity index 100% rename from tt0052618.yml rename to data/tt0052618.yml diff --git a/data/tt0053125.yml b/data/tt0053125.yml new file mode 100644 index 0000000..876f88a --- /dev/null +++ b/data/tt0053125.yml @@ -0,0 +1,2 @@ +--- +tt0053125: diff --git a/data/tt0053198.yml b/data/tt0053198.yml new file mode 100644 index 0000000..2743ee4 --- /dev/null +++ b/data/tt0053198.yml @@ -0,0 +1,2 @@ +--- +tt0053198: diff --git a/tt0053291.yml b/data/tt0053291.yml similarity index 100% rename from tt0053291.yml rename to data/tt0053291.yml diff --git a/data/tt0053604.yml b/data/tt0053604.yml new file mode 100644 index 0000000..a2f99e9 --- /dev/null +++ b/data/tt0053604.yml @@ -0,0 +1,2 @@ +--- +tt0053604: diff --git a/tt0054215.yml b/data/tt0054215.yml similarity index 100% rename from tt0054215.yml rename to data/tt0054215.yml diff --git a/data/tt0054997.yml b/data/tt0054997.yml new file mode 100644 index 0000000..3a1ae03 --- /dev/null +++ b/data/tt0054997.yml @@ -0,0 +1,2 @@ +--- +tt0054997: diff --git a/data/tt0055031.yml b/data/tt0055031.yml new file mode 100644 index 0000000..54f9897 --- /dev/null +++ b/data/tt0055031.yml @@ -0,0 +1,2 @@ +--- +tt0055031: diff --git a/data/tt0055630.yml b/data/tt0055630.yml new file mode 100644 index 0000000..9928e29 --- /dev/null +++ b/data/tt0055630.yml @@ -0,0 +1,2 @@ +--- +tt0055630: diff --git a/tt0056172.yml b/data/tt0056172.yml similarity index 100% rename from tt0056172.yml rename to data/tt0056172.yml diff --git a/tt0056592.yml b/data/tt0056592.yml similarity index 100% rename from tt0056592.yml rename to data/tt0056592.yml diff --git a/data/tt0056801.yml b/data/tt0056801.yml new file mode 100644 index 0000000..18d9656 --- /dev/null +++ b/data/tt0056801.yml @@ -0,0 +1,2 @@ +--- +tt0056801: diff --git a/tt0057012.yml b/data/tt0057012.yml similarity index 100% rename from tt0057012.yml rename to data/tt0057012.yml diff --git a/data/tt0057115.yml b/data/tt0057115.yml new file mode 100644 index 0000000..d3554bf --- /dev/null +++ b/data/tt0057115.yml @@ -0,0 +1,2 @@ +--- +tt0057115: diff --git a/tt0058461.yml b/data/tt0058461.yml similarity index 100% rename from tt0058461.yml rename to data/tt0058461.yml diff --git a/tt0058946.yml b/data/tt0058946.yml similarity index 100% rename from tt0058946.yml rename to data/tt0058946.yml diff --git a/data/tt0059578.yml b/data/tt0059578.yml new file mode 100644 index 0000000..bc3ec69 --- /dev/null +++ b/data/tt0059578.yml @@ -0,0 +1,2 @@ +--- +tt0059578: diff --git a/tt0060196.yml b/data/tt0060196.yml similarity index 100% rename from tt0060196.yml rename to data/tt0060196.yml diff --git a/data/tt0060827.yml b/data/tt0060827.yml new file mode 100644 index 0000000..02ae616 --- /dev/null +++ b/data/tt0060827.yml @@ -0,0 +1,2 @@ +--- +tt0060827: diff --git a/data/tt0061184.yml b/data/tt0061184.yml new file mode 100644 index 0000000..8ee5be3 --- /dev/null +++ b/data/tt0061184.yml @@ -0,0 +1,2 @@ +--- +tt0061184: diff --git a/data/tt0061512.yml b/data/tt0061512.yml new file mode 100644 index 0000000..a8264bb --- /dev/null +++ b/data/tt0061512.yml @@ -0,0 +1,2 @@ +--- +tt0061512: diff --git a/tt0061722.yml b/data/tt0061722.yml similarity index 100% rename from tt0061722.yml rename to data/tt0061722.yml diff --git a/tt0062622.yml b/data/tt0062622.yml similarity index 100% rename from tt0062622.yml rename to data/tt0062622.yml diff --git a/tt0064115.yml b/data/tt0064115.yml similarity index 100% rename from tt0064115.yml rename to data/tt0064115.yml diff --git a/data/tt0064116.yml b/data/tt0064116.yml new file mode 100644 index 0000000..3af61e8 --- /dev/null +++ b/data/tt0064116.yml @@ -0,0 +1,2 @@ +--- +tt0064116: diff --git a/data/tt0066921.yml b/data/tt0066921.yml new file mode 100644 index 0000000..61dc550 --- /dev/null +++ b/data/tt0066921.yml @@ -0,0 +1,2 @@ +--- +tt0066921: diff --git a/tt0068646.yml b/data/tt0068646.yml similarity index 100% rename from tt0068646.yml rename to data/tt0068646.yml diff --git a/tt0070511.yml b/data/tt0070511.yml similarity index 100% rename from tt0070511.yml rename to data/tt0070511.yml diff --git a/tt0070735.yml b/data/tt0070735.yml similarity index 100% rename from tt0070735.yml rename to data/tt0070735.yml diff --git a/data/tt0071315.yml b/data/tt0071315.yml new file mode 100644 index 0000000..56faa5b --- /dev/null +++ b/data/tt0071315.yml @@ -0,0 +1,2 @@ +--- +tt0071315: diff --git a/data/tt0071562.yml b/data/tt0071562.yml new file mode 100644 index 0000000..3e6251b --- /dev/null +++ b/data/tt0071562.yml @@ -0,0 +1,2 @@ +--- +tt0071562: diff --git a/data/tt0071853.yml b/data/tt0071853.yml new file mode 100644 index 0000000..ffb2f67 --- /dev/null +++ b/data/tt0071853.yml @@ -0,0 +1,2 @@ +--- +tt0071853: diff --git a/data/tt0072684.yml b/data/tt0072684.yml new file mode 100644 index 0000000..74474ff --- /dev/null +++ b/data/tt0072684.yml @@ -0,0 +1,2 @@ +--- +tt0072684: diff --git a/data/tt0072890.yml b/data/tt0072890.yml new file mode 100644 index 0000000..ca79a7a --- /dev/null +++ b/data/tt0072890.yml @@ -0,0 +1,2 @@ +--- +tt0072890: diff --git a/tt0073195.yml b/data/tt0073195.yml similarity index 100% rename from tt0073195.yml rename to data/tt0073195.yml diff --git a/tt0073486.yml b/data/tt0073486.yml similarity index 100% rename from tt0073486.yml rename to data/tt0073486.yml diff --git a/data/tt0074958.yml b/data/tt0074958.yml new file mode 100644 index 0000000..c0249c6 --- /dev/null +++ b/data/tt0074958.yml @@ -0,0 +1,2 @@ +--- +tt0074958: diff --git a/tt0075148.yml b/data/tt0075148.yml similarity index 100% rename from tt0075148.yml rename to data/tt0075148.yml diff --git a/tt0075314.yml b/data/tt0075314.yml similarity index 100% rename from tt0075314.yml rename to data/tt0075314.yml diff --git a/tt0075686.yml b/data/tt0075686.yml similarity index 100% rename from tt0075686.yml rename to data/tt0075686.yml diff --git a/tt0076759.yml b/data/tt0076759.yml similarity index 100% rename from tt0076759.yml rename to data/tt0076759.yml diff --git a/data/tt0077416.yml b/data/tt0077416.yml new file mode 100644 index 0000000..7d7f668 --- /dev/null +++ b/data/tt0077416.yml @@ -0,0 +1,2 @@ +--- +tt0077416: diff --git a/tt0078748.yml b/data/tt0078748.yml similarity index 100% rename from tt0078748.yml rename to data/tt0078748.yml diff --git a/tt0078788.yml b/data/tt0078788.yml similarity index 100% rename from tt0078788.yml rename to data/tt0078788.yml diff --git a/data/tt0079470.yml b/data/tt0079470.yml new file mode 100644 index 0000000..0a1e571 --- /dev/null +++ b/data/tt0079470.yml @@ -0,0 +1,2 @@ +--- +tt0079470: diff --git a/data/tt0079944.yml b/data/tt0079944.yml new file mode 100644 index 0000000..c1fb0f6 --- /dev/null +++ b/data/tt0079944.yml @@ -0,0 +1,2 @@ +--- +tt0079944: diff --git a/data/tt0080678.yml b/data/tt0080678.yml new file mode 100644 index 0000000..1d01587 --- /dev/null +++ b/data/tt0080678.yml @@ -0,0 +1,2 @@ +--- +tt0080678: diff --git a/tt0080684.yml b/data/tt0080684.yml similarity index 100% rename from tt0080684.yml rename to data/tt0080684.yml diff --git a/data/tt0081398.yml b/data/tt0081398.yml new file mode 100644 index 0000000..6178d8e --- /dev/null +++ b/data/tt0081398.yml @@ -0,0 +1,2 @@ +--- +tt0081398: diff --git a/tt0081505.yml b/data/tt0081505.yml similarity index 100% rename from tt0081505.yml rename to data/tt0081505.yml diff --git a/tt0082096.yml b/data/tt0082096.yml similarity index 100% rename from tt0082096.yml rename to data/tt0082096.yml diff --git a/tt0082971.yml b/data/tt0082971.yml similarity index 100% rename from tt0082971.yml rename to data/tt0082971.yml diff --git a/tt0083658.yml b/data/tt0083658.yml similarity index 100% rename from tt0083658.yml rename to data/tt0083658.yml diff --git a/data/tt0083922.yml b/data/tt0083922.yml new file mode 100644 index 0000000..3365fe9 --- /dev/null +++ b/data/tt0083922.yml @@ -0,0 +1,2 @@ +--- +tt0083922: diff --git a/tt0083987.yml b/data/tt0083987.yml similarity index 100% rename from tt0083987.yml rename to data/tt0083987.yml diff --git a/data/tt0084787.yml b/data/tt0084787.yml new file mode 100644 index 0000000..8ed9558 --- /dev/null +++ b/data/tt0084787.yml @@ -0,0 +1,2 @@ +--- +tt0084787: diff --git a/tt0086190.yml b/data/tt0086190.yml similarity index 100% rename from tt0086190.yml rename to data/tt0086190.yml diff --git a/data/tt0086250.yml b/data/tt0086250.yml new file mode 100644 index 0000000..cf7c8ab --- /dev/null +++ b/data/tt0086250.yml @@ -0,0 +1,2 @@ +--- +tt0086250: diff --git a/tt0086879.yml b/data/tt0086879.yml similarity index 100% rename from tt0086879.yml rename to data/tt0086879.yml diff --git a/data/tt0087544.yml b/data/tt0087544.yml new file mode 100644 index 0000000..41e2be3 --- /dev/null +++ b/data/tt0087544.yml @@ -0,0 +1,2 @@ +--- +tt0087544: diff --git a/tt0087843.yml b/data/tt0087843.yml similarity index 100% rename from tt0087843.yml rename to data/tt0087843.yml diff --git a/tt0088247.yml b/data/tt0088247.yml similarity index 100% rename from tt0088247.yml rename to data/tt0088247.yml diff --git a/tt0088763.yml b/data/tt0088763.yml similarity index 100% rename from tt0088763.yml rename to data/tt0088763.yml diff --git a/data/tt0089881.yml b/data/tt0089881.yml new file mode 100644 index 0000000..01d97bb --- /dev/null +++ b/data/tt0089881.yml @@ -0,0 +1,2 @@ +--- +tt0089881: diff --git a/tt0090605.yml b/data/tt0090605.yml similarity index 100% rename from tt0090605.yml rename to data/tt0090605.yml diff --git a/tt0091763.yml b/data/tt0091763.yml similarity index 100% rename from tt0091763.yml rename to data/tt0091763.yml diff --git a/tt0092005.yml b/data/tt0092005.yml similarity index 100% rename from tt0092005.yml rename to data/tt0092005.yml diff --git a/data/tt0092067.yml b/data/tt0092067.yml new file mode 100644 index 0000000..f2217bb --- /dev/null +++ b/data/tt0092067.yml @@ -0,0 +1,2 @@ +--- +tt0092067: diff --git a/tt0093058.yml b/data/tt0093058.yml similarity index 100% rename from tt0093058.yml rename to data/tt0093058.yml diff --git a/tt0093779.yml b/data/tt0093779.yml similarity index 100% rename from tt0093779.yml rename to data/tt0093779.yml diff --git a/tt0094625.yml b/data/tt0094625.yml similarity index 100% rename from tt0094625.yml rename to data/tt0094625.yml diff --git a/tt0095016.yml b/data/tt0095016.yml similarity index 100% rename from tt0095016.yml rename to data/tt0095016.yml diff --git a/data/tt0095327.yml b/data/tt0095327.yml new file mode 100644 index 0000000..70147c0 --- /dev/null +++ b/data/tt0095327.yml @@ -0,0 +1,2 @@ +--- +tt0095327: diff --git a/tt0095765.yml b/data/tt0095765.yml similarity index 100% rename from tt0095765.yml rename to data/tt0095765.yml diff --git a/data/tt0096283.yml b/data/tt0096283.yml new file mode 100644 index 0000000..43901e1 --- /dev/null +++ b/data/tt0096283.yml @@ -0,0 +1,2 @@ +--- +tt0096283: diff --git a/tt0097576.yml b/data/tt0097576.yml similarity index 100% rename from tt0097576.yml rename to data/tt0097576.yml diff --git a/tt0099685.yml b/data/tt0099685.yml similarity index 100% rename from tt0099685.yml rename to data/tt0099685.yml diff --git a/tt0101414.yml b/data/tt0101414.yml similarity index 100% rename from tt0101414.yml rename to data/tt0101414.yml diff --git a/tt0102926.yml b/data/tt0102926.yml similarity index 100% rename from tt0102926.yml rename to data/tt0102926.yml diff --git a/tt0103064.yml b/data/tt0103064.yml similarity index 100% rename from tt0103064.yml rename to data/tt0103064.yml diff --git a/tt0105236.yml b/data/tt0105236.yml similarity index 100% rename from tt0105236.yml rename to data/tt0105236.yml diff --git a/tt0105695.yml b/data/tt0105695.yml similarity index 100% rename from tt0105695.yml rename to data/tt0105695.yml diff --git a/tt0107048.yml b/data/tt0107048.yml similarity index 100% rename from tt0107048.yml rename to data/tt0107048.yml diff --git a/tt0107207.yml b/data/tt0107207.yml similarity index 100% rename from tt0107207.yml rename to data/tt0107207.yml diff --git a/tt0107290.yml b/data/tt0107290.yml similarity index 100% rename from tt0107290.yml rename to data/tt0107290.yml diff --git a/tt0108052.yml b/data/tt0108052.yml similarity index 100% rename from tt0108052.yml rename to data/tt0108052.yml diff --git a/tt0109830.yml b/data/tt0109830.yml similarity index 100% rename from tt0109830.yml rename to data/tt0109830.yml diff --git a/tt0110357.yml b/data/tt0110357.yml similarity index 100% rename from tt0110357.yml rename to data/tt0110357.yml diff --git a/tt0110413.yml b/data/tt0110413.yml similarity index 100% rename from tt0110413.yml rename to data/tt0110413.yml diff --git a/tt0110912.yml b/data/tt0110912.yml similarity index 100% rename from tt0110912.yml rename to data/tt0110912.yml diff --git a/tt0111161.yml b/data/tt0111161.yml similarity index 100% rename from tt0111161.yml rename to data/tt0111161.yml diff --git a/tt0112471.yml b/data/tt0112471.yml similarity index 100% rename from tt0112471.yml rename to data/tt0112471.yml diff --git a/tt0112573.yml b/data/tt0112573.yml similarity index 100% rename from tt0112573.yml rename to data/tt0112573.yml diff --git a/tt0112641.yml b/data/tt0112641.yml similarity index 100% rename from tt0112641.yml rename to data/tt0112641.yml diff --git a/data/tt0113247.yml b/data/tt0113247.yml new file mode 100644 index 0000000..14dbca4 --- /dev/null +++ b/data/tt0113247.yml @@ -0,0 +1,2 @@ +--- +tt0113247: "€2,590,000" diff --git a/tt0113277.yml b/data/tt0113277.yml similarity index 100% rename from tt0113277.yml rename to data/tt0113277.yml diff --git a/tt0114369.yml b/data/tt0114369.yml similarity index 100% rename from tt0114369.yml rename to data/tt0114369.yml diff --git a/tt0114709.yml b/data/tt0114709.yml similarity index 100% rename from tt0114709.yml rename to data/tt0114709.yml diff --git a/data/tt0114746.yml b/data/tt0114746.yml new file mode 100644 index 0000000..3fa0f71 --- /dev/null +++ b/data/tt0114746.yml @@ -0,0 +1,2 @@ +--- +tt0114746: diff --git a/data/tt0114787.yml b/data/tt0114787.yml new file mode 100644 index 0000000..a66904f --- /dev/null +++ b/data/tt0114787.yml @@ -0,0 +1,2 @@ +--- +tt0114787: diff --git a/tt0114814.yml b/data/tt0114814.yml similarity index 100% rename from tt0114814.yml rename to data/tt0114814.yml diff --git a/tt0116282.yml b/data/tt0116282.yml similarity index 100% rename from tt0116282.yml rename to data/tt0116282.yml diff --git a/tt0117951.yml b/data/tt0117951.yml similarity index 100% rename from tt0117951.yml rename to data/tt0117951.yml diff --git a/data/tt0118715.yml b/data/tt0118715.yml new file mode 100644 index 0000000..9ec5b62 --- /dev/null +++ b/data/tt0118715.yml @@ -0,0 +1,2 @@ +--- +tt0118715: diff --git a/tt0118799.yml b/data/tt0118799.yml similarity index 100% rename from tt0118799.yml rename to data/tt0118799.yml diff --git a/tt0119217.yml b/data/tt0119217.yml similarity index 100% rename from tt0119217.yml rename to data/tt0119217.yml diff --git a/tt0119488.yml b/data/tt0119488.yml similarity index 100% rename from tt0119488.yml rename to data/tt0119488.yml diff --git a/data/tt0119698.yml b/data/tt0119698.yml new file mode 100644 index 0000000..daa8b39 --- /dev/null +++ b/data/tt0119698.yml @@ -0,0 +1,2 @@ +--- +tt0119698: diff --git a/tt0120382.yml b/data/tt0120382.yml similarity index 100% rename from tt0120382.yml rename to data/tt0120382.yml diff --git a/tt0120586.yml b/data/tt0120586.yml similarity index 100% rename from tt0120586.yml rename to data/tt0120586.yml diff --git a/tt0120689.yml b/data/tt0120689.yml similarity index 100% rename from tt0120689.yml rename to data/tt0120689.yml diff --git a/data/tt0120735.yml b/data/tt0120735.yml new file mode 100644 index 0000000..cee32ef --- /dev/null +++ b/data/tt0120735.yml @@ -0,0 +1,2 @@ +--- +tt0120735: diff --git a/tt0120737.yml b/data/tt0120737.yml similarity index 100% rename from tt0120737.yml rename to data/tt0120737.yml diff --git a/tt0120815.yml b/data/tt0120815.yml similarity index 100% rename from tt0120815.yml rename to data/tt0120815.yml diff --git a/tt0133093.yml b/data/tt0133093.yml similarity index 100% rename from tt0133093.yml rename to data/tt0133093.yml diff --git a/tt0137523.yml b/data/tt0137523.yml similarity index 100% rename from tt0137523.yml rename to data/tt0137523.yml diff --git a/tt0167260.yml b/data/tt0167260.yml similarity index 100% rename from tt0167260.yml rename to data/tt0167260.yml diff --git a/tt0167261.yml b/data/tt0167261.yml similarity index 100% rename from tt0167261.yml rename to data/tt0167261.yml diff --git a/data/tt0167404.yml b/data/tt0167404.yml new file mode 100644 index 0000000..81b6a31 --- /dev/null +++ b/data/tt0167404.yml @@ -0,0 +1,2 @@ +--- +tt0167404: diff --git a/tt0169547.yml b/data/tt0169547.yml similarity index 100% rename from tt0169547.yml rename to data/tt0169547.yml diff --git a/tt0172495.yml b/data/tt0172495.yml similarity index 100% rename from tt0172495.yml rename to data/tt0172495.yml diff --git a/tt0180093.yml b/data/tt0180093.yml similarity index 100% rename from tt0180093.yml rename to data/tt0180093.yml diff --git a/tt0198781.yml b/data/tt0198781.yml similarity index 100% rename from tt0198781.yml rename to data/tt0198781.yml diff --git a/data/tt0208092.yml b/data/tt0208092.yml new file mode 100644 index 0000000..4701b46 --- /dev/null +++ b/data/tt0208092.yml @@ -0,0 +1,2 @@ +--- +tt0208092: "£6,000,000" diff --git a/tt0209144.yml b/data/tt0209144.yml similarity index 100% rename from tt0209144.yml rename to data/tt0209144.yml diff --git a/data/tt0211915.yml b/data/tt0211915.yml new file mode 100644 index 0000000..5f2a8f1 --- /dev/null +++ b/data/tt0211915.yml @@ -0,0 +1,2 @@ +--- +tt0211915: FRF 77,000,000 diff --git a/data/tt0245429.yml b/data/tt0245429.yml new file mode 100644 index 0000000..7207e20 --- /dev/null +++ b/data/tt0245429.yml @@ -0,0 +1,2 @@ +--- +tt0245429: diff --git a/tt0245712.yml b/data/tt0245712.yml similarity index 100% rename from tt0245712.yml rename to data/tt0245712.yml diff --git a/tt0246578.yml b/data/tt0246578.yml similarity index 100% rename from tt0246578.yml rename to data/tt0246578.yml diff --git a/tt0253474.yml b/data/tt0253474.yml similarity index 100% rename from tt0253474.yml rename to data/tt0253474.yml diff --git a/tt0266543.yml b/data/tt0266543.yml similarity index 100% rename from tt0266543.yml rename to data/tt0266543.yml diff --git a/tt0266697.yml b/data/tt0266697.yml similarity index 100% rename from tt0266697.yml rename to data/tt0266697.yml diff --git a/tt0268978.yml b/data/tt0268978.yml similarity index 100% rename from tt0268978.yml rename to data/tt0268978.yml diff --git a/tt0317248.yml b/data/tt0317248.yml similarity index 100% rename from tt0317248.yml rename to data/tt0317248.yml diff --git a/tt0325980.yml b/data/tt0325980.yml similarity index 100% rename from tt0325980.yml rename to data/tt0325980.yml diff --git a/tt0338013.yml b/data/tt0338013.yml similarity index 100% rename from tt0338013.yml rename to data/tt0338013.yml diff --git a/data/tt0338564.yml b/data/tt0338564.yml new file mode 100644 index 0000000..e34bb7a --- /dev/null +++ b/data/tt0338564.yml @@ -0,0 +1,2 @@ +--- +tt0338564: diff --git a/data/tt0347149.yml b/data/tt0347149.yml new file mode 100644 index 0000000..8582b61 --- /dev/null +++ b/data/tt0347149.yml @@ -0,0 +1,2 @@ +--- +tt0347149: diff --git a/data/tt0353969.yml b/data/tt0353969.yml new file mode 100644 index 0000000..dc14e8a --- /dev/null +++ b/data/tt0353969.yml @@ -0,0 +1,2 @@ +--- +tt0353969: diff --git a/tt0361748.yml b/data/tt0361748.yml similarity index 100% rename from tt0361748.yml rename to data/tt0361748.yml diff --git a/data/tt0363163.yml b/data/tt0363163.yml new file mode 100644 index 0000000..7d546f2 --- /dev/null +++ b/data/tt0363163.yml @@ -0,0 +1,2 @@ +--- +tt0363163: "€13,500,000" diff --git a/tt0364569.yml b/data/tt0364569.yml similarity index 100% rename from tt0364569.yml rename to data/tt0364569.yml diff --git a/tt0372784.yml b/data/tt0372784.yml similarity index 100% rename from tt0372784.yml rename to data/tt0372784.yml diff --git a/data/tt0374546.yml b/data/tt0374546.yml new file mode 100644 index 0000000..ce9cc24 --- /dev/null +++ b/data/tt0374546.yml @@ -0,0 +1,2 @@ +--- +tt0374546: diff --git a/tt0381681.yml b/data/tt0381681.yml similarity index 100% rename from tt0381681.yml rename to data/tt0381681.yml diff --git a/tt0395169.yml b/data/tt0395169.yml similarity index 100% rename from tt0395169.yml rename to data/tt0395169.yml diff --git a/tt0401792.yml b/data/tt0401792.yml similarity index 100% rename from tt0401792.yml rename to data/tt0401792.yml diff --git a/tt0405094.yml b/data/tt0405094.yml similarity index 100% rename from tt0405094.yml rename to data/tt0405094.yml diff --git a/tt0405159.yml b/data/tt0405159.yml similarity index 100% rename from tt0405159.yml rename to data/tt0405159.yml diff --git a/tt0407887.yml b/data/tt0407887.yml similarity index 100% rename from tt0407887.yml rename to data/tt0407887.yml diff --git a/tt0434409.yml b/data/tt0434409.yml similarity index 100% rename from tt0434409.yml rename to data/tt0434409.yml diff --git a/tt0435761.yml b/data/tt0435761.yml similarity index 100% rename from tt0435761.yml rename to data/tt0435761.yml diff --git a/tt0440963.yml b/data/tt0440963.yml similarity index 100% rename from tt0440963.yml rename to data/tt0440963.yml diff --git a/data/tt0457430.yml b/data/tt0457430.yml new file mode 100644 index 0000000..c3731f5 --- /dev/null +++ b/data/tt0457430.yml @@ -0,0 +1,2 @@ +--- +tt0457430: "€13,500,000" diff --git a/tt0468569.yml b/data/tt0468569.yml similarity index 100% rename from tt0468569.yml rename to data/tt0468569.yml diff --git a/tt0469494.yml b/data/tt0469494.yml similarity index 100% rename from tt0469494.yml rename to data/tt0469494.yml diff --git a/tt0477348.yml b/data/tt0477348.yml similarity index 100% rename from tt0477348.yml rename to data/tt0477348.yml diff --git a/tt0482571.yml b/data/tt0482571.yml similarity index 100% rename from tt0482571.yml rename to data/tt0482571.yml diff --git a/tt0758758.yml b/data/tt0758758.yml similarity index 100% rename from tt0758758.yml rename to data/tt0758758.yml diff --git a/tt0816692.yml b/data/tt0816692.yml similarity index 100% rename from tt0816692.yml rename to data/tt0816692.yml diff --git a/tt0848228.yml b/data/tt0848228.yml similarity index 100% rename from tt0848228.yml rename to data/tt0848228.yml diff --git a/data/tt0892769.yml b/data/tt0892769.yml new file mode 100644 index 0000000..af472f1 --- /dev/null +++ b/data/tt0892769.yml @@ -0,0 +1,2 @@ +--- +tt0892769: diff --git a/tt0910970.yml b/data/tt0910970.yml similarity index 100% rename from tt0910970.yml rename to data/tt0910970.yml diff --git a/data/tt0978762.yml b/data/tt0978762.yml new file mode 100644 index 0000000..4baa2f4 --- /dev/null +++ b/data/tt0978762.yml @@ -0,0 +1,2 @@ +--- +tt0978762: AUD 8,240,000 diff --git a/data/tt0993846.yml b/data/tt0993846.yml new file mode 100644 index 0000000..d76ac2b --- /dev/null +++ b/data/tt0993846.yml @@ -0,0 +1,2 @@ +--- +tt0993846: diff --git a/tt1028532.yml b/data/tt1028532.yml similarity index 100% rename from tt1028532.yml rename to data/tt1028532.yml diff --git a/tt1049413.yml b/data/tt1049413.yml similarity index 100% rename from tt1049413.yml rename to data/tt1049413.yml diff --git a/data/tt1069238.yml b/data/tt1069238.yml new file mode 100644 index 0000000..8dab3bb --- /dev/null +++ b/data/tt1069238.yml @@ -0,0 +1,2 @@ +--- +tt1069238: diff --git a/tt1130884.yml b/data/tt1130884.yml similarity index 100% rename from tt1130884.yml rename to data/tt1130884.yml diff --git a/data/tt1187043.yml b/data/tt1187043.yml new file mode 100644 index 0000000..fcbaa13 --- /dev/null +++ b/data/tt1187043.yml @@ -0,0 +1,2 @@ +--- +tt1187043: diff --git a/tt1201607.yml b/data/tt1201607.yml similarity index 100% rename from tt1201607.yml rename to data/tt1201607.yml diff --git a/data/tt1205489.yml b/data/tt1205489.yml new file mode 100644 index 0000000..810f174 --- /dev/null +++ b/data/tt1205489.yml @@ -0,0 +1,2 @@ +--- +tt1205489: diff --git a/data/tt1220719.yml b/data/tt1220719.yml new file mode 100644 index 0000000..4fc7a9e --- /dev/null +++ b/data/tt1220719.yml @@ -0,0 +1,2 @@ +--- +tt1220719: diff --git a/tt1255953.yml b/data/tt1255953.yml similarity index 100% rename from tt1255953.yml rename to data/tt1255953.yml diff --git a/tt1291584.yml b/data/tt1291584.yml similarity index 100% rename from tt1291584.yml rename to data/tt1291584.yml diff --git a/data/tt1305806.yml b/data/tt1305806.yml new file mode 100644 index 0000000..f18e7d6 --- /dev/null +++ b/data/tt1305806.yml @@ -0,0 +1,2 @@ +--- +tt1305806: diff --git a/tt1345836.yml b/data/tt1345836.yml similarity index 100% rename from tt1345836.yml rename to data/tt1345836.yml diff --git a/tt1375666.yml b/data/tt1375666.yml similarity index 100% rename from tt1375666.yml rename to data/tt1375666.yml diff --git a/tt1392190.yml b/data/tt1392190.yml similarity index 100% rename from tt1392190.yml rename to data/tt1392190.yml diff --git a/tt1392214.yml b/data/tt1392214.yml similarity index 100% rename from tt1392214.yml rename to data/tt1392214.yml diff --git a/tt1454029.yml b/data/tt1454029.yml similarity index 100% rename from tt1454029.yml rename to data/tt1454029.yml diff --git a/tt1504320.yml b/data/tt1504320.yml similarity index 100% rename from tt1504320.yml rename to data/tt1504320.yml diff --git a/data/tt1555149.yml b/data/tt1555149.yml new file mode 100644 index 0000000..b02c294 --- /dev/null +++ b/data/tt1555149.yml @@ -0,0 +1,2 @@ +--- +tt1555149: diff --git a/data/tt1675434.yml b/data/tt1675434.yml new file mode 100644 index 0000000..8877800 --- /dev/null +++ b/data/tt1675434.yml @@ -0,0 +1,2 @@ +--- +tt1675434: "€9,500,000" diff --git a/tt1832382.yml b/data/tt1832382.yml similarity index 100% rename from tt1832382.yml rename to data/tt1832382.yml diff --git a/tt1853728.yml b/data/tt1853728.yml similarity index 100% rename from tt1853728.yml rename to data/tt1853728.yml diff --git a/tt1877832.yml b/data/tt1877832.yml similarity index 100% rename from tt1877832.yml rename to data/tt1877832.yml diff --git a/tt1979320.yml b/data/tt1979320.yml similarity index 100% rename from tt1979320.yml rename to data/tt1979320.yml diff --git a/tt2015381.yml b/data/tt2015381.yml similarity index 100% rename from tt2015381.yml rename to data/tt2015381.yml diff --git a/tt2024544.yml b/data/tt2024544.yml similarity index 100% rename from tt2024544.yml rename to data/tt2024544.yml diff --git a/tt2084970.yml b/data/tt2084970.yml similarity index 100% rename from tt2084970.yml rename to data/tt2084970.yml diff --git a/tt2096673.yml b/data/tt2096673.yml similarity index 100% rename from tt2096673.yml rename to data/tt2096673.yml diff --git a/tt2106476.yml b/data/tt2106476.yml similarity index 100% rename from tt2106476.yml rename to data/tt2106476.yml diff --git a/tt2267998.yml b/data/tt2267998.yml similarity index 100% rename from tt2267998.yml rename to data/tt2267998.yml diff --git a/data/tt2278388.yml b/data/tt2278388.yml new file mode 100644 index 0000000..99782db --- /dev/null +++ b/data/tt2278388.yml @@ -0,0 +1,2 @@ +--- +tt2278388: diff --git a/tt2582802.yml b/data/tt2582802.yml similarity index 100% rename from tt2582802.yml rename to data/tt2582802.yml diff --git a/tt3011894.yml b/data/tt3011894.yml similarity index 100% rename from tt3011894.yml rename to data/tt3011894.yml diff --git a/js/bootstrap.js b/js/bootstrap.js deleted file mode 100644 index 8a2e99a..0000000 --- a/js/bootstrap.js +++ /dev/null @@ -1,2377 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under the MIT license - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - 'use strict'; - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.7 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.7 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.7' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector === '#' ? [] : selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.7 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.7' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state += 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d).prop(d, true) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d).prop(d, false) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked')) changed = false - $parent.find('.active').removeClass('active') - this.$element.addClass('active') - } else if ($input.prop('type') == 'checkbox') { - if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false - this.$element.toggleClass('active') - } - $input.prop('checked', this.$element.hasClass('active')) - if (changed) $input.trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - this.$element.toggleClass('active') - } - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target).closest('.btn') - Plugin.call($btn, 'toggle') - if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { - // Prevent double click on radios, and the double selections (so cancellation) on checkboxes - e.preventDefault() - // The target component still receive the focus - if ($btn.is('input,button')) $btn.trigger('focus') - else $btn.find('input:visible,button:visible').first().trigger('focus') - } - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.7 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = null - this.sliding = null - this.interval = null - this.$active = null - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.7' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var activeIndex = this.getItemIndex(active) - var willWrap = (direction == 'prev' && activeIndex === 0) - || (direction == 'next' && activeIndex == (this.$items.length - 1)) - if (willWrap && !this.options.wrap) return active - var delta = direction == 'prev' ? -1 : 1 - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var that = this - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.7 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - -/* jshint latedef: false */ - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + - '[data-toggle="collapse"][data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.7' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.7 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.7' - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) - }) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(document.createElement('div')) - .addClass('dropdown-backdrop') - .insertAfter($(this)) - .on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger($.Event('shown.bs.dropdown', relatedTarget)) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if (!isActive && e.which != 27 || isActive && e.which == 27) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.disabled):visible a' - var $items = $parent.find('.dropdown-menu' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.7 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$dialog = this.$element.find('.modal-dialog') - this.$backdrop = null - this.isShown = null - this.originalBodyPad = null - this.scrollbarWidth = 0 - this.ignoreBackdropClick = false - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.7' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.$dialog.on('mousedown.dismiss.bs.modal', function () { - that.$element.one('mouseup.dismiss.bs.modal', function (e) { - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true - }) - }) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element.addClass('in') - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$dialog // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .off('click.dismiss.bs.modal') - .off('mouseup.dismiss.bs.modal') - - this.$dialog.off('mousedown.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (document !== e.target && - this.$element[0] !== e.target && - !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $(document.createElement('div')) - .addClass('modal-backdrop ' + animate) - .appendTo(this.$body) - - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { - if (this.ignoreBackdropClick) { - this.ignoreBackdropClick = false - return - } - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus() - : this.hide() - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - this.adjustDialog() - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - var fullWindowWidth = window.innerWidth - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 - var documentElementRect = document.documentElement.getBoundingClientRect() - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) - } - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - this.originalBodyPad = document.body.style.paddingRight || '' - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', this.originalBodyPad) - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.7 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = null - this.options = null - this.enabled = null - this.timeout = null - this.hoverState = null - this.$element = null - this.inState = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.7' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) - this.inState = { click: false, hover: false, focus: false } - - if (this.$element[0] instanceof document.constructor && !this.options.selector) { - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') - } - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true - } - - if (self.tip().hasClass('in') || self.hoverState == 'in') { - self.hoverState = 'in' - return - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.isInStateTrue = function () { - for (var key in this.inState) { - if (this.inState[key]) return true - } - - return false - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false - } - - if (self.isInStateTrue()) return - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - this.$element.trigger('inserted.bs.' + this.type) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var viewportDim = this.getPosition(this.$viewport) - - placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top += marginTop - offset.left += marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { - this.arrow() - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isVertical ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = $(this.$tip) - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - } - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && $tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var isSvg = window.SVGElement && el instanceof window.SVGElement - // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. - // See https://github.com/twbs/bootstrap/issues/20280 - var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - if (!this.$tip) { - this.$tip = $(this.options.template) - if (this.$tip.length != 1) { - throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') - } - } - return this.$tip - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - if (e) { - self.inState.click = !self.inState.click - if (self.isInStateTrue()) self.enter(self) - else self.leave(self) - } else { - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - if (that.$tip) { - that.$tip.detach() - } - that.$tip = null - that.$arrow = null - that.$viewport = null - that.$element = null - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.7 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.7' - - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { - placement: 'right', - trigger: 'click', - content: '', - template: '' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.7 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - this.$body = $(document.body) - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.7' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var that = this - var offsetMethod = 'offset' - var offsetBase = 0 - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - that.offsets.push(this[0]) - that.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.7 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - // jscs:disable requireDollarBeforejQueryAssignment - this.element = $(element) - // jscs:enable requireDollarBeforejQueryAssignment - } - - Tab.VERSION = '3.3.7' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu').length) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.7 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = null - this.unpin = null - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.7' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && scrollTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = Math.max($(document).height(), $(document.body).height()) - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/fixtures/vcr_cassettes/imdb/budget.yml b/spec/fixtures/vcr_cassettes/imdb/budget.yml similarity index 100% rename from fixtures/vcr_cassettes/imdb/budget.yml rename to spec/fixtures/vcr_cassettes/imdb/budget.yml diff --git a/fixtures/vcr_cassettes/imdb/budget_imdb.yml b/spec/fixtures/vcr_cassettes/imdb/budget_imdb.yml similarity index 100% rename from fixtures/vcr_cassettes/imdb/budget_imdb.yml rename to spec/fixtures/vcr_cassettes/imdb/budget_imdb.yml diff --git a/fixtures/vcr_cassettes/tmdb/posters.yml b/spec/fixtures/vcr_cassettes/tmdb/posters.yml similarity index 100% rename from fixtures/vcr_cassettes/tmdb/posters.yml rename to spec/fixtures/vcr_cassettes/tmdb/posters.yml diff --git a/fixtures/vcr_cassettes/tmdb/tmdb_id.yml b/spec/fixtures/vcr_cassettes/tmdb/tmdb_id.yml similarity index 100% rename from fixtures/vcr_cassettes/tmdb/tmdb_id.yml rename to spec/fixtures/vcr_cassettes/tmdb/tmdb_id.yml diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 383a2dc..868f1a5 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -16,6 +16,6 @@ WebMock.disable_net_connect!(allow_localhost: true) VCR.configure do |config| - config.cassette_library_dir = "fixtures/vcr_cassettes" + config.cassette_library_dir = "spec/fixtures/vcr_cassettes" config.hook_into :webmock # or :fakeweb end \ No newline at end of file diff --git a/spec/support/vcr_setup.rb b/spec/support/vcr_setup.rb deleted file mode 100644 index 62da2ff..0000000 --- a/spec/support/vcr_setup.rb +++ /dev/null @@ -1,6 +0,0 @@ -VCR.configure do |c| - # the directory where your cassettes will be saved - c.cassette_library_dir = 'spec/vcr' - # your HTTP request service. - c.hook_into :webmock -end diff --git a/test.rb b/test.rb deleted file mode 100644 index 87a13e3..0000000 --- a/test.rb +++ /dev/null @@ -1,6 +0,0 @@ -require 'haml' - -x = [1,2,3,4] -template = File.open('ttt.haml') -engine = Haml::Engine.new(template.read) -puts engine.render(x) \ No newline at end of file diff --git a/tt0015864.yml b/tt0015864.yml deleted file mode 100644 index c3072a2..0000000 --- a/tt0015864.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0015864: Нет данных о бюджете данного фильма diff --git a/tt0017136.yml b/tt0017136.yml deleted file mode 100644 index 345832c..0000000 --- a/tt0017136.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0017136: Нет данных о бюджете данного фильма diff --git a/tt0017925.yml b/tt0017925.yml deleted file mode 100644 index 1ae0718..0000000 --- a/tt0017925.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0017925: Нет данных о бюджете данного фильма diff --git a/tt0021749.yml b/tt0021749.yml deleted file mode 100644 index f750aee..0000000 --- a/tt0021749.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0021749: Нет данных о бюджете данного фильма diff --git a/tt0022100.yml b/tt0022100.yml deleted file mode 100644 index 8d13678..0000000 --- a/tt0022100.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0022100: Нет данных о бюджете данного фильма diff --git a/tt0025316.yml b/tt0025316.yml deleted file mode 100644 index 4658410..0000000 --- a/tt0025316.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0025316: Нет данных о бюджете данного фильма diff --git a/tt0027977.yml b/tt0027977.yml deleted file mode 100644 index 6f9a9f9..0000000 --- a/tt0027977.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0027977: Нет данных о бюджете данного фильма diff --git a/tt0031679.yml b/tt0031679.yml deleted file mode 100644 index 96237d3..0000000 --- a/tt0031679.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0031679: Нет данных о бюджете данного фильма diff --git a/tt0032551.yml b/tt0032551.yml deleted file mode 100644 index c729c25..0000000 --- a/tt0032551.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0032551: Нет данных о бюджете данного фильма diff --git a/tt0032553.yml b/tt0032553.yml deleted file mode 100644 index f7bf3a4..0000000 --- a/tt0032553.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0032553: Нет данных о бюджете данного фильма diff --git a/tt0032976.yml b/tt0032976.yml deleted file mode 100644 index b742978..0000000 --- a/tt0032976.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0032976: Нет данных о бюджете данного фильма diff --git a/tt0033467.yml b/tt0033467.yml deleted file mode 100644 index 0e47ff4..0000000 --- a/tt0033467.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0033467: Нет данных о бюджете данного фильма diff --git a/tt0033870.yml b/tt0033870.yml deleted file mode 100644 index d944fdc..0000000 --- a/tt0033870.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0033870: Нет данных о бюджете данного фильма diff --git a/tt0037008.yml b/tt0037008.yml deleted file mode 100644 index 285b8ef..0000000 --- a/tt0037008.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0037008: Нет данных о бюджете данного фильма diff --git a/tt0038355.yml b/tt0038355.yml deleted file mode 100644 index 04b0cb2..0000000 --- a/tt0038355.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0038355: Нет данных о бюджете данного фильма diff --git a/tt0038650.yml b/tt0038650.yml deleted file mode 100644 index 0fcd71a..0000000 --- a/tt0038650.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0038650: Нет данных о бюджете данного фильма diff --git a/tt0038787.yml b/tt0038787.yml deleted file mode 100644 index e71db85..0000000 --- a/tt0038787.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0038787: Нет данных о бюджете данного фильма diff --git a/tt0040522.yml b/tt0040522.yml deleted file mode 100644 index a3f87c6..0000000 --- a/tt0040522.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0040522: Нет данных о бюджете данного фильма diff --git a/tt0040897.yml b/tt0040897.yml deleted file mode 100644 index 9d27769..0000000 --- a/tt0040897.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0040897: Нет данных о бюджете данного фильма diff --git a/tt0042192.yml b/tt0042192.yml deleted file mode 100644 index c39526e..0000000 --- a/tt0042192.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0042192: Нет данных о бюджете данного фильма diff --git a/tt0042876.yml b/tt0042876.yml deleted file mode 100644 index 2d28c80..0000000 --- a/tt0042876.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0042876: Нет данных о бюджете данного фильма diff --git a/tt0043014.yml b/tt0043014.yml deleted file mode 100644 index 261620d..0000000 --- a/tt0043014.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0043014: Нет данных о бюджете данного фильма diff --git a/tt0044079.yml b/tt0044079.yml deleted file mode 100644 index 127590f..0000000 --- a/tt0044079.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0044079: Нет данных о бюджете данного фильма diff --git a/tt0044706.yml b/tt0044706.yml deleted file mode 100644 index e50755b..0000000 --- a/tt0044706.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0044706: Нет данных о бюджете данного фильма diff --git a/tt0044741.yml b/tt0044741.yml deleted file mode 100644 index eab3b41..0000000 --- a/tt0044741.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0044741: Нет данных о бюджете данного фильма diff --git a/tt0045152.yml b/tt0045152.yml deleted file mode 100644 index 98a49bb..0000000 --- a/tt0045152.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0045152: Нет данных о бюджете данного фильма diff --git a/tt0046250.yml b/tt0046250.yml deleted file mode 100644 index 3e38aef..0000000 --- a/tt0046250.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0046250: Нет данных о бюджете данного фильма diff --git a/tt0046268.yml b/tt0046268.yml deleted file mode 100644 index 79594df..0000000 --- a/tt0046268.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0046268: Нет данных о бюджете данного фильма diff --git a/tt0046911.yml b/tt0046911.yml deleted file mode 100644 index 6175e4b..0000000 --- a/tt0046911.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0046911: Нет данных о бюджете данного фильма diff --git a/tt0046912.yml b/tt0046912.yml deleted file mode 100644 index 93a9cd2..0000000 --- a/tt0046912.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0046912: Нет данных о бюджете данного фильма diff --git a/tt0047396.yml b/tt0047396.yml deleted file mode 100644 index eeb0010..0000000 --- a/tt0047396.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0047396: Нет данных о бюджете данного фильма diff --git a/tt0047478.yml b/tt0047478.yml deleted file mode 100644 index 64e9f25..0000000 --- a/tt0047478.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0047478: Нет данных о бюджете данного фильма diff --git a/tt0047528.yml b/tt0047528.yml deleted file mode 100644 index a366712..0000000 --- a/tt0047528.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0047528: Нет данных о бюджете данного фильма diff --git a/tt0050613.yml b/tt0050613.yml deleted file mode 100644 index 46fd4f8..0000000 --- a/tt0050613.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0050613: Нет данных о бюджете данного фильма diff --git a/tt0050825.yml b/tt0050825.yml deleted file mode 100644 index 5e9361b..0000000 --- a/tt0050825.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0050825: Нет данных о бюджете данного фильма diff --git a/tt0050976.yml b/tt0050976.yml deleted file mode 100644 index d427d69..0000000 --- a/tt0050976.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0050976: Нет данных о бюджете данного фильма diff --git a/tt0050986.yml b/tt0050986.yml deleted file mode 100644 index 546e8c4..0000000 --- a/tt0050986.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0050986: Нет данных о бюджете данного фильма diff --git a/tt0051201.yml b/tt0051201.yml deleted file mode 100644 index 4447284..0000000 --- a/tt0051201.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0051201: Нет данных о бюджете данного фильма diff --git a/tt0052311.yml b/tt0052311.yml deleted file mode 100644 index e5be3e7..0000000 --- a/tt0052311.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0052311: Нет данных о бюджете данного фильма diff --git a/tt0052357.yml b/tt0052357.yml deleted file mode 100644 index 85b27bc..0000000 --- a/tt0052357.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0052357: Нет данных о бюджете данного фильма diff --git a/tt0052561.yml b/tt0052561.yml deleted file mode 100644 index b2a3547..0000000 --- a/tt0052561.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0052561: Нет данных о бюджете данного фильма diff --git a/tt0053125.yml b/tt0053125.yml deleted file mode 100644 index 313c667..0000000 --- a/tt0053125.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0053125: Нет данных о бюджете данного фильма diff --git a/tt0053198.yml b/tt0053198.yml deleted file mode 100644 index a3acf07..0000000 --- a/tt0053198.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0053198: Нет данных о бюджете данного фильма diff --git a/tt0053604.yml b/tt0053604.yml deleted file mode 100644 index 72d2903..0000000 --- a/tt0053604.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0053604: Нет данных о бюджете данного фильма diff --git a/tt0054997.yml b/tt0054997.yml deleted file mode 100644 index 3bd5da0..0000000 --- a/tt0054997.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0054997: Нет данных о бюджете данного фильма diff --git a/tt0055031.yml b/tt0055031.yml deleted file mode 100644 index 08b8339..0000000 --- a/tt0055031.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0055031: Нет данных о бюджете данного фильма diff --git a/tt0055630.yml b/tt0055630.yml deleted file mode 100644 index 9487da4..0000000 --- a/tt0055630.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0055630: Нет данных о бюджете данного фильма diff --git a/tt0056801.yml b/tt0056801.yml deleted file mode 100644 index 9d4cdb3..0000000 --- a/tt0056801.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0056801: Нет данных о бюджете данного фильма diff --git a/tt0057115.yml b/tt0057115.yml deleted file mode 100644 index 100c942..0000000 --- a/tt0057115.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0057115: Нет данных о бюджете данного фильма diff --git a/tt0059578.yml b/tt0059578.yml deleted file mode 100644 index fe96ba7..0000000 --- a/tt0059578.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0059578: Нет данных о бюджете данного фильма diff --git a/tt0060827.yml b/tt0060827.yml deleted file mode 100644 index a08d7c4..0000000 --- a/tt0060827.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0060827: Нет данных о бюджете данного фильма diff --git a/tt0061184.yml b/tt0061184.yml deleted file mode 100644 index c83b9c8..0000000 --- a/tt0061184.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0061184: Нет данных о бюджете данного фильма diff --git a/tt0061512.yml b/tt0061512.yml deleted file mode 100644 index 7d856bf..0000000 --- a/tt0061512.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0061512: Нет данных о бюджете данного фильма diff --git a/tt0064116.yml b/tt0064116.yml deleted file mode 100644 index 4a7c4e6..0000000 --- a/tt0064116.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0064116: Нет данных о бюджете данного фильма diff --git a/tt0066921.yml b/tt0066921.yml deleted file mode 100644 index ab95572..0000000 --- a/tt0066921.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0066921: Нет данных о бюджете данного фильма diff --git a/tt0071315.yml b/tt0071315.yml deleted file mode 100644 index 4354af4..0000000 --- a/tt0071315.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0071315: Нет данных о бюджете данного фильма diff --git a/tt0071562.yml b/tt0071562.yml deleted file mode 100644 index 5f6b0bf..0000000 --- a/tt0071562.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0071562: Нет данных о бюджете данного фильма diff --git a/tt0071853.yml b/tt0071853.yml deleted file mode 100644 index 95fd9e2..0000000 --- a/tt0071853.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0071853: Нет данных о бюджете данного фильма diff --git a/tt0072684.yml b/tt0072684.yml deleted file mode 100644 index 4e48501..0000000 --- a/tt0072684.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0072684: Нет данных о бюджете данного фильма diff --git a/tt0072890.yml b/tt0072890.yml deleted file mode 100644 index 6a0dd8f..0000000 --- a/tt0072890.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0072890: Нет данных о бюджете данного фильма diff --git a/tt0074958.yml b/tt0074958.yml deleted file mode 100644 index bf5e667..0000000 --- a/tt0074958.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0074958: Нет данных о бюджете данного фильма diff --git a/tt0077416.yml b/tt0077416.yml deleted file mode 100644 index b6e6b25..0000000 --- a/tt0077416.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0077416: Нет данных о бюджете данного фильма diff --git a/tt0079470.yml b/tt0079470.yml deleted file mode 100644 index 4a292fe..0000000 --- a/tt0079470.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0079470: Нет данных о бюджете данного фильма diff --git a/tt0079944.yml b/tt0079944.yml deleted file mode 100644 index bae9c43..0000000 --- a/tt0079944.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0079944: Нет данных о бюджете данного фильма diff --git a/tt0080678.yml b/tt0080678.yml deleted file mode 100644 index 6773251..0000000 --- a/tt0080678.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0080678: Нет данных о бюджете данного фильма diff --git a/tt0081398.yml b/tt0081398.yml deleted file mode 100644 index 40b79c6..0000000 --- a/tt0081398.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0081398: Нет данных о бюджете данного фильма diff --git a/tt0083922.yml b/tt0083922.yml deleted file mode 100644 index fd7a84d..0000000 --- a/tt0083922.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0083922: Нет данных о бюджете данного фильма diff --git a/tt0084787.yml b/tt0084787.yml deleted file mode 100644 index e9660fd..0000000 --- a/tt0084787.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0084787: Нет данных о бюджете данного фильма diff --git a/tt0086250.yml b/tt0086250.yml deleted file mode 100644 index 1edd48d..0000000 --- a/tt0086250.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0086250: Нет данных о бюджете данного фильма diff --git a/tt0087544.yml b/tt0087544.yml deleted file mode 100644 index d5756b4..0000000 --- a/tt0087544.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0087544: Нет данных о бюджете данного фильма diff --git a/tt0089881.yml b/tt0089881.yml deleted file mode 100644 index 3cc965f..0000000 --- a/tt0089881.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0089881: Нет данных о бюджете данного фильма diff --git a/tt0092067.yml b/tt0092067.yml deleted file mode 100644 index cbb20a1..0000000 --- a/tt0092067.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0092067: Нет данных о бюджете данного фильма diff --git a/tt0095327.yml b/tt0095327.yml deleted file mode 100644 index dba093e..0000000 --- a/tt0095327.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0095327: Нет данных о бюджете данного фильма diff --git a/tt0096283.yml b/tt0096283.yml deleted file mode 100644 index 822bfef..0000000 --- a/tt0096283.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0096283: Нет данных о бюджете данного фильма diff --git a/tt0113247.yml b/tt0113247.yml deleted file mode 100644 index feb0ffb..0000000 --- a/tt0113247.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0113247: Нет данных о бюджете данного фильма diff --git a/tt0114746.yml b/tt0114746.yml deleted file mode 100644 index 50068be..0000000 --- a/tt0114746.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0114746: Нет данных о бюджете данного фильма diff --git a/tt0114787.yml b/tt0114787.yml deleted file mode 100644 index 0560b58..0000000 --- a/tt0114787.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0114787: Нет данных о бюджете данного фильма diff --git a/tt0118715.yml b/tt0118715.yml deleted file mode 100644 index 04fc8a4..0000000 --- a/tt0118715.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0118715: Нет данных о бюджете данного фильма diff --git a/tt0119698.yml b/tt0119698.yml deleted file mode 100644 index bb46b18..0000000 --- a/tt0119698.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0119698: Нет данных о бюджете данного фильма diff --git a/tt0120735.yml b/tt0120735.yml deleted file mode 100644 index f364c3b..0000000 --- a/tt0120735.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0120735: Нет данных о бюджете данного фильма diff --git a/tt0167404.yml b/tt0167404.yml deleted file mode 100644 index a7aa83a..0000000 --- a/tt0167404.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0167404: Нет данных о бюджете данного фильма diff --git a/tt0208092.yml b/tt0208092.yml deleted file mode 100644 index 4903ae9..0000000 --- a/tt0208092.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0208092: Нет данных о бюджете данного фильма diff --git a/tt0211915.yml b/tt0211915.yml deleted file mode 100644 index e314b5c..0000000 --- a/tt0211915.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0211915: Нет данных о бюджете данного фильма diff --git a/tt0245429.yml b/tt0245429.yml deleted file mode 100644 index 4904c3b..0000000 --- a/tt0245429.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0245429: Нет данных о бюджете данного фильма diff --git a/tt0338564.yml b/tt0338564.yml deleted file mode 100644 index 7fa6490..0000000 --- a/tt0338564.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0338564: Нет данных о бюджете данного фильма diff --git a/tt0347149.yml b/tt0347149.yml deleted file mode 100644 index 5839477..0000000 --- a/tt0347149.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0347149: Нет данных о бюджете данного фильма diff --git a/tt0353969.yml b/tt0353969.yml deleted file mode 100644 index ce9561c..0000000 --- a/tt0353969.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0353969: Нет данных о бюджете данного фильма diff --git a/tt0363163.yml b/tt0363163.yml deleted file mode 100644 index 3d94f43..0000000 --- a/tt0363163.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0363163: Нет данных о бюджете данного фильма diff --git a/tt0374546.yml b/tt0374546.yml deleted file mode 100644 index 6f39ac1..0000000 --- a/tt0374546.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0374546: Нет данных о бюджете данного фильма diff --git a/tt0457430.yml b/tt0457430.yml deleted file mode 100644 index 748bcbd..0000000 --- a/tt0457430.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0457430: Нет данных о бюджете данного фильма diff --git a/tt0892769.yml b/tt0892769.yml deleted file mode 100644 index 55d222f..0000000 --- a/tt0892769.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0892769: Нет данных о бюджете данного фильма diff --git a/tt0978762.yml b/tt0978762.yml deleted file mode 100644 index 3fdea98..0000000 --- a/tt0978762.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0978762: Нет данных о бюджете данного фильма diff --git a/tt0993846.yml b/tt0993846.yml deleted file mode 100644 index 0565fba..0000000 --- a/tt0993846.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt0993846: Нет данных о бюджете данного фильма diff --git a/tt1069238.yml b/tt1069238.yml deleted file mode 100644 index 1775be0..0000000 --- a/tt1069238.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt1069238: Нет данных о бюджете данного фильма diff --git a/tt1187043.yml b/tt1187043.yml deleted file mode 100644 index fbbd209..0000000 --- a/tt1187043.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt1187043: Нет данных о бюджете данного фильма diff --git a/tt1205489.yml b/tt1205489.yml deleted file mode 100644 index 0f0f536..0000000 --- a/tt1205489.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt1205489: Нет данных о бюджете данного фильма diff --git a/tt1220719.yml b/tt1220719.yml deleted file mode 100644 index 2f2b479..0000000 --- a/tt1220719.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt1220719: Нет данных о бюджете данного фильма diff --git a/tt1305806.yml b/tt1305806.yml deleted file mode 100644 index feb671c..0000000 --- a/tt1305806.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt1305806: Нет данных о бюджете данного фильма diff --git a/tt1555149.yml b/tt1555149.yml deleted file mode 100644 index 8d48458..0000000 --- a/tt1555149.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt1555149: Нет данных о бюджете данного фильма diff --git a/tt1675434.yml b/tt1675434.yml deleted file mode 100644 index 2d2cfc3..0000000 --- a/tt1675434.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt1675434: Нет данных о бюджете данного фильма diff --git a/tt2278388.yml b/tt2278388.yml deleted file mode 100644 index 7e4b485..0000000 --- a/tt2278388.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tt2278388: Нет данных о бюджете данного фильма diff --git a/web/css/bootstrap-theme.css b/web/css/bootstrap-theme.css deleted file mode 100644 index 31d8882..0000000 --- a/web/css/bootstrap-theme.css +++ /dev/null @@ -1,587 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/web/css/bootstrap.css b/web/css/bootstrap.css deleted file mode 100644 index 6167622..0000000 --- a/web/css/bootstrap.css +++ /dev/null @@ -1,6757 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover, -a.text-primary:focus { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #eee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 11px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:focus, -.btn-default.focus { - color: #333; - background-color: #e6e6e6; - border-color: #8c8c8c; -} -.btn-default:hover { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:focus, -.btn-primary.focus { - color: #fff; - background-color: #286090; - border-color: #122b40; -} -.btn-primary:hover { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #fff; - background-color: #204d74; - border-color: #122b40; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:focus, -.btn-success.focus { - color: #fff; - background-color: #449d44; - border-color: #255625; -} -.btn-success:hover { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #fff; - background-color: #398439; - border-color: #255625; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #31b0d5; - border-color: #1b6d85; -} -.btn-info:hover { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #fff; - background-color: #269abc; - border-color: #1b6d85; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group .form-control:focus { - z-index: 3; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: middle; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - padding-right: 15px; - padding-left: 15px; - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item, -button.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - filter: alpha(opacity=0); - opacity: 0; - - line-break: auto; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - - line-break: auto; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - background-color: rgba(0, 0, 0, 0); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/web/fonts/glyphicons-halflings-regular.eot b/web/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20127 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/fonts/glyphicons-halflings-regular.ttf b/web/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc609ab6f21774de0cb7e01360095584f65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45404 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 G`u_lkUM?>H diff --git a/web/fonts/glyphicons-halflings-regular.woff2 b/web/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18028 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 diff --git a/web/index.html b/web/index.html deleted file mode 100644 index f22fc5a..0000000 --- a/web/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - Bootstrap 101 Template - - - - - - - - - -
-
-
111111111111111111
-
222222222222222222222
-
-
- - - - - - \ No newline at end of file diff --git a/web/js/bootstrap.js b/web/js/bootstrap.js deleted file mode 100644 index 8a2e99a..0000000 --- a/web/js/bootstrap.js +++ /dev/null @@ -1,2377 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under the MIT license - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - 'use strict'; - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.7 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.7 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.7' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector === '#' ? [] : selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.7 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.7' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state += 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d).prop(d, true) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d).prop(d, false) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked')) changed = false - $parent.find('.active').removeClass('active') - this.$element.addClass('active') - } else if ($input.prop('type') == 'checkbox') { - if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false - this.$element.toggleClass('active') - } - $input.prop('checked', this.$element.hasClass('active')) - if (changed) $input.trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - this.$element.toggleClass('active') - } - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target).closest('.btn') - Plugin.call($btn, 'toggle') - if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { - // Prevent double click on radios, and the double selections (so cancellation) on checkboxes - e.preventDefault() - // The target component still receive the focus - if ($btn.is('input,button')) $btn.trigger('focus') - else $btn.find('input:visible,button:visible').first().trigger('focus') - } - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.7 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = null - this.sliding = null - this.interval = null - this.$active = null - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.7' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var activeIndex = this.getItemIndex(active) - var willWrap = (direction == 'prev' && activeIndex === 0) - || (direction == 'next' && activeIndex == (this.$items.length - 1)) - if (willWrap && !this.options.wrap) return active - var delta = direction == 'prev' ? -1 : 1 - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var that = this - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.7 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - -/* jshint latedef: false */ - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + - '[data-toggle="collapse"][data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.7' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.7 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.7' - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) - }) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(document.createElement('div')) - .addClass('dropdown-backdrop') - .insertAfter($(this)) - .on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger($.Event('shown.bs.dropdown', relatedTarget)) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if (!isActive && e.which != 27 || isActive && e.which == 27) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.disabled):visible a' - var $items = $parent.find('.dropdown-menu' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.7 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$dialog = this.$element.find('.modal-dialog') - this.$backdrop = null - this.isShown = null - this.originalBodyPad = null - this.scrollbarWidth = 0 - this.ignoreBackdropClick = false - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.7' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.$dialog.on('mousedown.dismiss.bs.modal', function () { - that.$element.one('mouseup.dismiss.bs.modal', function (e) { - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true - }) - }) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element.addClass('in') - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$dialog // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .off('click.dismiss.bs.modal') - .off('mouseup.dismiss.bs.modal') - - this.$dialog.off('mousedown.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (document !== e.target && - this.$element[0] !== e.target && - !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $(document.createElement('div')) - .addClass('modal-backdrop ' + animate) - .appendTo(this.$body) - - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { - if (this.ignoreBackdropClick) { - this.ignoreBackdropClick = false - return - } - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus() - : this.hide() - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - this.adjustDialog() - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - var fullWindowWidth = window.innerWidth - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 - var documentElementRect = document.documentElement.getBoundingClientRect() - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) - } - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - this.originalBodyPad = document.body.style.paddingRight || '' - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', this.originalBodyPad) - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.7 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = null - this.options = null - this.enabled = null - this.timeout = null - this.hoverState = null - this.$element = null - this.inState = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.7' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) - this.inState = { click: false, hover: false, focus: false } - - if (this.$element[0] instanceof document.constructor && !this.options.selector) { - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') - } - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true - } - - if (self.tip().hasClass('in') || self.hoverState == 'in') { - self.hoverState = 'in' - return - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.isInStateTrue = function () { - for (var key in this.inState) { - if (this.inState[key]) return true - } - - return false - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false - } - - if (self.isInStateTrue()) return - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - this.$element.trigger('inserted.bs.' + this.type) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var viewportDim = this.getPosition(this.$viewport) - - placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top += marginTop - offset.left += marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { - this.arrow() - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isVertical ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = $(this.$tip) - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - } - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && $tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var isSvg = window.SVGElement && el instanceof window.SVGElement - // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. - // See https://github.com/twbs/bootstrap/issues/20280 - var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - if (!this.$tip) { - this.$tip = $(this.options.template) - if (this.$tip.length != 1) { - throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') - } - } - return this.$tip - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - if (e) { - self.inState.click = !self.inState.click - if (self.isInStateTrue()) self.enter(self) - else self.leave(self) - } else { - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - if (that.$tip) { - that.$tip.detach() - } - that.$tip = null - that.$arrow = null - that.$viewport = null - that.$element = null - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.7 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.7' - - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { - placement: 'right', - trigger: 'click', - content: '', - template: '' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.7 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - this.$body = $(document.body) - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.7' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var that = this - var offsetMethod = 'offset' - var offsetBase = 0 - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - that.offsets.push(this[0]) - that.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.7 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - // jscs:disable requireDollarBeforejQueryAssignment - this.element = $(element) - // jscs:enable requireDollarBeforejQueryAssignment - } - - Tab.VERSION = '3.3.7' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu').length) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.7 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = null - this.unpin = null - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.7' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && scrollTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = Math.max($(document).height(), $(document.body).height()) - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); From 0da845bfaabb1253498b380c555693e114a26f7a Mon Sep 17 00:00:00 2001 From: devico Date: Thu, 13 Oct 2016 15:51:32 +0300 Subject: [PATCH 02/26] Task11 --- data/{ => budgets}/tt0012349.yml | 0 data/{ => budgets}/tt0015864.yml | 0 data/{ => budgets}/tt0017136.yml | 0 data/{ => budgets}/tt0017925.yml | 0 data/{ => budgets}/tt0021749.yml | 0 data/{ => budgets}/tt0022100.yml | 0 data/{ => budgets}/tt0025316.yml | 0 data/{ => budgets}/tt0027977.yml | 0 data/{ => budgets}/tt0031381.yml | 0 data/{ => budgets}/tt0031679.yml | 0 data/{ => budgets}/tt0032138.yml | 0 data/{ => budgets}/tt0032551.yml | 0 data/{ => budgets}/tt0032553.yml | 0 data/{ => budgets}/tt0032976.yml | 0 data/{ => budgets}/tt0033467.yml | 0 data/{ => budgets}/tt0033870.yml | 0 data/{ => budgets}/tt0034583.yml | 0 data/{ => budgets}/tt0036775.yml | 0 data/{ => budgets}/tt0036868.yml | 0 data/{ => budgets}/tt0037008.yml | 0 data/{ => budgets}/tt0038355.yml | 0 data/{ => budgets}/tt0038650.yml | 0 data/{ => budgets}/tt0038787.yml | 0 data/{ => budgets}/tt0040522.yml | 0 data/{ => budgets}/tt0040897.yml | 0 data/{ => budgets}/tt0041959.yml | 0 data/{ => budgets}/tt0042192.yml | 0 data/{ => budgets}/tt0042876.yml | 0 data/{ => budgets}/tt0043014.yml | 0 data/{ => budgets}/tt0044079.yml | 0 data/{ => budgets}/tt0044706.yml | 0 data/{ => budgets}/tt0044741.yml | 0 data/{ => budgets}/tt0045152.yml | 0 data/{ => budgets}/tt0046250.yml | 0 data/{ => budgets}/tt0046268.yml | 0 data/{ => budgets}/tt0046911.yml | 0 data/{ => budgets}/tt0046912.yml | 0 data/{ => budgets}/tt0047296.yml | 0 data/{ => budgets}/tt0047396.yml | 0 data/{ => budgets}/tt0047478.yml | 0 data/{ => budgets}/tt0047528.yml | 0 data/{ => budgets}/tt0048424.yml | 0 data/{ => budgets}/tt0049406.yml | 0 data/{ => budgets}/tt0050083.yml | 0 data/{ => budgets}/tt0050212.yml | 0 data/{ => budgets}/tt0050613.yml | 0 data/{ => budgets}/tt0050825.yml | 0 data/{ => budgets}/tt0050976.yml | 0 data/{ => budgets}/tt0050986.yml | 0 data/{ => budgets}/tt0051201.yml | 0 data/{ => budgets}/tt0052311.yml | 0 data/{ => budgets}/tt0052357.yml | 0 data/{ => budgets}/tt0052561.yml | 0 data/{ => budgets}/tt0052618.yml | 0 data/{ => budgets}/tt0053125.yml | 0 data/{ => budgets}/tt0053198.yml | 0 data/{ => budgets}/tt0053291.yml | 0 data/{ => budgets}/tt0053604.yml | 0 data/{ => budgets}/tt0054215.yml | 0 data/{ => budgets}/tt0054997.yml | 0 data/{ => budgets}/tt0055031.yml | 0 data/{ => budgets}/tt0055630.yml | 0 data/{ => budgets}/tt0056172.yml | 0 data/{ => budgets}/tt0056592.yml | 0 data/{ => budgets}/tt0056801.yml | 0 data/{ => budgets}/tt0057012.yml | 0 data/{ => budgets}/tt0057115.yml | 0 data/{ => budgets}/tt0058461.yml | 0 data/{ => budgets}/tt0058946.yml | 0 data/{ => budgets}/tt0059578.yml | 0 data/{ => budgets}/tt0060196.yml | 0 data/{ => budgets}/tt0060827.yml | 0 data/{ => budgets}/tt0061184.yml | 0 data/{ => budgets}/tt0061512.yml | 0 data/{ => budgets}/tt0061722.yml | 0 data/{ => budgets}/tt0062622.yml | 0 data/{ => budgets}/tt0064115.yml | 0 data/{ => budgets}/tt0064116.yml | 0 data/{ => budgets}/tt0066921.yml | 0 data/{ => budgets}/tt0068646.yml | 0 data/{ => budgets}/tt0070511.yml | 0 data/{ => budgets}/tt0070735.yml | 0 data/{ => budgets}/tt0071315.yml | 0 data/{ => budgets}/tt0071562.yml | 0 data/{ => budgets}/tt0071853.yml | 0 data/{ => budgets}/tt0072684.yml | 0 data/{ => budgets}/tt0072890.yml | 0 data/{ => budgets}/tt0073195.yml | 0 data/{ => budgets}/tt0073486.yml | 0 data/{ => budgets}/tt0074958.yml | 0 data/{ => budgets}/tt0075148.yml | 0 data/{ => budgets}/tt0075314.yml | 0 data/{ => budgets}/tt0075686.yml | 0 data/{ => budgets}/tt0076759.yml | 0 data/{ => budgets}/tt0077416.yml | 0 data/{ => budgets}/tt0078748.yml | 0 data/{ => budgets}/tt0078788.yml | 0 data/{ => budgets}/tt0079470.yml | 0 data/{ => budgets}/tt0079944.yml | 0 data/{ => budgets}/tt0080678.yml | 0 data/{ => budgets}/tt0080684.yml | 0 data/{ => budgets}/tt0081398.yml | 0 data/{ => budgets}/tt0081505.yml | 0 data/{ => budgets}/tt0082096.yml | 0 data/{ => budgets}/tt0082971.yml | 0 data/{ => budgets}/tt0083658.yml | 0 data/{ => budgets}/tt0083922.yml | 0 data/{ => budgets}/tt0083987.yml | 0 data/{ => budgets}/tt0084787.yml | 0 data/{ => budgets}/tt0086190.yml | 0 data/{ => budgets}/tt0086250.yml | 0 data/{ => budgets}/tt0086879.yml | 0 data/{ => budgets}/tt0087544.yml | 0 data/{ => budgets}/tt0087843.yml | 0 data/{ => budgets}/tt0088247.yml | 0 data/{ => budgets}/tt0088763.yml | 0 data/{ => budgets}/tt0089881.yml | 0 data/{ => budgets}/tt0090605.yml | 0 data/{ => budgets}/tt0091763.yml | 0 data/{ => budgets}/tt0092005.yml | 0 data/{ => budgets}/tt0092067.yml | 0 data/{ => budgets}/tt0093058.yml | 0 data/{ => budgets}/tt0093779.yml | 0 data/{ => budgets}/tt0094625.yml | 0 data/{ => budgets}/tt0095016.yml | 0 data/{ => budgets}/tt0095327.yml | 0 data/{ => budgets}/tt0095765.yml | 0 data/{ => budgets}/tt0096283.yml | 0 data/{ => budgets}/tt0097576.yml | 0 data/{ => budgets}/tt0099685.yml | 0 data/{ => budgets}/tt0101414.yml | 0 data/{ => budgets}/tt0102926.yml | 0 data/{ => budgets}/tt0103064.yml | 0 data/{ => budgets}/tt0105236.yml | 0 data/{ => budgets}/tt0105695.yml | 0 data/{ => budgets}/tt0107048.yml | 0 data/{ => budgets}/tt0107207.yml | 0 data/{ => budgets}/tt0107290.yml | 0 data/{ => budgets}/tt0108052.yml | 0 data/{ => budgets}/tt0109830.yml | 0 data/{ => budgets}/tt0110357.yml | 0 data/{ => budgets}/tt0110413.yml | 0 data/{ => budgets}/tt0110912.yml | 0 data/{ => budgets}/tt0111161.yml | 0 data/{ => budgets}/tt0112471.yml | 0 data/{ => budgets}/tt0112573.yml | 0 data/{ => budgets}/tt0112641.yml | 0 data/{ => budgets}/tt0113247.yml | 0 data/{ => budgets}/tt0113277.yml | 0 data/{ => budgets}/tt0114369.yml | 0 data/{ => budgets}/tt0114709.yml | 0 data/{ => budgets}/tt0114746.yml | 0 data/{ => budgets}/tt0114787.yml | 0 data/{ => budgets}/tt0114814.yml | 0 data/{ => budgets}/tt0116282.yml | 0 data/{ => budgets}/tt0117951.yml | 0 data/{ => budgets}/tt0118715.yml | 0 data/{ => budgets}/tt0118799.yml | 0 data/{ => budgets}/tt0119217.yml | 0 data/{ => budgets}/tt0119488.yml | 0 data/{ => budgets}/tt0119698.yml | 0 data/{ => budgets}/tt0120382.yml | 0 data/{ => budgets}/tt0120586.yml | 0 data/{ => budgets}/tt0120689.yml | 0 data/{ => budgets}/tt0120735.yml | 0 data/{ => budgets}/tt0120737.yml | 0 data/{ => budgets}/tt0120815.yml | 0 data/{ => budgets}/tt0133093.yml | 0 data/{ => budgets}/tt0137523.yml | 0 data/{ => budgets}/tt0167260.yml | 0 data/{ => budgets}/tt0167261.yml | 0 data/{ => budgets}/tt0167404.yml | 0 data/{ => budgets}/tt0169547.yml | 0 data/{ => budgets}/tt0172495.yml | 0 data/{ => budgets}/tt0180093.yml | 0 data/{ => budgets}/tt0198781.yml | 0 data/{ => budgets}/tt0208092.yml | 0 data/{ => budgets}/tt0209144.yml | 0 data/{ => budgets}/tt0211915.yml | 0 data/{ => budgets}/tt0245429.yml | 0 data/{ => budgets}/tt0245712.yml | 0 data/{ => budgets}/tt0246578.yml | 0 data/{ => budgets}/tt0253474.yml | 0 data/{ => budgets}/tt0266543.yml | 0 data/{ => budgets}/tt0266697.yml | 0 data/{ => budgets}/tt0268978.yml | 0 data/{ => budgets}/tt0317248.yml | 0 data/{ => budgets}/tt0325980.yml | 0 data/{ => budgets}/tt0338013.yml | 0 data/{ => budgets}/tt0338564.yml | 0 data/{ => budgets}/tt0347149.yml | 0 data/{ => budgets}/tt0353969.yml | 0 data/{ => budgets}/tt0361748.yml | 0 data/{ => budgets}/tt0363163.yml | 0 data/{ => budgets}/tt0364569.yml | 0 data/{ => budgets}/tt0372784.yml | 0 data/{ => budgets}/tt0374546.yml | 0 data/{ => budgets}/tt0381681.yml | 0 data/{ => budgets}/tt0395169.yml | 0 data/{ => budgets}/tt0401792.yml | 0 data/{ => budgets}/tt0405094.yml | 0 data/{ => budgets}/tt0405159.yml | 0 data/{ => budgets}/tt0407887.yml | 0 data/{ => budgets}/tt0434409.yml | 0 data/{ => budgets}/tt0435761.yml | 0 data/{ => budgets}/tt0440963.yml | 0 data/{ => budgets}/tt0457430.yml | 0 data/{ => budgets}/tt0468569.yml | 0 data/{ => budgets}/tt0469494.yml | 0 data/{ => budgets}/tt0477348.yml | 0 data/{ => budgets}/tt0482571.yml | 0 data/{ => budgets}/tt0758758.yml | 0 data/{ => budgets}/tt0816692.yml | 0 data/{ => budgets}/tt0848228.yml | 0 data/{ => budgets}/tt0892769.yml | 0 data/{ => budgets}/tt0910970.yml | 0 data/{ => budgets}/tt0978762.yml | 0 data/{ => budgets}/tt0993846.yml | 0 data/{ => budgets}/tt1028532.yml | 0 data/{ => budgets}/tt1049413.yml | 0 data/{ => budgets}/tt1069238.yml | 0 data/{ => budgets}/tt1130884.yml | 0 data/{ => budgets}/tt1187043.yml | 0 data/{ => budgets}/tt1201607.yml | 0 data/{ => budgets}/tt1205489.yml | 0 data/{ => budgets}/tt1220719.yml | 0 data/{ => budgets}/tt1255953.yml | 0 data/{ => budgets}/tt1291584.yml | 0 data/{ => budgets}/tt1305806.yml | 0 data/{ => budgets}/tt1345836.yml | 0 data/{ => budgets}/tt1375666.yml | 0 data/{ => budgets}/tt1392190.yml | 0 data/{ => budgets}/tt1392214.yml | 0 data/{ => budgets}/tt1454029.yml | 0 data/{ => budgets}/tt1504320.yml | 0 data/{ => budgets}/tt1555149.yml | 0 data/{ => budgets}/tt1675434.yml | 0 data/{ => budgets}/tt1832382.yml | 0 data/{ => budgets}/tt1853728.yml | 0 data/{ => budgets}/tt1877832.yml | 0 data/{ => budgets}/tt1979320.yml | 0 data/{ => budgets}/tt2015381.yml | 0 data/{ => budgets}/tt2024544.yml | 0 data/{ => budgets}/tt2084970.yml | 0 data/{ => budgets}/tt2096673.yml | 0 data/{ => budgets}/tt2106476.yml | 0 data/{ => budgets}/tt2267998.yml | 0 data/{ => budgets}/tt2278388.yml | 0 data/{ => budgets}/tt2582802.yml | 0 data/{ => budgets}/tt3011894.yml | 0 movies.txt => data/movies.txt | 0 demo.rb => examples/demo.rb | 22 +++++++++---------- lib/top_movies.rb | 19 ++++++++++++++++ .../topmovies/ancient_movie.rb | 0 cash_box.rb => lib/topmovies/cash_box.rb | 0 .../topmovies/classic_movie.rb | 0 .../topmovies/country_filter.rb | 0 .../topmovies/filter_genre.rb | 0 .../topmovies/modern_movie.rb | 0 movie.rb => lib/topmovies/movie.rb | 6 ++--- .../topmovies/movie_collection.rb | 6 ++--- netflix.rb => lib/topmovies/netflix.rb | 0 new_movie.rb => lib/topmovies/new_movie.rb | 0 period.rb => lib/topmovies/period.rb | 0 theatre.rb => lib/topmovies/theatre.rb | 2 +- spec/spec_helper.rb | 16 +++++++------- imdb_budgets.rb => www/imdb_budgets.rb | 4 ++-- index.haml => www/pages/index.haml | 0 index.html => www/pages/index.html | 0 tmdb_posters.rb => www/tmdb_posters.rb | 0 270 files changed, 47 insertions(+), 28 deletions(-) rename data/{ => budgets}/tt0012349.yml (100%) rename data/{ => budgets}/tt0015864.yml (100%) rename data/{ => budgets}/tt0017136.yml (100%) rename data/{ => budgets}/tt0017925.yml (100%) rename data/{ => budgets}/tt0021749.yml (100%) rename data/{ => budgets}/tt0022100.yml (100%) rename data/{ => budgets}/tt0025316.yml (100%) rename data/{ => budgets}/tt0027977.yml (100%) rename data/{ => budgets}/tt0031381.yml (100%) rename data/{ => budgets}/tt0031679.yml (100%) rename data/{ => budgets}/tt0032138.yml (100%) rename data/{ => budgets}/tt0032551.yml (100%) rename data/{ => budgets}/tt0032553.yml (100%) rename data/{ => budgets}/tt0032976.yml (100%) rename data/{ => budgets}/tt0033467.yml (100%) rename data/{ => budgets}/tt0033870.yml (100%) rename data/{ => budgets}/tt0034583.yml (100%) rename data/{ => budgets}/tt0036775.yml (100%) rename data/{ => budgets}/tt0036868.yml (100%) rename data/{ => budgets}/tt0037008.yml (100%) rename data/{ => budgets}/tt0038355.yml (100%) rename data/{ => budgets}/tt0038650.yml (100%) rename data/{ => budgets}/tt0038787.yml (100%) rename data/{ => budgets}/tt0040522.yml (100%) rename data/{ => budgets}/tt0040897.yml (100%) rename data/{ => budgets}/tt0041959.yml (100%) rename data/{ => budgets}/tt0042192.yml (100%) rename data/{ => budgets}/tt0042876.yml (100%) rename data/{ => budgets}/tt0043014.yml (100%) rename data/{ => budgets}/tt0044079.yml (100%) rename data/{ => budgets}/tt0044706.yml (100%) rename data/{ => budgets}/tt0044741.yml (100%) rename data/{ => budgets}/tt0045152.yml (100%) rename data/{ => budgets}/tt0046250.yml (100%) rename data/{ => budgets}/tt0046268.yml (100%) rename data/{ => budgets}/tt0046911.yml (100%) rename data/{ => budgets}/tt0046912.yml (100%) rename data/{ => budgets}/tt0047296.yml (100%) rename data/{ => budgets}/tt0047396.yml (100%) rename data/{ => budgets}/tt0047478.yml (100%) rename data/{ => budgets}/tt0047528.yml (100%) rename data/{ => budgets}/tt0048424.yml (100%) rename data/{ => budgets}/tt0049406.yml (100%) rename data/{ => budgets}/tt0050083.yml (100%) rename data/{ => budgets}/tt0050212.yml (100%) rename data/{ => budgets}/tt0050613.yml (100%) rename data/{ => budgets}/tt0050825.yml (100%) rename data/{ => budgets}/tt0050976.yml (100%) rename data/{ => budgets}/tt0050986.yml (100%) rename data/{ => budgets}/tt0051201.yml (100%) rename data/{ => budgets}/tt0052311.yml (100%) rename data/{ => budgets}/tt0052357.yml (100%) rename data/{ => budgets}/tt0052561.yml (100%) rename data/{ => budgets}/tt0052618.yml (100%) rename data/{ => budgets}/tt0053125.yml (100%) rename data/{ => budgets}/tt0053198.yml (100%) rename data/{ => budgets}/tt0053291.yml (100%) rename data/{ => budgets}/tt0053604.yml (100%) rename data/{ => budgets}/tt0054215.yml (100%) rename data/{ => budgets}/tt0054997.yml (100%) rename data/{ => budgets}/tt0055031.yml (100%) rename data/{ => budgets}/tt0055630.yml (100%) rename data/{ => budgets}/tt0056172.yml (100%) rename data/{ => budgets}/tt0056592.yml (100%) rename data/{ => budgets}/tt0056801.yml (100%) rename data/{ => budgets}/tt0057012.yml (100%) rename data/{ => budgets}/tt0057115.yml (100%) rename data/{ => budgets}/tt0058461.yml (100%) rename data/{ => budgets}/tt0058946.yml (100%) rename data/{ => budgets}/tt0059578.yml (100%) rename data/{ => budgets}/tt0060196.yml (100%) rename data/{ => budgets}/tt0060827.yml (100%) rename data/{ => budgets}/tt0061184.yml (100%) rename data/{ => budgets}/tt0061512.yml (100%) rename data/{ => budgets}/tt0061722.yml (100%) rename data/{ => budgets}/tt0062622.yml (100%) rename data/{ => budgets}/tt0064115.yml (100%) rename data/{ => budgets}/tt0064116.yml (100%) rename data/{ => budgets}/tt0066921.yml (100%) rename data/{ => budgets}/tt0068646.yml (100%) rename data/{ => budgets}/tt0070511.yml (100%) rename data/{ => budgets}/tt0070735.yml (100%) rename data/{ => budgets}/tt0071315.yml (100%) rename data/{ => budgets}/tt0071562.yml (100%) rename data/{ => budgets}/tt0071853.yml (100%) rename data/{ => budgets}/tt0072684.yml (100%) rename data/{ => budgets}/tt0072890.yml (100%) rename data/{ => budgets}/tt0073195.yml (100%) rename data/{ => budgets}/tt0073486.yml (100%) rename data/{ => budgets}/tt0074958.yml (100%) rename data/{ => budgets}/tt0075148.yml (100%) rename data/{ => budgets}/tt0075314.yml (100%) rename data/{ => budgets}/tt0075686.yml (100%) rename data/{ => budgets}/tt0076759.yml (100%) rename data/{ => budgets}/tt0077416.yml (100%) rename data/{ => budgets}/tt0078748.yml (100%) rename data/{ => budgets}/tt0078788.yml (100%) rename data/{ => budgets}/tt0079470.yml (100%) rename data/{ => budgets}/tt0079944.yml (100%) rename data/{ => budgets}/tt0080678.yml (100%) rename data/{ => budgets}/tt0080684.yml (100%) rename data/{ => budgets}/tt0081398.yml (100%) rename data/{ => budgets}/tt0081505.yml (100%) rename data/{ => budgets}/tt0082096.yml (100%) rename data/{ => budgets}/tt0082971.yml (100%) rename data/{ => budgets}/tt0083658.yml (100%) rename data/{ => budgets}/tt0083922.yml (100%) rename data/{ => budgets}/tt0083987.yml (100%) rename data/{ => budgets}/tt0084787.yml (100%) rename data/{ => budgets}/tt0086190.yml (100%) rename data/{ => budgets}/tt0086250.yml (100%) rename data/{ => budgets}/tt0086879.yml (100%) rename data/{ => budgets}/tt0087544.yml (100%) rename data/{ => budgets}/tt0087843.yml (100%) rename data/{ => budgets}/tt0088247.yml (100%) rename data/{ => budgets}/tt0088763.yml (100%) rename data/{ => budgets}/tt0089881.yml (100%) rename data/{ => budgets}/tt0090605.yml (100%) rename data/{ => budgets}/tt0091763.yml (100%) rename data/{ => budgets}/tt0092005.yml (100%) rename data/{ => budgets}/tt0092067.yml (100%) rename data/{ => budgets}/tt0093058.yml (100%) rename data/{ => budgets}/tt0093779.yml (100%) rename data/{ => budgets}/tt0094625.yml (100%) rename data/{ => budgets}/tt0095016.yml (100%) rename data/{ => budgets}/tt0095327.yml (100%) rename data/{ => budgets}/tt0095765.yml (100%) rename data/{ => budgets}/tt0096283.yml (100%) rename data/{ => budgets}/tt0097576.yml (100%) rename data/{ => budgets}/tt0099685.yml (100%) rename data/{ => budgets}/tt0101414.yml (100%) rename data/{ => budgets}/tt0102926.yml (100%) rename data/{ => budgets}/tt0103064.yml (100%) rename data/{ => budgets}/tt0105236.yml (100%) rename data/{ => budgets}/tt0105695.yml (100%) rename data/{ => budgets}/tt0107048.yml (100%) rename data/{ => budgets}/tt0107207.yml (100%) rename data/{ => budgets}/tt0107290.yml (100%) rename data/{ => budgets}/tt0108052.yml (100%) rename data/{ => budgets}/tt0109830.yml (100%) rename data/{ => budgets}/tt0110357.yml (100%) rename data/{ => budgets}/tt0110413.yml (100%) rename data/{ => budgets}/tt0110912.yml (100%) rename data/{ => budgets}/tt0111161.yml (100%) rename data/{ => budgets}/tt0112471.yml (100%) rename data/{ => budgets}/tt0112573.yml (100%) rename data/{ => budgets}/tt0112641.yml (100%) rename data/{ => budgets}/tt0113247.yml (100%) rename data/{ => budgets}/tt0113277.yml (100%) rename data/{ => budgets}/tt0114369.yml (100%) rename data/{ => budgets}/tt0114709.yml (100%) rename data/{ => budgets}/tt0114746.yml (100%) rename data/{ => budgets}/tt0114787.yml (100%) rename data/{ => budgets}/tt0114814.yml (100%) rename data/{ => budgets}/tt0116282.yml (100%) rename data/{ => budgets}/tt0117951.yml (100%) rename data/{ => budgets}/tt0118715.yml (100%) rename data/{ => budgets}/tt0118799.yml (100%) rename data/{ => budgets}/tt0119217.yml (100%) rename data/{ => budgets}/tt0119488.yml (100%) rename data/{ => budgets}/tt0119698.yml (100%) rename data/{ => budgets}/tt0120382.yml (100%) rename data/{ => budgets}/tt0120586.yml (100%) rename data/{ => budgets}/tt0120689.yml (100%) rename data/{ => budgets}/tt0120735.yml (100%) rename data/{ => budgets}/tt0120737.yml (100%) rename data/{ => budgets}/tt0120815.yml (100%) rename data/{ => budgets}/tt0133093.yml (100%) rename data/{ => budgets}/tt0137523.yml (100%) rename data/{ => budgets}/tt0167260.yml (100%) rename data/{ => budgets}/tt0167261.yml (100%) rename data/{ => budgets}/tt0167404.yml (100%) rename data/{ => budgets}/tt0169547.yml (100%) rename data/{ => budgets}/tt0172495.yml (100%) rename data/{ => budgets}/tt0180093.yml (100%) rename data/{ => budgets}/tt0198781.yml (100%) rename data/{ => budgets}/tt0208092.yml (100%) rename data/{ => budgets}/tt0209144.yml (100%) rename data/{ => budgets}/tt0211915.yml (100%) rename data/{ => budgets}/tt0245429.yml (100%) rename data/{ => budgets}/tt0245712.yml (100%) rename data/{ => budgets}/tt0246578.yml (100%) rename data/{ => budgets}/tt0253474.yml (100%) rename data/{ => budgets}/tt0266543.yml (100%) rename data/{ => budgets}/tt0266697.yml (100%) rename data/{ => budgets}/tt0268978.yml (100%) rename data/{ => budgets}/tt0317248.yml (100%) rename data/{ => budgets}/tt0325980.yml (100%) rename data/{ => budgets}/tt0338013.yml (100%) rename data/{ => budgets}/tt0338564.yml (100%) rename data/{ => budgets}/tt0347149.yml (100%) rename data/{ => budgets}/tt0353969.yml (100%) rename data/{ => budgets}/tt0361748.yml (100%) rename data/{ => budgets}/tt0363163.yml (100%) rename data/{ => budgets}/tt0364569.yml (100%) rename data/{ => budgets}/tt0372784.yml (100%) rename data/{ => budgets}/tt0374546.yml (100%) rename data/{ => budgets}/tt0381681.yml (100%) rename data/{ => budgets}/tt0395169.yml (100%) rename data/{ => budgets}/tt0401792.yml (100%) rename data/{ => budgets}/tt0405094.yml (100%) rename data/{ => budgets}/tt0405159.yml (100%) rename data/{ => budgets}/tt0407887.yml (100%) rename data/{ => budgets}/tt0434409.yml (100%) rename data/{ => budgets}/tt0435761.yml (100%) rename data/{ => budgets}/tt0440963.yml (100%) rename data/{ => budgets}/tt0457430.yml (100%) rename data/{ => budgets}/tt0468569.yml (100%) rename data/{ => budgets}/tt0469494.yml (100%) rename data/{ => budgets}/tt0477348.yml (100%) rename data/{ => budgets}/tt0482571.yml (100%) rename data/{ => budgets}/tt0758758.yml (100%) rename data/{ => budgets}/tt0816692.yml (100%) rename data/{ => budgets}/tt0848228.yml (100%) rename data/{ => budgets}/tt0892769.yml (100%) rename data/{ => budgets}/tt0910970.yml (100%) rename data/{ => budgets}/tt0978762.yml (100%) rename data/{ => budgets}/tt0993846.yml (100%) rename data/{ => budgets}/tt1028532.yml (100%) rename data/{ => budgets}/tt1049413.yml (100%) rename data/{ => budgets}/tt1069238.yml (100%) rename data/{ => budgets}/tt1130884.yml (100%) rename data/{ => budgets}/tt1187043.yml (100%) rename data/{ => budgets}/tt1201607.yml (100%) rename data/{ => budgets}/tt1205489.yml (100%) rename data/{ => budgets}/tt1220719.yml (100%) rename data/{ => budgets}/tt1255953.yml (100%) rename data/{ => budgets}/tt1291584.yml (100%) rename data/{ => budgets}/tt1305806.yml (100%) rename data/{ => budgets}/tt1345836.yml (100%) rename data/{ => budgets}/tt1375666.yml (100%) rename data/{ => budgets}/tt1392190.yml (100%) rename data/{ => budgets}/tt1392214.yml (100%) rename data/{ => budgets}/tt1454029.yml (100%) rename data/{ => budgets}/tt1504320.yml (100%) rename data/{ => budgets}/tt1555149.yml (100%) rename data/{ => budgets}/tt1675434.yml (100%) rename data/{ => budgets}/tt1832382.yml (100%) rename data/{ => budgets}/tt1853728.yml (100%) rename data/{ => budgets}/tt1877832.yml (100%) rename data/{ => budgets}/tt1979320.yml (100%) rename data/{ => budgets}/tt2015381.yml (100%) rename data/{ => budgets}/tt2024544.yml (100%) rename data/{ => budgets}/tt2084970.yml (100%) rename data/{ => budgets}/tt2096673.yml (100%) rename data/{ => budgets}/tt2106476.yml (100%) rename data/{ => budgets}/tt2267998.yml (100%) rename data/{ => budgets}/tt2278388.yml (100%) rename data/{ => budgets}/tt2582802.yml (100%) rename data/{ => budgets}/tt3011894.yml (100%) rename movies.txt => data/movies.txt (100%) rename demo.rb => examples/demo.rb (90%) create mode 100644 lib/top_movies.rb rename ancient_movie.rb => lib/topmovies/ancient_movie.rb (100%) rename cash_box.rb => lib/topmovies/cash_box.rb (100%) rename classic_movie.rb => lib/topmovies/classic_movie.rb (100%) rename country_filter.rb => lib/topmovies/country_filter.rb (100%) rename filter_genre.rb => lib/topmovies/filter_genre.rb (100%) rename modern_movie.rb => lib/topmovies/modern_movie.rb (100%) rename movie.rb => lib/topmovies/movie.rb (94%) rename movie_collection.rb => lib/topmovies/movie_collection.rb (93%) rename netflix.rb => lib/topmovies/netflix.rb (100%) rename new_movie.rb => lib/topmovies/new_movie.rb (100%) rename period.rb => lib/topmovies/period.rb (100%) rename theatre.rb => lib/topmovies/theatre.rb (98%) rename imdb_budgets.rb => www/imdb_budgets.rb (77%) rename index.haml => www/pages/index.haml (100%) rename index.html => www/pages/index.html (100%) rename tmdb_posters.rb => www/tmdb_posters.rb (100%) diff --git a/data/tt0012349.yml b/data/budgets/tt0012349.yml similarity index 100% rename from data/tt0012349.yml rename to data/budgets/tt0012349.yml diff --git a/data/tt0015864.yml b/data/budgets/tt0015864.yml similarity index 100% rename from data/tt0015864.yml rename to data/budgets/tt0015864.yml diff --git a/data/tt0017136.yml b/data/budgets/tt0017136.yml similarity index 100% rename from data/tt0017136.yml rename to data/budgets/tt0017136.yml diff --git a/data/tt0017925.yml b/data/budgets/tt0017925.yml similarity index 100% rename from data/tt0017925.yml rename to data/budgets/tt0017925.yml diff --git a/data/tt0021749.yml b/data/budgets/tt0021749.yml similarity index 100% rename from data/tt0021749.yml rename to data/budgets/tt0021749.yml diff --git a/data/tt0022100.yml b/data/budgets/tt0022100.yml similarity index 100% rename from data/tt0022100.yml rename to data/budgets/tt0022100.yml diff --git a/data/tt0025316.yml b/data/budgets/tt0025316.yml similarity index 100% rename from data/tt0025316.yml rename to data/budgets/tt0025316.yml diff --git a/data/tt0027977.yml b/data/budgets/tt0027977.yml similarity index 100% rename from data/tt0027977.yml rename to data/budgets/tt0027977.yml diff --git a/data/tt0031381.yml b/data/budgets/tt0031381.yml similarity index 100% rename from data/tt0031381.yml rename to data/budgets/tt0031381.yml diff --git a/data/tt0031679.yml b/data/budgets/tt0031679.yml similarity index 100% rename from data/tt0031679.yml rename to data/budgets/tt0031679.yml diff --git a/data/tt0032138.yml b/data/budgets/tt0032138.yml similarity index 100% rename from data/tt0032138.yml rename to data/budgets/tt0032138.yml diff --git a/data/tt0032551.yml b/data/budgets/tt0032551.yml similarity index 100% rename from data/tt0032551.yml rename to data/budgets/tt0032551.yml diff --git a/data/tt0032553.yml b/data/budgets/tt0032553.yml similarity index 100% rename from data/tt0032553.yml rename to data/budgets/tt0032553.yml diff --git a/data/tt0032976.yml b/data/budgets/tt0032976.yml similarity index 100% rename from data/tt0032976.yml rename to data/budgets/tt0032976.yml diff --git a/data/tt0033467.yml b/data/budgets/tt0033467.yml similarity index 100% rename from data/tt0033467.yml rename to data/budgets/tt0033467.yml diff --git a/data/tt0033870.yml b/data/budgets/tt0033870.yml similarity index 100% rename from data/tt0033870.yml rename to data/budgets/tt0033870.yml diff --git a/data/tt0034583.yml b/data/budgets/tt0034583.yml similarity index 100% rename from data/tt0034583.yml rename to data/budgets/tt0034583.yml diff --git a/data/tt0036775.yml b/data/budgets/tt0036775.yml similarity index 100% rename from data/tt0036775.yml rename to data/budgets/tt0036775.yml diff --git a/data/tt0036868.yml b/data/budgets/tt0036868.yml similarity index 100% rename from data/tt0036868.yml rename to data/budgets/tt0036868.yml diff --git a/data/tt0037008.yml b/data/budgets/tt0037008.yml similarity index 100% rename from data/tt0037008.yml rename to data/budgets/tt0037008.yml diff --git a/data/tt0038355.yml b/data/budgets/tt0038355.yml similarity index 100% rename from data/tt0038355.yml rename to data/budgets/tt0038355.yml diff --git a/data/tt0038650.yml b/data/budgets/tt0038650.yml similarity index 100% rename from data/tt0038650.yml rename to data/budgets/tt0038650.yml diff --git a/data/tt0038787.yml b/data/budgets/tt0038787.yml similarity index 100% rename from data/tt0038787.yml rename to data/budgets/tt0038787.yml diff --git a/data/tt0040522.yml b/data/budgets/tt0040522.yml similarity index 100% rename from data/tt0040522.yml rename to data/budgets/tt0040522.yml diff --git a/data/tt0040897.yml b/data/budgets/tt0040897.yml similarity index 100% rename from data/tt0040897.yml rename to data/budgets/tt0040897.yml diff --git a/data/tt0041959.yml b/data/budgets/tt0041959.yml similarity index 100% rename from data/tt0041959.yml rename to data/budgets/tt0041959.yml diff --git a/data/tt0042192.yml b/data/budgets/tt0042192.yml similarity index 100% rename from data/tt0042192.yml rename to data/budgets/tt0042192.yml diff --git a/data/tt0042876.yml b/data/budgets/tt0042876.yml similarity index 100% rename from data/tt0042876.yml rename to data/budgets/tt0042876.yml diff --git a/data/tt0043014.yml b/data/budgets/tt0043014.yml similarity index 100% rename from data/tt0043014.yml rename to data/budgets/tt0043014.yml diff --git a/data/tt0044079.yml b/data/budgets/tt0044079.yml similarity index 100% rename from data/tt0044079.yml rename to data/budgets/tt0044079.yml diff --git a/data/tt0044706.yml b/data/budgets/tt0044706.yml similarity index 100% rename from data/tt0044706.yml rename to data/budgets/tt0044706.yml diff --git a/data/tt0044741.yml b/data/budgets/tt0044741.yml similarity index 100% rename from data/tt0044741.yml rename to data/budgets/tt0044741.yml diff --git a/data/tt0045152.yml b/data/budgets/tt0045152.yml similarity index 100% rename from data/tt0045152.yml rename to data/budgets/tt0045152.yml diff --git a/data/tt0046250.yml b/data/budgets/tt0046250.yml similarity index 100% rename from data/tt0046250.yml rename to data/budgets/tt0046250.yml diff --git a/data/tt0046268.yml b/data/budgets/tt0046268.yml similarity index 100% rename from data/tt0046268.yml rename to data/budgets/tt0046268.yml diff --git a/data/tt0046911.yml b/data/budgets/tt0046911.yml similarity index 100% rename from data/tt0046911.yml rename to data/budgets/tt0046911.yml diff --git a/data/tt0046912.yml b/data/budgets/tt0046912.yml similarity index 100% rename from data/tt0046912.yml rename to data/budgets/tt0046912.yml diff --git a/data/tt0047296.yml b/data/budgets/tt0047296.yml similarity index 100% rename from data/tt0047296.yml rename to data/budgets/tt0047296.yml diff --git a/data/tt0047396.yml b/data/budgets/tt0047396.yml similarity index 100% rename from data/tt0047396.yml rename to data/budgets/tt0047396.yml diff --git a/data/tt0047478.yml b/data/budgets/tt0047478.yml similarity index 100% rename from data/tt0047478.yml rename to data/budgets/tt0047478.yml diff --git a/data/tt0047528.yml b/data/budgets/tt0047528.yml similarity index 100% rename from data/tt0047528.yml rename to data/budgets/tt0047528.yml diff --git a/data/tt0048424.yml b/data/budgets/tt0048424.yml similarity index 100% rename from data/tt0048424.yml rename to data/budgets/tt0048424.yml diff --git a/data/tt0049406.yml b/data/budgets/tt0049406.yml similarity index 100% rename from data/tt0049406.yml rename to data/budgets/tt0049406.yml diff --git a/data/tt0050083.yml b/data/budgets/tt0050083.yml similarity index 100% rename from data/tt0050083.yml rename to data/budgets/tt0050083.yml diff --git a/data/tt0050212.yml b/data/budgets/tt0050212.yml similarity index 100% rename from data/tt0050212.yml rename to data/budgets/tt0050212.yml diff --git a/data/tt0050613.yml b/data/budgets/tt0050613.yml similarity index 100% rename from data/tt0050613.yml rename to data/budgets/tt0050613.yml diff --git a/data/tt0050825.yml b/data/budgets/tt0050825.yml similarity index 100% rename from data/tt0050825.yml rename to data/budgets/tt0050825.yml diff --git a/data/tt0050976.yml b/data/budgets/tt0050976.yml similarity index 100% rename from data/tt0050976.yml rename to data/budgets/tt0050976.yml diff --git a/data/tt0050986.yml b/data/budgets/tt0050986.yml similarity index 100% rename from data/tt0050986.yml rename to data/budgets/tt0050986.yml diff --git a/data/tt0051201.yml b/data/budgets/tt0051201.yml similarity index 100% rename from data/tt0051201.yml rename to data/budgets/tt0051201.yml diff --git a/data/tt0052311.yml b/data/budgets/tt0052311.yml similarity index 100% rename from data/tt0052311.yml rename to data/budgets/tt0052311.yml diff --git a/data/tt0052357.yml b/data/budgets/tt0052357.yml similarity index 100% rename from data/tt0052357.yml rename to data/budgets/tt0052357.yml diff --git a/data/tt0052561.yml b/data/budgets/tt0052561.yml similarity index 100% rename from data/tt0052561.yml rename to data/budgets/tt0052561.yml diff --git a/data/tt0052618.yml b/data/budgets/tt0052618.yml similarity index 100% rename from data/tt0052618.yml rename to data/budgets/tt0052618.yml diff --git a/data/tt0053125.yml b/data/budgets/tt0053125.yml similarity index 100% rename from data/tt0053125.yml rename to data/budgets/tt0053125.yml diff --git a/data/tt0053198.yml b/data/budgets/tt0053198.yml similarity index 100% rename from data/tt0053198.yml rename to data/budgets/tt0053198.yml diff --git a/data/tt0053291.yml b/data/budgets/tt0053291.yml similarity index 100% rename from data/tt0053291.yml rename to data/budgets/tt0053291.yml diff --git a/data/tt0053604.yml b/data/budgets/tt0053604.yml similarity index 100% rename from data/tt0053604.yml rename to data/budgets/tt0053604.yml diff --git a/data/tt0054215.yml b/data/budgets/tt0054215.yml similarity index 100% rename from data/tt0054215.yml rename to data/budgets/tt0054215.yml diff --git a/data/tt0054997.yml b/data/budgets/tt0054997.yml similarity index 100% rename from data/tt0054997.yml rename to data/budgets/tt0054997.yml diff --git a/data/tt0055031.yml b/data/budgets/tt0055031.yml similarity index 100% rename from data/tt0055031.yml rename to data/budgets/tt0055031.yml diff --git a/data/tt0055630.yml b/data/budgets/tt0055630.yml similarity index 100% rename from data/tt0055630.yml rename to data/budgets/tt0055630.yml diff --git a/data/tt0056172.yml b/data/budgets/tt0056172.yml similarity index 100% rename from data/tt0056172.yml rename to data/budgets/tt0056172.yml diff --git a/data/tt0056592.yml b/data/budgets/tt0056592.yml similarity index 100% rename from data/tt0056592.yml rename to data/budgets/tt0056592.yml diff --git a/data/tt0056801.yml b/data/budgets/tt0056801.yml similarity index 100% rename from data/tt0056801.yml rename to data/budgets/tt0056801.yml diff --git a/data/tt0057012.yml b/data/budgets/tt0057012.yml similarity index 100% rename from data/tt0057012.yml rename to data/budgets/tt0057012.yml diff --git a/data/tt0057115.yml b/data/budgets/tt0057115.yml similarity index 100% rename from data/tt0057115.yml rename to data/budgets/tt0057115.yml diff --git a/data/tt0058461.yml b/data/budgets/tt0058461.yml similarity index 100% rename from data/tt0058461.yml rename to data/budgets/tt0058461.yml diff --git a/data/tt0058946.yml b/data/budgets/tt0058946.yml similarity index 100% rename from data/tt0058946.yml rename to data/budgets/tt0058946.yml diff --git a/data/tt0059578.yml b/data/budgets/tt0059578.yml similarity index 100% rename from data/tt0059578.yml rename to data/budgets/tt0059578.yml diff --git a/data/tt0060196.yml b/data/budgets/tt0060196.yml similarity index 100% rename from data/tt0060196.yml rename to data/budgets/tt0060196.yml diff --git a/data/tt0060827.yml b/data/budgets/tt0060827.yml similarity index 100% rename from data/tt0060827.yml rename to data/budgets/tt0060827.yml diff --git a/data/tt0061184.yml b/data/budgets/tt0061184.yml similarity index 100% rename from data/tt0061184.yml rename to data/budgets/tt0061184.yml diff --git a/data/tt0061512.yml b/data/budgets/tt0061512.yml similarity index 100% rename from data/tt0061512.yml rename to data/budgets/tt0061512.yml diff --git a/data/tt0061722.yml b/data/budgets/tt0061722.yml similarity index 100% rename from data/tt0061722.yml rename to data/budgets/tt0061722.yml diff --git a/data/tt0062622.yml b/data/budgets/tt0062622.yml similarity index 100% rename from data/tt0062622.yml rename to data/budgets/tt0062622.yml diff --git a/data/tt0064115.yml b/data/budgets/tt0064115.yml similarity index 100% rename from data/tt0064115.yml rename to data/budgets/tt0064115.yml diff --git a/data/tt0064116.yml b/data/budgets/tt0064116.yml similarity index 100% rename from data/tt0064116.yml rename to data/budgets/tt0064116.yml diff --git a/data/tt0066921.yml b/data/budgets/tt0066921.yml similarity index 100% rename from data/tt0066921.yml rename to data/budgets/tt0066921.yml diff --git a/data/tt0068646.yml b/data/budgets/tt0068646.yml similarity index 100% rename from data/tt0068646.yml rename to data/budgets/tt0068646.yml diff --git a/data/tt0070511.yml b/data/budgets/tt0070511.yml similarity index 100% rename from data/tt0070511.yml rename to data/budgets/tt0070511.yml diff --git a/data/tt0070735.yml b/data/budgets/tt0070735.yml similarity index 100% rename from data/tt0070735.yml rename to data/budgets/tt0070735.yml diff --git a/data/tt0071315.yml b/data/budgets/tt0071315.yml similarity index 100% rename from data/tt0071315.yml rename to data/budgets/tt0071315.yml diff --git a/data/tt0071562.yml b/data/budgets/tt0071562.yml similarity index 100% rename from data/tt0071562.yml rename to data/budgets/tt0071562.yml diff --git a/data/tt0071853.yml b/data/budgets/tt0071853.yml similarity index 100% rename from data/tt0071853.yml rename to data/budgets/tt0071853.yml diff --git a/data/tt0072684.yml b/data/budgets/tt0072684.yml similarity index 100% rename from data/tt0072684.yml rename to data/budgets/tt0072684.yml diff --git a/data/tt0072890.yml b/data/budgets/tt0072890.yml similarity index 100% rename from data/tt0072890.yml rename to data/budgets/tt0072890.yml diff --git a/data/tt0073195.yml b/data/budgets/tt0073195.yml similarity index 100% rename from data/tt0073195.yml rename to data/budgets/tt0073195.yml diff --git a/data/tt0073486.yml b/data/budgets/tt0073486.yml similarity index 100% rename from data/tt0073486.yml rename to data/budgets/tt0073486.yml diff --git a/data/tt0074958.yml b/data/budgets/tt0074958.yml similarity index 100% rename from data/tt0074958.yml rename to data/budgets/tt0074958.yml diff --git a/data/tt0075148.yml b/data/budgets/tt0075148.yml similarity index 100% rename from data/tt0075148.yml rename to data/budgets/tt0075148.yml diff --git a/data/tt0075314.yml b/data/budgets/tt0075314.yml similarity index 100% rename from data/tt0075314.yml rename to data/budgets/tt0075314.yml diff --git a/data/tt0075686.yml b/data/budgets/tt0075686.yml similarity index 100% rename from data/tt0075686.yml rename to data/budgets/tt0075686.yml diff --git a/data/tt0076759.yml b/data/budgets/tt0076759.yml similarity index 100% rename from data/tt0076759.yml rename to data/budgets/tt0076759.yml diff --git a/data/tt0077416.yml b/data/budgets/tt0077416.yml similarity index 100% rename from data/tt0077416.yml rename to data/budgets/tt0077416.yml diff --git a/data/tt0078748.yml b/data/budgets/tt0078748.yml similarity index 100% rename from data/tt0078748.yml rename to data/budgets/tt0078748.yml diff --git a/data/tt0078788.yml b/data/budgets/tt0078788.yml similarity index 100% rename from data/tt0078788.yml rename to data/budgets/tt0078788.yml diff --git a/data/tt0079470.yml b/data/budgets/tt0079470.yml similarity index 100% rename from data/tt0079470.yml rename to data/budgets/tt0079470.yml diff --git a/data/tt0079944.yml b/data/budgets/tt0079944.yml similarity index 100% rename from data/tt0079944.yml rename to data/budgets/tt0079944.yml diff --git a/data/tt0080678.yml b/data/budgets/tt0080678.yml similarity index 100% rename from data/tt0080678.yml rename to data/budgets/tt0080678.yml diff --git a/data/tt0080684.yml b/data/budgets/tt0080684.yml similarity index 100% rename from data/tt0080684.yml rename to data/budgets/tt0080684.yml diff --git a/data/tt0081398.yml b/data/budgets/tt0081398.yml similarity index 100% rename from data/tt0081398.yml rename to data/budgets/tt0081398.yml diff --git a/data/tt0081505.yml b/data/budgets/tt0081505.yml similarity index 100% rename from data/tt0081505.yml rename to data/budgets/tt0081505.yml diff --git a/data/tt0082096.yml b/data/budgets/tt0082096.yml similarity index 100% rename from data/tt0082096.yml rename to data/budgets/tt0082096.yml diff --git a/data/tt0082971.yml b/data/budgets/tt0082971.yml similarity index 100% rename from data/tt0082971.yml rename to data/budgets/tt0082971.yml diff --git a/data/tt0083658.yml b/data/budgets/tt0083658.yml similarity index 100% rename from data/tt0083658.yml rename to data/budgets/tt0083658.yml diff --git a/data/tt0083922.yml b/data/budgets/tt0083922.yml similarity index 100% rename from data/tt0083922.yml rename to data/budgets/tt0083922.yml diff --git a/data/tt0083987.yml b/data/budgets/tt0083987.yml similarity index 100% rename from data/tt0083987.yml rename to data/budgets/tt0083987.yml diff --git a/data/tt0084787.yml b/data/budgets/tt0084787.yml similarity index 100% rename from data/tt0084787.yml rename to data/budgets/tt0084787.yml diff --git a/data/tt0086190.yml b/data/budgets/tt0086190.yml similarity index 100% rename from data/tt0086190.yml rename to data/budgets/tt0086190.yml diff --git a/data/tt0086250.yml b/data/budgets/tt0086250.yml similarity index 100% rename from data/tt0086250.yml rename to data/budgets/tt0086250.yml diff --git a/data/tt0086879.yml b/data/budgets/tt0086879.yml similarity index 100% rename from data/tt0086879.yml rename to data/budgets/tt0086879.yml diff --git a/data/tt0087544.yml b/data/budgets/tt0087544.yml similarity index 100% rename from data/tt0087544.yml rename to data/budgets/tt0087544.yml diff --git a/data/tt0087843.yml b/data/budgets/tt0087843.yml similarity index 100% rename from data/tt0087843.yml rename to data/budgets/tt0087843.yml diff --git a/data/tt0088247.yml b/data/budgets/tt0088247.yml similarity index 100% rename from data/tt0088247.yml rename to data/budgets/tt0088247.yml diff --git a/data/tt0088763.yml b/data/budgets/tt0088763.yml similarity index 100% rename from data/tt0088763.yml rename to data/budgets/tt0088763.yml diff --git a/data/tt0089881.yml b/data/budgets/tt0089881.yml similarity index 100% rename from data/tt0089881.yml rename to data/budgets/tt0089881.yml diff --git a/data/tt0090605.yml b/data/budgets/tt0090605.yml similarity index 100% rename from data/tt0090605.yml rename to data/budgets/tt0090605.yml diff --git a/data/tt0091763.yml b/data/budgets/tt0091763.yml similarity index 100% rename from data/tt0091763.yml rename to data/budgets/tt0091763.yml diff --git a/data/tt0092005.yml b/data/budgets/tt0092005.yml similarity index 100% rename from data/tt0092005.yml rename to data/budgets/tt0092005.yml diff --git a/data/tt0092067.yml b/data/budgets/tt0092067.yml similarity index 100% rename from data/tt0092067.yml rename to data/budgets/tt0092067.yml diff --git a/data/tt0093058.yml b/data/budgets/tt0093058.yml similarity index 100% rename from data/tt0093058.yml rename to data/budgets/tt0093058.yml diff --git a/data/tt0093779.yml b/data/budgets/tt0093779.yml similarity index 100% rename from data/tt0093779.yml rename to data/budgets/tt0093779.yml diff --git a/data/tt0094625.yml b/data/budgets/tt0094625.yml similarity index 100% rename from data/tt0094625.yml rename to data/budgets/tt0094625.yml diff --git a/data/tt0095016.yml b/data/budgets/tt0095016.yml similarity index 100% rename from data/tt0095016.yml rename to data/budgets/tt0095016.yml diff --git a/data/tt0095327.yml b/data/budgets/tt0095327.yml similarity index 100% rename from data/tt0095327.yml rename to data/budgets/tt0095327.yml diff --git a/data/tt0095765.yml b/data/budgets/tt0095765.yml similarity index 100% rename from data/tt0095765.yml rename to data/budgets/tt0095765.yml diff --git a/data/tt0096283.yml b/data/budgets/tt0096283.yml similarity index 100% rename from data/tt0096283.yml rename to data/budgets/tt0096283.yml diff --git a/data/tt0097576.yml b/data/budgets/tt0097576.yml similarity index 100% rename from data/tt0097576.yml rename to data/budgets/tt0097576.yml diff --git a/data/tt0099685.yml b/data/budgets/tt0099685.yml similarity index 100% rename from data/tt0099685.yml rename to data/budgets/tt0099685.yml diff --git a/data/tt0101414.yml b/data/budgets/tt0101414.yml similarity index 100% rename from data/tt0101414.yml rename to data/budgets/tt0101414.yml diff --git a/data/tt0102926.yml b/data/budgets/tt0102926.yml similarity index 100% rename from data/tt0102926.yml rename to data/budgets/tt0102926.yml diff --git a/data/tt0103064.yml b/data/budgets/tt0103064.yml similarity index 100% rename from data/tt0103064.yml rename to data/budgets/tt0103064.yml diff --git a/data/tt0105236.yml b/data/budgets/tt0105236.yml similarity index 100% rename from data/tt0105236.yml rename to data/budgets/tt0105236.yml diff --git a/data/tt0105695.yml b/data/budgets/tt0105695.yml similarity index 100% rename from data/tt0105695.yml rename to data/budgets/tt0105695.yml diff --git a/data/tt0107048.yml b/data/budgets/tt0107048.yml similarity index 100% rename from data/tt0107048.yml rename to data/budgets/tt0107048.yml diff --git a/data/tt0107207.yml b/data/budgets/tt0107207.yml similarity index 100% rename from data/tt0107207.yml rename to data/budgets/tt0107207.yml diff --git a/data/tt0107290.yml b/data/budgets/tt0107290.yml similarity index 100% rename from data/tt0107290.yml rename to data/budgets/tt0107290.yml diff --git a/data/tt0108052.yml b/data/budgets/tt0108052.yml similarity index 100% rename from data/tt0108052.yml rename to data/budgets/tt0108052.yml diff --git a/data/tt0109830.yml b/data/budgets/tt0109830.yml similarity index 100% rename from data/tt0109830.yml rename to data/budgets/tt0109830.yml diff --git a/data/tt0110357.yml b/data/budgets/tt0110357.yml similarity index 100% rename from data/tt0110357.yml rename to data/budgets/tt0110357.yml diff --git a/data/tt0110413.yml b/data/budgets/tt0110413.yml similarity index 100% rename from data/tt0110413.yml rename to data/budgets/tt0110413.yml diff --git a/data/tt0110912.yml b/data/budgets/tt0110912.yml similarity index 100% rename from data/tt0110912.yml rename to data/budgets/tt0110912.yml diff --git a/data/tt0111161.yml b/data/budgets/tt0111161.yml similarity index 100% rename from data/tt0111161.yml rename to data/budgets/tt0111161.yml diff --git a/data/tt0112471.yml b/data/budgets/tt0112471.yml similarity index 100% rename from data/tt0112471.yml rename to data/budgets/tt0112471.yml diff --git a/data/tt0112573.yml b/data/budgets/tt0112573.yml similarity index 100% rename from data/tt0112573.yml rename to data/budgets/tt0112573.yml diff --git a/data/tt0112641.yml b/data/budgets/tt0112641.yml similarity index 100% rename from data/tt0112641.yml rename to data/budgets/tt0112641.yml diff --git a/data/tt0113247.yml b/data/budgets/tt0113247.yml similarity index 100% rename from data/tt0113247.yml rename to data/budgets/tt0113247.yml diff --git a/data/tt0113277.yml b/data/budgets/tt0113277.yml similarity index 100% rename from data/tt0113277.yml rename to data/budgets/tt0113277.yml diff --git a/data/tt0114369.yml b/data/budgets/tt0114369.yml similarity index 100% rename from data/tt0114369.yml rename to data/budgets/tt0114369.yml diff --git a/data/tt0114709.yml b/data/budgets/tt0114709.yml similarity index 100% rename from data/tt0114709.yml rename to data/budgets/tt0114709.yml diff --git a/data/tt0114746.yml b/data/budgets/tt0114746.yml similarity index 100% rename from data/tt0114746.yml rename to data/budgets/tt0114746.yml diff --git a/data/tt0114787.yml b/data/budgets/tt0114787.yml similarity index 100% rename from data/tt0114787.yml rename to data/budgets/tt0114787.yml diff --git a/data/tt0114814.yml b/data/budgets/tt0114814.yml similarity index 100% rename from data/tt0114814.yml rename to data/budgets/tt0114814.yml diff --git a/data/tt0116282.yml b/data/budgets/tt0116282.yml similarity index 100% rename from data/tt0116282.yml rename to data/budgets/tt0116282.yml diff --git a/data/tt0117951.yml b/data/budgets/tt0117951.yml similarity index 100% rename from data/tt0117951.yml rename to data/budgets/tt0117951.yml diff --git a/data/tt0118715.yml b/data/budgets/tt0118715.yml similarity index 100% rename from data/tt0118715.yml rename to data/budgets/tt0118715.yml diff --git a/data/tt0118799.yml b/data/budgets/tt0118799.yml similarity index 100% rename from data/tt0118799.yml rename to data/budgets/tt0118799.yml diff --git a/data/tt0119217.yml b/data/budgets/tt0119217.yml similarity index 100% rename from data/tt0119217.yml rename to data/budgets/tt0119217.yml diff --git a/data/tt0119488.yml b/data/budgets/tt0119488.yml similarity index 100% rename from data/tt0119488.yml rename to data/budgets/tt0119488.yml diff --git a/data/tt0119698.yml b/data/budgets/tt0119698.yml similarity index 100% rename from data/tt0119698.yml rename to data/budgets/tt0119698.yml diff --git a/data/tt0120382.yml b/data/budgets/tt0120382.yml similarity index 100% rename from data/tt0120382.yml rename to data/budgets/tt0120382.yml diff --git a/data/tt0120586.yml b/data/budgets/tt0120586.yml similarity index 100% rename from data/tt0120586.yml rename to data/budgets/tt0120586.yml diff --git a/data/tt0120689.yml b/data/budgets/tt0120689.yml similarity index 100% rename from data/tt0120689.yml rename to data/budgets/tt0120689.yml diff --git a/data/tt0120735.yml b/data/budgets/tt0120735.yml similarity index 100% rename from data/tt0120735.yml rename to data/budgets/tt0120735.yml diff --git a/data/tt0120737.yml b/data/budgets/tt0120737.yml similarity index 100% rename from data/tt0120737.yml rename to data/budgets/tt0120737.yml diff --git a/data/tt0120815.yml b/data/budgets/tt0120815.yml similarity index 100% rename from data/tt0120815.yml rename to data/budgets/tt0120815.yml diff --git a/data/tt0133093.yml b/data/budgets/tt0133093.yml similarity index 100% rename from data/tt0133093.yml rename to data/budgets/tt0133093.yml diff --git a/data/tt0137523.yml b/data/budgets/tt0137523.yml similarity index 100% rename from data/tt0137523.yml rename to data/budgets/tt0137523.yml diff --git a/data/tt0167260.yml b/data/budgets/tt0167260.yml similarity index 100% rename from data/tt0167260.yml rename to data/budgets/tt0167260.yml diff --git a/data/tt0167261.yml b/data/budgets/tt0167261.yml similarity index 100% rename from data/tt0167261.yml rename to data/budgets/tt0167261.yml diff --git a/data/tt0167404.yml b/data/budgets/tt0167404.yml similarity index 100% rename from data/tt0167404.yml rename to data/budgets/tt0167404.yml diff --git a/data/tt0169547.yml b/data/budgets/tt0169547.yml similarity index 100% rename from data/tt0169547.yml rename to data/budgets/tt0169547.yml diff --git a/data/tt0172495.yml b/data/budgets/tt0172495.yml similarity index 100% rename from data/tt0172495.yml rename to data/budgets/tt0172495.yml diff --git a/data/tt0180093.yml b/data/budgets/tt0180093.yml similarity index 100% rename from data/tt0180093.yml rename to data/budgets/tt0180093.yml diff --git a/data/tt0198781.yml b/data/budgets/tt0198781.yml similarity index 100% rename from data/tt0198781.yml rename to data/budgets/tt0198781.yml diff --git a/data/tt0208092.yml b/data/budgets/tt0208092.yml similarity index 100% rename from data/tt0208092.yml rename to data/budgets/tt0208092.yml diff --git a/data/tt0209144.yml b/data/budgets/tt0209144.yml similarity index 100% rename from data/tt0209144.yml rename to data/budgets/tt0209144.yml diff --git a/data/tt0211915.yml b/data/budgets/tt0211915.yml similarity index 100% rename from data/tt0211915.yml rename to data/budgets/tt0211915.yml diff --git a/data/tt0245429.yml b/data/budgets/tt0245429.yml similarity index 100% rename from data/tt0245429.yml rename to data/budgets/tt0245429.yml diff --git a/data/tt0245712.yml b/data/budgets/tt0245712.yml similarity index 100% rename from data/tt0245712.yml rename to data/budgets/tt0245712.yml diff --git a/data/tt0246578.yml b/data/budgets/tt0246578.yml similarity index 100% rename from data/tt0246578.yml rename to data/budgets/tt0246578.yml diff --git a/data/tt0253474.yml b/data/budgets/tt0253474.yml similarity index 100% rename from data/tt0253474.yml rename to data/budgets/tt0253474.yml diff --git a/data/tt0266543.yml b/data/budgets/tt0266543.yml similarity index 100% rename from data/tt0266543.yml rename to data/budgets/tt0266543.yml diff --git a/data/tt0266697.yml b/data/budgets/tt0266697.yml similarity index 100% rename from data/tt0266697.yml rename to data/budgets/tt0266697.yml diff --git a/data/tt0268978.yml b/data/budgets/tt0268978.yml similarity index 100% rename from data/tt0268978.yml rename to data/budgets/tt0268978.yml diff --git a/data/tt0317248.yml b/data/budgets/tt0317248.yml similarity index 100% rename from data/tt0317248.yml rename to data/budgets/tt0317248.yml diff --git a/data/tt0325980.yml b/data/budgets/tt0325980.yml similarity index 100% rename from data/tt0325980.yml rename to data/budgets/tt0325980.yml diff --git a/data/tt0338013.yml b/data/budgets/tt0338013.yml similarity index 100% rename from data/tt0338013.yml rename to data/budgets/tt0338013.yml diff --git a/data/tt0338564.yml b/data/budgets/tt0338564.yml similarity index 100% rename from data/tt0338564.yml rename to data/budgets/tt0338564.yml diff --git a/data/tt0347149.yml b/data/budgets/tt0347149.yml similarity index 100% rename from data/tt0347149.yml rename to data/budgets/tt0347149.yml diff --git a/data/tt0353969.yml b/data/budgets/tt0353969.yml similarity index 100% rename from data/tt0353969.yml rename to data/budgets/tt0353969.yml diff --git a/data/tt0361748.yml b/data/budgets/tt0361748.yml similarity index 100% rename from data/tt0361748.yml rename to data/budgets/tt0361748.yml diff --git a/data/tt0363163.yml b/data/budgets/tt0363163.yml similarity index 100% rename from data/tt0363163.yml rename to data/budgets/tt0363163.yml diff --git a/data/tt0364569.yml b/data/budgets/tt0364569.yml similarity index 100% rename from data/tt0364569.yml rename to data/budgets/tt0364569.yml diff --git a/data/tt0372784.yml b/data/budgets/tt0372784.yml similarity index 100% rename from data/tt0372784.yml rename to data/budgets/tt0372784.yml diff --git a/data/tt0374546.yml b/data/budgets/tt0374546.yml similarity index 100% rename from data/tt0374546.yml rename to data/budgets/tt0374546.yml diff --git a/data/tt0381681.yml b/data/budgets/tt0381681.yml similarity index 100% rename from data/tt0381681.yml rename to data/budgets/tt0381681.yml diff --git a/data/tt0395169.yml b/data/budgets/tt0395169.yml similarity index 100% rename from data/tt0395169.yml rename to data/budgets/tt0395169.yml diff --git a/data/tt0401792.yml b/data/budgets/tt0401792.yml similarity index 100% rename from data/tt0401792.yml rename to data/budgets/tt0401792.yml diff --git a/data/tt0405094.yml b/data/budgets/tt0405094.yml similarity index 100% rename from data/tt0405094.yml rename to data/budgets/tt0405094.yml diff --git a/data/tt0405159.yml b/data/budgets/tt0405159.yml similarity index 100% rename from data/tt0405159.yml rename to data/budgets/tt0405159.yml diff --git a/data/tt0407887.yml b/data/budgets/tt0407887.yml similarity index 100% rename from data/tt0407887.yml rename to data/budgets/tt0407887.yml diff --git a/data/tt0434409.yml b/data/budgets/tt0434409.yml similarity index 100% rename from data/tt0434409.yml rename to data/budgets/tt0434409.yml diff --git a/data/tt0435761.yml b/data/budgets/tt0435761.yml similarity index 100% rename from data/tt0435761.yml rename to data/budgets/tt0435761.yml diff --git a/data/tt0440963.yml b/data/budgets/tt0440963.yml similarity index 100% rename from data/tt0440963.yml rename to data/budgets/tt0440963.yml diff --git a/data/tt0457430.yml b/data/budgets/tt0457430.yml similarity index 100% rename from data/tt0457430.yml rename to data/budgets/tt0457430.yml diff --git a/data/tt0468569.yml b/data/budgets/tt0468569.yml similarity index 100% rename from data/tt0468569.yml rename to data/budgets/tt0468569.yml diff --git a/data/tt0469494.yml b/data/budgets/tt0469494.yml similarity index 100% rename from data/tt0469494.yml rename to data/budgets/tt0469494.yml diff --git a/data/tt0477348.yml b/data/budgets/tt0477348.yml similarity index 100% rename from data/tt0477348.yml rename to data/budgets/tt0477348.yml diff --git a/data/tt0482571.yml b/data/budgets/tt0482571.yml similarity index 100% rename from data/tt0482571.yml rename to data/budgets/tt0482571.yml diff --git a/data/tt0758758.yml b/data/budgets/tt0758758.yml similarity index 100% rename from data/tt0758758.yml rename to data/budgets/tt0758758.yml diff --git a/data/tt0816692.yml b/data/budgets/tt0816692.yml similarity index 100% rename from data/tt0816692.yml rename to data/budgets/tt0816692.yml diff --git a/data/tt0848228.yml b/data/budgets/tt0848228.yml similarity index 100% rename from data/tt0848228.yml rename to data/budgets/tt0848228.yml diff --git a/data/tt0892769.yml b/data/budgets/tt0892769.yml similarity index 100% rename from data/tt0892769.yml rename to data/budgets/tt0892769.yml diff --git a/data/tt0910970.yml b/data/budgets/tt0910970.yml similarity index 100% rename from data/tt0910970.yml rename to data/budgets/tt0910970.yml diff --git a/data/tt0978762.yml b/data/budgets/tt0978762.yml similarity index 100% rename from data/tt0978762.yml rename to data/budgets/tt0978762.yml diff --git a/data/tt0993846.yml b/data/budgets/tt0993846.yml similarity index 100% rename from data/tt0993846.yml rename to data/budgets/tt0993846.yml diff --git a/data/tt1028532.yml b/data/budgets/tt1028532.yml similarity index 100% rename from data/tt1028532.yml rename to data/budgets/tt1028532.yml diff --git a/data/tt1049413.yml b/data/budgets/tt1049413.yml similarity index 100% rename from data/tt1049413.yml rename to data/budgets/tt1049413.yml diff --git a/data/tt1069238.yml b/data/budgets/tt1069238.yml similarity index 100% rename from data/tt1069238.yml rename to data/budgets/tt1069238.yml diff --git a/data/tt1130884.yml b/data/budgets/tt1130884.yml similarity index 100% rename from data/tt1130884.yml rename to data/budgets/tt1130884.yml diff --git a/data/tt1187043.yml b/data/budgets/tt1187043.yml similarity index 100% rename from data/tt1187043.yml rename to data/budgets/tt1187043.yml diff --git a/data/tt1201607.yml b/data/budgets/tt1201607.yml similarity index 100% rename from data/tt1201607.yml rename to data/budgets/tt1201607.yml diff --git a/data/tt1205489.yml b/data/budgets/tt1205489.yml similarity index 100% rename from data/tt1205489.yml rename to data/budgets/tt1205489.yml diff --git a/data/tt1220719.yml b/data/budgets/tt1220719.yml similarity index 100% rename from data/tt1220719.yml rename to data/budgets/tt1220719.yml diff --git a/data/tt1255953.yml b/data/budgets/tt1255953.yml similarity index 100% rename from data/tt1255953.yml rename to data/budgets/tt1255953.yml diff --git a/data/tt1291584.yml b/data/budgets/tt1291584.yml similarity index 100% rename from data/tt1291584.yml rename to data/budgets/tt1291584.yml diff --git a/data/tt1305806.yml b/data/budgets/tt1305806.yml similarity index 100% rename from data/tt1305806.yml rename to data/budgets/tt1305806.yml diff --git a/data/tt1345836.yml b/data/budgets/tt1345836.yml similarity index 100% rename from data/tt1345836.yml rename to data/budgets/tt1345836.yml diff --git a/data/tt1375666.yml b/data/budgets/tt1375666.yml similarity index 100% rename from data/tt1375666.yml rename to data/budgets/tt1375666.yml diff --git a/data/tt1392190.yml b/data/budgets/tt1392190.yml similarity index 100% rename from data/tt1392190.yml rename to data/budgets/tt1392190.yml diff --git a/data/tt1392214.yml b/data/budgets/tt1392214.yml similarity index 100% rename from data/tt1392214.yml rename to data/budgets/tt1392214.yml diff --git a/data/tt1454029.yml b/data/budgets/tt1454029.yml similarity index 100% rename from data/tt1454029.yml rename to data/budgets/tt1454029.yml diff --git a/data/tt1504320.yml b/data/budgets/tt1504320.yml similarity index 100% rename from data/tt1504320.yml rename to data/budgets/tt1504320.yml diff --git a/data/tt1555149.yml b/data/budgets/tt1555149.yml similarity index 100% rename from data/tt1555149.yml rename to data/budgets/tt1555149.yml diff --git a/data/tt1675434.yml b/data/budgets/tt1675434.yml similarity index 100% rename from data/tt1675434.yml rename to data/budgets/tt1675434.yml diff --git a/data/tt1832382.yml b/data/budgets/tt1832382.yml similarity index 100% rename from data/tt1832382.yml rename to data/budgets/tt1832382.yml diff --git a/data/tt1853728.yml b/data/budgets/tt1853728.yml similarity index 100% rename from data/tt1853728.yml rename to data/budgets/tt1853728.yml diff --git a/data/tt1877832.yml b/data/budgets/tt1877832.yml similarity index 100% rename from data/tt1877832.yml rename to data/budgets/tt1877832.yml diff --git a/data/tt1979320.yml b/data/budgets/tt1979320.yml similarity index 100% rename from data/tt1979320.yml rename to data/budgets/tt1979320.yml diff --git a/data/tt2015381.yml b/data/budgets/tt2015381.yml similarity index 100% rename from data/tt2015381.yml rename to data/budgets/tt2015381.yml diff --git a/data/tt2024544.yml b/data/budgets/tt2024544.yml similarity index 100% rename from data/tt2024544.yml rename to data/budgets/tt2024544.yml diff --git a/data/tt2084970.yml b/data/budgets/tt2084970.yml similarity index 100% rename from data/tt2084970.yml rename to data/budgets/tt2084970.yml diff --git a/data/tt2096673.yml b/data/budgets/tt2096673.yml similarity index 100% rename from data/tt2096673.yml rename to data/budgets/tt2096673.yml diff --git a/data/tt2106476.yml b/data/budgets/tt2106476.yml similarity index 100% rename from data/tt2106476.yml rename to data/budgets/tt2106476.yml diff --git a/data/tt2267998.yml b/data/budgets/tt2267998.yml similarity index 100% rename from data/tt2267998.yml rename to data/budgets/tt2267998.yml diff --git a/data/tt2278388.yml b/data/budgets/tt2278388.yml similarity index 100% rename from data/tt2278388.yml rename to data/budgets/tt2278388.yml diff --git a/data/tt2582802.yml b/data/budgets/tt2582802.yml similarity index 100% rename from data/tt2582802.yml rename to data/budgets/tt2582802.yml diff --git a/data/tt3011894.yml b/data/budgets/tt3011894.yml similarity index 100% rename from data/tt3011894.yml rename to data/budgets/tt3011894.yml diff --git a/movies.txt b/data/movies.txt similarity index 100% rename from movies.txt rename to data/movies.txt diff --git a/demo.rb b/examples/demo.rb similarity index 90% rename from demo.rb rename to examples/demo.rb index d2b0fdc..2aff7d4 100644 --- a/demo.rb +++ b/examples/demo.rb @@ -1,16 +1,16 @@ -require_relative 'movie' -require_relative 'ancient_movie' -require_relative 'classic_movie' -require_relative 'modern_movie' -require_relative 'new_movie' -require_relative 'movie_collection' -require_relative 'filter_genre' -require_relative 'country_filter' -require_relative 'netflix' -require_relative 'theatre' +require_relative '../lib/topmovies/movie' +require_relative '../lib/topmovies/ancient_movie' +require_relative '../lib/topmovies/classic_movie' +require_relative '../lib/topmovies/modern_movie' +require_relative '../lib/topmovies/new_movie' +require_relative '../lib/topmovies/movie_collection' +require_relative '../lib/topmovies/filter_genre' +require_relative '../lib/topmovies/country_filter' +require_relative '../lib/topmovies/netflix' +require_relative '../lib/topmovies/theatre' require 'date' -file_name = ARGV[0] || 'movies.txt' +file_name = ARGV[0] || '../data/movies.txt' if File.exist?(file_name) File.open(file_name) diff --git a/lib/top_movies.rb b/lib/top_movies.rb new file mode 100644 index 0000000..a477919 --- /dev/null +++ b/lib/top_movies.rb @@ -0,0 +1,19 @@ +require_relative 'topmovies/ancient_movie' +require_relative 'topmovies/cash_box' +require_relative 'topmovies/classic_movie' +require_relative 'topmovies/country_filter' +require_relative 'topmovies/filter_genre' +require_relative 'topmovies/modern_movie' +require_relative 'topmovies/movie' +require_relative 'topmovies/movie_collection' +require_relative 'topmovies/netflix' +require_relative 'topmovies/new_movie' +require_relative 'topmovies/period' +require_relative 'topmovies/theatre' +require_relative '../www/imdb_budgets' +require_relative '../www/tmdb_posters' + +module TopMovies + VERSION = "0.1.1" + +end \ No newline at end of file diff --git a/ancient_movie.rb b/lib/topmovies/ancient_movie.rb similarity index 100% rename from ancient_movie.rb rename to lib/topmovies/ancient_movie.rb diff --git a/cash_box.rb b/lib/topmovies/cash_box.rb similarity index 100% rename from cash_box.rb rename to lib/topmovies/cash_box.rb diff --git a/classic_movie.rb b/lib/topmovies/classic_movie.rb similarity index 100% rename from classic_movie.rb rename to lib/topmovies/classic_movie.rb diff --git a/country_filter.rb b/lib/topmovies/country_filter.rb similarity index 100% rename from country_filter.rb rename to lib/topmovies/country_filter.rb diff --git a/filter_genre.rb b/lib/topmovies/filter_genre.rb similarity index 100% rename from filter_genre.rb rename to lib/topmovies/filter_genre.rb diff --git a/modern_movie.rb b/lib/topmovies/modern_movie.rb similarity index 100% rename from modern_movie.rb rename to lib/topmovies/modern_movie.rb diff --git a/movie.rb b/lib/topmovies/movie.rb similarity index 94% rename from movie.rb rename to lib/topmovies/movie.rb index e066348..d691976 100644 --- a/movie.rb +++ b/lib/topmovies/movie.rb @@ -1,5 +1,5 @@ -require_relative 'imdb_budgets' -require_relative 'tmdb_posters' +require_relative '../../wwww/imdb_budgets' +require_relative '../../wwww/tmdb_posters' module TopMovies class Movie require 'virtus' @@ -82,7 +82,7 @@ def imdb_id end def budget - file_name = "data/#{self.imdb_id}.yml" + file_name = "../../data/budgets/#{self.imdb_id}.yml" take_budget_from_imdb(self.imdb_id) unless File.exist?(file_name) take_budget_from_file(file_name) end diff --git a/movie_collection.rb b/lib/topmovies/movie_collection.rb similarity index 93% rename from movie_collection.rb rename to lib/topmovies/movie_collection.rb index 653f5d3..df950e7 100644 --- a/movie_collection.rb +++ b/lib/topmovies/movie_collection.rb @@ -4,8 +4,8 @@ require_relative 'filter_genre' require_relative 'country_filter' require 'money' -require_relative 'imdb_budgets' -require_relative 'tmdb_posters' +require_relative '../../wwww/imdb_budgets' +require_relative '../../wwww/tmdb_posters' module TopMovies class MovieCollection @@ -89,7 +89,7 @@ def by_country end def render_html - template = File.open('index.haml') + template = File.open('../../wwww/pages/index.haml') Haml::Engine.new(template.read).render(@collection) end end diff --git a/netflix.rb b/lib/topmovies/netflix.rb similarity index 100% rename from netflix.rb rename to lib/topmovies/netflix.rb diff --git a/new_movie.rb b/lib/topmovies/new_movie.rb similarity index 100% rename from new_movie.rb rename to lib/topmovies/new_movie.rb diff --git a/period.rb b/lib/topmovies/period.rb similarity index 100% rename from period.rb rename to lib/topmovies/period.rb diff --git a/theatre.rb b/lib/topmovies/theatre.rb similarity index 98% rename from theatre.rb rename to lib/topmovies/theatre.rb index 183f4fd..e9dbeca 100644 --- a/theatre.rb +++ b/lib/topmovies/theatre.rb @@ -5,7 +5,7 @@ class Theatre < MovieCollection attr_accessor :halls, :periods def initialize(&block) - super('movies.txt') + super('../../data/movies.txt') @halls = {} @periods = [] @blck = {} diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 868f1a5..6c86ee0 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,12 +1,12 @@ require 'rspec/its' -require_relative "../movie" -require_relative "../ancient_movie" -require_relative "../classic_movie" -require_relative "../modern_movie" -require_relative "../new_movie" -require_relative "../movie_collection" -require_relative "../netflix" -require_relative "../theatre" +require_relative "../lib/topmovies/movie" +require_relative "../lib/topmovies/ancient_movie" +require_relative "../lib/topmovies/classic_movie" +require_relative "../lib/topmovies/modern_movie" +require_relative "../lib/topmovies/new_movie" +require_relative "../lib/topmovies/movie_collection" +require_relative "../lib/topmovies/netflix" +require_relative "../lib/topmovies/theatre" require 'haml' require "date" require "money" diff --git a/imdb_budgets.rb b/www/imdb_budgets.rb similarity index 77% rename from imdb_budgets.rb rename to www/imdb_budgets.rb index d88042f..05d249c 100644 --- a/imdb_budgets.rb +++ b/www/imdb_budgets.rb @@ -5,7 +5,7 @@ module ImdbBudgets def take_budget_from_file(file_name) - YAML::load_file(File.open(file_name))[file_name[5,9]] + YAML::load_file(File.open(file_name))[file_name[19,9]] end def take_budget_from_imdb(id) @@ -15,7 +15,7 @@ def take_budget_from_imdb(id) else nil end - File.write("data/#{id}.yml", {id => data}.to_yaml) + File.write("../data/budgets/#{id}.yml", {id => data}.to_yaml) end def take_info diff --git a/index.haml b/www/pages/index.haml similarity index 100% rename from index.haml rename to www/pages/index.haml diff --git a/index.html b/www/pages/index.html similarity index 100% rename from index.html rename to www/pages/index.html diff --git a/tmdb_posters.rb b/www/tmdb_posters.rb similarity index 100% rename from tmdb_posters.rb rename to www/tmdb_posters.rb From a7388505799a78ea991337b76e35af139aef6b54 Mon Sep 17 00:00:00 2001 From: devico Date: Fri, 14 Oct 2016 12:36:21 +0300 Subject: [PATCH 03/26] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D1=83=20=D0=BA?= =?UTF-8?q?=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .rubocop.yml | 1 + examples/demo.rb | 152 +++++++++++++----------------- lib/top_movies.rb | 5 - lib/topmovies/movie.rb | 13 +-- lib/topmovies/movie_collection.rb | 6 +- lib/topmovies/theatre.rb | 3 +- spec/ancient_movie_spec.rb | 2 +- spec/cash_box_spec.rb | 2 +- spec/classic_movie_spec.rb | 2 +- spec/imdb_budgets_spec.rb | 2 +- spec/modern_movie_spec.rb | 2 +- spec/movie_collection_spec.rb | 2 +- spec/movie_spec.rb | 4 +- spec/netflix_spec.rb | 4 +- spec/newmovie_spec.rb | 2 +- spec/tmdb_posters_spec.rb | 2 +- www/imdb_budgets.rb | 9 +- www/tmdb_posters.rb | 1 - 18 files changed, 98 insertions(+), 116 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index ea86d54..baf7747 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,6 +1,7 @@ AllCops: Exclude: - spec/*.rb + TargetRubyVersion: 2.0 Documentation: Enabled: false ParameterLists: diff --git a/examples/demo.rb b/examples/demo.rb index 2aff7d4..1b47c36 100644 --- a/examples/demo.rb +++ b/examples/demo.rb @@ -20,71 +20,58 @@ end movies = TopMovies::MovieCollection.new(file_name) -movies.render_html -# movie = movies.all[120] +# puts movies.class + +# movies.render_html +movie = movies.all[112] # puts movie.poster # puts movie.budget -# movies.take_budget -# movies.take_posters -# movies.take_translations -# puts movies.class # movies.filter(genre: 'Comedy') # movies.filter(year: 2000) # movies.filter(year: 1980..2000) # movies.sort_by(:year) -# movies.stats(:author) +# puts movies.stats(:author) # movie = movies.all.first -# movie.actors.count -# movie.actors.include?('Arnold Shwarzenegger') -# movies.first.has_genre?('Camedy') -# online = TopMovies::Netflix.new(file_name) +# puts movie.actors.count +# puts movie.actors.include?('Arnold Shwarzenegger') +# puts movies.first.has_genre?('Camedy') +online = TopMovies::Netflix.new(file_name) # puts online.by_genre.comedy # puts online.by_country.usa -# puts TopMovies::Movie.respond_to?(:uk) -# online.respond_to?(uk) -# puts online.by_country.class.methods -# puts online.methods -# puts online.by_genre.comedy -# puts online.drama # puts online.by_genre -# puts movies.class -# movie = online.filter(period: :new).first -# movie = online.filter(genre: 'Comedy', period: :classic).first -# puts movie.matches_all?( {genre: ['Comedy, Drama'], year: 1993...1998} ) -# puts movie.genre.inspect +# puts movie = online.filter(period: :new).first +# puts movie = online.filter(genre: 'Comedy', period: :classic).first +# movie.matches_all?( {genre: ['Comedy, Drama'], year: 1993...1998} ) # puts !movie.title.include?('Terminator') # p movie.genre # puts movie.year > 2003 -# puts movie.year.class -# puts online.pay(25) +online.pay(25) # online2 = TopMovies::Netflix.new(file_name) # online3 = TopMovies::Netflix.new(file_name) -# puts online1.pay(1) # puts online2.pay(10) # puts online3.pay(114) # puts TopMovies::Netflix.cash # online.pay(40) # puts online.cash -# puts online.cash # puts online.show(genre: 'Drama', period: :new) # movies = online.show do |movie| -# !movie.title.include?('Terminator') && \ -# movie.genre[0].include?('Action') && \ -# movie.year > 2003 +# !movie.title.include?('Terminator') && \ +# movie.genre[0].include?('Action') && \ +# movie.year > 2003 # end # puts movies -# online.define_filter(:new_sci_fi) do |movie| -# movie.genre[0].include?('Sci-Fi') && \ -# !movie.country.include?('UK') -# end +# online.define_filter(:new_sci_fi) do |movie| +# movie.genre[0].include?('Sci-Fi') && \ +# !movie.country.include?('UK') +# end # puts online.show(new_sci_fi: true) # online.define_filter(:not_spielberg) do |movie| -# !movie.author.include?('Steven Spielberg') +# !movie.author.include?('Steven Spielberg') # end # puts online.show(new_sci_fi: true, not_spielberg: true) # online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } # puts online.show(new_sci_fi: 2010) -# online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014).class +# online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) # puts online.show(newest_sci_fi: 2014) # puts online.show(title: 'The Tirminator') # puts online.show(new_sci_fi: true) @@ -95,10 +82,7 @@ # end # puts online.show(title: 'The Terminator') # puts online.show(new_sci_fi: true) -# puts online2.cash -# puts online3.cash # movie = online.filter(genre: 'Comedy').first -# puts online1.film_costs(title: 'The Terminator') # puts online.film_costs(title: 'The Terminator') # online.pay(25) # online.cash @@ -114,48 +98,48 @@ # online.pay(25) # online1.show(title: 'The Terminator') # puts online.balance -# theatre = TopMovies::Theatre.new -# theatre = -# TopMovies::Theatre.new do -# hall :red, title: 'Красный зал', places: 100 -# hall :blue, title: 'Синий зал', places: 50 -# hall :green, title: 'Зелёный зал (deluxe)', places: 12 +#theatre = TopMovies::Theatre.new +theatre = + TopMovies::Theatre.new do + hall :red, title: 'Красный зал', places: 100 + hall :blue, title: 'Синий зал', places: 50 + hall :green, title: 'Зелёный зал (deluxe)', places: 12 -# period '09:00'..'12:00' do -# description 'Утренний сеанс' -# filters genre: 'Comedy', year: 1900..1980 -# price 10 -# hall :red, :blue -# end + period '09:00'..'12:00' do + description 'Утренний сеанс' + filters genre: 'Comedy', year: 1900..1980 + price 10 + hall :red, :blue + end -# period '12:00'..'16:00' do -# description 'Спецпоказ' -# title 'The Terminator' -# price 50 -# hall :green -# end + period '12:00'..'16:00' do + description 'Спецпоказ' + title 'The Terminator' + price 50 + hall :green + end -# period '16:00'..'20:00' do -# description 'Вечерний сеанс' -# filters genre: %w(Action Drama), year: 2007..Time.now.year -# price 20 -# hall :red, :blue -# end + period '16:00'..'20:00' do + description 'Вечерний сеанс' + filters genre: %w(Action Drama), year: 2007..Time.now.year + price 20 + hall :red, :blue + end -# period '19:00'..'22:00' do -# description 'Вечерний сеанс для киноманов' -# filters year: 1900..1945, exclude_country: 'USA' -# price 30 -# hall :green -# end -# end + period '19:00'..'22:00' do + description 'Вечерний сеанс для киноманов' + filters year: 1900..1945, exclude_country: 'USA' + price 30 + hall :green + end + end -# theatre.period '21:00'..'23:00' do -# description 'Еще один сеанс' -# filters genre: 'Sci-Fi', year: 1900..1980 -# price 13 -# hall :red -# end +theatre.period '21:00'..'23:00' do + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red +end # puts theatre.accept_description # movie = theatre.filter(title: "The Terminator").first @@ -163,16 +147,16 @@ # puts theatre.show(period).genre # puts movie.title # puts theatre -# puts theatre.buy_ticket('10:20') -# puts theatre.buy_ticket('13:20') -# puts theatre.buy_ticket('17:20') -# puts theatre.buy_ticket('19:20', hall: :green) -# puts theatre.cash -# theatre.take('Bank') -# theatre.cash -# theatre.cash -# theatre.buy_ticket(title: 'The Maltese') +puts theatre.buy_ticket('10:20') +puts theatre.buy_ticket('13:20') +puts theatre.buy_ticket('17:20') +puts theatre.buy_ticket('19:20', hall: :green) +puts theatre.cash +theatre.take('Bank') +puts theatre.cash # theatre.cash +theatre.buy_ticket(title: 'The Maltese') +theatre.cash # puts movie.match?(:genre, ['Comedy', 'Drama']) # puts movie.match?(:year, 1993...1998) # puts theatre.cashbox_balance diff --git a/lib/top_movies.rb b/lib/top_movies.rb index a477919..da49249 100644 --- a/lib/top_movies.rb +++ b/lib/top_movies.rb @@ -12,8 +12,3 @@ require_relative 'topmovies/theatre' require_relative '../www/imdb_budgets' require_relative '../www/tmdb_posters' - -module TopMovies - VERSION = "0.1.1" - -end \ No newline at end of file diff --git a/lib/topmovies/movie.rb b/lib/topmovies/movie.rb index d691976..31acb7e 100644 --- a/lib/topmovies/movie.rb +++ b/lib/topmovies/movie.rb @@ -1,5 +1,5 @@ -require_relative '../../wwww/imdb_budgets' -require_relative '../../wwww/tmdb_posters' +require_relative '../../www/imdb_budgets' +require_relative '../../www/tmdb_posters' module TopMovies class Movie require 'virtus' @@ -81,14 +81,15 @@ def imdb_id link.scan(/tt\d{7}/).first end - def budget - file_name = "../../data/budgets/#{self.imdb_id}.yml" - take_budget_from_imdb(self.imdb_id) unless File.exist?(file_name) + def budget + Dir.chdir File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'budgets')) + file_name = "#{imdb_id}.yml" + take_budget_from_imdb(imdb_id) unless File.exist?(file_name) take_budget_from_file(file_name) end def poster - take_poster(self.imdb_id) + take_poster(imdb_id) end end end diff --git a/lib/topmovies/movie_collection.rb b/lib/topmovies/movie_collection.rb index df950e7..3fd320b 100644 --- a/lib/topmovies/movie_collection.rb +++ b/lib/topmovies/movie_collection.rb @@ -4,8 +4,8 @@ require_relative 'filter_genre' require_relative 'country_filter' require 'money' -require_relative '../../wwww/imdb_budgets' -require_relative '../../wwww/tmdb_posters' +require_relative '../../www/imdb_budgets' +require_relative '../../www/tmdb_posters' module TopMovies class MovieCollection @@ -89,7 +89,7 @@ def by_country end def render_html - template = File.open('../../wwww/pages/index.haml') + template = File.open('../../www/pages/index.haml') Haml::Engine.new(template.read).render(@collection) end end diff --git a/lib/topmovies/theatre.rb b/lib/topmovies/theatre.rb index e9dbeca..a9e887e 100644 --- a/lib/topmovies/theatre.rb +++ b/lib/topmovies/theatre.rb @@ -5,7 +5,8 @@ class Theatre < MovieCollection attr_accessor :halls, :periods def initialize(&block) - super('../../data/movies.txt') + Dir.chdir File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data')) + super('movies.txt') @halls = {} @periods = [] @blck = {} diff --git a/spec/ancient_movie_spec.rb b/spec/ancient_movie_spec.rb index 53e1a2f..f5258f5 100644 --- a/spec/ancient_movie_spec.rb +++ b/spec/ancient_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe AncientMovie do - let(:netflix) { TopMovies::Netflix.new("movies.txt") } + let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } let(:movie) { netflix.filter(period: :ancient).first } describe '#cost and #period' do diff --git a/spec/cash_box_spec.rb b/spec/cash_box_spec.rb index 3eddf1e..44041c8 100644 --- a/spec/cash_box_spec.rb +++ b/spec/cash_box_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe CashBox do - let(:netflix) { TopMovies::Netflix.new("movies.txt") { include CashBox } } + let(:netflix) { TopMovies::Netflix.new("data/movies.txt") { include CashBox } } let(:value) { Money.new(0, "UAH") } diff --git a/spec/classic_movie_spec.rb b/spec/classic_movie_spec.rb index bd7b0b0..3e144ce 100644 --- a/spec/classic_movie_spec.rb +++ b/spec/classic_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ClassicMovie do - let(:netflix) { TopMovies::Netflix.new("movies.txt") } + let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } let(:movie) { netflix.filter(period: :classic).first } describe '#cost' do diff --git a/spec/imdb_budgets_spec.rb b/spec/imdb_budgets_spec.rb index f01b2c4..2bc1ae7 100644 --- a/spec/imdb_budgets_spec.rb +++ b/spec/imdb_budgets_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ImdbBudgets do - let(:movies) { TopMovies::MovieCollection.new("movies.txt") { include ImdbBudgets } } + let(:movies) { TopMovies::MovieCollection.new('movies.txt') { include ImdbBudgets } } describe '#take_budget_from_file' do subject { movie.take_budget_from_file(file) } diff --git a/spec/modern_movie_spec.rb b/spec/modern_movie_spec.rb index 8d3232e..fd75494 100644 --- a/spec/modern_movie_spec.rb +++ b/spec/modern_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ModernMovie do - let(:netflix) { TopMovies::Netflix.new("movies.txt") } + let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } let(:movie) { netflix.filter(period: :modern).first } describe '#cost' do diff --git a/spec/movie_collection_spec.rb b/spec/movie_collection_spec.rb index 0f0a6c8..e61645e 100644 --- a/spec/movie_collection_spec.rb +++ b/spec/movie_collection_spec.rb @@ -1,7 +1,7 @@ module TopMovies describe MovieCollection do - let(:collection) { TopMovies::MovieCollection.new('movies.txt') } + let(:collection) { TopMovies::MovieCollection.new('data/movies.txt') } describe '#by_genre' do before { TopMovies::MovieCollection.send(:define_method, 'comedy') { filter(genre: 'Comedy') } } diff --git a/spec/movie_spec.rb b/spec/movie_spec.rb index a3446e9..532555c 100644 --- a/spec/movie_spec.rb +++ b/spec/movie_spec.rb @@ -36,7 +36,7 @@ module TopMovies describe '#matches_all?' do subject { movie.matches_all?(params) } - let(:netflix) { Netflix.new("movies.txt")} + let(:netflix) { Netflix.new("data/movies.txt")} let(:movie) { netflix.filter(genre: 'Comedy').first } let(:params) { {genre: 'Comedy', year: 1983...1998} } it { expect( subject ).to be_truthy } @@ -44,7 +44,7 @@ module TopMovies describe '#imdb_id' do subject { movie.imdb_id } - let(:netflix) { Netflix.new("movies.txt")} + let(:netflix) { Netflix.new("data/movies.txt")} let(:movie) { netflix.all.first } it { expect( subject ).to eq('tt0111161') } end diff --git a/spec/netflix_spec.rb b/spec/netflix_spec.rb index 7ee0498..81e6bb0 100644 --- a/spec/netflix_spec.rb +++ b/spec/netflix_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe Netflix do - let(:netflix) { TopMovies::Netflix.new("movies.txt") } + let(:netflix) { TopMovies::Netflix.new('data/movies.txt') } describe '#balance status' do subject { netflix } @@ -130,7 +130,7 @@ module TopMovies end describe '#cash' do - let(:value) {Money.new(19000, "UAH")} + let(:value) {Money.new(18500, "UAH")} it { expect( Netflix.cash ).to eq(value) } end diff --git a/spec/newmovie_spec.rb b/spec/newmovie_spec.rb index 6d5133c..14a4351 100644 --- a/spec/newmovie_spec.rb +++ b/spec/newmovie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe NewMovie do - let(:netflix) { TopMovies::Netflix.new("movies.txt") } + let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } let(:movie) { netflix.filter(period: :new).first } describe '#cost' do diff --git a/spec/tmdb_posters_spec.rb b/spec/tmdb_posters_spec.rb index b674582..7fc605f 100644 --- a/spec/tmdb_posters_spec.rb +++ b/spec/tmdb_posters_spec.rb @@ -25,7 +25,7 @@ module TopMovies end describe '#imdb_to_tmdb' do - let(:movies) { TopMovies::MovieCollection.new("movies.txt") } + let(:movies) { TopMovies::MovieCollection.new("data/movies.txt") } let(:film) { movies.all.first } let(:id_imdb) { film.link.scan(/tt\d{7}/).first } it 'when imdb_id convert to tmdb_id' do diff --git a/www/imdb_budgets.rb b/www/imdb_budgets.rb index 05d249c..8267818 100644 --- a/www/imdb_budgets.rb +++ b/www/imdb_budgets.rb @@ -3,9 +3,9 @@ require 'yaml' require 'ruby-progressbar' module ImdbBudgets - def take_budget_from_file(file_name) - YAML::load_file(File.open(file_name))[file_name[19,9]] + Dir.chdir File.expand_path( File.join( File.dirname(__FILE__), "..", "data", "budgets") ) + YAML::load_file(File.open(file_name))[file_name[0,9]] end def take_budget_from_imdb(id) @@ -15,10 +15,11 @@ def take_budget_from_imdb(id) else nil end - File.write("../data/budgets/#{id}.yml", {id => data}.to_yaml) + Dir.chdir File.expand_path( File.join( File.dirname(__FILE__), "..", "data", "budgets") ) + File.write("#{id}.yml", {id => data}.to_yaml) end def take_info Nokogiri::HTML(open(self.link)).css('div.txt-block:nth-child(11)').text.split(' ')[1] end -end \ No newline at end of file +end diff --git a/www/tmdb_posters.rb b/www/tmdb_posters.rb index d03c51b..0163e41 100644 --- a/www/tmdb_posters.rb +++ b/www/tmdb_posters.rb @@ -18,5 +18,4 @@ def imdb_to_tmdb(id_imdb) def take_poster(id_imdb) Tmdb::Movie.detail(imdb_to_tmdb(imdb_id))['poster_path'] end - end From 9f8c74acfabf35fc1429e56bf0c88210a2a817a3 Mon Sep 17 00:00:00 2001 From: devico Date: Sat, 15 Oct 2016 11:22:30 +0300 Subject: [PATCH 04/26] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80=D1=83=20=D0=B8=20=D0=BA=D0=BE=D0=B4,=20=D0=B2=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=B7=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D1=87=D0=B0=D0=BD=D0=B8=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/demo.rb | 166 - lib/top_movies.rb | 4 + .../topmovies/data}/budgets/tt0012349.yml | 0 .../topmovies/data}/budgets/tt0015864.yml | 0 .../topmovies/data}/budgets/tt0017136.yml | 0 .../topmovies/data}/budgets/tt0017925.yml | 0 .../topmovies/data}/budgets/tt0021749.yml | 0 .../topmovies/data}/budgets/tt0022100.yml | 0 .../topmovies/data}/budgets/tt0025316.yml | 0 .../topmovies/data}/budgets/tt0027977.yml | 0 .../topmovies/data}/budgets/tt0031381.yml | 0 .../topmovies/data}/budgets/tt0031679.yml | 0 .../topmovies/data}/budgets/tt0032138.yml | 0 .../topmovies/data}/budgets/tt0032551.yml | 0 .../topmovies/data}/budgets/tt0032553.yml | 0 .../topmovies/data}/budgets/tt0032976.yml | 0 .../topmovies/data}/budgets/tt0033467.yml | 0 .../topmovies/data}/budgets/tt0033870.yml | 0 .../topmovies/data}/budgets/tt0034583.yml | 0 .../topmovies/data}/budgets/tt0036775.yml | 0 .../topmovies/data}/budgets/tt0036868.yml | 0 .../topmovies/data}/budgets/tt0037008.yml | 0 .../topmovies/data}/budgets/tt0038355.yml | 0 .../topmovies/data}/budgets/tt0038650.yml | 0 .../topmovies/data}/budgets/tt0038787.yml | 0 .../topmovies/data}/budgets/tt0040522.yml | 0 .../topmovies/data}/budgets/tt0040897.yml | 0 .../topmovies/data}/budgets/tt0041959.yml | 0 .../topmovies/data}/budgets/tt0042192.yml | 0 .../topmovies/data}/budgets/tt0042876.yml | 0 .../topmovies/data}/budgets/tt0043014.yml | 0 .../topmovies/data}/budgets/tt0044079.yml | 0 .../topmovies/data}/budgets/tt0044706.yml | 0 .../topmovies/data}/budgets/tt0044741.yml | 0 .../topmovies/data}/budgets/tt0045152.yml | 0 .../topmovies/data}/budgets/tt0046250.yml | 0 .../topmovies/data}/budgets/tt0046268.yml | 0 .../topmovies/data}/budgets/tt0046911.yml | 0 .../topmovies/data}/budgets/tt0046912.yml | 0 .../topmovies/data}/budgets/tt0047296.yml | 0 .../topmovies/data}/budgets/tt0047396.yml | 0 .../topmovies/data}/budgets/tt0047478.yml | 0 .../topmovies/data}/budgets/tt0047528.yml | 0 .../topmovies/data}/budgets/tt0048424.yml | 0 .../topmovies/data}/budgets/tt0049406.yml | 0 .../topmovies/data}/budgets/tt0050083.yml | 0 .../topmovies/data}/budgets/tt0050212.yml | 0 .../topmovies/data}/budgets/tt0050613.yml | 0 .../topmovies/data}/budgets/tt0050825.yml | 0 .../topmovies/data}/budgets/tt0050976.yml | 0 .../topmovies/data}/budgets/tt0050986.yml | 0 .../topmovies/data}/budgets/tt0051201.yml | 0 .../topmovies/data}/budgets/tt0052311.yml | 0 .../topmovies/data}/budgets/tt0052357.yml | 0 .../topmovies/data}/budgets/tt0052561.yml | 0 .../topmovies/data}/budgets/tt0052618.yml | 0 .../topmovies/data}/budgets/tt0053125.yml | 0 .../topmovies/data}/budgets/tt0053198.yml | 0 .../topmovies/data}/budgets/tt0053291.yml | 0 .../topmovies/data}/budgets/tt0053604.yml | 0 .../topmovies/data}/budgets/tt0054215.yml | 0 .../topmovies/data}/budgets/tt0054997.yml | 0 .../topmovies/data}/budgets/tt0055031.yml | 0 .../topmovies/data}/budgets/tt0055630.yml | 0 .../topmovies/data}/budgets/tt0056172.yml | 0 .../topmovies/data}/budgets/tt0056592.yml | 0 .../topmovies/data}/budgets/tt0056801.yml | 0 .../topmovies/data}/budgets/tt0057012.yml | 0 .../topmovies/data}/budgets/tt0057115.yml | 0 .../topmovies/data}/budgets/tt0058461.yml | 0 .../topmovies/data}/budgets/tt0058946.yml | 0 .../topmovies/data}/budgets/tt0059578.yml | 0 .../topmovies/data}/budgets/tt0060196.yml | 0 .../topmovies/data}/budgets/tt0060827.yml | 0 .../topmovies/data}/budgets/tt0061184.yml | 0 .../topmovies/data}/budgets/tt0061512.yml | 0 .../topmovies/data}/budgets/tt0061722.yml | 0 .../topmovies/data}/budgets/tt0062622.yml | 0 .../topmovies/data}/budgets/tt0064115.yml | 0 .../topmovies/data}/budgets/tt0064116.yml | 0 .../topmovies/data}/budgets/tt0066921.yml | 0 .../topmovies/data}/budgets/tt0068646.yml | 0 .../topmovies/data}/budgets/tt0070511.yml | 0 .../topmovies/data}/budgets/tt0070735.yml | 0 .../topmovies/data}/budgets/tt0071315.yml | 0 .../topmovies/data}/budgets/tt0071562.yml | 0 .../topmovies/data}/budgets/tt0071853.yml | 0 .../topmovies/data}/budgets/tt0072684.yml | 0 .../topmovies/data}/budgets/tt0072890.yml | 0 .../topmovies/data}/budgets/tt0073195.yml | 0 .../topmovies/data}/budgets/tt0073486.yml | 0 .../topmovies/data}/budgets/tt0074958.yml | 0 .../topmovies/data}/budgets/tt0075148.yml | 0 .../topmovies/data}/budgets/tt0075314.yml | 0 .../topmovies/data}/budgets/tt0075686.yml | 0 .../topmovies/data}/budgets/tt0076759.yml | 0 .../topmovies/data}/budgets/tt0077416.yml | 0 .../topmovies/data}/budgets/tt0078748.yml | 0 .../topmovies/data}/budgets/tt0078788.yml | 0 .../topmovies/data}/budgets/tt0079470.yml | 0 .../topmovies/data}/budgets/tt0079944.yml | 0 .../topmovies/data}/budgets/tt0080678.yml | 0 .../topmovies/data}/budgets/tt0080684.yml | 0 .../topmovies/data}/budgets/tt0081398.yml | 0 .../topmovies/data}/budgets/tt0081505.yml | 0 .../topmovies/data}/budgets/tt0082096.yml | 0 .../topmovies/data}/budgets/tt0082971.yml | 0 .../topmovies/data}/budgets/tt0083658.yml | 0 .../topmovies/data}/budgets/tt0083922.yml | 0 .../topmovies/data}/budgets/tt0083987.yml | 0 .../topmovies/data}/budgets/tt0084787.yml | 0 .../topmovies/data}/budgets/tt0086190.yml | 0 .../topmovies/data}/budgets/tt0086250.yml | 0 .../topmovies/data}/budgets/tt0086879.yml | 0 .../topmovies/data}/budgets/tt0087544.yml | 0 .../topmovies/data}/budgets/tt0087843.yml | 0 .../topmovies/data}/budgets/tt0088247.yml | 0 .../topmovies/data}/budgets/tt0088763.yml | 0 .../topmovies/data}/budgets/tt0089881.yml | 0 .../topmovies/data}/budgets/tt0090605.yml | 0 .../topmovies/data}/budgets/tt0091763.yml | 0 .../topmovies/data}/budgets/tt0092005.yml | 0 .../topmovies/data}/budgets/tt0092067.yml | 0 .../topmovies/data}/budgets/tt0093058.yml | 0 .../topmovies/data}/budgets/tt0093779.yml | 0 .../topmovies/data}/budgets/tt0094625.yml | 0 .../topmovies/data}/budgets/tt0095016.yml | 0 .../topmovies/data}/budgets/tt0095327.yml | 0 .../topmovies/data}/budgets/tt0095765.yml | 0 .../topmovies/data}/budgets/tt0096283.yml | 0 .../topmovies/data}/budgets/tt0097576.yml | 0 .../topmovies/data}/budgets/tt0099685.yml | 0 .../topmovies/data}/budgets/tt0101414.yml | 0 .../topmovies/data}/budgets/tt0102926.yml | 0 .../topmovies/data}/budgets/tt0103064.yml | 0 .../topmovies/data}/budgets/tt0105236.yml | 0 .../topmovies/data}/budgets/tt0105695.yml | 0 .../topmovies/data}/budgets/tt0107048.yml | 0 .../topmovies/data}/budgets/tt0107207.yml | 0 .../topmovies/data}/budgets/tt0107290.yml | 0 .../topmovies/data}/budgets/tt0108052.yml | 0 .../topmovies/data}/budgets/tt0109830.yml | 0 .../topmovies/data}/budgets/tt0110357.yml | 0 .../topmovies/data}/budgets/tt0110413.yml | 0 .../topmovies/data}/budgets/tt0110912.yml | 0 .../topmovies/data}/budgets/tt0111161.yml | 0 .../topmovies/data}/budgets/tt0112471.yml | 0 .../topmovies/data}/budgets/tt0112573.yml | 0 .../topmovies/data}/budgets/tt0112641.yml | 0 .../topmovies/data}/budgets/tt0113247.yml | 0 .../topmovies/data}/budgets/tt0113277.yml | 0 .../topmovies/data}/budgets/tt0114369.yml | 0 .../topmovies/data}/budgets/tt0114709.yml | 0 .../topmovies/data}/budgets/tt0114746.yml | 0 .../topmovies/data}/budgets/tt0114787.yml | 0 .../topmovies/data}/budgets/tt0114814.yml | 0 .../topmovies/data}/budgets/tt0116282.yml | 0 .../topmovies/data}/budgets/tt0117951.yml | 0 .../topmovies/data}/budgets/tt0118715.yml | 0 .../topmovies/data}/budgets/tt0118799.yml | 0 .../topmovies/data}/budgets/tt0119217.yml | 0 .../topmovies/data}/budgets/tt0119488.yml | 0 .../topmovies/data}/budgets/tt0119698.yml | 0 .../topmovies/data}/budgets/tt0120382.yml | 0 .../topmovies/data}/budgets/tt0120586.yml | 0 .../topmovies/data}/budgets/tt0120689.yml | 0 .../topmovies/data}/budgets/tt0120735.yml | 0 .../topmovies/data}/budgets/tt0120737.yml | 0 .../topmovies/data}/budgets/tt0120815.yml | 0 .../topmovies/data}/budgets/tt0133093.yml | 0 .../topmovies/data}/budgets/tt0137523.yml | 0 .../topmovies/data}/budgets/tt0167260.yml | 0 .../topmovies/data}/budgets/tt0167261.yml | 0 .../topmovies/data}/budgets/tt0167404.yml | 0 .../topmovies/data}/budgets/tt0169547.yml | 0 .../topmovies/data}/budgets/tt0172495.yml | 0 .../topmovies/data}/budgets/tt0180093.yml | 0 .../topmovies/data}/budgets/tt0198781.yml | 0 .../topmovies/data}/budgets/tt0208092.yml | 0 .../topmovies/data}/budgets/tt0209144.yml | 0 .../topmovies/data}/budgets/tt0211915.yml | 0 .../topmovies/data}/budgets/tt0245429.yml | 0 .../topmovies/data}/budgets/tt0245712.yml | 0 .../topmovies/data}/budgets/tt0246578.yml | 0 .../topmovies/data}/budgets/tt0253474.yml | 0 .../topmovies/data}/budgets/tt0266543.yml | 0 .../topmovies/data}/budgets/tt0266697.yml | 0 .../topmovies/data}/budgets/tt0268978.yml | 0 .../topmovies/data}/budgets/tt0317248.yml | 0 .../topmovies/data}/budgets/tt0325980.yml | 0 .../topmovies/data}/budgets/tt0338013.yml | 0 .../topmovies/data}/budgets/tt0338564.yml | 0 .../topmovies/data}/budgets/tt0347149.yml | 0 .../topmovies/data}/budgets/tt0353969.yml | 0 .../topmovies/data}/budgets/tt0361748.yml | 0 .../topmovies/data}/budgets/tt0363163.yml | 0 .../topmovies/data}/budgets/tt0364569.yml | 0 .../topmovies/data}/budgets/tt0372784.yml | 0 .../topmovies/data}/budgets/tt0374546.yml | 0 .../topmovies/data}/budgets/tt0381681.yml | 0 .../topmovies/data}/budgets/tt0395169.yml | 0 .../topmovies/data}/budgets/tt0401792.yml | 0 .../topmovies/data}/budgets/tt0405094.yml | 0 .../topmovies/data}/budgets/tt0405159.yml | 0 .../topmovies/data}/budgets/tt0407887.yml | 0 .../topmovies/data}/budgets/tt0434409.yml | 0 .../topmovies/data}/budgets/tt0435761.yml | 0 .../topmovies/data}/budgets/tt0440963.yml | 0 .../topmovies/data}/budgets/tt0457430.yml | 0 .../topmovies/data}/budgets/tt0468569.yml | 0 .../topmovies/data}/budgets/tt0469494.yml | 0 .../topmovies/data}/budgets/tt0477348.yml | 0 .../topmovies/data}/budgets/tt0482571.yml | 0 .../topmovies/data}/budgets/tt0758758.yml | 0 .../topmovies/data}/budgets/tt0816692.yml | 0 .../topmovies/data}/budgets/tt0848228.yml | 0 .../topmovies/data}/budgets/tt0892769.yml | 0 .../topmovies/data}/budgets/tt0910970.yml | 0 .../topmovies/data}/budgets/tt0978762.yml | 0 .../topmovies/data}/budgets/tt0993846.yml | 0 .../topmovies/data}/budgets/tt1028532.yml | 0 .../topmovies/data}/budgets/tt1049413.yml | 0 .../topmovies/data}/budgets/tt1069238.yml | 0 .../topmovies/data}/budgets/tt1130884.yml | 0 .../topmovies/data}/budgets/tt1187043.yml | 0 .../topmovies/data}/budgets/tt1201607.yml | 0 .../topmovies/data}/budgets/tt1205489.yml | 0 .../topmovies/data}/budgets/tt1220719.yml | 0 .../topmovies/data}/budgets/tt1255953.yml | 0 .../topmovies/data}/budgets/tt1291584.yml | 0 .../topmovies/data}/budgets/tt1305806.yml | 0 .../topmovies/data}/budgets/tt1345836.yml | 0 .../topmovies/data}/budgets/tt1375666.yml | 0 .../topmovies/data}/budgets/tt1392190.yml | 0 .../topmovies/data}/budgets/tt1392214.yml | 0 .../topmovies/data}/budgets/tt1454029.yml | 0 .../topmovies/data}/budgets/tt1504320.yml | 0 .../topmovies/data}/budgets/tt1555149.yml | 0 .../topmovies/data}/budgets/tt1675434.yml | 0 .../topmovies/data}/budgets/tt1832382.yml | 0 .../topmovies/data}/budgets/tt1853728.yml | 0 .../topmovies/data}/budgets/tt1877832.yml | 0 .../topmovies/data}/budgets/tt1979320.yml | 0 .../topmovies/data}/budgets/tt2015381.yml | 0 .../topmovies/data}/budgets/tt2024544.yml | 0 .../topmovies/data}/budgets/tt2084970.yml | 0 .../topmovies/data}/budgets/tt2096673.yml | 0 .../topmovies/data}/budgets/tt2106476.yml | 0 .../topmovies/data}/budgets/tt2267998.yml | 0 .../topmovies/data}/budgets/tt2278388.yml | 0 .../topmovies/data}/budgets/tt2582802.yml | 0 .../topmovies/data}/budgets/tt3011894.yml | 0 {data => lib/topmovies/data}/movies.txt | 0 .../examples/demo_budgets_posters.rb | 25 + .../examples/demo_collection_filters.rb | 40 + .../examples/demo_movies_render_html.rb | 23 + .../examples/demo_netflix_filters.rb | 58 + .../examples/demo_netflix_methods_by.rb | 22 + .../examples/demo_theatre_buy_ticket.rb | 70 + .../examples/demo_theatre_periods.rb | 61 + {www => lib/topmovies}/imdb_budgets.rb | 6 +- lib/topmovies/movie.rb | 7 +- lib/topmovies/movie_collection.rb | 8 +- {www => lib/topmovies}/pages/index.haml | 0 lib/topmovies/theatre.rb | 5 +- {www => lib/topmovies}/tmdb_posters.rb | 0 spec/imdb_budgets_spec.rb | 2 +- spec/index.haml | 8 - spec/netflix_spec.rb | 2 +- www/pages/index.html | 17317 ---------------- 270 files changed, 318 insertions(+), 17506 deletions(-) delete mode 100644 examples/demo.rb rename {data => lib/topmovies/data}/budgets/tt0012349.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0015864.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0017136.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0017925.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0021749.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0022100.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0025316.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0027977.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0031381.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0031679.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0032138.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0032551.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0032553.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0032976.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0033467.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0033870.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0034583.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0036775.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0036868.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0037008.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0038355.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0038650.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0038787.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0040522.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0040897.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0041959.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0042192.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0042876.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0043014.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0044079.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0044706.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0044741.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0045152.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0046250.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0046268.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0046911.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0046912.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0047296.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0047396.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0047478.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0047528.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0048424.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0049406.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0050083.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0050212.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0050613.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0050825.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0050976.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0050986.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0051201.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0052311.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0052357.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0052561.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0052618.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0053125.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0053198.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0053291.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0053604.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0054215.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0054997.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0055031.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0055630.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0056172.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0056592.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0056801.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0057012.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0057115.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0058461.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0058946.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0059578.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0060196.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0060827.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0061184.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0061512.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0061722.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0062622.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0064115.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0064116.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0066921.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0068646.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0070511.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0070735.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0071315.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0071562.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0071853.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0072684.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0072890.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0073195.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0073486.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0074958.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0075148.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0075314.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0075686.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0076759.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0077416.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0078748.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0078788.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0079470.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0079944.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0080678.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0080684.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0081398.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0081505.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0082096.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0082971.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0083658.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0083922.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0083987.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0084787.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0086190.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0086250.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0086879.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0087544.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0087843.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0088247.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0088763.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0089881.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0090605.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0091763.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0092005.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0092067.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0093058.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0093779.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0094625.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0095016.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0095327.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0095765.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0096283.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0097576.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0099685.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0101414.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0102926.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0103064.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0105236.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0105695.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0107048.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0107207.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0107290.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0108052.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0109830.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0110357.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0110413.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0110912.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0111161.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0112471.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0112573.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0112641.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0113247.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0113277.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0114369.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0114709.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0114746.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0114787.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0114814.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0116282.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0117951.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0118715.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0118799.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0119217.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0119488.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0119698.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0120382.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0120586.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0120689.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0120735.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0120737.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0120815.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0133093.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0137523.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0167260.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0167261.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0167404.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0169547.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0172495.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0180093.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0198781.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0208092.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0209144.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0211915.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0245429.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0245712.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0246578.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0253474.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0266543.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0266697.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0268978.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0317248.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0325980.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0338013.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0338564.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0347149.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0353969.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0361748.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0363163.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0364569.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0372784.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0374546.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0381681.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0395169.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0401792.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0405094.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0405159.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0407887.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0434409.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0435761.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0440963.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0457430.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0468569.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0469494.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0477348.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0482571.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0758758.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0816692.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0848228.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0892769.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0910970.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0978762.yml (100%) rename {data => lib/topmovies/data}/budgets/tt0993846.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1028532.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1049413.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1069238.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1130884.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1187043.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1201607.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1205489.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1220719.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1255953.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1291584.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1305806.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1345836.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1375666.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1392190.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1392214.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1454029.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1504320.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1555149.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1675434.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1832382.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1853728.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1877832.yml (100%) rename {data => lib/topmovies/data}/budgets/tt1979320.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2015381.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2024544.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2084970.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2096673.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2106476.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2267998.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2278388.yml (100%) rename {data => lib/topmovies/data}/budgets/tt2582802.yml (100%) rename {data => lib/topmovies/data}/budgets/tt3011894.yml (100%) rename {data => lib/topmovies/data}/movies.txt (100%) create mode 100644 lib/topmovies/examples/demo_budgets_posters.rb create mode 100644 lib/topmovies/examples/demo_collection_filters.rb create mode 100644 lib/topmovies/examples/demo_movies_render_html.rb create mode 100644 lib/topmovies/examples/demo_netflix_filters.rb create mode 100644 lib/topmovies/examples/demo_netflix_methods_by.rb create mode 100644 lib/topmovies/examples/demo_theatre_buy_ticket.rb create mode 100644 lib/topmovies/examples/demo_theatre_periods.rb rename {www => lib/topmovies}/imdb_budgets.rb (59%) rename {www => lib/topmovies}/pages/index.haml (100%) rename {www => lib/topmovies}/tmdb_posters.rb (100%) delete mode 100644 spec/index.haml delete mode 100644 www/pages/index.html diff --git a/examples/demo.rb b/examples/demo.rb deleted file mode 100644 index 1b47c36..0000000 --- a/examples/demo.rb +++ /dev/null @@ -1,166 +0,0 @@ -require_relative '../lib/topmovies/movie' -require_relative '../lib/topmovies/ancient_movie' -require_relative '../lib/topmovies/classic_movie' -require_relative '../lib/topmovies/modern_movie' -require_relative '../lib/topmovies/new_movie' -require_relative '../lib/topmovies/movie_collection' -require_relative '../lib/topmovies/filter_genre' -require_relative '../lib/topmovies/country_filter' -require_relative '../lib/topmovies/netflix' -require_relative '../lib/topmovies/theatre' -require 'date' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -movies = TopMovies::MovieCollection.new(file_name) -# puts movies.class - -# movies.render_html -movie = movies.all[112] -# puts movie.poster -# puts movie.budget -# movies.filter(genre: 'Comedy') -# movies.filter(year: 2000) -# movies.filter(year: 1980..2000) -# movies.sort_by(:year) -# puts movies.stats(:author) -# movie = movies.all.first -# puts movie.actors.count -# puts movie.actors.include?('Arnold Shwarzenegger') -# puts movies.first.has_genre?('Camedy') -online = TopMovies::Netflix.new(file_name) -# puts online.by_genre.comedy -# puts online.by_country.usa -# puts online.by_genre -# puts movie = online.filter(period: :new).first -# puts movie = online.filter(genre: 'Comedy', period: :classic).first -# movie.matches_all?( {genre: ['Comedy, Drama'], year: 1993...1998} ) -# puts !movie.title.include?('Terminator') -# p movie.genre -# puts movie.year > 2003 -online.pay(25) -# online2 = TopMovies::Netflix.new(file_name) -# online3 = TopMovies::Netflix.new(file_name) -# puts online2.pay(10) -# puts online3.pay(114) -# puts TopMovies::Netflix.cash -# online.pay(40) -# puts online.cash -# puts online.show(genre: 'Drama', period: :new) -# movies = online.show do |movie| -# !movie.title.include?('Terminator') && \ -# movie.genre[0].include?('Action') && \ -# movie.year > 2003 -# end -# puts movies -# online.define_filter(:new_sci_fi) do |movie| -# movie.genre[0].include?('Sci-Fi') && \ -# !movie.country.include?('UK') -# end -# puts online.show(new_sci_fi: true) -# online.define_filter(:not_spielberg) do |movie| -# !movie.author.include?('Steven Spielberg') -# end -# puts online.show(new_sci_fi: true, not_spielberg: true) -# online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } -# puts online.show(new_sci_fi: 2010) -# online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) -# puts online.show(newest_sci_fi: 2014) -# puts online.show(title: 'The Tirminator') -# puts online.show(new_sci_fi: true) -# online.define_filter(:country) do |movie| -# movie.genre.include?('Sci-Fi') && \ -# !movie.author.include?('Steven Spielberg') && \ -# !movie.country.include?('UK') -# end -# puts online.show(title: 'The Terminator') -# puts online.show(new_sci_fi: true) -# movie = online.filter(genre: 'Comedy').first -# puts online.film_costs(title: 'The Terminator') -# online.pay(25) -# online.cash -# online.pay(25) -# online.cash -# puts online1.show(genr/e: 'Comedy', period: :classic) -# movie.matches_all?(genre: %w(Comedy Adventure)) -# online.pay(25) -# puts online.balance -# puts online.show(genre: 'Comedy', period: :modern) -# puts online.cash -# online.pay(0) -# online.pay(25) -# online1.show(title: 'The Terminator') -# puts online.balance -#theatre = TopMovies::Theatre.new -theatre = - TopMovies::Theatre.new do - hall :red, title: 'Красный зал', places: 100 - hall :blue, title: 'Синий зал', places: 50 - hall :green, title: 'Зелёный зал (deluxe)', places: 12 - - period '09:00'..'12:00' do - description 'Утренний сеанс' - filters genre: 'Comedy', year: 1900..1980 - price 10 - hall :red, :blue - end - - period '12:00'..'16:00' do - description 'Спецпоказ' - title 'The Terminator' - price 50 - hall :green - end - - period '16:00'..'20:00' do - description 'Вечерний сеанс' - filters genre: %w(Action Drama), year: 2007..Time.now.year - price 20 - hall :red, :blue - end - - period '19:00'..'22:00' do - description 'Вечерний сеанс для киноманов' - filters year: 1900..1945, exclude_country: 'USA' - price 30 - hall :green - end - end - -theatre.period '21:00'..'23:00' do - description 'Еще один сеанс' - filters genre: 'Sci-Fi', year: 1900..1980 - price 13 - hall :red -end - -# puts theatre.accept_description -# movie = theatre.filter(title: "The Terminator").first -# puts theatre.time_to_show('15:20') -# puts theatre.show(period).genre -# puts movie.title -# puts theatre -puts theatre.buy_ticket('10:20') -puts theatre.buy_ticket('13:20') -puts theatre.buy_ticket('17:20') -puts theatre.buy_ticket('19:20', hall: :green) -puts theatre.cash -theatre.take('Bank') -puts theatre.cash -# theatre.cash -theatre.buy_ticket(title: 'The Maltese') -theatre.cash -# puts movie.match?(:genre, ['Comedy', 'Drama']) -# puts movie.match?(:year, 1993...1998) -# puts theatre.cashbox_balance -# theatre.buy_ticket('13:20') -# puts theatre.cashbox_balance -# puts theatre.when?(title: 'Vertigo') -# puts theatre.filters_to_hash({ genre: ['Comedy', 'Adventure']}) diff --git a/lib/top_movies.rb b/lib/top_movies.rb index da49249..5b1ee3c 100644 --- a/lib/top_movies.rb +++ b/lib/top_movies.rb @@ -12,3 +12,7 @@ require_relative 'topmovies/theatre' require_relative '../www/imdb_budgets' require_relative '../www/tmdb_posters' + +module TopMovies + VERSION = '0.1.0' +end diff --git a/data/budgets/tt0012349.yml b/lib/topmovies/data/budgets/tt0012349.yml similarity index 100% rename from data/budgets/tt0012349.yml rename to lib/topmovies/data/budgets/tt0012349.yml diff --git a/data/budgets/tt0015864.yml b/lib/topmovies/data/budgets/tt0015864.yml similarity index 100% rename from data/budgets/tt0015864.yml rename to lib/topmovies/data/budgets/tt0015864.yml diff --git a/data/budgets/tt0017136.yml b/lib/topmovies/data/budgets/tt0017136.yml similarity index 100% rename from data/budgets/tt0017136.yml rename to lib/topmovies/data/budgets/tt0017136.yml diff --git a/data/budgets/tt0017925.yml b/lib/topmovies/data/budgets/tt0017925.yml similarity index 100% rename from data/budgets/tt0017925.yml rename to lib/topmovies/data/budgets/tt0017925.yml diff --git a/data/budgets/tt0021749.yml b/lib/topmovies/data/budgets/tt0021749.yml similarity index 100% rename from data/budgets/tt0021749.yml rename to lib/topmovies/data/budgets/tt0021749.yml diff --git a/data/budgets/tt0022100.yml b/lib/topmovies/data/budgets/tt0022100.yml similarity index 100% rename from data/budgets/tt0022100.yml rename to lib/topmovies/data/budgets/tt0022100.yml diff --git a/data/budgets/tt0025316.yml b/lib/topmovies/data/budgets/tt0025316.yml similarity index 100% rename from data/budgets/tt0025316.yml rename to lib/topmovies/data/budgets/tt0025316.yml diff --git a/data/budgets/tt0027977.yml b/lib/topmovies/data/budgets/tt0027977.yml similarity index 100% rename from data/budgets/tt0027977.yml rename to lib/topmovies/data/budgets/tt0027977.yml diff --git a/data/budgets/tt0031381.yml b/lib/topmovies/data/budgets/tt0031381.yml similarity index 100% rename from data/budgets/tt0031381.yml rename to lib/topmovies/data/budgets/tt0031381.yml diff --git a/data/budgets/tt0031679.yml b/lib/topmovies/data/budgets/tt0031679.yml similarity index 100% rename from data/budgets/tt0031679.yml rename to lib/topmovies/data/budgets/tt0031679.yml diff --git a/data/budgets/tt0032138.yml b/lib/topmovies/data/budgets/tt0032138.yml similarity index 100% rename from data/budgets/tt0032138.yml rename to lib/topmovies/data/budgets/tt0032138.yml diff --git a/data/budgets/tt0032551.yml b/lib/topmovies/data/budgets/tt0032551.yml similarity index 100% rename from data/budgets/tt0032551.yml rename to lib/topmovies/data/budgets/tt0032551.yml diff --git a/data/budgets/tt0032553.yml b/lib/topmovies/data/budgets/tt0032553.yml similarity index 100% rename from data/budgets/tt0032553.yml rename to lib/topmovies/data/budgets/tt0032553.yml diff --git a/data/budgets/tt0032976.yml b/lib/topmovies/data/budgets/tt0032976.yml similarity index 100% rename from data/budgets/tt0032976.yml rename to lib/topmovies/data/budgets/tt0032976.yml diff --git a/data/budgets/tt0033467.yml b/lib/topmovies/data/budgets/tt0033467.yml similarity index 100% rename from data/budgets/tt0033467.yml rename to lib/topmovies/data/budgets/tt0033467.yml diff --git a/data/budgets/tt0033870.yml b/lib/topmovies/data/budgets/tt0033870.yml similarity index 100% rename from data/budgets/tt0033870.yml rename to lib/topmovies/data/budgets/tt0033870.yml diff --git a/data/budgets/tt0034583.yml b/lib/topmovies/data/budgets/tt0034583.yml similarity index 100% rename from data/budgets/tt0034583.yml rename to lib/topmovies/data/budgets/tt0034583.yml diff --git a/data/budgets/tt0036775.yml b/lib/topmovies/data/budgets/tt0036775.yml similarity index 100% rename from data/budgets/tt0036775.yml rename to lib/topmovies/data/budgets/tt0036775.yml diff --git a/data/budgets/tt0036868.yml b/lib/topmovies/data/budgets/tt0036868.yml similarity index 100% rename from data/budgets/tt0036868.yml rename to lib/topmovies/data/budgets/tt0036868.yml diff --git a/data/budgets/tt0037008.yml b/lib/topmovies/data/budgets/tt0037008.yml similarity index 100% rename from data/budgets/tt0037008.yml rename to lib/topmovies/data/budgets/tt0037008.yml diff --git a/data/budgets/tt0038355.yml b/lib/topmovies/data/budgets/tt0038355.yml similarity index 100% rename from data/budgets/tt0038355.yml rename to lib/topmovies/data/budgets/tt0038355.yml diff --git a/data/budgets/tt0038650.yml b/lib/topmovies/data/budgets/tt0038650.yml similarity index 100% rename from data/budgets/tt0038650.yml rename to lib/topmovies/data/budgets/tt0038650.yml diff --git a/data/budgets/tt0038787.yml b/lib/topmovies/data/budgets/tt0038787.yml similarity index 100% rename from data/budgets/tt0038787.yml rename to lib/topmovies/data/budgets/tt0038787.yml diff --git a/data/budgets/tt0040522.yml b/lib/topmovies/data/budgets/tt0040522.yml similarity index 100% rename from data/budgets/tt0040522.yml rename to lib/topmovies/data/budgets/tt0040522.yml diff --git a/data/budgets/tt0040897.yml b/lib/topmovies/data/budgets/tt0040897.yml similarity index 100% rename from data/budgets/tt0040897.yml rename to lib/topmovies/data/budgets/tt0040897.yml diff --git a/data/budgets/tt0041959.yml b/lib/topmovies/data/budgets/tt0041959.yml similarity index 100% rename from data/budgets/tt0041959.yml rename to lib/topmovies/data/budgets/tt0041959.yml diff --git a/data/budgets/tt0042192.yml b/lib/topmovies/data/budgets/tt0042192.yml similarity index 100% rename from data/budgets/tt0042192.yml rename to lib/topmovies/data/budgets/tt0042192.yml diff --git a/data/budgets/tt0042876.yml b/lib/topmovies/data/budgets/tt0042876.yml similarity index 100% rename from data/budgets/tt0042876.yml rename to lib/topmovies/data/budgets/tt0042876.yml diff --git a/data/budgets/tt0043014.yml b/lib/topmovies/data/budgets/tt0043014.yml similarity index 100% rename from data/budgets/tt0043014.yml rename to lib/topmovies/data/budgets/tt0043014.yml diff --git a/data/budgets/tt0044079.yml b/lib/topmovies/data/budgets/tt0044079.yml similarity index 100% rename from data/budgets/tt0044079.yml rename to lib/topmovies/data/budgets/tt0044079.yml diff --git a/data/budgets/tt0044706.yml b/lib/topmovies/data/budgets/tt0044706.yml similarity index 100% rename from data/budgets/tt0044706.yml rename to lib/topmovies/data/budgets/tt0044706.yml diff --git a/data/budgets/tt0044741.yml b/lib/topmovies/data/budgets/tt0044741.yml similarity index 100% rename from data/budgets/tt0044741.yml rename to lib/topmovies/data/budgets/tt0044741.yml diff --git a/data/budgets/tt0045152.yml b/lib/topmovies/data/budgets/tt0045152.yml similarity index 100% rename from data/budgets/tt0045152.yml rename to lib/topmovies/data/budgets/tt0045152.yml diff --git a/data/budgets/tt0046250.yml b/lib/topmovies/data/budgets/tt0046250.yml similarity index 100% rename from data/budgets/tt0046250.yml rename to lib/topmovies/data/budgets/tt0046250.yml diff --git a/data/budgets/tt0046268.yml b/lib/topmovies/data/budgets/tt0046268.yml similarity index 100% rename from data/budgets/tt0046268.yml rename to lib/topmovies/data/budgets/tt0046268.yml diff --git a/data/budgets/tt0046911.yml b/lib/topmovies/data/budgets/tt0046911.yml similarity index 100% rename from data/budgets/tt0046911.yml rename to lib/topmovies/data/budgets/tt0046911.yml diff --git a/data/budgets/tt0046912.yml b/lib/topmovies/data/budgets/tt0046912.yml similarity index 100% rename from data/budgets/tt0046912.yml rename to lib/topmovies/data/budgets/tt0046912.yml diff --git a/data/budgets/tt0047296.yml b/lib/topmovies/data/budgets/tt0047296.yml similarity index 100% rename from data/budgets/tt0047296.yml rename to lib/topmovies/data/budgets/tt0047296.yml diff --git a/data/budgets/tt0047396.yml b/lib/topmovies/data/budgets/tt0047396.yml similarity index 100% rename from data/budgets/tt0047396.yml rename to lib/topmovies/data/budgets/tt0047396.yml diff --git a/data/budgets/tt0047478.yml b/lib/topmovies/data/budgets/tt0047478.yml similarity index 100% rename from data/budgets/tt0047478.yml rename to lib/topmovies/data/budgets/tt0047478.yml diff --git a/data/budgets/tt0047528.yml b/lib/topmovies/data/budgets/tt0047528.yml similarity index 100% rename from data/budgets/tt0047528.yml rename to lib/topmovies/data/budgets/tt0047528.yml diff --git a/data/budgets/tt0048424.yml b/lib/topmovies/data/budgets/tt0048424.yml similarity index 100% rename from data/budgets/tt0048424.yml rename to lib/topmovies/data/budgets/tt0048424.yml diff --git a/data/budgets/tt0049406.yml b/lib/topmovies/data/budgets/tt0049406.yml similarity index 100% rename from data/budgets/tt0049406.yml rename to lib/topmovies/data/budgets/tt0049406.yml diff --git a/data/budgets/tt0050083.yml b/lib/topmovies/data/budgets/tt0050083.yml similarity index 100% rename from data/budgets/tt0050083.yml rename to lib/topmovies/data/budgets/tt0050083.yml diff --git a/data/budgets/tt0050212.yml b/lib/topmovies/data/budgets/tt0050212.yml similarity index 100% rename from data/budgets/tt0050212.yml rename to lib/topmovies/data/budgets/tt0050212.yml diff --git a/data/budgets/tt0050613.yml b/lib/topmovies/data/budgets/tt0050613.yml similarity index 100% rename from data/budgets/tt0050613.yml rename to lib/topmovies/data/budgets/tt0050613.yml diff --git a/data/budgets/tt0050825.yml b/lib/topmovies/data/budgets/tt0050825.yml similarity index 100% rename from data/budgets/tt0050825.yml rename to lib/topmovies/data/budgets/tt0050825.yml diff --git a/data/budgets/tt0050976.yml b/lib/topmovies/data/budgets/tt0050976.yml similarity index 100% rename from data/budgets/tt0050976.yml rename to lib/topmovies/data/budgets/tt0050976.yml diff --git a/data/budgets/tt0050986.yml b/lib/topmovies/data/budgets/tt0050986.yml similarity index 100% rename from data/budgets/tt0050986.yml rename to lib/topmovies/data/budgets/tt0050986.yml diff --git a/data/budgets/tt0051201.yml b/lib/topmovies/data/budgets/tt0051201.yml similarity index 100% rename from data/budgets/tt0051201.yml rename to lib/topmovies/data/budgets/tt0051201.yml diff --git a/data/budgets/tt0052311.yml b/lib/topmovies/data/budgets/tt0052311.yml similarity index 100% rename from data/budgets/tt0052311.yml rename to lib/topmovies/data/budgets/tt0052311.yml diff --git a/data/budgets/tt0052357.yml b/lib/topmovies/data/budgets/tt0052357.yml similarity index 100% rename from data/budgets/tt0052357.yml rename to lib/topmovies/data/budgets/tt0052357.yml diff --git a/data/budgets/tt0052561.yml b/lib/topmovies/data/budgets/tt0052561.yml similarity index 100% rename from data/budgets/tt0052561.yml rename to lib/topmovies/data/budgets/tt0052561.yml diff --git a/data/budgets/tt0052618.yml b/lib/topmovies/data/budgets/tt0052618.yml similarity index 100% rename from data/budgets/tt0052618.yml rename to lib/topmovies/data/budgets/tt0052618.yml diff --git a/data/budgets/tt0053125.yml b/lib/topmovies/data/budgets/tt0053125.yml similarity index 100% rename from data/budgets/tt0053125.yml rename to lib/topmovies/data/budgets/tt0053125.yml diff --git a/data/budgets/tt0053198.yml b/lib/topmovies/data/budgets/tt0053198.yml similarity index 100% rename from data/budgets/tt0053198.yml rename to lib/topmovies/data/budgets/tt0053198.yml diff --git a/data/budgets/tt0053291.yml b/lib/topmovies/data/budgets/tt0053291.yml similarity index 100% rename from data/budgets/tt0053291.yml rename to lib/topmovies/data/budgets/tt0053291.yml diff --git a/data/budgets/tt0053604.yml b/lib/topmovies/data/budgets/tt0053604.yml similarity index 100% rename from data/budgets/tt0053604.yml rename to lib/topmovies/data/budgets/tt0053604.yml diff --git a/data/budgets/tt0054215.yml b/lib/topmovies/data/budgets/tt0054215.yml similarity index 100% rename from data/budgets/tt0054215.yml rename to lib/topmovies/data/budgets/tt0054215.yml diff --git a/data/budgets/tt0054997.yml b/lib/topmovies/data/budgets/tt0054997.yml similarity index 100% rename from data/budgets/tt0054997.yml rename to lib/topmovies/data/budgets/tt0054997.yml diff --git a/data/budgets/tt0055031.yml b/lib/topmovies/data/budgets/tt0055031.yml similarity index 100% rename from data/budgets/tt0055031.yml rename to lib/topmovies/data/budgets/tt0055031.yml diff --git a/data/budgets/tt0055630.yml b/lib/topmovies/data/budgets/tt0055630.yml similarity index 100% rename from data/budgets/tt0055630.yml rename to lib/topmovies/data/budgets/tt0055630.yml diff --git a/data/budgets/tt0056172.yml b/lib/topmovies/data/budgets/tt0056172.yml similarity index 100% rename from data/budgets/tt0056172.yml rename to lib/topmovies/data/budgets/tt0056172.yml diff --git a/data/budgets/tt0056592.yml b/lib/topmovies/data/budgets/tt0056592.yml similarity index 100% rename from data/budgets/tt0056592.yml rename to lib/topmovies/data/budgets/tt0056592.yml diff --git a/data/budgets/tt0056801.yml b/lib/topmovies/data/budgets/tt0056801.yml similarity index 100% rename from data/budgets/tt0056801.yml rename to lib/topmovies/data/budgets/tt0056801.yml diff --git a/data/budgets/tt0057012.yml b/lib/topmovies/data/budgets/tt0057012.yml similarity index 100% rename from data/budgets/tt0057012.yml rename to lib/topmovies/data/budgets/tt0057012.yml diff --git a/data/budgets/tt0057115.yml b/lib/topmovies/data/budgets/tt0057115.yml similarity index 100% rename from data/budgets/tt0057115.yml rename to lib/topmovies/data/budgets/tt0057115.yml diff --git a/data/budgets/tt0058461.yml b/lib/topmovies/data/budgets/tt0058461.yml similarity index 100% rename from data/budgets/tt0058461.yml rename to lib/topmovies/data/budgets/tt0058461.yml diff --git a/data/budgets/tt0058946.yml b/lib/topmovies/data/budgets/tt0058946.yml similarity index 100% rename from data/budgets/tt0058946.yml rename to lib/topmovies/data/budgets/tt0058946.yml diff --git a/data/budgets/tt0059578.yml b/lib/topmovies/data/budgets/tt0059578.yml similarity index 100% rename from data/budgets/tt0059578.yml rename to lib/topmovies/data/budgets/tt0059578.yml diff --git a/data/budgets/tt0060196.yml b/lib/topmovies/data/budgets/tt0060196.yml similarity index 100% rename from data/budgets/tt0060196.yml rename to lib/topmovies/data/budgets/tt0060196.yml diff --git a/data/budgets/tt0060827.yml b/lib/topmovies/data/budgets/tt0060827.yml similarity index 100% rename from data/budgets/tt0060827.yml rename to lib/topmovies/data/budgets/tt0060827.yml diff --git a/data/budgets/tt0061184.yml b/lib/topmovies/data/budgets/tt0061184.yml similarity index 100% rename from data/budgets/tt0061184.yml rename to lib/topmovies/data/budgets/tt0061184.yml diff --git a/data/budgets/tt0061512.yml b/lib/topmovies/data/budgets/tt0061512.yml similarity index 100% rename from data/budgets/tt0061512.yml rename to lib/topmovies/data/budgets/tt0061512.yml diff --git a/data/budgets/tt0061722.yml b/lib/topmovies/data/budgets/tt0061722.yml similarity index 100% rename from data/budgets/tt0061722.yml rename to lib/topmovies/data/budgets/tt0061722.yml diff --git a/data/budgets/tt0062622.yml b/lib/topmovies/data/budgets/tt0062622.yml similarity index 100% rename from data/budgets/tt0062622.yml rename to lib/topmovies/data/budgets/tt0062622.yml diff --git a/data/budgets/tt0064115.yml b/lib/topmovies/data/budgets/tt0064115.yml similarity index 100% rename from data/budgets/tt0064115.yml rename to lib/topmovies/data/budgets/tt0064115.yml diff --git a/data/budgets/tt0064116.yml b/lib/topmovies/data/budgets/tt0064116.yml similarity index 100% rename from data/budgets/tt0064116.yml rename to lib/topmovies/data/budgets/tt0064116.yml diff --git a/data/budgets/tt0066921.yml b/lib/topmovies/data/budgets/tt0066921.yml similarity index 100% rename from data/budgets/tt0066921.yml rename to lib/topmovies/data/budgets/tt0066921.yml diff --git a/data/budgets/tt0068646.yml b/lib/topmovies/data/budgets/tt0068646.yml similarity index 100% rename from data/budgets/tt0068646.yml rename to lib/topmovies/data/budgets/tt0068646.yml diff --git a/data/budgets/tt0070511.yml b/lib/topmovies/data/budgets/tt0070511.yml similarity index 100% rename from data/budgets/tt0070511.yml rename to lib/topmovies/data/budgets/tt0070511.yml diff --git a/data/budgets/tt0070735.yml b/lib/topmovies/data/budgets/tt0070735.yml similarity index 100% rename from data/budgets/tt0070735.yml rename to lib/topmovies/data/budgets/tt0070735.yml diff --git a/data/budgets/tt0071315.yml b/lib/topmovies/data/budgets/tt0071315.yml similarity index 100% rename from data/budgets/tt0071315.yml rename to lib/topmovies/data/budgets/tt0071315.yml diff --git a/data/budgets/tt0071562.yml b/lib/topmovies/data/budgets/tt0071562.yml similarity index 100% rename from data/budgets/tt0071562.yml rename to lib/topmovies/data/budgets/tt0071562.yml diff --git a/data/budgets/tt0071853.yml b/lib/topmovies/data/budgets/tt0071853.yml similarity index 100% rename from data/budgets/tt0071853.yml rename to lib/topmovies/data/budgets/tt0071853.yml diff --git a/data/budgets/tt0072684.yml b/lib/topmovies/data/budgets/tt0072684.yml similarity index 100% rename from data/budgets/tt0072684.yml rename to lib/topmovies/data/budgets/tt0072684.yml diff --git a/data/budgets/tt0072890.yml b/lib/topmovies/data/budgets/tt0072890.yml similarity index 100% rename from data/budgets/tt0072890.yml rename to lib/topmovies/data/budgets/tt0072890.yml diff --git a/data/budgets/tt0073195.yml b/lib/topmovies/data/budgets/tt0073195.yml similarity index 100% rename from data/budgets/tt0073195.yml rename to lib/topmovies/data/budgets/tt0073195.yml diff --git a/data/budgets/tt0073486.yml b/lib/topmovies/data/budgets/tt0073486.yml similarity index 100% rename from data/budgets/tt0073486.yml rename to lib/topmovies/data/budgets/tt0073486.yml diff --git a/data/budgets/tt0074958.yml b/lib/topmovies/data/budgets/tt0074958.yml similarity index 100% rename from data/budgets/tt0074958.yml rename to lib/topmovies/data/budgets/tt0074958.yml diff --git a/data/budgets/tt0075148.yml b/lib/topmovies/data/budgets/tt0075148.yml similarity index 100% rename from data/budgets/tt0075148.yml rename to lib/topmovies/data/budgets/tt0075148.yml diff --git a/data/budgets/tt0075314.yml b/lib/topmovies/data/budgets/tt0075314.yml similarity index 100% rename from data/budgets/tt0075314.yml rename to lib/topmovies/data/budgets/tt0075314.yml diff --git a/data/budgets/tt0075686.yml b/lib/topmovies/data/budgets/tt0075686.yml similarity index 100% rename from data/budgets/tt0075686.yml rename to lib/topmovies/data/budgets/tt0075686.yml diff --git a/data/budgets/tt0076759.yml b/lib/topmovies/data/budgets/tt0076759.yml similarity index 100% rename from data/budgets/tt0076759.yml rename to lib/topmovies/data/budgets/tt0076759.yml diff --git a/data/budgets/tt0077416.yml b/lib/topmovies/data/budgets/tt0077416.yml similarity index 100% rename from data/budgets/tt0077416.yml rename to lib/topmovies/data/budgets/tt0077416.yml diff --git a/data/budgets/tt0078748.yml b/lib/topmovies/data/budgets/tt0078748.yml similarity index 100% rename from data/budgets/tt0078748.yml rename to lib/topmovies/data/budgets/tt0078748.yml diff --git a/data/budgets/tt0078788.yml b/lib/topmovies/data/budgets/tt0078788.yml similarity index 100% rename from data/budgets/tt0078788.yml rename to lib/topmovies/data/budgets/tt0078788.yml diff --git a/data/budgets/tt0079470.yml b/lib/topmovies/data/budgets/tt0079470.yml similarity index 100% rename from data/budgets/tt0079470.yml rename to lib/topmovies/data/budgets/tt0079470.yml diff --git a/data/budgets/tt0079944.yml b/lib/topmovies/data/budgets/tt0079944.yml similarity index 100% rename from data/budgets/tt0079944.yml rename to lib/topmovies/data/budgets/tt0079944.yml diff --git a/data/budgets/tt0080678.yml b/lib/topmovies/data/budgets/tt0080678.yml similarity index 100% rename from data/budgets/tt0080678.yml rename to lib/topmovies/data/budgets/tt0080678.yml diff --git a/data/budgets/tt0080684.yml b/lib/topmovies/data/budgets/tt0080684.yml similarity index 100% rename from data/budgets/tt0080684.yml rename to lib/topmovies/data/budgets/tt0080684.yml diff --git a/data/budgets/tt0081398.yml b/lib/topmovies/data/budgets/tt0081398.yml similarity index 100% rename from data/budgets/tt0081398.yml rename to lib/topmovies/data/budgets/tt0081398.yml diff --git a/data/budgets/tt0081505.yml b/lib/topmovies/data/budgets/tt0081505.yml similarity index 100% rename from data/budgets/tt0081505.yml rename to lib/topmovies/data/budgets/tt0081505.yml diff --git a/data/budgets/tt0082096.yml b/lib/topmovies/data/budgets/tt0082096.yml similarity index 100% rename from data/budgets/tt0082096.yml rename to lib/topmovies/data/budgets/tt0082096.yml diff --git a/data/budgets/tt0082971.yml b/lib/topmovies/data/budgets/tt0082971.yml similarity index 100% rename from data/budgets/tt0082971.yml rename to lib/topmovies/data/budgets/tt0082971.yml diff --git a/data/budgets/tt0083658.yml b/lib/topmovies/data/budgets/tt0083658.yml similarity index 100% rename from data/budgets/tt0083658.yml rename to lib/topmovies/data/budgets/tt0083658.yml diff --git a/data/budgets/tt0083922.yml b/lib/topmovies/data/budgets/tt0083922.yml similarity index 100% rename from data/budgets/tt0083922.yml rename to lib/topmovies/data/budgets/tt0083922.yml diff --git a/data/budgets/tt0083987.yml b/lib/topmovies/data/budgets/tt0083987.yml similarity index 100% rename from data/budgets/tt0083987.yml rename to lib/topmovies/data/budgets/tt0083987.yml diff --git a/data/budgets/tt0084787.yml b/lib/topmovies/data/budgets/tt0084787.yml similarity index 100% rename from data/budgets/tt0084787.yml rename to lib/topmovies/data/budgets/tt0084787.yml diff --git a/data/budgets/tt0086190.yml b/lib/topmovies/data/budgets/tt0086190.yml similarity index 100% rename from data/budgets/tt0086190.yml rename to lib/topmovies/data/budgets/tt0086190.yml diff --git a/data/budgets/tt0086250.yml b/lib/topmovies/data/budgets/tt0086250.yml similarity index 100% rename from data/budgets/tt0086250.yml rename to lib/topmovies/data/budgets/tt0086250.yml diff --git a/data/budgets/tt0086879.yml b/lib/topmovies/data/budgets/tt0086879.yml similarity index 100% rename from data/budgets/tt0086879.yml rename to lib/topmovies/data/budgets/tt0086879.yml diff --git a/data/budgets/tt0087544.yml b/lib/topmovies/data/budgets/tt0087544.yml similarity index 100% rename from data/budgets/tt0087544.yml rename to lib/topmovies/data/budgets/tt0087544.yml diff --git a/data/budgets/tt0087843.yml b/lib/topmovies/data/budgets/tt0087843.yml similarity index 100% rename from data/budgets/tt0087843.yml rename to lib/topmovies/data/budgets/tt0087843.yml diff --git a/data/budgets/tt0088247.yml b/lib/topmovies/data/budgets/tt0088247.yml similarity index 100% rename from data/budgets/tt0088247.yml rename to lib/topmovies/data/budgets/tt0088247.yml diff --git a/data/budgets/tt0088763.yml b/lib/topmovies/data/budgets/tt0088763.yml similarity index 100% rename from data/budgets/tt0088763.yml rename to lib/topmovies/data/budgets/tt0088763.yml diff --git a/data/budgets/tt0089881.yml b/lib/topmovies/data/budgets/tt0089881.yml similarity index 100% rename from data/budgets/tt0089881.yml rename to lib/topmovies/data/budgets/tt0089881.yml diff --git a/data/budgets/tt0090605.yml b/lib/topmovies/data/budgets/tt0090605.yml similarity index 100% rename from data/budgets/tt0090605.yml rename to lib/topmovies/data/budgets/tt0090605.yml diff --git a/data/budgets/tt0091763.yml b/lib/topmovies/data/budgets/tt0091763.yml similarity index 100% rename from data/budgets/tt0091763.yml rename to lib/topmovies/data/budgets/tt0091763.yml diff --git a/data/budgets/tt0092005.yml b/lib/topmovies/data/budgets/tt0092005.yml similarity index 100% rename from data/budgets/tt0092005.yml rename to lib/topmovies/data/budgets/tt0092005.yml diff --git a/data/budgets/tt0092067.yml b/lib/topmovies/data/budgets/tt0092067.yml similarity index 100% rename from data/budgets/tt0092067.yml rename to lib/topmovies/data/budgets/tt0092067.yml diff --git a/data/budgets/tt0093058.yml b/lib/topmovies/data/budgets/tt0093058.yml similarity index 100% rename from data/budgets/tt0093058.yml rename to lib/topmovies/data/budgets/tt0093058.yml diff --git a/data/budgets/tt0093779.yml b/lib/topmovies/data/budgets/tt0093779.yml similarity index 100% rename from data/budgets/tt0093779.yml rename to lib/topmovies/data/budgets/tt0093779.yml diff --git a/data/budgets/tt0094625.yml b/lib/topmovies/data/budgets/tt0094625.yml similarity index 100% rename from data/budgets/tt0094625.yml rename to lib/topmovies/data/budgets/tt0094625.yml diff --git a/data/budgets/tt0095016.yml b/lib/topmovies/data/budgets/tt0095016.yml similarity index 100% rename from data/budgets/tt0095016.yml rename to lib/topmovies/data/budgets/tt0095016.yml diff --git a/data/budgets/tt0095327.yml b/lib/topmovies/data/budgets/tt0095327.yml similarity index 100% rename from data/budgets/tt0095327.yml rename to lib/topmovies/data/budgets/tt0095327.yml diff --git a/data/budgets/tt0095765.yml b/lib/topmovies/data/budgets/tt0095765.yml similarity index 100% rename from data/budgets/tt0095765.yml rename to lib/topmovies/data/budgets/tt0095765.yml diff --git a/data/budgets/tt0096283.yml b/lib/topmovies/data/budgets/tt0096283.yml similarity index 100% rename from data/budgets/tt0096283.yml rename to lib/topmovies/data/budgets/tt0096283.yml diff --git a/data/budgets/tt0097576.yml b/lib/topmovies/data/budgets/tt0097576.yml similarity index 100% rename from data/budgets/tt0097576.yml rename to lib/topmovies/data/budgets/tt0097576.yml diff --git a/data/budgets/tt0099685.yml b/lib/topmovies/data/budgets/tt0099685.yml similarity index 100% rename from data/budgets/tt0099685.yml rename to lib/topmovies/data/budgets/tt0099685.yml diff --git a/data/budgets/tt0101414.yml b/lib/topmovies/data/budgets/tt0101414.yml similarity index 100% rename from data/budgets/tt0101414.yml rename to lib/topmovies/data/budgets/tt0101414.yml diff --git a/data/budgets/tt0102926.yml b/lib/topmovies/data/budgets/tt0102926.yml similarity index 100% rename from data/budgets/tt0102926.yml rename to lib/topmovies/data/budgets/tt0102926.yml diff --git a/data/budgets/tt0103064.yml b/lib/topmovies/data/budgets/tt0103064.yml similarity index 100% rename from data/budgets/tt0103064.yml rename to lib/topmovies/data/budgets/tt0103064.yml diff --git a/data/budgets/tt0105236.yml b/lib/topmovies/data/budgets/tt0105236.yml similarity index 100% rename from data/budgets/tt0105236.yml rename to lib/topmovies/data/budgets/tt0105236.yml diff --git a/data/budgets/tt0105695.yml b/lib/topmovies/data/budgets/tt0105695.yml similarity index 100% rename from data/budgets/tt0105695.yml rename to lib/topmovies/data/budgets/tt0105695.yml diff --git a/data/budgets/tt0107048.yml b/lib/topmovies/data/budgets/tt0107048.yml similarity index 100% rename from data/budgets/tt0107048.yml rename to lib/topmovies/data/budgets/tt0107048.yml diff --git a/data/budgets/tt0107207.yml b/lib/topmovies/data/budgets/tt0107207.yml similarity index 100% rename from data/budgets/tt0107207.yml rename to lib/topmovies/data/budgets/tt0107207.yml diff --git a/data/budgets/tt0107290.yml b/lib/topmovies/data/budgets/tt0107290.yml similarity index 100% rename from data/budgets/tt0107290.yml rename to lib/topmovies/data/budgets/tt0107290.yml diff --git a/data/budgets/tt0108052.yml b/lib/topmovies/data/budgets/tt0108052.yml similarity index 100% rename from data/budgets/tt0108052.yml rename to lib/topmovies/data/budgets/tt0108052.yml diff --git a/data/budgets/tt0109830.yml b/lib/topmovies/data/budgets/tt0109830.yml similarity index 100% rename from data/budgets/tt0109830.yml rename to lib/topmovies/data/budgets/tt0109830.yml diff --git a/data/budgets/tt0110357.yml b/lib/topmovies/data/budgets/tt0110357.yml similarity index 100% rename from data/budgets/tt0110357.yml rename to lib/topmovies/data/budgets/tt0110357.yml diff --git a/data/budgets/tt0110413.yml b/lib/topmovies/data/budgets/tt0110413.yml similarity index 100% rename from data/budgets/tt0110413.yml rename to lib/topmovies/data/budgets/tt0110413.yml diff --git a/data/budgets/tt0110912.yml b/lib/topmovies/data/budgets/tt0110912.yml similarity index 100% rename from data/budgets/tt0110912.yml rename to lib/topmovies/data/budgets/tt0110912.yml diff --git a/data/budgets/tt0111161.yml b/lib/topmovies/data/budgets/tt0111161.yml similarity index 100% rename from data/budgets/tt0111161.yml rename to lib/topmovies/data/budgets/tt0111161.yml diff --git a/data/budgets/tt0112471.yml b/lib/topmovies/data/budgets/tt0112471.yml similarity index 100% rename from data/budgets/tt0112471.yml rename to lib/topmovies/data/budgets/tt0112471.yml diff --git a/data/budgets/tt0112573.yml b/lib/topmovies/data/budgets/tt0112573.yml similarity index 100% rename from data/budgets/tt0112573.yml rename to lib/topmovies/data/budgets/tt0112573.yml diff --git a/data/budgets/tt0112641.yml b/lib/topmovies/data/budgets/tt0112641.yml similarity index 100% rename from data/budgets/tt0112641.yml rename to lib/topmovies/data/budgets/tt0112641.yml diff --git a/data/budgets/tt0113247.yml b/lib/topmovies/data/budgets/tt0113247.yml similarity index 100% rename from data/budgets/tt0113247.yml rename to lib/topmovies/data/budgets/tt0113247.yml diff --git a/data/budgets/tt0113277.yml b/lib/topmovies/data/budgets/tt0113277.yml similarity index 100% rename from data/budgets/tt0113277.yml rename to lib/topmovies/data/budgets/tt0113277.yml diff --git a/data/budgets/tt0114369.yml b/lib/topmovies/data/budgets/tt0114369.yml similarity index 100% rename from data/budgets/tt0114369.yml rename to lib/topmovies/data/budgets/tt0114369.yml diff --git a/data/budgets/tt0114709.yml b/lib/topmovies/data/budgets/tt0114709.yml similarity index 100% rename from data/budgets/tt0114709.yml rename to lib/topmovies/data/budgets/tt0114709.yml diff --git a/data/budgets/tt0114746.yml b/lib/topmovies/data/budgets/tt0114746.yml similarity index 100% rename from data/budgets/tt0114746.yml rename to lib/topmovies/data/budgets/tt0114746.yml diff --git a/data/budgets/tt0114787.yml b/lib/topmovies/data/budgets/tt0114787.yml similarity index 100% rename from data/budgets/tt0114787.yml rename to lib/topmovies/data/budgets/tt0114787.yml diff --git a/data/budgets/tt0114814.yml b/lib/topmovies/data/budgets/tt0114814.yml similarity index 100% rename from data/budgets/tt0114814.yml rename to lib/topmovies/data/budgets/tt0114814.yml diff --git a/data/budgets/tt0116282.yml b/lib/topmovies/data/budgets/tt0116282.yml similarity index 100% rename from data/budgets/tt0116282.yml rename to lib/topmovies/data/budgets/tt0116282.yml diff --git a/data/budgets/tt0117951.yml b/lib/topmovies/data/budgets/tt0117951.yml similarity index 100% rename from data/budgets/tt0117951.yml rename to lib/topmovies/data/budgets/tt0117951.yml diff --git a/data/budgets/tt0118715.yml b/lib/topmovies/data/budgets/tt0118715.yml similarity index 100% rename from data/budgets/tt0118715.yml rename to lib/topmovies/data/budgets/tt0118715.yml diff --git a/data/budgets/tt0118799.yml b/lib/topmovies/data/budgets/tt0118799.yml similarity index 100% rename from data/budgets/tt0118799.yml rename to lib/topmovies/data/budgets/tt0118799.yml diff --git a/data/budgets/tt0119217.yml b/lib/topmovies/data/budgets/tt0119217.yml similarity index 100% rename from data/budgets/tt0119217.yml rename to lib/topmovies/data/budgets/tt0119217.yml diff --git a/data/budgets/tt0119488.yml b/lib/topmovies/data/budgets/tt0119488.yml similarity index 100% rename from data/budgets/tt0119488.yml rename to lib/topmovies/data/budgets/tt0119488.yml diff --git a/data/budgets/tt0119698.yml b/lib/topmovies/data/budgets/tt0119698.yml similarity index 100% rename from data/budgets/tt0119698.yml rename to lib/topmovies/data/budgets/tt0119698.yml diff --git a/data/budgets/tt0120382.yml b/lib/topmovies/data/budgets/tt0120382.yml similarity index 100% rename from data/budgets/tt0120382.yml rename to lib/topmovies/data/budgets/tt0120382.yml diff --git a/data/budgets/tt0120586.yml b/lib/topmovies/data/budgets/tt0120586.yml similarity index 100% rename from data/budgets/tt0120586.yml rename to lib/topmovies/data/budgets/tt0120586.yml diff --git a/data/budgets/tt0120689.yml b/lib/topmovies/data/budgets/tt0120689.yml similarity index 100% rename from data/budgets/tt0120689.yml rename to lib/topmovies/data/budgets/tt0120689.yml diff --git a/data/budgets/tt0120735.yml b/lib/topmovies/data/budgets/tt0120735.yml similarity index 100% rename from data/budgets/tt0120735.yml rename to lib/topmovies/data/budgets/tt0120735.yml diff --git a/data/budgets/tt0120737.yml b/lib/topmovies/data/budgets/tt0120737.yml similarity index 100% rename from data/budgets/tt0120737.yml rename to lib/topmovies/data/budgets/tt0120737.yml diff --git a/data/budgets/tt0120815.yml b/lib/topmovies/data/budgets/tt0120815.yml similarity index 100% rename from data/budgets/tt0120815.yml rename to lib/topmovies/data/budgets/tt0120815.yml diff --git a/data/budgets/tt0133093.yml b/lib/topmovies/data/budgets/tt0133093.yml similarity index 100% rename from data/budgets/tt0133093.yml rename to lib/topmovies/data/budgets/tt0133093.yml diff --git a/data/budgets/tt0137523.yml b/lib/topmovies/data/budgets/tt0137523.yml similarity index 100% rename from data/budgets/tt0137523.yml rename to lib/topmovies/data/budgets/tt0137523.yml diff --git a/data/budgets/tt0167260.yml b/lib/topmovies/data/budgets/tt0167260.yml similarity index 100% rename from data/budgets/tt0167260.yml rename to lib/topmovies/data/budgets/tt0167260.yml diff --git a/data/budgets/tt0167261.yml b/lib/topmovies/data/budgets/tt0167261.yml similarity index 100% rename from data/budgets/tt0167261.yml rename to lib/topmovies/data/budgets/tt0167261.yml diff --git a/data/budgets/tt0167404.yml b/lib/topmovies/data/budgets/tt0167404.yml similarity index 100% rename from data/budgets/tt0167404.yml rename to lib/topmovies/data/budgets/tt0167404.yml diff --git a/data/budgets/tt0169547.yml b/lib/topmovies/data/budgets/tt0169547.yml similarity index 100% rename from data/budgets/tt0169547.yml rename to lib/topmovies/data/budgets/tt0169547.yml diff --git a/data/budgets/tt0172495.yml b/lib/topmovies/data/budgets/tt0172495.yml similarity index 100% rename from data/budgets/tt0172495.yml rename to lib/topmovies/data/budgets/tt0172495.yml diff --git a/data/budgets/tt0180093.yml b/lib/topmovies/data/budgets/tt0180093.yml similarity index 100% rename from data/budgets/tt0180093.yml rename to lib/topmovies/data/budgets/tt0180093.yml diff --git a/data/budgets/tt0198781.yml b/lib/topmovies/data/budgets/tt0198781.yml similarity index 100% rename from data/budgets/tt0198781.yml rename to lib/topmovies/data/budgets/tt0198781.yml diff --git a/data/budgets/tt0208092.yml b/lib/topmovies/data/budgets/tt0208092.yml similarity index 100% rename from data/budgets/tt0208092.yml rename to lib/topmovies/data/budgets/tt0208092.yml diff --git a/data/budgets/tt0209144.yml b/lib/topmovies/data/budgets/tt0209144.yml similarity index 100% rename from data/budgets/tt0209144.yml rename to lib/topmovies/data/budgets/tt0209144.yml diff --git a/data/budgets/tt0211915.yml b/lib/topmovies/data/budgets/tt0211915.yml similarity index 100% rename from data/budgets/tt0211915.yml rename to lib/topmovies/data/budgets/tt0211915.yml diff --git a/data/budgets/tt0245429.yml b/lib/topmovies/data/budgets/tt0245429.yml similarity index 100% rename from data/budgets/tt0245429.yml rename to lib/topmovies/data/budgets/tt0245429.yml diff --git a/data/budgets/tt0245712.yml b/lib/topmovies/data/budgets/tt0245712.yml similarity index 100% rename from data/budgets/tt0245712.yml rename to lib/topmovies/data/budgets/tt0245712.yml diff --git a/data/budgets/tt0246578.yml b/lib/topmovies/data/budgets/tt0246578.yml similarity index 100% rename from data/budgets/tt0246578.yml rename to lib/topmovies/data/budgets/tt0246578.yml diff --git a/data/budgets/tt0253474.yml b/lib/topmovies/data/budgets/tt0253474.yml similarity index 100% rename from data/budgets/tt0253474.yml rename to lib/topmovies/data/budgets/tt0253474.yml diff --git a/data/budgets/tt0266543.yml b/lib/topmovies/data/budgets/tt0266543.yml similarity index 100% rename from data/budgets/tt0266543.yml rename to lib/topmovies/data/budgets/tt0266543.yml diff --git a/data/budgets/tt0266697.yml b/lib/topmovies/data/budgets/tt0266697.yml similarity index 100% rename from data/budgets/tt0266697.yml rename to lib/topmovies/data/budgets/tt0266697.yml diff --git a/data/budgets/tt0268978.yml b/lib/topmovies/data/budgets/tt0268978.yml similarity index 100% rename from data/budgets/tt0268978.yml rename to lib/topmovies/data/budgets/tt0268978.yml diff --git a/data/budgets/tt0317248.yml b/lib/topmovies/data/budgets/tt0317248.yml similarity index 100% rename from data/budgets/tt0317248.yml rename to lib/topmovies/data/budgets/tt0317248.yml diff --git a/data/budgets/tt0325980.yml b/lib/topmovies/data/budgets/tt0325980.yml similarity index 100% rename from data/budgets/tt0325980.yml rename to lib/topmovies/data/budgets/tt0325980.yml diff --git a/data/budgets/tt0338013.yml b/lib/topmovies/data/budgets/tt0338013.yml similarity index 100% rename from data/budgets/tt0338013.yml rename to lib/topmovies/data/budgets/tt0338013.yml diff --git a/data/budgets/tt0338564.yml b/lib/topmovies/data/budgets/tt0338564.yml similarity index 100% rename from data/budgets/tt0338564.yml rename to lib/topmovies/data/budgets/tt0338564.yml diff --git a/data/budgets/tt0347149.yml b/lib/topmovies/data/budgets/tt0347149.yml similarity index 100% rename from data/budgets/tt0347149.yml rename to lib/topmovies/data/budgets/tt0347149.yml diff --git a/data/budgets/tt0353969.yml b/lib/topmovies/data/budgets/tt0353969.yml similarity index 100% rename from data/budgets/tt0353969.yml rename to lib/topmovies/data/budgets/tt0353969.yml diff --git a/data/budgets/tt0361748.yml b/lib/topmovies/data/budgets/tt0361748.yml similarity index 100% rename from data/budgets/tt0361748.yml rename to lib/topmovies/data/budgets/tt0361748.yml diff --git a/data/budgets/tt0363163.yml b/lib/topmovies/data/budgets/tt0363163.yml similarity index 100% rename from data/budgets/tt0363163.yml rename to lib/topmovies/data/budgets/tt0363163.yml diff --git a/data/budgets/tt0364569.yml b/lib/topmovies/data/budgets/tt0364569.yml similarity index 100% rename from data/budgets/tt0364569.yml rename to lib/topmovies/data/budgets/tt0364569.yml diff --git a/data/budgets/tt0372784.yml b/lib/topmovies/data/budgets/tt0372784.yml similarity index 100% rename from data/budgets/tt0372784.yml rename to lib/topmovies/data/budgets/tt0372784.yml diff --git a/data/budgets/tt0374546.yml b/lib/topmovies/data/budgets/tt0374546.yml similarity index 100% rename from data/budgets/tt0374546.yml rename to lib/topmovies/data/budgets/tt0374546.yml diff --git a/data/budgets/tt0381681.yml b/lib/topmovies/data/budgets/tt0381681.yml similarity index 100% rename from data/budgets/tt0381681.yml rename to lib/topmovies/data/budgets/tt0381681.yml diff --git a/data/budgets/tt0395169.yml b/lib/topmovies/data/budgets/tt0395169.yml similarity index 100% rename from data/budgets/tt0395169.yml rename to lib/topmovies/data/budgets/tt0395169.yml diff --git a/data/budgets/tt0401792.yml b/lib/topmovies/data/budgets/tt0401792.yml similarity index 100% rename from data/budgets/tt0401792.yml rename to lib/topmovies/data/budgets/tt0401792.yml diff --git a/data/budgets/tt0405094.yml b/lib/topmovies/data/budgets/tt0405094.yml similarity index 100% rename from data/budgets/tt0405094.yml rename to lib/topmovies/data/budgets/tt0405094.yml diff --git a/data/budgets/tt0405159.yml b/lib/topmovies/data/budgets/tt0405159.yml similarity index 100% rename from data/budgets/tt0405159.yml rename to lib/topmovies/data/budgets/tt0405159.yml diff --git a/data/budgets/tt0407887.yml b/lib/topmovies/data/budgets/tt0407887.yml similarity index 100% rename from data/budgets/tt0407887.yml rename to lib/topmovies/data/budgets/tt0407887.yml diff --git a/data/budgets/tt0434409.yml b/lib/topmovies/data/budgets/tt0434409.yml similarity index 100% rename from data/budgets/tt0434409.yml rename to lib/topmovies/data/budgets/tt0434409.yml diff --git a/data/budgets/tt0435761.yml b/lib/topmovies/data/budgets/tt0435761.yml similarity index 100% rename from data/budgets/tt0435761.yml rename to lib/topmovies/data/budgets/tt0435761.yml diff --git a/data/budgets/tt0440963.yml b/lib/topmovies/data/budgets/tt0440963.yml similarity index 100% rename from data/budgets/tt0440963.yml rename to lib/topmovies/data/budgets/tt0440963.yml diff --git a/data/budgets/tt0457430.yml b/lib/topmovies/data/budgets/tt0457430.yml similarity index 100% rename from data/budgets/tt0457430.yml rename to lib/topmovies/data/budgets/tt0457430.yml diff --git a/data/budgets/tt0468569.yml b/lib/topmovies/data/budgets/tt0468569.yml similarity index 100% rename from data/budgets/tt0468569.yml rename to lib/topmovies/data/budgets/tt0468569.yml diff --git a/data/budgets/tt0469494.yml b/lib/topmovies/data/budgets/tt0469494.yml similarity index 100% rename from data/budgets/tt0469494.yml rename to lib/topmovies/data/budgets/tt0469494.yml diff --git a/data/budgets/tt0477348.yml b/lib/topmovies/data/budgets/tt0477348.yml similarity index 100% rename from data/budgets/tt0477348.yml rename to lib/topmovies/data/budgets/tt0477348.yml diff --git a/data/budgets/tt0482571.yml b/lib/topmovies/data/budgets/tt0482571.yml similarity index 100% rename from data/budgets/tt0482571.yml rename to lib/topmovies/data/budgets/tt0482571.yml diff --git a/data/budgets/tt0758758.yml b/lib/topmovies/data/budgets/tt0758758.yml similarity index 100% rename from data/budgets/tt0758758.yml rename to lib/topmovies/data/budgets/tt0758758.yml diff --git a/data/budgets/tt0816692.yml b/lib/topmovies/data/budgets/tt0816692.yml similarity index 100% rename from data/budgets/tt0816692.yml rename to lib/topmovies/data/budgets/tt0816692.yml diff --git a/data/budgets/tt0848228.yml b/lib/topmovies/data/budgets/tt0848228.yml similarity index 100% rename from data/budgets/tt0848228.yml rename to lib/topmovies/data/budgets/tt0848228.yml diff --git a/data/budgets/tt0892769.yml b/lib/topmovies/data/budgets/tt0892769.yml similarity index 100% rename from data/budgets/tt0892769.yml rename to lib/topmovies/data/budgets/tt0892769.yml diff --git a/data/budgets/tt0910970.yml b/lib/topmovies/data/budgets/tt0910970.yml similarity index 100% rename from data/budgets/tt0910970.yml rename to lib/topmovies/data/budgets/tt0910970.yml diff --git a/data/budgets/tt0978762.yml b/lib/topmovies/data/budgets/tt0978762.yml similarity index 100% rename from data/budgets/tt0978762.yml rename to lib/topmovies/data/budgets/tt0978762.yml diff --git a/data/budgets/tt0993846.yml b/lib/topmovies/data/budgets/tt0993846.yml similarity index 100% rename from data/budgets/tt0993846.yml rename to lib/topmovies/data/budgets/tt0993846.yml diff --git a/data/budgets/tt1028532.yml b/lib/topmovies/data/budgets/tt1028532.yml similarity index 100% rename from data/budgets/tt1028532.yml rename to lib/topmovies/data/budgets/tt1028532.yml diff --git a/data/budgets/tt1049413.yml b/lib/topmovies/data/budgets/tt1049413.yml similarity index 100% rename from data/budgets/tt1049413.yml rename to lib/topmovies/data/budgets/tt1049413.yml diff --git a/data/budgets/tt1069238.yml b/lib/topmovies/data/budgets/tt1069238.yml similarity index 100% rename from data/budgets/tt1069238.yml rename to lib/topmovies/data/budgets/tt1069238.yml diff --git a/data/budgets/tt1130884.yml b/lib/topmovies/data/budgets/tt1130884.yml similarity index 100% rename from data/budgets/tt1130884.yml rename to lib/topmovies/data/budgets/tt1130884.yml diff --git a/data/budgets/tt1187043.yml b/lib/topmovies/data/budgets/tt1187043.yml similarity index 100% rename from data/budgets/tt1187043.yml rename to lib/topmovies/data/budgets/tt1187043.yml diff --git a/data/budgets/tt1201607.yml b/lib/topmovies/data/budgets/tt1201607.yml similarity index 100% rename from data/budgets/tt1201607.yml rename to lib/topmovies/data/budgets/tt1201607.yml diff --git a/data/budgets/tt1205489.yml b/lib/topmovies/data/budgets/tt1205489.yml similarity index 100% rename from data/budgets/tt1205489.yml rename to lib/topmovies/data/budgets/tt1205489.yml diff --git a/data/budgets/tt1220719.yml b/lib/topmovies/data/budgets/tt1220719.yml similarity index 100% rename from data/budgets/tt1220719.yml rename to lib/topmovies/data/budgets/tt1220719.yml diff --git a/data/budgets/tt1255953.yml b/lib/topmovies/data/budgets/tt1255953.yml similarity index 100% rename from data/budgets/tt1255953.yml rename to lib/topmovies/data/budgets/tt1255953.yml diff --git a/data/budgets/tt1291584.yml b/lib/topmovies/data/budgets/tt1291584.yml similarity index 100% rename from data/budgets/tt1291584.yml rename to lib/topmovies/data/budgets/tt1291584.yml diff --git a/data/budgets/tt1305806.yml b/lib/topmovies/data/budgets/tt1305806.yml similarity index 100% rename from data/budgets/tt1305806.yml rename to lib/topmovies/data/budgets/tt1305806.yml diff --git a/data/budgets/tt1345836.yml b/lib/topmovies/data/budgets/tt1345836.yml similarity index 100% rename from data/budgets/tt1345836.yml rename to lib/topmovies/data/budgets/tt1345836.yml diff --git a/data/budgets/tt1375666.yml b/lib/topmovies/data/budgets/tt1375666.yml similarity index 100% rename from data/budgets/tt1375666.yml rename to lib/topmovies/data/budgets/tt1375666.yml diff --git a/data/budgets/tt1392190.yml b/lib/topmovies/data/budgets/tt1392190.yml similarity index 100% rename from data/budgets/tt1392190.yml rename to lib/topmovies/data/budgets/tt1392190.yml diff --git a/data/budgets/tt1392214.yml b/lib/topmovies/data/budgets/tt1392214.yml similarity index 100% rename from data/budgets/tt1392214.yml rename to lib/topmovies/data/budgets/tt1392214.yml diff --git a/data/budgets/tt1454029.yml b/lib/topmovies/data/budgets/tt1454029.yml similarity index 100% rename from data/budgets/tt1454029.yml rename to lib/topmovies/data/budgets/tt1454029.yml diff --git a/data/budgets/tt1504320.yml b/lib/topmovies/data/budgets/tt1504320.yml similarity index 100% rename from data/budgets/tt1504320.yml rename to lib/topmovies/data/budgets/tt1504320.yml diff --git a/data/budgets/tt1555149.yml b/lib/topmovies/data/budgets/tt1555149.yml similarity index 100% rename from data/budgets/tt1555149.yml rename to lib/topmovies/data/budgets/tt1555149.yml diff --git a/data/budgets/tt1675434.yml b/lib/topmovies/data/budgets/tt1675434.yml similarity index 100% rename from data/budgets/tt1675434.yml rename to lib/topmovies/data/budgets/tt1675434.yml diff --git a/data/budgets/tt1832382.yml b/lib/topmovies/data/budgets/tt1832382.yml similarity index 100% rename from data/budgets/tt1832382.yml rename to lib/topmovies/data/budgets/tt1832382.yml diff --git a/data/budgets/tt1853728.yml b/lib/topmovies/data/budgets/tt1853728.yml similarity index 100% rename from data/budgets/tt1853728.yml rename to lib/topmovies/data/budgets/tt1853728.yml diff --git a/data/budgets/tt1877832.yml b/lib/topmovies/data/budgets/tt1877832.yml similarity index 100% rename from data/budgets/tt1877832.yml rename to lib/topmovies/data/budgets/tt1877832.yml diff --git a/data/budgets/tt1979320.yml b/lib/topmovies/data/budgets/tt1979320.yml similarity index 100% rename from data/budgets/tt1979320.yml rename to lib/topmovies/data/budgets/tt1979320.yml diff --git a/data/budgets/tt2015381.yml b/lib/topmovies/data/budgets/tt2015381.yml similarity index 100% rename from data/budgets/tt2015381.yml rename to lib/topmovies/data/budgets/tt2015381.yml diff --git a/data/budgets/tt2024544.yml b/lib/topmovies/data/budgets/tt2024544.yml similarity index 100% rename from data/budgets/tt2024544.yml rename to lib/topmovies/data/budgets/tt2024544.yml diff --git a/data/budgets/tt2084970.yml b/lib/topmovies/data/budgets/tt2084970.yml similarity index 100% rename from data/budgets/tt2084970.yml rename to lib/topmovies/data/budgets/tt2084970.yml diff --git a/data/budgets/tt2096673.yml b/lib/topmovies/data/budgets/tt2096673.yml similarity index 100% rename from data/budgets/tt2096673.yml rename to lib/topmovies/data/budgets/tt2096673.yml diff --git a/data/budgets/tt2106476.yml b/lib/topmovies/data/budgets/tt2106476.yml similarity index 100% rename from data/budgets/tt2106476.yml rename to lib/topmovies/data/budgets/tt2106476.yml diff --git a/data/budgets/tt2267998.yml b/lib/topmovies/data/budgets/tt2267998.yml similarity index 100% rename from data/budgets/tt2267998.yml rename to lib/topmovies/data/budgets/tt2267998.yml diff --git a/data/budgets/tt2278388.yml b/lib/topmovies/data/budgets/tt2278388.yml similarity index 100% rename from data/budgets/tt2278388.yml rename to lib/topmovies/data/budgets/tt2278388.yml diff --git a/data/budgets/tt2582802.yml b/lib/topmovies/data/budgets/tt2582802.yml similarity index 100% rename from data/budgets/tt2582802.yml rename to lib/topmovies/data/budgets/tt2582802.yml diff --git a/data/budgets/tt3011894.yml b/lib/topmovies/data/budgets/tt3011894.yml similarity index 100% rename from data/budgets/tt3011894.yml rename to lib/topmovies/data/budgets/tt3011894.yml diff --git a/data/movies.txt b/lib/topmovies/data/movies.txt similarity index 100% rename from data/movies.txt rename to lib/topmovies/data/movies.txt diff --git a/lib/topmovies/examples/demo_budgets_posters.rb b/lib/topmovies/examples/demo_budgets_posters.rb new file mode 100644 index 0000000..1505648 --- /dev/null +++ b/lib/topmovies/examples/demo_budgets_posters.rb @@ -0,0 +1,25 @@ +require_relative '../movie' +require_relative '../ancient_movie' +require_relative '../classic_movie' +require_relative '../modern_movie' +require_relative '../new_movie' +require_relative '../movie_collection' +require_relative '../filter_genre' +require_relative '../country_filter' +require_relative '../netflix' +require_relative '../theatre' +require 'date' + +file_name = ARGV[0] || '../data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +movies = TopMovies::MovieCollection.new(file_name) +movie = movies.all[112] +puts movie.budget +puts movie.poster diff --git a/lib/topmovies/examples/demo_collection_filters.rb b/lib/topmovies/examples/demo_collection_filters.rb new file mode 100644 index 0000000..b08d962 --- /dev/null +++ b/lib/topmovies/examples/demo_collection_filters.rb @@ -0,0 +1,40 @@ +require_relative '../movie' +require_relative '../ancient_movie' +require_relative '../classic_movie' +require_relative '../modern_movie' +require_relative '../new_movie' +require_relative '../movie_collection' +require_relative '../filter_genre' +require_relative '../country_filter' +require_relative '../netflix' +require_relative '../theatre' +require 'date' + +file_name = ARGV[0] || '../data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +movies = TopMovies::MovieCollection.new(file_name) + +# collection filters by genre +puts movies.filter(genre: 'Comedy') + +# collection filters by year +movies.filter(year: 2000) +movies.filter(year: 1980..2000) + +# collection sorts by year +movies.sort_by(:year) + +# collection statistics by author +puts movies.stats(:author) + +# collection have or not have +movie = movies.all.first +puts movie.actors.count +puts movie.actors.include?('Arnold Shwarzenegger') diff --git a/lib/topmovies/examples/demo_movies_render_html.rb b/lib/topmovies/examples/demo_movies_render_html.rb new file mode 100644 index 0000000..54ade33 --- /dev/null +++ b/lib/topmovies/examples/demo_movies_render_html.rb @@ -0,0 +1,23 @@ +require_relative '../movie' +require_relative '../ancient_movie' +require_relative '../classic_movie' +require_relative '../modern_movie' +require_relative '../new_movie' +require_relative '../movie_collection' +require_relative '../filter_genre' +require_relative '../country_filter' +require_relative '../netflix' +require_relative '../theatre' +require 'date' + +file_name = ARGV[0] || '../data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +movies = TopMovies::MovieCollection.new(file_name) +movies.render_html diff --git a/lib/topmovies/examples/demo_netflix_filters.rb b/lib/topmovies/examples/demo_netflix_filters.rb new file mode 100644 index 0000000..b37a678 --- /dev/null +++ b/lib/topmovies/examples/demo_netflix_filters.rb @@ -0,0 +1,58 @@ +require_relative '../movie' +require_relative '../ancient_movie' +require_relative '../classic_movie' +require_relative '../modern_movie' +require_relative '../new_movie' +require_relative '../movie_collection' +require_relative '../filter_genre' +require_relative '../country_filter' +require_relative '../netflix' +require_relative '../theatre' +require 'date' + +file_name = ARGV[0] || '../data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +online = TopMovies::Netflix.new(file_name) +online.pay(35) + +# inner filters +puts online.show(genre: 'Drama', period: :new) + +# component filter +movies = online.show do |movie| + !movie.title.include?('Terminator') && \ + movie.genre[0].include?('Action') && \ + movie.year > 2003 +end +puts movies + +# define new filter + online.define_filter(:new_sci_fi) do |movie| + movie.genre[0].include?('Sci-Fi') && \ + !movie.country.include?('UK') + end +puts online.show(new_sci_fi: true) + +online.define_filter(:not_spielberg) do |movie| + !movie.author.include?('Steven Spielberg') +end +puts online.show(new_sci_fi: true, not_spielberg: true) + +online.define_filter(:country) do |movie| + movie.genre.include?('Sci-Fi') && \ + !movie.author.include?('Steven Spielberg') && \ + !movie.country.include?('UK') +end + +# define new filter based on existing filter +online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } +puts online.show(new_sci_fi: 2010) +online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) +puts online.show(newest_sci_fi: 2014) diff --git a/lib/topmovies/examples/demo_netflix_methods_by.rb b/lib/topmovies/examples/demo_netflix_methods_by.rb new file mode 100644 index 0000000..caa1621 --- /dev/null +++ b/lib/topmovies/examples/demo_netflix_methods_by.rb @@ -0,0 +1,22 @@ +require_relative '../movie' +require_relative '../ancient_movie' +require_relative '../classic_movie' +require_relative '../modern_movie' +require_relative '../new_movie' +require_relative '../movie_collection' +require_relative '../filter_genre' +require_relative '../country_filter' +require_relative '../netflix' + +file_name = ARGV[0] || '../data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +online = TopMovies::Netflix.new(file_name) +puts online.by_genre.comedy +puts online.by_country.usa diff --git a/lib/topmovies/examples/demo_theatre_buy_ticket.rb b/lib/topmovies/examples/demo_theatre_buy_ticket.rb new file mode 100644 index 0000000..78e7b63 --- /dev/null +++ b/lib/topmovies/examples/demo_theatre_buy_ticket.rb @@ -0,0 +1,70 @@ +require_relative '../movie' +require_relative '../ancient_movie' +require_relative '../classic_movie' +require_relative '../modern_movie' +require_relative '../new_movie' +require_relative '../movie_collection' +require_relative '../filter_genre' +require_relative '../country_filter' +require_relative '../netflix' +require_relative '../theatre' +require 'date' + +file_name = ARGV[0] || '../data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +theatre = + TopMovies::Theatre.new do + hall :red, title: 'Красный зал', places: 100 + hall :blue, title: 'Синий зал', places: 50 + hall :green, title: 'Зелёный зал (deluxe)', places: 12 + + period '09:00'..'12:00' do + description 'Утренний сеанс' + filters genre: 'Comedy', year: 1900..1980 + price 10 + hall :red, :blue + end + + period '12:00'..'16:00' do + description 'Спецпоказ' + title 'The Terminator' + price 50 + hall :green + end + + period '16:00'..'20:00' do + description 'Вечерний сеанс' + filters genre: %w(Action Drama), year: 2007..Time.now.year + price 20 + hall :red, :blue + end + + period '19:00'..'22:00' do + description 'Вечерний сеанс для киноманов' + filters year: 1900..1945, exclude_country: 'USA' + price 30 + hall :green + end + + period '21:00'..'23:00' do + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red + end + end + +puts theatre.buy_ticket('10:20') +puts theatre.buy_ticket('13:20') +puts theatre.buy_ticket('17:20') +puts theatre.buy_ticket('19:20', hall: :green) +puts theatre.cash +theatre.take('Bank') +puts theatre.cash diff --git a/lib/topmovies/examples/demo_theatre_periods.rb b/lib/topmovies/examples/demo_theatre_periods.rb new file mode 100644 index 0000000..06bbf60 --- /dev/null +++ b/lib/topmovies/examples/demo_theatre_periods.rb @@ -0,0 +1,61 @@ +require_relative '../movie' +require_relative '../ancient_movie' +require_relative '../classic_movie' +require_relative '../modern_movie' +require_relative '../new_movie' +require_relative '../movie_collection' +require_relative '../theatre' +require 'date' + +file_name = ARGV[0] || '../data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +theatre = + TopMovies::Theatre.new do + hall :red, title: 'Красный зал', places: 100 + hall :blue, title: 'Синий зал', places: 50 + hall :green, title: 'Зелёный зал (deluxe)', places: 12 + + period '09:00'..'12:00' do + description 'Утренний сеанс' + filters genre: 'Comedy', year: 1900..1980 + price 10 + hall :red, :blue + end + + period '12:00'..'16:00' do + description 'Спецпоказ' + title 'The Terminator' + price 50 + hall :green + end + + period '16:00'..'20:00' do + description 'Вечерний сеанс' + filters genre: %w(Action Drama), year: 2007..Time.now.year + price 20 + hall :red, :blue + end + + period '19:00'..'22:00' do + description 'Вечерний сеанс для киноманов' + filters year: 1900..1945, exclude_country: 'USA' + price 30 + hall :green + end + end + +theatre.period '21:00'..'23:00' do + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red +end + +puts theatre diff --git a/www/imdb_budgets.rb b/lib/topmovies/imdb_budgets.rb similarity index 59% rename from www/imdb_budgets.rb rename to lib/topmovies/imdb_budgets.rb index 8267818..c7fd4d2 100644 --- a/www/imdb_budgets.rb +++ b/lib/topmovies/imdb_budgets.rb @@ -4,8 +4,7 @@ require 'ruby-progressbar' module ImdbBudgets def take_budget_from_file(file_name) - Dir.chdir File.expand_path( File.join( File.dirname(__FILE__), "..", "data", "budgets") ) - YAML::load_file(File.open(file_name))[file_name[0,9]] + YAML::load_file(File.open(file_name))[file_name[16,9]] end def take_budget_from_imdb(id) @@ -15,8 +14,7 @@ def take_budget_from_imdb(id) else nil end - Dir.chdir File.expand_path( File.join( File.dirname(__FILE__), "..", "data", "budgets") ) - File.write("#{id}.yml", {id => data}.to_yaml) + File.write("../data/budgets/#{id}.yml", {id => data}.to_yaml) end def take_info diff --git a/lib/topmovies/movie.rb b/lib/topmovies/movie.rb index 31acb7e..4703060 100644 --- a/lib/topmovies/movie.rb +++ b/lib/topmovies/movie.rb @@ -1,5 +1,5 @@ -require_relative '../../www/imdb_budgets' -require_relative '../../www/tmdb_posters' +require_relative 'imdb_budgets' +require_relative 'tmdb_posters' module TopMovies class Movie require 'virtus' @@ -82,8 +82,7 @@ def imdb_id end def budget - Dir.chdir File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'budgets')) - file_name = "#{imdb_id}.yml" + file_name = "../data/budgets/#{imdb_id}.yml" take_budget_from_imdb(imdb_id) unless File.exist?(file_name) take_budget_from_file(file_name) end diff --git a/lib/topmovies/movie_collection.rb b/lib/topmovies/movie_collection.rb index 3fd320b..5d6557e 100644 --- a/lib/topmovies/movie_collection.rb +++ b/lib/topmovies/movie_collection.rb @@ -4,8 +4,8 @@ require_relative 'filter_genre' require_relative 'country_filter' require 'money' -require_relative '../../www/imdb_budgets' -require_relative '../../www/tmdb_posters' +require_relative 'imdb_budgets' +require_relative 'tmdb_posters' module TopMovies class MovieCollection @@ -16,6 +16,8 @@ class MovieCollection attr_accessor :collection + PATH_PAGES = '../pages' + def initialize(file_name) @collection = make_collection(file_name) @balance = Money.new(0, 'UAH') @@ -89,7 +91,7 @@ def by_country end def render_html - template = File.open('../../www/pages/index.haml') + template = File.open('../pages/index.haml') Haml::Engine.new(template.read).render(@collection) end end diff --git a/www/pages/index.haml b/lib/topmovies/pages/index.haml similarity index 100% rename from www/pages/index.haml rename to lib/topmovies/pages/index.haml diff --git a/lib/topmovies/theatre.rb b/lib/topmovies/theatre.rb index a9e887e..ca95d44 100644 --- a/lib/topmovies/theatre.rb +++ b/lib/topmovies/theatre.rb @@ -4,9 +4,10 @@ module TopMovies class Theatre < MovieCollection attr_accessor :halls, :periods + PATH_DATA = "../data/movies.txt" + def initialize(&block) - Dir.chdir File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data')) - super('movies.txt') + super(PATH_DATA) @halls = {} @periods = [] @blck = {} diff --git a/www/tmdb_posters.rb b/lib/topmovies/tmdb_posters.rb similarity index 100% rename from www/tmdb_posters.rb rename to lib/topmovies/tmdb_posters.rb diff --git a/spec/imdb_budgets_spec.rb b/spec/imdb_budgets_spec.rb index 2bc1ae7..54eea5f 100644 --- a/spec/imdb_budgets_spec.rb +++ b/spec/imdb_budgets_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ImdbBudgets do - let(:movies) { TopMovies::MovieCollection.new('movies.txt') { include ImdbBudgets } } + let(:movies) { TopMovies::MovieCollection.new('data/movies.txt') { include ImdbBudgets } } describe '#take_budget_from_file' do subject { movie.take_budget_from_file(file) } diff --git a/spec/index.haml b/spec/index.haml deleted file mode 100644 index 65c4a29..0000000 --- a/spec/index.haml +++ /dev/null @@ -1,8 +0,0 @@ -!!! -%html - %head - %title Hello world!!! - %body - %header - %body=yield - %footer \ No newline at end of file diff --git a/spec/netflix_spec.rb b/spec/netflix_spec.rb index 81e6bb0..5abc372 100644 --- a/spec/netflix_spec.rb +++ b/spec/netflix_spec.rb @@ -130,7 +130,7 @@ module TopMovies end describe '#cash' do - let(:value) {Money.new(18500, "UAH")} + let(:value) {Money.new(19000, "UAH")} it { expect( Netflix.cash ).to eq(value) } end diff --git a/www/pages/index.html b/www/pages/index.html deleted file mode 100644 index 1a5e87f..0000000 --- a/www/pages/index.html +++ /dev/null @@ -1,17317 +0,0 @@ - - - - - Movies - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Shawshank Redemption (1994) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1994-10-14 -
Жанр: - Crime - Drama -
Продолжительность: - 142 min -
Рейтинг: - 9.3 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Godfather (1972) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1972-03-24 -
Жанр: - Crime - Drama -
Продолжительность: - 175 min -
Рейтинг: - 9.2 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $6,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Godfather: Part II (1974) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1974-12-20 -
Жанр: - Crime - Drama -
Продолжительность: - 200 min -
Рейтинг: - 9.1 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Dark Knight (2008) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2008-07-18 -
Жанр: - Action - Crime - Drama -
Продолжительность: - 152 min -
Рейтинг: - 9.0 -
Режиссер: - Action - Crime - Drama -
Актеры: - Action - Crime - Drama -
Бюджет: - $185,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 12 Angry Men (1957) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1957-04 -
Жанр: - Crime - Drama -
Продолжительность: - 96 min -
Рейтинг: - 8.9 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $350,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Schindler's List (1993) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1994-02-04 -
Жанр: - Biography - Drama - History -
Продолжительность: - 195 min -
Рейтинг: - 8.9 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - $22,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Pulp Fiction (1994) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1994-10-14 -
Жанр: - Crime - Drama -
Продолжительность: - 154 min -
Рейтинг: - 8.9 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $8,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Good, the Bad and the Ugly (1966) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1966-12-23 -
Жанр: - Western -
Продолжительность: - 161 min -
Рейтинг: - 8.9 -
Режиссер: - Western -
Актеры: - Western -
Бюджет: - $6,100,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Lord of the Rings: The Return of the King (2003) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2003-12-17 -
Жанр: - Adventure - Fantasy -
Продолжительность: - 201 min -
Рейтинг: - 8.9 -
Режиссер: - Adventure - Fantasy -
Актеры: - Adventure - Fantasy -
Бюджет: - $94,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Fight Club (1999) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1999-10-15 -
Жанр: - Drama -
Продолжительность: - 139 min -
Рейтинг: - 8.9 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $63,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Lord of the Rings: The Fellowship of the Ring (2001) - -
Poster:Страна выпуска: - New Zealand -
Премьера(США): - 2001-12-19 -
Жанр: - Adventure - Fantasy -
Продолжительность: - 178 min -
Рейтинг: - 8.8 -
Режиссер: - Adventure - Fantasy -
Актеры: - Adventure - Fantasy -
Бюджет: - $93,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Star Wars: Episode V - The Empire Strikes Back (1980) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1980-06-20 -
Жанр: - Action - Adventure - Fantasy -
Продолжительность: - 124 min -
Рейтинг: - 8.8 -
Режиссер: - Action - Adventure - Fantasy -
Актеры: - Action - Adventure - Fantasy -
Бюджет: - $18,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Forrest Gump (1994) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1994-07-06 -
Жанр: - Drama - Romance -
Продолжительность: - 142 min -
Рейтинг: - 8.8 -
Режиссер: - Drama - Romance -
Актеры: - Drama - Romance -
Бюджет: - $55,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Inception (2010) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2010-07-16 -
Жанр: - Action - Mystery - Sci-Fi -
Продолжительность: - 148 min -
Рейтинг: - 8.8 -
Режиссер: - Action - Mystery - Sci-Fi -
Актеры: - Action - Mystery - Sci-Fi -
Бюджет: - $160,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - One Flew Over the Cuckoo's Nest (1975) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1975-11-21 -
Жанр: - Drama -
Продолжительность: - 133 min -
Рейтинг: - 8.7 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $112,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Lord of the Rings: The Two Towers (2002) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2002-12-18 -
Жанр: - Adventure - Fantasy -
Продолжительность: - 179 min -
Рейтинг: - 8.7 -
Режиссер: - Adventure - Fantasy -
Актеры: - Adventure - Fantasy -
Бюджет: - $94,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Goodfellas (1990) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1990-09-21 -
Жанр: - Biography - Crime - Drama -
Продолжительность: - 146 min -
Рейтинг: - 8.7 -
Режиссер: - Biography - Crime - Drama -
Актеры: - Biography - Crime - Drama -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Matrix (1999) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1999-03-31 -
Жанр: - Action - Sci-Fi -
Продолжительность: - 136 min -
Рейтинг: - 8.7 -
Режиссер: - Action - Sci-Fi -
Актеры: - Action - Sci-Fi -
Бюджет: - $63,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Star Wars: Episode IV - A New Hope (1977) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1977-05-25 -
Жанр: - Action - Adventure - Fantasy -
Продолжительность: - 121 min -
Рейтинг: - 8.7 -
Режиссер: - Action - Adventure - Fantasy -
Актеры: - Action - Adventure - Fantasy -
Бюджет: - $11,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Seven Samurai (1954) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1956-11-19 -
Жанр: - Drama -
Продолжительность: - 207 min -
Рейтинг: - 8.7 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - City of God (2002) - -
Poster:Страна выпуска: - Brazil -
Премьера(США): - 2004-02-13 -
Жанр: - Crime - Drama -
Продолжительность: - 130 min -
Рейтинг: - 8.7 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $3,300,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Se7en (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1995-09-22 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 127 min -
Рейтинг: - 8.6 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - $33,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Silence of the Lambs (1991) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1991-02-14 -
Жанр: - Crime - Drama - Thriller -
Продолжительность: - 118 min -
Рейтинг: - 8.6 -
Режиссер: - Crime - Drama - Thriller -
Актеры: - Crime - Drama - Thriller -
Бюджет: - $19,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Usual Suspects (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1995-09-15 -
Жанр: - Crime - Drama - Thriller -
Продолжительность: - 106 min -
Рейтинг: - 8.6 -
Режиссер: - Crime - Drama - Thriller -
Актеры: - Crime - Drama - Thriller -
Бюджет: - $6,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - It's a Wonderful Life (1946) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1947-01-07 -
Жанр: - Drama - Family - Fantasy -
Продолжительность: - 130 min -
Рейтинг: - 8.6 -
Режиссер: - Drama - Family - Fantasy -
Актеры: - Drama - Family - Fantasy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Life Is Beautiful (1997) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1999-02-12 -
Жанр: - Comedy - Drama - Romance -
Продолжительность: - 116 min -
Рейтинг: - 8.6 -
Режиссер: - Comedy - Drama - Romance -
Актеры: - Comedy - Drama - Romance -
Бюджет: - $20,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Léon: The Professional (1994) - -
Poster:Страна выпуска: - France -
Премьера(США): - 1994-11-18 -
Жанр: - Crime - Drama - Thriller -
Продолжительность: - 110 min -
Рейтинг: - 8.6 -
Режиссер: - Crime - Drama - Thriller -
Актеры: - Crime - Drama - Thriller -
Бюджет: - $32,346,209 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Once Upon a Time in the West (1968) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1968-12-21 -
Жанр: - Western -
Продолжительность: - 175 min -
Рейтинг: - 8.6 -
Режиссер: - Western -
Актеры: - Western -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Interstellar (2014) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2014-11-07 -
Жанр: - Adventure - Drama - Sci-Fi -
Продолжительность: - 169 min -
Рейтинг: - 8.7 -
Режиссер: - Adventure - Drama - Sci-Fi -
Актеры: - Adventure - Drama - Sci-Fi -
Бюджет: - $165,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Saving Private Ryan (1998) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1998-07-24 -
Жанр: - Action - Drama - War -
Продолжительность: - 169 min -
Рейтинг: - 8.6 -
Режиссер: - Action - Drama - War -
Актеры: - Action - Drama - War -
Бюджет: - $70,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - American History X (1998) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1998-11-20 -
Жанр: - Crime - Drama -
Продолжительность: - 119 min -
Рейтинг: - 8.6 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $7,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Casablanca (1942) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1943-01-23 -
Жанр: - Drama - Romance - War -
Продолжительность: - 102 min -
Рейтинг: - 8.6 -
Режиссер: - Drama - Romance - War -
Актеры: - Drama - Romance - War -
Бюджет: - $950,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Spirited Away (2001) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 2003-03-28 -
Жанр: - Animation - Adventure - Family -
Продолжительность: - 125 min -
Рейтинг: - 8.6 -
Режиссер: - Animation - Adventure - Family -
Актеры: - Animation - Adventure - Family -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Raiders of the Lost Ark (1981) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1981-06-12 -
Жанр: - Action - Adventure -
Продолжительность: - 115 min -
Рейтинг: - 8.6 -
Режиссер: - Action - Adventure -
Актеры: - Action - Adventure -
Бюджет: - $18,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - City Lights (1931) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1931-03-07 -
Жанр: - Comedy - Drama - Romance -
Продолжительность: - 87 min -
Рейтинг: - 8.6 -
Режиссер: - Comedy - Drama - Romance -
Актеры: - Comedy - Drama - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Psycho (1960) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1960-09-08 -
Жанр: - Horror - Mystery - Thriller -
Продолжительность: - 109 min -
Рейтинг: - 8.6 -
Режиссер: - Horror - Mystery - Thriller -
Актеры: - Horror - Mystery - Thriller -
Бюджет: - $32,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Rear Window (1954) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1954 -
Жанр: - Mystery - Thriller -
Продолжительность: - 112 min -
Рейтинг: - 8.6 -
Режиссер: - Mystery - Thriller -
Актеры: - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Intouchables (2011) - -
Poster:Страна выпуска: - France -
Премьера(США): - 2012-04-26 -
Жанр: - Biography - Comedy - Drama -
Продолжительность: - 112 min -
Рейтинг: - 8.6 -
Режиссер: - Biography - Comedy - Drama -
Актеры: - Biography - Comedy - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Modern Times (1936) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1936-02-25 -
Жанр: - Comedy - Drama -
Продолжительность: - 87 min -
Рейтинг: - 8.6 -
Режиссер: - Comedy - Drama -
Актеры: - Comedy - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Whiplash (2014) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2015-01-22 -
Жанр: - Drama - Music -
Продолжительность: - 107 min -
Рейтинг: - 8.6 -
Режиссер: - Drama - Music -
Актеры: - Drama - Music -
Бюджет: - $3,300,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Terminator 2: Judgment Day (1991) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1991-07-03 -
Жанр: - Action - Sci-Fi -
Продолжительность: - 137 min -
Рейтинг: - 8.5 -
Режиссер: - Action - Sci-Fi -
Актеры: - Action - Sci-Fi -
Бюджет: - $102,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Green Mile (1999) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1999-12-10 -
Жанр: - Crime - Drama - Fantasy -
Продолжительность: - 189 min -
Рейтинг: - 8.5 -
Режиссер: - Crime - Drama - Fantasy -
Актеры: - Crime - Drama - Fantasy -
Бюджет: - $60,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Pianist (2002) - -
Poster:Страна выпуска: - France -
Премьера(США): - 2003-03-28 -
Жанр: - Biography - Drama - War -
Продолжительность: - 150 min -
Рейтинг: - 8.5 -
Режиссер: - Biography - Drama - War -
Актеры: - Biography - Drama - War -
Бюджет: - $35,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Memento (2000) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2001-05-25 -
Жанр: - Mystery - Thriller -
Продолжительность: - 113 min -
Рейтинг: - 8.5 -
Режиссер: - Mystery - Thriller -
Актеры: - Mystery - Thriller -
Бюджет: - $9,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Departed (2006) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2006-10-06 -
Жанр: - Crime - Drama - Thriller -
Продолжительность: - 151 min -
Рейтинг: - 8.5 -
Режиссер: - Crime - Drama - Thriller -
Актеры: - Crime - Drama - Thriller -
Бюджет: - $90,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Gladiator (2000) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2000-05-05 -
Жанр: - Action - Drama -
Продолжительность: - 155 min -
Рейтинг: - 8.5 -
Режиссер: - Action - Drama -
Актеры: - Action - Drama -
Бюджет: - $103,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Apocalypse Now (1979) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1979-08-15 -
Жанр: - Drama - War -
Продолжительность: - 153 min -
Рейтинг: - 8.5 -
Режиссер: - Drama - War -
Актеры: - Drama - War -
Бюджет: - $31,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Back to the Future (1985) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1985-07-03 -
Жанр: - Adventure - Comedy - Sci-Fi -
Продолжительность: - 116 min -
Рейтинг: - 8.5 -
Режиссер: - Adventure - Comedy - Sci-Fi -
Актеры: - Adventure - Comedy - Sci-Fi -
Бюджет: - $19,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Sunset Blvd. (1950) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1950-08-25 -
Жанр: - Drama - Film-Noir -
Продолжительность: - 110 min -
Рейтинг: - 8.5 -
Режиссер: - Drama - Film-Noir -
Актеры: - Drama - Film-Noir -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb (1964) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1964-01-29 -
Жанр: - Comedy - War -
Продолжительность: - 95 min -
Рейтинг: - 8.5 -
Режиссер: - Comedy - War -
Актеры: - Comedy - War -
Бюджет: - $1,800,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Prestige (2006) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2006-10-20 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 130 min -
Рейтинг: - 8.5 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - $40,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Alien (1979) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1979-05-25 -
Жанр: - Horror - Sci-Fi -
Продолжительность: - 117 min -
Рейтинг: - 8.5 -
Режиссер: - Horror - Sci-Fi -
Актеры: - Horror - Sci-Fi -
Бюджет: - $11,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Inside Out (2015) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2015-06-19 -
Жанр: - Animation - Adventure - Comedy -
Продолжительность: - 94 min -
Рейтинг: - 8.6 -
Режиссер: - Animation - Adventure - Comedy -
Актеры: - Animation - Adventure - Comedy -
Бюджет: - $175,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Lion King (1994) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1994-06-24 -
Жанр: - Animation - Adventure - Drama -
Продолжительность: - 89 min -
Рейтинг: - 8.5 -
Режиссер: - Animation - Adventure - Drama -
Актеры: - Animation - Adventure - Drama -
Бюджет: - $45,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Lives of Others (2006) - -
Poster:Страна выпуска: - Germany -
Премьера(США): - 2007-03-30 -
Жанр: - Drama - Thriller -
Продолжительность: - 137 min -
Рейтинг: - 8.5 -
Режиссер: - Drama - Thriller -
Актеры: - Drama - Thriller -
Бюджет: - $2,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Great Dictator (1940) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1941-03-07 -
Жанр: - Comedy - Drama - War -
Продолжительность: - 125 min -
Рейтинг: - 8.5 -
Режиссер: - Comedy - Drama - War -
Актеры: - Comedy - Drama - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Cinema Paradiso (1988) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1990-02-23 -
Жанр: - Comedy - Drama -
Продолжительность: - 155 min -
Рейтинг: - 8.5 -
Режиссер: - Comedy - Drama -
Актеры: - Comedy - Drama -
Бюджет: - $5,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Shining (1980) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1980-05-23 -
Жанр: - Horror -
Продолжительность: - 146 min -
Рейтинг: - 8.4 -
Режиссер: - Horror -
Актеры: - Horror -
Бюджет: - $19,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Django Unchained (2012) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2012-12-25 -
Жанр: - Western -
Продолжительность: - 165 min -
Рейтинг: - 8.5 -
Режиссер: - Western -
Актеры: - Western -
Бюджет: - $100,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Paths of Glory (1957) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1957-10-25 -
Жанр: - Drama - War -
Продолжительность: - 88 min -
Рейтинг: - 8.5 -
Режиссер: - Drama - War -
Актеры: - Drama - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Dark Knight Rises (2012) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2012-07-20 -
Жанр: - Action - Thriller -
Продолжительность: - 165 min -
Рейтинг: - 8.5 -
Режиссер: - Action - Thriller -
Актеры: - Action - Thriller -
Бюджет: - $250,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - WALL·E (2008) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2008-06-27 -
Жанр: - Animation - Adventure - Family -
Продолжительность: - 98 min -
Рейтинг: - 8.4 -
Режиссер: - Animation - Adventure - Family -
Актеры: - Animation - Adventure - Family -
Бюджет: - $180,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - American Beauty (1999) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1999-10-01 -
Жанр: - Drama - Romance -
Продолжительность: - 122 min -
Рейтинг: - 8.4 -
Режиссер: - Drama - Romance -
Актеры: - Drama - Romance -
Бюджет: - $15,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Grave of the Fireflies (1988) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1988-04-16 -
Жанр: - Animation - Drama - War -
Продолжительность: - 89 min -
Рейтинг: - 8.5 -
Режиссер: - Animation - Drama - War -
Актеры: - Animation - Drama - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Aliens (1986) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1986-07-18 -
Жанр: - Action - Horror - Sci-Fi -
Продолжительность: - 137 min -
Рейтинг: - 8.4 -
Режиссер: - Action - Horror - Sci-Fi -
Актеры: - Action - Horror - Sci-Fi -
Бюджет: - $18,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Citizen Kane (1941) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1941-09-05 -
Жанр: - Drama - Mystery -
Продолжительность: - 119 min -
Рейтинг: - 8.4 -
Режиссер: - Drama - Mystery -
Актеры: - Drama - Mystery -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - North by Northwest (1959) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1959-09-26 -
Жанр: - Adventure - Mystery - Thriller -
Продолжительность: - 136 min -
Рейтинг: - 8.4 -
Режиссер: - Adventure - Mystery - Thriller -
Актеры: - Adventure - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Vertigo (1958) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1958 -
Жанр: - Mystery - Romance - Thriller -
Продолжительность: - 128 min -
Рейтинг: - 8.4 -
Режиссер: - Mystery - Romance - Thriller -
Актеры: - Mystery - Romance - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Oldboy (2003) - -
Poster:Страна выпуска: - South Korea -
Премьера(США): - 2003-11-21 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 120 min -
Рейтинг: - 8.4 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - $3,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Princess Mononoke (1997) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1997-07-12 -
Жанр: - Animation - Adventure - Fantasy -
Продолжительность: - 134 min -
Рейтинг: - 8.4 -
Режиссер: - Animation - Adventure - Fantasy -
Актеры: - Animation - Adventure - Fantasy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Das Boot (1981) - -
Poster:Страна выпуска: - West Germany -
Премьера(США): - 1982-02-10 -
Жанр: - Adventure - Drama - War -
Продолжительность: - 149 min -
Рейтинг: - 8.4 -
Режиссер: - Adventure - Drama - War -
Актеры: - Adventure - Drama - War -
Бюджет: - $14,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - M (1931) - -
Poster:Страна выпуска: - Germany -
Премьера(США): - 1931-08-31 -
Жанр: - Crime - Drama - Thriller -
Продолжительность: - 99 min -
Рейтинг: - 8.4 -
Режиссер: - Crime - Drama - Thriller -
Актеры: - Crime - Drama - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Star Wars: Episode VI - Return of the Jedi (1983) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1983-05-25 -
Жанр: - Action - Adventure - Fantasy -
Продолжительность: - 134 min -
Рейтинг: - 8.4 -
Режиссер: - Action - Adventure - Fantasy -
Актеры: - Action - Adventure - Fantasy -
Бюджет: - $32,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Amélie (2001) - -
Poster:Страна выпуска: - France -
Премьера(США): - 2002-02-08 -
Жанр: - Comedy - Romance -
Продолжительность: - 122 min -
Рейтинг: - 8.4 -
Режиссер: - Comedy - Romance -
Актеры: - Comedy - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Once Upon a Time in America (1984) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1984-09-28 -
Жанр: - Crime - Drama -
Продолжительность: - 229 min -
Рейтинг: - 8.4 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $30,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Witness for the Prosecution (1957) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1958-02-06 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 116 min -
Рейтинг: - 8.4 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Toy Story 3 (2010) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2010-06-18 -
Жанр: - Animation - Adventure - Comedy -
Продолжительность: - 103 min -
Рейтинг: - 8.4 -
Режиссер: - Animation - Adventure - Comedy -
Актеры: - Animation - Adventure - Comedy -
Бюджет: - $200,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Reservoir Dogs (1992) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1992-09-02 -
Жанр: - Crime - Drama -
Продолжительность: - 99 min -
Рейтинг: - 8.4 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $1,200,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Braveheart (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1995-05-24 -
Жанр: - Biography - Drama - History -
Продолжительность: - 178 min -
Рейтинг: - 8.4 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - $75,600,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - A Clockwork Orange (1971) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1972-02-02 -
Жанр: - Crime - Drama - Sci-Fi -
Продолжительность: - 136 min -
Рейтинг: - 8.4 -
Режиссер: - Crime - Drama - Sci-Fi -
Актеры: - Crime - Drama - Sci-Fi -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Double Indemnity (1944) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1944-04-24 -
Жанр: - Crime - Drama - Film-Noir -
Продолжительность: - 107 min -
Рейтинг: - 8.4 -
Режиссер: - Crime - Drama - Film-Noir -
Актеры: - Crime - Drama - Film-Noir -
Бюджет: - $927,262 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Taxi Driver (1976) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1976-02-08 -
Жанр: - Crime - Drama -
Продолжительность: - 113 min -
Рейтинг: - 8.4 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $1,300,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Requiem for a Dream (2000) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2000-12-15 -
Жанр: - Drama -
Продолжительность: - 102 min -
Рейтинг: - 8.4 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $4,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - To Kill a Mockingbird (1962) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1963-03-16 -
Жанр: - Drama -
Продолжительность: - 129 min -
Рейтинг: - 8.4 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $2,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Lawrence of Arabia (1962) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1962-12-10 -
Жанр: - Adventure - Biography - Drama -
Продолжительность: - 216 min -
Рейтинг: - 8.4 -
Режиссер: - Adventure - Biography - Drama -
Актеры: - Adventure - Biography - Drama -
Бюджет: - $15,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Eternal Sunshine of the Spotless Mind (2004) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2004-03-19 -
Жанр: - Drama - Romance - Sci-Fi -
Продолжительность: - 108 min -
Рейтинг: - 8.4 -
Режиссер: - Drama - Romance - Sci-Fi -
Актеры: - Drama - Romance - Sci-Fi -
Бюджет: - $20,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Full Metal Jacket (1987) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1987-07-10 -
Жанр: - Drama - War -
Продолжительность: - 116 min -
Рейтинг: - 8.3 -
Режиссер: - Drama - War -
Актеры: - Drama - War -
Бюджет: - $46,357,676 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Sting (1973) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1973-12-26 -
Жанр: - Comedy - Crime - Drama -
Продолжительность: - 129 min -
Рейтинг: - 8.4 -
Режиссер: - Comedy - Crime - Drama -
Актеры: - Comedy - Crime - Drama -
Бюджет: - $159,600,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Bicycle Thieves (1948) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1949-12-13 -
Жанр: - Drama -
Продолжительность: - 93 min -
Рейтинг: - 8.4 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Amadeus (1984) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1985-04-05 -
Жанр: - Biography - Drama - History -
Продолжительность: - 160 min -
Рейтинг: - 8.3 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - $18,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Singin' in the Rain (1952) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1952-04-11 -
Жанр: - Comedy - Musical - Romance -
Продолжительность: - 103 min -
Рейтинг: - 8.4 -
Режиссер: - Comedy - Musical - Romance -
Актеры: - Comedy - Musical - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Mad Max: Fury Road (2015) - -
Poster:Страна выпуска: - Australia -
Премьера(США): - 2015-05-15 -
Жанр: - Action - Adventure - Sci-Fi -
Продолжительность: - 120 min -
Рейтинг: - 8.4 -
Режиссер: - Action - Adventure - Sci-Fi -
Актеры: - Action - Adventure - Sci-Fi -
Бюджет: - $150,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Monty Python and the Holy Grail (1975) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1975-05-23 -
Жанр: - Adventure - Comedy - Fantasy -
Продолжительность: - 91 min -
Рейтинг: - 8.3 -
Режиссер: - Adventure - Comedy - Fantasy -
Актеры: - Adventure - Comedy - Fantasy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Snatch. (2000) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 2001-01-19 -
Жанр: - Comedy - Crime -
Продолжительность: - 102 min -
Рейтинг: - 8.3 -
Режиссер: - Comedy - Crime -
Актеры: - Comedy - Crime -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 2001: A Space Odyssey (1968) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1968-05-15 -
Жанр: - Mystery - Sci-Fi -
Продолжительность: - 160 min -
Рейтинг: - 8.3 -
Режиссер: - Mystery - Sci-Fi -
Актеры: - Mystery - Sci-Fi -
Бюджет: - $56,715,371 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Kid (1921) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1921-02-06 -
Жанр: - Comedy - Drama - Family -
Продолжительность: - 68 min -
Рейтинг: - 8.4 -
Режиссер: - Comedy - Drama - Family -
Актеры: - Comedy - Drama - Family -
Бюджет: - $2,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - For a Few Dollars More (1965) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1967-05-10 -
Жанр: - Western -
Продолжительность: - 132 min -
Рейтинг: - 8.3 -
Режиссер: - Western -
Актеры: - Western -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - L.A. Confidential (1997) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1997-09-19 -
Жанр: - Crime - Drama - Mystery -
Продолжительность: - 138 min -
Рейтинг: - 8.3 -
Режиссер: - Crime - Drama - Mystery -
Актеры: - Crime - Drama - Mystery -
Бюджет: - $35,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Rashomon (1950) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1951-12-26 -
Жанр: - Crime - Drama -
Продолжительность: - 88 min -
Рейтинг: - 8.3 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Toy Story (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1995-11-22 -
Жанр: - Animation - Adventure - Comedy -
Продолжительность: - 81 min -
Рейтинг: - 8.3 -
Режиссер: - Animation - Adventure - Comedy -
Актеры: - Animation - Adventure - Comedy -
Бюджет: - $30,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - All About Eve (1950) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1951-01-15 -
Жанр: - Drama -
Продолжительность: - 138 min -
Рейтинг: - 8.4 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Apartment (1960) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1960-09-16 -
Жанр: - Comedy - Drama - Romance -
Продолжительность: - 125 min -
Рейтинг: - 8.3 -
Режиссер: - Comedy - Drama - Romance -
Актеры: - Comedy - Drama - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Inglourious Basterds (2009) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2009-08-21 -
Жанр: - Adventure - Drama - War -
Продолжительность: - 153 min -
Рейтинг: - 8.3 -
Режиссер: - Adventure - Drama - War -
Актеры: - Adventure - Drama - War -
Бюджет: - $75,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Treasure of the Sierra Madre (1948) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1948-01-24 -
Жанр: - Action - Adventure - Drama -
Продолжительность: - 126 min -
Рейтинг: - 8.3 -
Режиссер: - Action - Adventure - Drama -
Актеры: - Action - Adventure - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - A Separation (2011) - -
Poster:Страна выпуска: - Iran -
Премьера(США): - 2011-03-16 -
Жанр: - Drama -
Продолжительность: - 123 min -
Рейтинг: - 8.4 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Indiana Jones and the Last Crusade (1989) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1989-05-24 -
Жанр: - Action - Adventure -
Продолжительность: - 127 min -
Рейтинг: - 8.3 -
Режиссер: - Action - Adventure -
Актеры: - Action - Adventure -
Бюджет: - $48,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Metropolis (1927) - -
Poster:Страна выпуска: - Germany -
Премьера(США): - 1927-03-13 -
Жанр: - Drama - Sci-Fi -
Продолжительность: - 153 min -
Рейтинг: - 8.3 -
Режиссер: - Drama - Sci-Fi -
Актеры: - Drama - Sci-Fi -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Third Man (1949) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1949-08-31 -
Жанр: - Film-Noir - Mystery - Thriller -
Продолжительность: - 93 min -
Рейтинг: - 8.3 -
Режиссер: - Film-Noir - Mystery - Thriller -
Актеры: - Film-Noir - Mystery - Thriller -
Бюджет: - $449,191 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Yojimbo (1961) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1961-09-13 -
Жанр: - Drama -
Продолжительность: - 110 min -
Рейтинг: - 8.3 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Batman Begins (2005) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2005-06-15 -
Жанр: - Action - Adventure -
Продолжительность: - 140 min -
Рейтинг: - 8.3 -
Режиссер: - Action - Adventure -
Актеры: - Action - Adventure -
Бюджет: - $150,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Some Like It Hot (1959) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1959-03-29 -
Жанр: - Comedy -
Продолжительность: - 120 min -
Рейтинг: - 8.3 -
Режиссер: - Comedy -
Актеры: - Comedy -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Scarface (1983) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1983-12-09 -
Жанр: - Crime - Drama -
Продолжительность: - 170 min -
Рейтинг: - 8.3 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Unforgiven (1992) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1992-08-07 -
Жанр: - Western -
Продолжительность: - 131 min -
Рейтинг: - 8.3 -
Режиссер: - Western -
Актеры: - Western -
Бюджет: - $14,400,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Up (2009) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2009-05-29 -
Жанр: - Animation - Adventure - Comedy -
Продолжительность: - 96 min -
Рейтинг: - 8.3 -
Режиссер: - Animation - Adventure - Comedy -
Актеры: - Animation - Adventure - Comedy -
Бюджет: - $175,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 3 Idiots (2009) - -
Poster:Страна выпуска: - India -
Премьера(США): - 2009-12-25 -
Жанр: - Comedy - Drama -
Продолжительность: - 170 min -
Рейтинг: - 8.5 -
Режиссер: - Comedy - Drama -
Актеры: - Comedy - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Raging Bull (1980) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1980-12-19 -
Жанр: - Biography - Drama - Sport -
Продолжительность: - 129 min -
Рейтинг: - 8.3 -
Режиссер: - Biography - Drama - Sport -
Актеры: - Biography - Drama - Sport -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Downfall (2004) - -
Poster:Страна выпуска: - Germany -
Премьера(США): - 2005-04-08 -
Жанр: - Biography - Drama - History -
Продолжительность: - 156 min -
Рейтинг: - 8.3 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Hunt (2012) - -
Poster:Страна выпуска: - Denmark -
Премьера(США): - 2013-01-10 -
Жанр: - Drama -
Продолжительность: - 115 min -
Рейтинг: - 8.3 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $3,800,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Chinatown (1974) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1974-06-20 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 130 min -
Рейтинг: - 8.3 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Great Escape (1963) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1963-07-04 -
Жанр: - Adventure - Drama - History -
Продолжительность: - 172 min -
Рейтинг: - 8.3 -
Режиссер: - Adventure - Drama - History -
Актеры: - Adventure - Drama - History -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Die Hard (1988) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1988-07-20 -
Жанр: - Action - Thriller -
Продолжительность: - 131 min -
Рейтинг: - 8.3 -
Режиссер: - Action - Thriller -
Актеры: - Action - Thriller -
Бюджет: - $28,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Good Will Hunting (1997) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1998-01-09 -
Жанр: - Drama -
Продолжительность: - 126 min -
Рейтинг: - 8.3 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $10,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - On the Waterfront (1954) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1954-06-22 -
Жанр: - Crime - Drama -
Продолжительность: - 108 min -
Рейтинг: - 8.3 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - $910,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Heat (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1995-12-15 -
Жанр: - Action - Crime - Drama -
Продолжительность: - 170 min -
Рейтинг: - 8.3 -
Режиссер: - Action - Crime - Drama -
Актеры: - Action - Crime - Drama -
Бюджет: - $67,436,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Pan's Labyrinth (2006) - -
Poster:Страна выпуска: - Spain -
Премьера(США): - 2007-01-19 -
Жанр: - Drama - Fantasy - War -
Продолжительность: - 118 min -
Рейтинг: - 8.3 -
Режиссер: - Drama - Fantasy - War -
Актеры: - Drama - Fantasy - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Mr. Smith Goes to Washington (1939) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1939-10-19 -
Жанр: - Drama -
Продолжительность: - 129 min -
Рейтинг: - 8.3 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Bridge on the River Kwai (1957) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1957-12-14 -
Жанр: - Adventure - Drama - War -
Продолжительность: - 161 min -
Рейтинг: - 8.2 -
Режиссер: - Adventure - Drama - War -
Актеры: - Adventure - Drama - War -
Бюджет: - $27,200,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - My Neighbor Totoro (1988) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1988-04-16 -
Жанр: - Animation - Family - Fantasy -
Продолжительность: - 86 min -
Рейтинг: - 8.3 -
Режиссер: - Animation - Family - Fantasy -
Актеры: - Animation - Family - Fantasy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Ran (1985) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1985-06-01 -
Жанр: - Action - Drama - War -
Продолжительность: - 162 min -
Рейтинг: - 8.3 -
Режиссер: - Action - Drama - War -
Актеры: - Action - Drama - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Ikiru (1952) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1956-03-25 -
Жанр: - Drama -
Продолжительность: - 143 min -
Рейтинг: - 8.3 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Seventh Seal (1957) - -
Poster:Страна выпуска: - Sweden -
Премьера(США): - 1958-10-13 -
Жанр: - Drama - Fantasy -
Продолжительность: - 96 min -
Рейтинг: - 8.3 -
Режиссер: - Drama - Fantasy -
Актеры: - Drama - Fantasy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Gold Rush (1925) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1925 -
Жанр: - Adventure - Comedy - Drama -
Продолжительность: - 95 min -
Рейтинг: - 8.3 -
Режиссер: - Adventure - Comedy - Drama -
Актеры: - Adventure - Comedy - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Wild Strawberries (1957) - -
Poster:Страна выпуска: - Sweden -
Премьера(США): - 1959-06-22 -
Жанр: - Drama -
Продолжительность: - 91 min -
Рейтинг: - 8.3 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Blade Runner (1982) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1982-06-25 -
Жанр: - Sci-Fi - Thriller -
Продолжительность: - 117 min -
Рейтинг: - 8.2 -
Режиссер: - Sci-Fi - Thriller -
Актеры: - Sci-Fi - Thriller -
Бюджет: - $28,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Secret in Their Eyes (2009) - -
Poster:Страна выпуска: - Argentina -
Премьера(США): - 2010-05-21 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 129 min -
Рейтинг: - 8.3 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The General (1926) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1927-02-24 -
Жанр: - Action - Adventure - Comedy -
Продолжительность: - 67 min -
Рейтинг: - 8.3 -
Режиссер: - Action - Adventure - Comedy -
Актеры: - Action - Adventure - Comedy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Lock, Stock and Two Smoking Barrels (1998) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1998-08-28 -
Жанр: - Comedy - Crime -
Продолжительность: - 107 min -
Рейтинг: - 8.2 -
Режиссер: - Comedy - Crime -
Актеры: - Comedy - Crime -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Elephant Man (1980) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1980-10-10 -
Жанр: - Biography - Drama -
Продолжительность: - 124 min -
Рейтинг: - 8.2 -
Режиссер: - Biography - Drama -
Актеры: - Biography - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Casino (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1995-11-22 -
Жанр: - Biography - Crime - Drama -
Продолжительность: - 178 min -
Рейтинг: - 8.2 -
Режиссер: - Biography - Crime - Drama -
Актеры: - Biography - Crime - Drama -
Бюджет: - $42,438,300 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Wolf of Wall Street (2013) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2013-12-25 -
Жанр: - Biography - Comedy - Crime -
Продолжительность: - 180 min -
Рейтинг: - 8.2 -
Режиссер: - Biography - Comedy - Crime -
Актеры: - Biography - Comedy - Crime -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Howl's Moving Castle (2004) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 2005-06-17 -
Жанр: - Animation - Adventure - Family -
Продолжительность: - 119 min -
Рейтинг: - 8.2 -
Режиссер: - Animation - Adventure - Family -
Актеры: - Animation - Adventure - Family -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Warrior (2011) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2011-09-09 -
Жанр: - Drama - Sport -
Продолжительность: - 140 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Sport -
Актеры: - Drama - Sport -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Gran Torino (2008) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2009-01-09 -
Жанр: - Drama -
Продолжительность: - 116 min -
Рейтинг: - 8.2 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - V for Vendetta (2005) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2006-03-17 -
Жанр: - Action - Drama - Thriller -
Продолжительность: - 132 min -
Рейтинг: - 8.2 -
Режиссер: - Action - Drama - Thriller -
Актеры: - Action - Drama - Thriller -
Бюджет: - $54,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Big Lebowski (1998) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1998-03-06 -
Жанр: - Comedy - Crime -
Продолжительность: - 117 min -
Рейтинг: - 8.2 -
Режиссер: - Comedy - Crime -
Актеры: - Comedy - Crime -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Rebecca (1940) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1940-04-12 -
Жанр: - Mystery - Thriller -
Продолжительность: - 130 min -
Рейтинг: - 8.2 -
Режиссер: - Mystery - Thriller -
Актеры: - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Judgment at Nuremberg (1961) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1961-12-18 -
Жанр: - Drama - History - War -
Продолжительность: - 186 min -
Рейтинг: - 8.3 -
Режиссер: - Drama - History - War -
Актеры: - Drama - History - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - A Beautiful Mind (2001) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2002-01-04 -
Жанр: - Biography - Drama -
Продолжительность: - 135 min -
Рейтинг: - 8.2 -
Режиссер: - Biography - Drama -
Актеры: - Biography - Drama -
Бюджет: - $58,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Deer Hunter (1978) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1979-02-23 -
Жанр: - Drama - War -
Продолжительность: - 183 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - War -
Актеры: - Drama - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - How to Train Your Dragon (2010) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2010-03-26 -
Жанр: - Animation - Adventure - Family -
Продолжительность: - 98 min -
Рейтинг: - 8.2 -
Режиссер: - Animation - Adventure - Family -
Актеры: - Animation - Adventure - Family -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Cool Hand Luke (1967) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1967-11-01 -
Жанр: - Crime - Drama -
Продолжительность: - 126 min -
Рейтинг: - 8.2 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Gone with the Wind (1939) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1940-01-17 -
Жанр: - Drama - Romance - War -
Продолжительность: - 238 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Romance - War -
Актеры: - Drama - Romance - War -
Бюджет: - $3,977,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Fargo (1996) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1996-04-05 -
Жанр: - Crime - Drama - Thriller -
Продолжительность: - 98 min -
Рейтинг: - 8.2 -
Режиссер: - Crime - Drama - Thriller -
Актеры: - Crime - Drama - Thriller -
Бюджет: - $7,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Trainspotting (1996) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1996-02-23 -
Жанр: - Drama -
Продолжительность: - 94 min -
Рейтинг: - 8.2 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $3,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - It Happened One Night (1934) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1934-02-23 -
Жанр: - Comedy - Romance -
Продолжительность: - 105 min -
Рейтинг: - 8.2 -
Режиссер: - Comedy - Romance -
Актеры: - Comedy - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Gone Girl (2014) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2014-10-03 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 149 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - $61,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Into the Wild (2007) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2007-10-19 -
Жанр: - Adventure - Biography - Drama -
Продолжительность: - 148 min -
Рейтинг: - 8.2 -
Режиссер: - Adventure - Biography - Drama -
Актеры: - Adventure - Biography - Drama -
Бюджет: - $15,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Dial M for Murder (1954) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1954-05-29 -
Жанр: - Crime - Thriller -
Продолжительность: - 105 min -
Рейтинг: - 8.2 -
Режиссер: - Crime - Thriller -
Актеры: - Crime - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Sixth Sense (1999) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1999-08-06 -
Жанр: - Drama - Mystery - Thriller -
Продолжительность: - 107 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Mystery - Thriller -
Актеры: - Drama - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Rush (2013) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 2013-09-27 -
Жанр: - Action - Biography - Drama -
Продолжительность: - 123 min -
Рейтинг: - 8.2 -
Режиссер: - Action - Biography - Drama -
Актеры: - Action - Biography - Drama -
Бюджет: - $38,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Maltese Falcon (1941) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1941-10-18 -
Жанр: - Crime - Drama - Film-Noir -
Продолжительность: - 100 min -
Рейтинг: - 8.2 -
Режиссер: - Crime - Drama - Film-Noir -
Актеры: - Crime - Drama - Film-Noir -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Finding Nemo (2003) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2003-05-30 -
Жанр: - Animation - Adventure - Comedy -
Продолжительность: - 100 min -
Рейтинг: - 8.2 -
Режиссер: - Animation - Adventure - Comedy -
Актеры: - Animation - Adventure - Comedy -
Бюджет: - $94,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Mary and Max (2009) - -
Poster:Страна выпуска: - Australia -
Премьера(США): - 2009-04-09 -
Жанр: - Animation - Comedy - Drama -
Продолжительность: - 92 min -
Рейтинг: - 8.2 -
Режиссер: - Animation - Comedy - Drama -
Актеры: - Animation - Comedy - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Thing (1982) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1982-06-25 -
Жанр: - Horror - Sci-Fi -
Продолжительность: - 109 min -
Рейтинг: - 8.2 -
Режиссер: - Horror - Sci-Fi -
Актеры: - Horror - Sci-Fi -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - No Country for Old Men (2007) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2007-11-21 -
Жанр: - Crime - Drama - Thriller -
Продолжительность: - 122 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama - Thriller -
Актеры: - Crime - Drama - Thriller -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Hotel Rwanda (2004) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 2005-02-04 -
Жанр: - Drama - History - War -
Продолжительность: - 121 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - History - War -
Актеры: - Drama - History - War -
Бюджет: - $17,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Kill Bill: Vol. 1 (2003) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2003-10-10 -
Жанр: - Action -
Продолжительность: - 111 min -
Рейтинг: - 8.1 -
Режиссер: - Action -
Актеры: - Action -
Бюджет: - $30,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Incendies (2010) - -
Poster:Страна выпуска: - Canada -
Премьера(США): - 2011-01-12 -
Жанр: - Drama - Mystery - War -
Продолжительность: - 139 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Mystery - War -
Актеры: - Drama - Mystery - War -
Бюджет: - $6,800,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Wages of Fear (1953) - -
Poster:Страна выпуска: - France -
Премьера(США): - 1955-02-16 -
Жанр: - Adventure - Drama - Thriller -
Продолжительность: - 131 min -
Рейтинг: - 8.2 -
Режиссер: - Adventure - Drama - Thriller -
Актеры: - Adventure - Drama - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Platoon (1986) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1987-02-06 -
Жанр: - Drama - War -
Продолжительность: - 120 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - War -
Актеры: - Drama - War -
Бюджет: - $6,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Life of Brian (1979) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1979-08-17 -
Жанр: - Comedy -
Продолжительность: - 94 min -
Рейтинг: - 8.1 -
Режиссер: - Comedy -
Актеры: - Comedy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Butch Cassidy and the Sundance Kid (1969) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1969-10-24 -
Жанр: - Biography - Crime - Western -
Продолжительность: - 110 min -
Рейтинг: - 8.1 -
Режиссер: - Biography - Crime - Western -
Актеры: - Biography - Crime - Western -
Бюджет: - $102,308,900 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Network (1976) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1976-11-27 -
Жанр: - Drama -
Продолжительность: - 121 min -
Рейтинг: - 8.2 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - There Will Be Blood (2007) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2008-01-25 -
Жанр: - Drama -
Продолжительность: - 158 min -
Рейтинг: - 8.1 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Touch of Evil (1958) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1958-05-01 -
Жанр: - Crime - Film-Noir - Thriller -
Продолжительность: - 95 min -
Рейтинг: - 8.2 -
Режиссер: - Crime - Film-Noir - Thriller -
Актеры: - Crime - Film-Noir - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The 400 Blows (1959) - -
Poster:Страна выпуска: - France -
Премьера(США): - 1959-11-16 -
Жанр: - Crime - Drama -
Продолжительность: - 99 min -
Рейтинг: - 8.2 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Stand by Me (1986) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1986-08-22 -
Жанр: - Adventure - Drama -
Продолжительность: - 89 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Drama -
Актеры: - Adventure - Drama -
Бюджет: - $8,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 12 Years a Slave (2013) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2013-11-08 -
Жанр: - Biography - Drama - History -
Продолжительность: - 134 min -
Рейтинг: - 8.1 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - $20,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Princess Bride (1987) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1987-10-09 -
Жанр: - Adventure - Comedy - Family -
Продолжительность: - 98 min -
Рейтинг: - 8.2 -
Режиссер: - Adventure - Comedy - Family -
Актеры: - Adventure - Comedy - Family -
Бюджет: - $16,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Annie Hall (1977) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1977-04-20 -
Жанр: - Comedy - Drama - Romance -
Продолжительность: - 93 min -
Рейтинг: - 8.1 -
Режиссер: - Comedy - Drama - Romance -
Актеры: - Comedy - Drama - Romance -
Бюджет: - $4,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Persona (1966) - -
Poster:Страна выпуска: - Sweden -
Премьера(США): - 1967-03-16 -
Жанр: - Drama -
Продолжительность: - 83 min -
Рейтинг: - 8.2 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Grand Budapest Hotel (2014) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2014-03-28 -
Жанр: - Adventure - Comedy - Drama -
Продолжительность: - 99 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Comedy - Drama -
Актеры: - Adventure - Comedy - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Amores Perros (2000) - -
Poster:Страна выпуска: - Mexico -
Премьера(США): - 2001-04-13 -
Жанр: - Drama - Thriller -
Продолжительность: - 154 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Thriller -
Актеры: - Drama - Thriller -
Бюджет: - $2,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - In the Name of the Father (1993) - -
Poster:Страна выпуска: - Ireland -
Премьера(США): - 1994-02-25 -
Жанр: - Biography - Drama - History -
Продолжительность: - 133 min -
Рейтинг: - 8.1 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - $25,010,410 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Million Dollar Baby (2004) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2005-01-28 -
Жанр: - Drama - Sport -
Продолжительность: - 132 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Sport -
Актеры: - Drama - Sport -
Бюджет: - $30,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Ben-Hur (1959) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1959-12-26 -
Жанр: - Adventure - Drama - History -
Продолжительность: - 212 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Drama - History -
Актеры: - Adventure - Drama - History -
Бюджет: - $15,900,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Grapes of Wrath (1940) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1940-03-15 -
Жанр: - Drama -
Продолжительность: - 129 min -
Рейтинг: - 8.1 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Hachi: A Dog's Tale (2009) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2010-03-12 -
Жанр: - Drama - Family -
Продолжительность: - 93 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Family -
Актеры: - Drama - Family -
Бюджет: - $16,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Nausicaä of the Valley of the Wind (1984) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1984-03-11 -
Жанр: - Animation - Adventure - Fantasy -
Продолжительность: - 117 min -
Рейтинг: - 8.1 -
Режиссер: - Animation - Adventure - Fantasy -
Актеры: - Animation - Adventure - Fantasy -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Diabolique (1955) - -
Poster:Страна выпуска: - France -
Премьера(США): - 1955-11-21 -
Жанр: - Drama - Horror - Thriller -
Продолжительность: - 116 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Horror - Thriller -
Актеры: - Drama - Horror - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Sin City (2005) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2005-04-01 -
Жанр: - Crime - Thriller -
Продолжительность: - 124 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Thriller -
Актеры: - Crime - Thriller -
Бюджет: - $40,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Shutter Island (2010) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2010-02-19 -
Жанр: - Mystery - Thriller -
Продолжительность: - 138 min -
Рейтинг: - 8.1 -
Режиссер: - Mystery - Thriller -
Актеры: - Mystery - Thriller -
Бюджет: - $80,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Stalker (1979) - -
Poster:Страна выпуска: - Soviet Union -
Премьера(США): - 1980-04-17 -
Жанр: - Drama - Sci-Fi -
Продолжительность: - 163 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Sci-Fi -
Актеры: - Drama - Sci-Fi -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Wizard of Oz (1939) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1939-08-25 -
Жанр: - Adventure - Family - Fantasy -
Продолжительность: - 102 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Family - Fantasy -
Актеры: - Adventure - Family - Fantasy -
Бюджет: - $2,800,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Best Years of Our Lives (1946) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1947-06-17 -
Жанр: - Drama - Romance - War -
Продолжительность: - 172 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - Romance - War -
Актеры: - Drama - Romance - War -
Бюджет: - $23,650,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Gandhi (1982) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1983-02-25 -
Жанр: - Biography - Drama - History -
Продолжительность: - 191 min -
Рейтинг: - 8.1 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - $22,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Bourne Ultimatum (2007) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2007-08-03 -
Жанр: - Action - Thriller -
Продолжительность: - 115 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Thriller -
Актеры: - Action - Thriller -
Бюджет: - $110,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Donnie Darko (2001) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2001-10-26 -
Жанр: - Drama - Sci-Fi -
Продолжительность: - 113 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Sci-Fi -
Актеры: - Drama - Sci-Fi -
Бюджет: - $4,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 8½ (1963) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1963-06-25 -
Жанр: - Drama -
Продолжительность: - 138 min -
Рейтинг: - 8.1 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Strangers on a Train (1951) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1951-06-30 -
Жанр: - Crime - Film-Noir - Thriller -
Продолжительность: - 101 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Film-Noir - Thriller -
Актеры: - Crime - Film-Noir - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Avengers (2012) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2012-05-04 -
Жанр: - Action - Adventure - Sci-Fi -
Продолжительность: - 143 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Adventure - Sci-Fi -
Актеры: - Action - Adventure - Sci-Fi -
Бюджет: - $220,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Wild Tales (2014) - -
Poster:Страна выпуска: - Argentina -
Премьера(США): - 2014-08-21 -
Жанр: - Comedy - Drama - Thriller -
Продолжительность: - 122 min -
Рейтинг: - 8.2 -
Режиссер: - Comedy - Drama - Thriller -
Актеры: - Comedy - Drama - Thriller -
Бюджет: - $3,300,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Jurassic Park (1993) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1993-06-11 -
Жанр: - Adventure - Sci-Fi - Thriller -
Продолжительность: - 127 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Sci-Fi - Thriller -
Актеры: - Adventure - Sci-Fi - Thriller -
Бюджет: - $63,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Before Sunrise (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1995-01-29 -
Жанр: - Drama - Romance -
Продолжительность: - 105 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Romance -
Актеры: - Drama - Romance -
Бюджет: - $5,400,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Twelve Monkeys (1995) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1996-01-05 -
Жанр: - Mystery - Sci-Fi - Thriller -
Продолжительность: - 129 min -
Рейтинг: - 8.1 -
Режиссер: - Mystery - Sci-Fi - Thriller -
Актеры: - Mystery - Sci-Fi - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Battle of Algiers (1966) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1967-09-20 -
Жанр: - Drama - History - War -
Продолжительность: - 121 min -
Рейтинг: - 8.2 -
Режиссер: - Drama - History - War -
Актеры: - Drama - History - War -
Бюджет: - $800,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Infernal Affairs (2002) - -
Poster:Страна выпуска: - Hong Kong -
Премьера(США): - 2002-12-12 -
Жанр: - Crime - Mystery - Thriller -
Продолжительность: - 101 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Mystery - Thriller -
Актеры: - Crime - Mystery - Thriller -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Terminator (1984) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1984-10-26 -
Жанр: - Action - Sci-Fi -
Продолжительность: - 107 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Sci-Fi -
Актеры: - Action - Sci-Fi -
Бюджет: - $6,400,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Jaws (1975) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1975-06-20 -
Жанр: - Adventure - Drama - Thriller -
Продолжительность: - 124 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Drama - Thriller -
Актеры: - Adventure - Drama - Thriller -
Бюджет: - $8,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Guardians of the Galaxy (2014) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2014-08-01 -
Жанр: - Action - Adventure - Sci-Fi -
Продолжительность: - 121 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Adventure - Sci-Fi -
Актеры: - Action - Adventure - Sci-Fi -
Бюджет: - $170,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Throne of Blood (1957) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1961-11-22 -
Жанр: - Action - Drama -
Продолжительность: - 110 min -
Рейтинг: - 8.2 -
Режиссер: - Action - Drama -
Актеры: - Action - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Groundhog Day (1993) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1993-02-12 -
Жанр: - Comedy - Romance -
Продолжительность: - 101 min -
Рейтинг: - 8.1 -
Режиссер: - Comedy - Romance -
Актеры: - Comedy - Romance -
Бюджет: - $70,906,973 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Memories of Murder (2003) - -
Poster:Страна выпуска: - South Korea -
Премьера(США): - 2003-05-02 -
Жанр: - Crime - Drama - Mystery -
Продолжительность: - 132 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama - Mystery -
Актеры: - Crime - Drama - Mystery -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Monsters, Inc. (2001) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2001-11-02 -
Жанр: - Animation - Adventure - Comedy -
Продолжительность: - 92 min -
Рейтинг: - 8.1 -
Режиссер: - Animation - Adventure - Comedy -
Актеры: - Animation - Adventure - Comedy -
Бюджет: - $115,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Fanny and Alexander (1982) - -
Poster:Страна выпуска: - Sweden -
Премьера(США): - 1982-12-17 -
Жанр: - Drama -
Продолжительность: - 188 min -
Рейтинг: - 8.2 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Harry Potter and the Deathly Hallows: Part 2 (2011) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2011-07-15 -
Жанр: - Adventure - Drama - Fantasy -
Продолжительность: - 130 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Drama - Fantasy -
Актеры: - Adventure - Drama - Fantasy -
Бюджет: - $125,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Rocky (1976) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1976-12-03 -
Жанр: - Drama - Sport -
Продолжительность: - 119 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Sport -
Актеры: - Drama - Sport -
Бюджет: - $960,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Barry Lyndon (1975) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 1975-12-18 -
Жанр: - Adventure - Drama - History -
Продолжительность: - 184 min -
Рейтинг: - 8.1 -
Режиссер: - Adventure - Drama - History -
Актеры: - Adventure - Drama - History -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Truman Show (1998) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1998-06-05 -
Жанр: - Drama -
Продолжительность: - 103 min -
Рейтинг: - 8.1 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $60,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - High Noon (1952) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1952-07-30 -
Жанр: - Drama - Thriller - Western -
Продолжительность: - 85 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Thriller - Western -
Актеры: - Drama - Thriller - Western -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Dog Day Afternoon (1975) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1975-09-21 -
Жанр: - Crime - Drama -
Продолжительность: - 125 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The King's Speech (2010) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 2010-12-25 -
Жанр: - Biography - Drama - History -
Продолжительность: - 118 min -
Рейтинг: - 8.1 -
Режиссер: - Biography - Drama - History -
Актеры: - Biography - Drama - History -
Бюджет: - $15,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Imitation Game (2014) - -
Poster:Страна выпуска: - UK -
Премьера(США): - 2014-12-25 -
Жанр: - Biography - Drama - Thriller -
Продолжительность: - 114 min -
Рейтинг: - 8.1 -
Режиссер: - Biography - Drama - Thriller -
Актеры: - Biography - Drama - Thriller -
Бюджет: - $14,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Ip Man (2008) - -
Poster:Страна выпуска: - Hong Kong -
Премьера(США): - 2008-12-12 -
Жанр: - Action - Biography - Drama -
Продолжительность: - 106 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Biography - Drama -
Актеры: - Action - Biography - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - La Haine (1995) - -
Poster:Страна выпуска: - France -
Премьера(США): - 1996-02-23 -
Жанр: - Crime - Drama -
Продолжительность: - 98 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama -
Актеры: - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - A Fistful of Dollars (1964) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1967-01-18 -
Жанр: - Action - Drama - Western -
Продолжительность: - 99 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Drama - Western -
Актеры: - Action - Drama - Western -
Бюджет: - $3,500,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Notorious (1946) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1946-09-06 -
Жанр: - Drama - Film-Noir - Romance -
Продолжительность: - 101 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Film-Noir - Romance -
Актеры: - Drama - Film-Noir - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Pirates of the Caribbean: The Curse of the Black Pearl (2003) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2003-07-09 -
Жанр: - Action - Adventure - Fantasy -
Продолжительность: - 143 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Adventure - Fantasy -
Актеры: - Action - Adventure - Fantasy -
Бюджет: - $140,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Castle in the Sky (1986) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 1986-08-02 -
Жанр: - Animation - Adventure - Family -
Продолжительность: - 124 min -
Рейтинг: - 8.1 -
Режиссер: - Animation - Adventure - Family -
Актеры: - Animation - Adventure - Family -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Who's Afraid of Virginia Woolf? (1966) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1966-06-22 -
Жанр: - Drama - Romance -
Продолжительность: - 131 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Romance -
Актеры: - Drama - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Help (2011) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2011-08-10 -
Жанр: - Drama -
Продолжительность: - 146 min -
Рейтинг: - 8.1 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Roman Holiday (1953) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1953-09-02 -
Жанр: - Comedy - Romance -
Продолжительность: - 118 min -
Рейтинг: - 8.1 -
Режиссер: - Comedy - Romance -
Актеры: - Comedy - Romance -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Prisoners (2013) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2013-09-20 -
Жанр: - Crime - Drama - Mystery -
Продолжительность: - 153 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama - Mystery -
Актеры: - Crime - Drama - Mystery -
Бюджет: - $46,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Night of the Hunter (1955) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1955-11-24 -
Жанр: - Crime - Drama - Film-Noir -
Продолжительность: - 92 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama - Film-Noir -
Актеры: - Crime - Drama - Film-Noir -
Бюджет: - $795,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Spring, Summer, Fall, Winter... and Spring (2003) - -
Poster:Страна выпуска: - South Korea -
Премьера(США): - 2004-05-28 -
Жанр: - Drama -
Продолжительность: - 103 min -
Рейтинг: - 8.1 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - La Strada (1954) - -
Poster:Страна выпуска: - Italy -
Премьера(США): - 1956-07-16 -
Жанр: - Drama -
Продолжительность: - 108 min -
Рейтинг: - 8.1 -
Режиссер: - Drama -
Актеры: - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Underground (1995) - -
Poster:Страна выпуска: - France -
Премьера(США): - 1997-06-20 -
Жанр: - Comedy - Drama - War -
Продолжительность: - 167 min -
Рейтинг: - 8.2 -
Режиссер: - Comedy - Drama - War -
Актеры: - Comedy - Drama - War -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - X-Men: Days of Future Past (2014) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2014-05-23 -
Жанр: - Action - Adventure - Sci-Fi -
Продолжительность: - 132 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Adventure - Sci-Fi -
Актеры: - Action - Adventure - Sci-Fi -
Бюджет: - $200,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Beauty and the Beast (1991) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1991-11-22 -
Жанр: - Animation - Family - Fantasy -
Продолжительность: - 84 min -
Рейтинг: - 8.0 -
Режиссер: - Animation - Family - Fantasy -
Актеры: - Animation - Family - Fantasy -
Бюджет: - $25,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Papillon (1973) - -
Poster:Страна выпуска: - France -
Премьера(США): - 1973-12-16 -
Жанр: - Biography - Crime - Drama -
Продолжительность: - 151 min -
Рейтинг: - 8.1 -
Режиссер: - Biography - Crime - Drama -
Актеры: - Biography - Crime - Drama -
Бюджет: - $12,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Before Sunset (2004) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 2004-07-30 -
Жанр: - Drama - Romance -
Продолжительность: - 80 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Romance -
Актеры: - Drama - Romance -
Бюджет: - $2,700,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Big Sleep (1946) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1946-08-31 -
Жанр: - Crime - Film-Noir - Mystery -
Продолжительность: - 114 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Film-Noir - Mystery -
Актеры: - Crime - Film-Noir - Mystery -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Departures (2008) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 2009-06-19 -
Жанр: - Drama - Music -
Продолжительность: - 130 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Music -
Актеры: - Drama - Music -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Killing (1956) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1956-06-06 -
Жанр: - Crime - Film-Noir - Thriller -
Продолжительность: - 85 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Film-Noir - Thriller -
Актеры: - Crime - Film-Noir - Thriller -
Бюджет: - $320,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Akira (1988) - -
Poster:Страна выпуска: - Japan -
Премьера(США): - 2001-07-24 -
Жанр: - Animation - Action - Sci-Fi -
Продолжительность: - 124 min -
Рейтинг: - 8.1 -
Режиссер: - Animation - Action - Sci-Fi -
Актеры: - Animation - Action - Sci-Fi -
Бюджет: - $439,162 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Laura (1944) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1944-11 -
Жанр: - Crime - Drama - Film-Noir -
Продолжительность: - 88 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama - Film-Noir -
Актеры: - Crime - Drama - Film-Noir -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Anatomy of a Murder (1959) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1959-09 -
Жанр: - Crime - Drama - Mystery -
Продолжительность: - 160 min -
Рейтинг: - 8.1 -
Режиссер: - Crime - Drama - Mystery -
Актеры: - Crime - Drama - Mystery -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Graduate (1967) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1967-12-22 -
Жанр: - Comedy - Drama - Romance -
Продолжительность: - 106 min -
Рейтинг: - 8.0 -
Режиссер: - Comedy - Drama - Romance -
Актеры: - Comedy - Drama - Romance -
Бюджет: - $3,000,000 -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - The Hustler (1961) - -
Poster:Страна выпуска: - USA -
Премьера(США): - 1961-09-25 -
Жанр: - Drama - Sport -
Продолжительность: - 134 min -
Рейтинг: - 8.1 -
Режиссер: - Drama - Sport -
Актеры: - Drama - Sport -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Elite Squad: The Enemy Within (2010) - -
Poster:Страна выпуска: - Brazil -
Премьера(США): - 2010-10-08 -
Жанр: - Action - Crime - Drama -
Продолжительность: - 115 min -
Рейтинг: - 8.1 -
Режиссер: - Action - Crime - Drama -
Актеры: - Action - Crime - Drama -
Бюджет: - Нет данных о бюджете данного фильма -
-

-
- - - - - From 362f00d1a71f7371ad174a636ed09147519b867b Mon Sep 17 00:00:00 2001 From: devico Date: Sat, 15 Oct 2016 16:21:35 +0300 Subject: [PATCH 05/26] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D1=8B=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D0=BE=D0=B2,=20?= =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BC=D0=BD=D0=BE=D0=B6=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20require?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/budgets_posters.rb | 16 +++++++++ examples/collection_filters.rb | 31 +++++++++++++++++ examples/movies_render_html.rb | 14 ++++++++ examples/netflix_filters.rb | 49 +++++++++++++++++++++++++++ examples/netflix_methods_by.rb | 14 ++++++++ examples/theatre_buy_ticket.rb | 61 ++++++++++++++++++++++++++++++++++ examples/theatre_periods.rb | 55 ++++++++++++++++++++++++++++++ 7 files changed, 240 insertions(+) create mode 100644 examples/budgets_posters.rb create mode 100644 examples/collection_filters.rb create mode 100644 examples/movies_render_html.rb create mode 100644 examples/netflix_filters.rb create mode 100644 examples/netflix_methods_by.rb create mode 100644 examples/theatre_buy_ticket.rb create mode 100644 examples/theatre_periods.rb diff --git a/examples/budgets_posters.rb b/examples/budgets_posters.rb new file mode 100644 index 0000000..2c2604b --- /dev/null +++ b/examples/budgets_posters.rb @@ -0,0 +1,16 @@ +require_relative 'lib/top_movies' +require 'date' + +file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +movies = TopMovies::MovieCollection.new(file_name) +movie = movies.all[112] +puts movie.budget +puts movie.poster diff --git a/examples/collection_filters.rb b/examples/collection_filters.rb new file mode 100644 index 0000000..264ac43 --- /dev/null +++ b/examples/collection_filters.rb @@ -0,0 +1,31 @@ +require_relative '../lib/top_movies' +require 'date' + +file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +movies = TopMovies::MovieCollection.new(file_name) + +# collection filters by genre +puts movies.filter(genre: 'Comedy') + +# collection filters by year +movies.filter(year: 2000) +movies.filter(year: 1980..2000) + +# collection sorts by year +movies.sort_by(:year) + +# collection statistics by author +puts movies.stats(:author) + +# collection have or not have +movie = movies.all.first +puts movie.actors.count +puts movie.actors.include?('Arnold Shwarzenegger') diff --git a/examples/movies_render_html.rb b/examples/movies_render_html.rb new file mode 100644 index 0000000..1d50730 --- /dev/null +++ b/examples/movies_render_html.rb @@ -0,0 +1,14 @@ +require_relative '../lib/top_movies' +require 'date' + +file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +movies = TopMovies::MovieCollection.new(file_name) +movies.render_html diff --git a/examples/netflix_filters.rb b/examples/netflix_filters.rb new file mode 100644 index 0000000..41db124 --- /dev/null +++ b/examples/netflix_filters.rb @@ -0,0 +1,49 @@ +require_relative '../lib/top_movies' +require 'date' + +file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +online = TopMovies::Netflix.new(file_name) +online.pay(35) + +# inner filters +puts online.show(genre: 'Drama', period: :new) + +# component filter +movies = online.show do |movie| + !movie.title.include?('Terminator') && \ + movie.genre[0].include?('Action') && \ + movie.year > 2003 +end +puts movies + +# define new filter + online.define_filter(:new_sci_fi) do |movie| + movie.genre[0].include?('Sci-Fi') && \ + !movie.country.include?('UK') + end +puts online.show(new_sci_fi: true) + +online.define_filter(:not_spielberg) do |movie| + !movie.author.include?('Steven Spielberg') +end +puts online.show(new_sci_fi: true, not_spielberg: true) + +online.define_filter(:country) do |movie| + movie.genre.include?('Sci-Fi') && \ + !movie.author.include?('Steven Spielberg') && \ + !movie.country.include?('UK') +end + +# define new filter based on existing filter +online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } +puts online.show(new_sci_fi: 2010) +online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) +puts online.show(newest_sci_fi: 2014) diff --git a/examples/netflix_methods_by.rb b/examples/netflix_methods_by.rb new file mode 100644 index 0000000..6a56577 --- /dev/null +++ b/examples/netflix_methods_by.rb @@ -0,0 +1,14 @@ +require_relative '../lib/top_movies' + +file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +online = TopMovies::Netflix.new(file_name) +puts online.by_genre.comedy +puts online.by_country.usa diff --git a/examples/theatre_buy_ticket.rb b/examples/theatre_buy_ticket.rb new file mode 100644 index 0000000..5ca3e21 --- /dev/null +++ b/examples/theatre_buy_ticket.rb @@ -0,0 +1,61 @@ +require_relative '../lib/top_movies' +require 'date' + +file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +theatre = + TopMovies::Theatre.new do + hall :red, title: 'Красный зал', places: 100 + hall :blue, title: 'Синий зал', places: 50 + hall :green, title: 'Зелёный зал (deluxe)', places: 12 + + period '09:00'..'12:00' do + description 'Утренний сеанс' + filters genre: 'Comedy', year: 1900..1980 + price 10 + hall :red, :blue + end + + period '12:00'..'16:00' do + description 'Спецпоказ' + title 'The Terminator' + price 50 + hall :green + end + + period '16:00'..'20:00' do + description 'Вечерний сеанс' + filters genre: %w(Action Drama), year: 2007..Time.now.year + price 20 + hall :red, :blue + end + + period '19:00'..'22:00' do + description 'Вечерний сеанс для киноманов' + filters year: 1900..1945, exclude_country: 'USA' + price 30 + hall :green + end + + period '21:00'..'23:00' do + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red + end + end + +puts theatre.buy_ticket('10:20') +puts theatre.buy_ticket('13:20') +puts theatre.buy_ticket('17:20') +puts theatre.buy_ticket('19:20', hall: :green) +puts theatre.cash +theatre.take('Bank') +puts theatre.cash diff --git a/examples/theatre_periods.rb b/examples/theatre_periods.rb new file mode 100644 index 0000000..fe29ca0 --- /dev/null +++ b/examples/theatre_periods.rb @@ -0,0 +1,55 @@ +require_relative '../lib/top_movies' +require 'date' + +file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + +if File.exist?(file_name) + File.open(file_name) +else + puts 'Ошибка. Файл отсутствует!' + exit +end + +theatre = + TopMovies::Theatre.new do + hall :red, title: 'Красный зал', places: 100 + hall :blue, title: 'Синий зал', places: 50 + hall :green, title: 'Зелёный зал (deluxe)', places: 12 + + period '09:00'..'12:00' do + description 'Утренний сеанс' + filters genre: 'Comedy', year: 1900..1980 + price 10 + hall :red, :blue + end + + period '12:00'..'16:00' do + description 'Спецпоказ' + title 'The Terminator' + price 50 + hall :green + end + + period '16:00'..'20:00' do + description 'Вечерний сеанс' + filters genre: %w(Action Drama), year: 2007..Time.now.year + price 20 + hall :red, :blue + end + + period '19:00'..'22:00' do + description 'Вечерний сеанс для киноманов' + filters year: 1900..1945, exclude_country: 'USA' + price 30 + hall :green + end + end + +theatre.period '21:00'..'23:00' do + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red +end + +puts theatre From 723f90367cff980836811285374f863c6cbd1632 Mon Sep 17 00:00:00 2001 From: devico Date: Sat, 15 Oct 2016 16:52:13 +0300 Subject: [PATCH 06/26] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/top_movies.rb | 2 - .../examples/demo_budgets_posters.rb | 25 ------- .../examples/demo_collection_filters.rb | 40 ----------- .../examples/demo_movies_render_html.rb | 23 ------ .../examples/demo_netflix_filters.rb | 58 --------------- .../examples/demo_netflix_methods_by.rb | 22 ------ .../examples/demo_theatre_buy_ticket.rb | 70 ------------------- .../examples/demo_theatre_periods.rb | 61 ---------------- lib/topmovies/theatre.rb | 2 +- 9 files changed, 1 insertion(+), 302 deletions(-) delete mode 100644 lib/topmovies/examples/demo_budgets_posters.rb delete mode 100644 lib/topmovies/examples/demo_collection_filters.rb delete mode 100644 lib/topmovies/examples/demo_movies_render_html.rb delete mode 100644 lib/topmovies/examples/demo_netflix_filters.rb delete mode 100644 lib/topmovies/examples/demo_netflix_methods_by.rb delete mode 100644 lib/topmovies/examples/demo_theatre_buy_ticket.rb delete mode 100644 lib/topmovies/examples/demo_theatre_periods.rb diff --git a/lib/top_movies.rb b/lib/top_movies.rb index 5b1ee3c..ac20f75 100644 --- a/lib/top_movies.rb +++ b/lib/top_movies.rb @@ -10,8 +10,6 @@ require_relative 'topmovies/new_movie' require_relative 'topmovies/period' require_relative 'topmovies/theatre' -require_relative '../www/imdb_budgets' -require_relative '../www/tmdb_posters' module TopMovies VERSION = '0.1.0' diff --git a/lib/topmovies/examples/demo_budgets_posters.rb b/lib/topmovies/examples/demo_budgets_posters.rb deleted file mode 100644 index 1505648..0000000 --- a/lib/topmovies/examples/demo_budgets_posters.rb +++ /dev/null @@ -1,25 +0,0 @@ -require_relative '../movie' -require_relative '../ancient_movie' -require_relative '../classic_movie' -require_relative '../modern_movie' -require_relative '../new_movie' -require_relative '../movie_collection' -require_relative '../filter_genre' -require_relative '../country_filter' -require_relative '../netflix' -require_relative '../theatre' -require 'date' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -movies = TopMovies::MovieCollection.new(file_name) -movie = movies.all[112] -puts movie.budget -puts movie.poster diff --git a/lib/topmovies/examples/demo_collection_filters.rb b/lib/topmovies/examples/demo_collection_filters.rb deleted file mode 100644 index b08d962..0000000 --- a/lib/topmovies/examples/demo_collection_filters.rb +++ /dev/null @@ -1,40 +0,0 @@ -require_relative '../movie' -require_relative '../ancient_movie' -require_relative '../classic_movie' -require_relative '../modern_movie' -require_relative '../new_movie' -require_relative '../movie_collection' -require_relative '../filter_genre' -require_relative '../country_filter' -require_relative '../netflix' -require_relative '../theatre' -require 'date' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -movies = TopMovies::MovieCollection.new(file_name) - -# collection filters by genre -puts movies.filter(genre: 'Comedy') - -# collection filters by year -movies.filter(year: 2000) -movies.filter(year: 1980..2000) - -# collection sorts by year -movies.sort_by(:year) - -# collection statistics by author -puts movies.stats(:author) - -# collection have or not have -movie = movies.all.first -puts movie.actors.count -puts movie.actors.include?('Arnold Shwarzenegger') diff --git a/lib/topmovies/examples/demo_movies_render_html.rb b/lib/topmovies/examples/demo_movies_render_html.rb deleted file mode 100644 index 54ade33..0000000 --- a/lib/topmovies/examples/demo_movies_render_html.rb +++ /dev/null @@ -1,23 +0,0 @@ -require_relative '../movie' -require_relative '../ancient_movie' -require_relative '../classic_movie' -require_relative '../modern_movie' -require_relative '../new_movie' -require_relative '../movie_collection' -require_relative '../filter_genre' -require_relative '../country_filter' -require_relative '../netflix' -require_relative '../theatre' -require 'date' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -movies = TopMovies::MovieCollection.new(file_name) -movies.render_html diff --git a/lib/topmovies/examples/demo_netflix_filters.rb b/lib/topmovies/examples/demo_netflix_filters.rb deleted file mode 100644 index b37a678..0000000 --- a/lib/topmovies/examples/demo_netflix_filters.rb +++ /dev/null @@ -1,58 +0,0 @@ -require_relative '../movie' -require_relative '../ancient_movie' -require_relative '../classic_movie' -require_relative '../modern_movie' -require_relative '../new_movie' -require_relative '../movie_collection' -require_relative '../filter_genre' -require_relative '../country_filter' -require_relative '../netflix' -require_relative '../theatre' -require 'date' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -online = TopMovies::Netflix.new(file_name) -online.pay(35) - -# inner filters -puts online.show(genre: 'Drama', period: :new) - -# component filter -movies = online.show do |movie| - !movie.title.include?('Terminator') && \ - movie.genre[0].include?('Action') && \ - movie.year > 2003 -end -puts movies - -# define new filter - online.define_filter(:new_sci_fi) do |movie| - movie.genre[0].include?('Sci-Fi') && \ - !movie.country.include?('UK') - end -puts online.show(new_sci_fi: true) - -online.define_filter(:not_spielberg) do |movie| - !movie.author.include?('Steven Spielberg') -end -puts online.show(new_sci_fi: true, not_spielberg: true) - -online.define_filter(:country) do |movie| - movie.genre.include?('Sci-Fi') && \ - !movie.author.include?('Steven Spielberg') && \ - !movie.country.include?('UK') -end - -# define new filter based on existing filter -online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } -puts online.show(new_sci_fi: 2010) -online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) -puts online.show(newest_sci_fi: 2014) diff --git a/lib/topmovies/examples/demo_netflix_methods_by.rb b/lib/topmovies/examples/demo_netflix_methods_by.rb deleted file mode 100644 index caa1621..0000000 --- a/lib/topmovies/examples/demo_netflix_methods_by.rb +++ /dev/null @@ -1,22 +0,0 @@ -require_relative '../movie' -require_relative '../ancient_movie' -require_relative '../classic_movie' -require_relative '../modern_movie' -require_relative '../new_movie' -require_relative '../movie_collection' -require_relative '../filter_genre' -require_relative '../country_filter' -require_relative '../netflix' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -online = TopMovies::Netflix.new(file_name) -puts online.by_genre.comedy -puts online.by_country.usa diff --git a/lib/topmovies/examples/demo_theatre_buy_ticket.rb b/lib/topmovies/examples/demo_theatre_buy_ticket.rb deleted file mode 100644 index 78e7b63..0000000 --- a/lib/topmovies/examples/demo_theatre_buy_ticket.rb +++ /dev/null @@ -1,70 +0,0 @@ -require_relative '../movie' -require_relative '../ancient_movie' -require_relative '../classic_movie' -require_relative '../modern_movie' -require_relative '../new_movie' -require_relative '../movie_collection' -require_relative '../filter_genre' -require_relative '../country_filter' -require_relative '../netflix' -require_relative '../theatre' -require 'date' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -theatre = - TopMovies::Theatre.new do - hall :red, title: 'Красный зал', places: 100 - hall :blue, title: 'Синий зал', places: 50 - hall :green, title: 'Зелёный зал (deluxe)', places: 12 - - period '09:00'..'12:00' do - description 'Утренний сеанс' - filters genre: 'Comedy', year: 1900..1980 - price 10 - hall :red, :blue - end - - period '12:00'..'16:00' do - description 'Спецпоказ' - title 'The Terminator' - price 50 - hall :green - end - - period '16:00'..'20:00' do - description 'Вечерний сеанс' - filters genre: %w(Action Drama), year: 2007..Time.now.year - price 20 - hall :red, :blue - end - - period '19:00'..'22:00' do - description 'Вечерний сеанс для киноманов' - filters year: 1900..1945, exclude_country: 'USA' - price 30 - hall :green - end - - period '21:00'..'23:00' do - description 'Еще один сеанс' - filters genre: 'Sci-Fi', year: 1900..1980 - price 13 - hall :red - end - end - -puts theatre.buy_ticket('10:20') -puts theatre.buy_ticket('13:20') -puts theatre.buy_ticket('17:20') -puts theatre.buy_ticket('19:20', hall: :green) -puts theatre.cash -theatre.take('Bank') -puts theatre.cash diff --git a/lib/topmovies/examples/demo_theatre_periods.rb b/lib/topmovies/examples/demo_theatre_periods.rb deleted file mode 100644 index 06bbf60..0000000 --- a/lib/topmovies/examples/demo_theatre_periods.rb +++ /dev/null @@ -1,61 +0,0 @@ -require_relative '../movie' -require_relative '../ancient_movie' -require_relative '../classic_movie' -require_relative '../modern_movie' -require_relative '../new_movie' -require_relative '../movie_collection' -require_relative '../theatre' -require 'date' - -file_name = ARGV[0] || '../data/movies.txt' - -if File.exist?(file_name) - File.open(file_name) -else - puts 'Ошибка. Файл отсутствует!' - exit -end - -theatre = - TopMovies::Theatre.new do - hall :red, title: 'Красный зал', places: 100 - hall :blue, title: 'Синий зал', places: 50 - hall :green, title: 'Зелёный зал (deluxe)', places: 12 - - period '09:00'..'12:00' do - description 'Утренний сеанс' - filters genre: 'Comedy', year: 1900..1980 - price 10 - hall :red, :blue - end - - period '12:00'..'16:00' do - description 'Спецпоказ' - title 'The Terminator' - price 50 - hall :green - end - - period '16:00'..'20:00' do - description 'Вечерний сеанс' - filters genre: %w(Action Drama), year: 2007..Time.now.year - price 20 - hall :red, :blue - end - - period '19:00'..'22:00' do - description 'Вечерний сеанс для киноманов' - filters year: 1900..1945, exclude_country: 'USA' - price 30 - hall :green - end - end - -theatre.period '21:00'..'23:00' do - description 'Еще один сеанс' - filters genre: 'Sci-Fi', year: 1900..1980 - price 13 - hall :red -end - -puts theatre diff --git a/lib/topmovies/theatre.rb b/lib/topmovies/theatre.rb index ca95d44..bc6e5e1 100644 --- a/lib/topmovies/theatre.rb +++ b/lib/topmovies/theatre.rb @@ -4,7 +4,7 @@ module TopMovies class Theatre < MovieCollection attr_accessor :halls, :periods - PATH_DATA = "../data/movies.txt" + PATH_DATA = File.expand_path('../data/movies.txt',__dir__) def initialize(&block) super(PATH_DATA) From 541172d62cd8719fb65130e1721606d3317f75d4 Mon Sep 17 00:00:00 2001 From: devico Date: Sun, 16 Oct 2016 10:11:47 +0300 Subject: [PATCH 07/26] =?UTF-8?q?=D0=BA=D0=BE=D0=B4=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D0=B5=D1=82,=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=8B=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/budgets_posters.rb | 2 +- examples/movies_render_html.rb | 2 +- examples/netflix_filters.rb | 22 +++++++++++----------- examples/theatre_periods.rb | 2 +- lib/top_movies.rb | 12 ++++++------ lib/topmovies/data/budgetstt0105695.yml | 2 ++ lib/topmovies/imdb_budgets.rb | 7 +++++-- lib/topmovies/movie.rb | 6 ++++-- lib/topmovies/movie_collection.rb | 4 ++-- lib/topmovies/theatre.rb | 2 +- lib/topmovies/tmdb_posters.rb | 2 +- spec/ancient_movie_spec.rb | 2 +- spec/cash_box_spec.rb | 2 +- spec/classic_movie_spec.rb | 2 +- spec/imdb_budgets_spec.rb | 2 +- spec/modern_movie_spec.rb | 2 +- spec/movie_collection_spec.rb | 2 +- spec/movie_spec.rb | 4 ++-- spec/netflix_spec.rb | 4 ++-- spec/newmovie_spec.rb | 2 +- 20 files changed, 46 insertions(+), 39 deletions(-) create mode 100644 lib/topmovies/data/budgetstt0105695.yml diff --git a/examples/budgets_posters.rb b/examples/budgets_posters.rb index 2c2604b..c12a215 100644 --- a/examples/budgets_posters.rb +++ b/examples/budgets_posters.rb @@ -1,4 +1,4 @@ -require_relative 'lib/top_movies' +require_relative '../lib/top_movies' require 'date' file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' diff --git a/examples/movies_render_html.rb b/examples/movies_render_html.rb index 1d50730..8a6f4d0 100644 --- a/examples/movies_render_html.rb +++ b/examples/movies_render_html.rb @@ -11,4 +11,4 @@ end movies = TopMovies::MovieCollection.new(file_name) -movies.render_html +puts movies.render_html diff --git a/examples/netflix_filters.rb b/examples/netflix_filters.rb index 41db124..8494366 100644 --- a/examples/netflix_filters.rb +++ b/examples/netflix_filters.rb @@ -18,28 +18,28 @@ # component filter movies = online.show do |movie| - !movie.title.include?('Terminator') && \ - movie.genre[0].include?('Action') && \ - movie.year > 2003 + !movie.title.include?('Terminator') && \ + movie.genre[0].include?('Action') && \ + movie.year > 2003 end puts movies # define new filter - online.define_filter(:new_sci_fi) do |movie| - movie.genre[0].include?('Sci-Fi') && \ - !movie.country.include?('UK') - end +online.define_filter(:new_sci_fi) do |movie| + movie.genre[0].include?('Sci-Fi') && \ + !movie.country.include?('UK') +end puts online.show(new_sci_fi: true) online.define_filter(:not_spielberg) do |movie| - !movie.author.include?('Steven Spielberg') + !movie.author.include?('Steven Spielberg') end puts online.show(new_sci_fi: true, not_spielberg: true) online.define_filter(:country) do |movie| - movie.genre.include?('Sci-Fi') && \ - !movie.author.include?('Steven Spielberg') && \ - !movie.country.include?('UK') + movie.genre.include?('Sci-Fi') && \ + !movie.author.include?('Steven Spielberg') && \ + !movie.country.include?('UK') end # define new filter based on existing filter diff --git a/examples/theatre_periods.rb b/examples/theatre_periods.rb index fe29ca0..d4f327a 100644 --- a/examples/theatre_periods.rb +++ b/examples/theatre_periods.rb @@ -52,4 +52,4 @@ hall :red end -puts theatre +puts theatre.inspect diff --git a/lib/top_movies.rb b/lib/top_movies.rb index ac20f75..e179fd2 100644 --- a/lib/top_movies.rb +++ b/lib/top_movies.rb @@ -1,15 +1,15 @@ +require_relative 'topmovies/movie_collection' +require_relative 'topmovies/movie' require_relative 'topmovies/ancient_movie' -require_relative 'topmovies/cash_box' require_relative 'topmovies/classic_movie' -require_relative 'topmovies/country_filter' -require_relative 'topmovies/filter_genre' require_relative 'topmovies/modern_movie' -require_relative 'topmovies/movie' -require_relative 'topmovies/movie_collection' -require_relative 'topmovies/netflix' require_relative 'topmovies/new_movie' require_relative 'topmovies/period' +require_relative 'topmovies/netflix' require_relative 'topmovies/theatre' +require_relative 'topmovies/cash_box' +require_relative 'topmovies/country_filter' +require_relative 'topmovies/filter_genre' module TopMovies VERSION = '0.1.0' diff --git a/lib/topmovies/data/budgetstt0105695.yml b/lib/topmovies/data/budgetstt0105695.yml new file mode 100644 index 0000000..0184b21 --- /dev/null +++ b/lib/topmovies/data/budgetstt0105695.yml @@ -0,0 +1,2 @@ +--- +tt0105695: "$14,400,000" diff --git a/lib/topmovies/imdb_budgets.rb b/lib/topmovies/imdb_budgets.rb index c7fd4d2..b2d0e81 100644 --- a/lib/topmovies/imdb_budgets.rb +++ b/lib/topmovies/imdb_budgets.rb @@ -3,8 +3,11 @@ require 'yaml' require 'ruby-progressbar' module ImdbBudgets + + PATH_BUDGETS = File.dirname(File.expand_path('data/budgets/*.*',__dir__)) + def take_budget_from_file(file_name) - YAML::load_file(File.open(file_name))[file_name[16,9]] + YAML::load_file(File.open("#{PATH_BUDGETS}/#{file_name}"))[file_name[0,9]] end def take_budget_from_imdb(id) @@ -14,7 +17,7 @@ def take_budget_from_imdb(id) else nil end - File.write("../data/budgets/#{id}.yml", {id => data}.to_yaml) + File.write("#{PATH_BUDGETS}/#{id}.yml", {id => data}.to_yaml) end def take_info diff --git a/lib/topmovies/movie.rb b/lib/topmovies/movie.rb index 4703060..15852e7 100644 --- a/lib/topmovies/movie.rb +++ b/lib/topmovies/movie.rb @@ -7,6 +7,8 @@ class Movie include ImdbBudgets include TmdbPosters + PATH_BUDGETS = File.dirname(File.expand_path('data/budgets/*.*', __dir__)) + class SplitArray < Virtus::Attribute def coerce(value) value.split(',') @@ -82,8 +84,8 @@ def imdb_id end def budget - file_name = "../data/budgets/#{imdb_id}.yml" - take_budget_from_imdb(imdb_id) unless File.exist?(file_name) + file_name = "#{imdb_id}.yml" + take_budget_from_imdb(imdb_id) unless File.exist?("#{PATH_BUDGETS}/#{file_name}") take_budget_from_file(file_name) end diff --git a/lib/topmovies/movie_collection.rb b/lib/topmovies/movie_collection.rb index 5d6557e..62a3c9c 100644 --- a/lib/topmovies/movie_collection.rb +++ b/lib/topmovies/movie_collection.rb @@ -16,7 +16,7 @@ class MovieCollection attr_accessor :collection - PATH_PAGES = '../pages' + PATH_PAGES = File.expand_path('pages/', __dir__) def initialize(file_name) @collection = make_collection(file_name) @@ -91,7 +91,7 @@ def by_country end def render_html - template = File.open('../pages/index.haml') + template = File.open("#{PATH_PAGES}/index.haml") Haml::Engine.new(template.read).render(@collection) end end diff --git a/lib/topmovies/theatre.rb b/lib/topmovies/theatre.rb index bc6e5e1..6280c8d 100644 --- a/lib/topmovies/theatre.rb +++ b/lib/topmovies/theatre.rb @@ -4,7 +4,7 @@ module TopMovies class Theatre < MovieCollection attr_accessor :halls, :periods - PATH_DATA = File.expand_path('../data/movies.txt',__dir__) + PATH_DATA = File.expand_path('data/movies.txt', __dir__) def initialize(&block) super(PATH_DATA) diff --git a/lib/topmovies/tmdb_posters.rb b/lib/topmovies/tmdb_posters.rb index 0163e41..4bddf86 100644 --- a/lib/topmovies/tmdb_posters.rb +++ b/lib/topmovies/tmdb_posters.rb @@ -15,7 +15,7 @@ def imdb_to_tmdb(id_imdb) Tmdb::Find.imdb_id(id_imdb).first[1][0]['id'] end - def take_poster(id_imdb) + def take_poster(*) Tmdb::Movie.detail(imdb_to_tmdb(imdb_id))['poster_path'] end end diff --git a/spec/ancient_movie_spec.rb b/spec/ancient_movie_spec.rb index f5258f5..1de4f4c 100644 --- a/spec/ancient_movie_spec.rb +++ b/spec/ancient_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe AncientMovie do - let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } let(:movie) { netflix.filter(period: :ancient).first } describe '#cost and #period' do diff --git a/spec/cash_box_spec.rb b/spec/cash_box_spec.rb index 44041c8..fc1459e 100644 --- a/spec/cash_box_spec.rb +++ b/spec/cash_box_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe CashBox do - let(:netflix) { TopMovies::Netflix.new("data/movies.txt") { include CashBox } } + let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") { include CashBox } } let(:value) { Money.new(0, "UAH") } diff --git a/spec/classic_movie_spec.rb b/spec/classic_movie_spec.rb index 3e144ce..0eb20a3 100644 --- a/spec/classic_movie_spec.rb +++ b/spec/classic_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ClassicMovie do - let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } let(:movie) { netflix.filter(period: :classic).first } describe '#cost' do diff --git a/spec/imdb_budgets_spec.rb b/spec/imdb_budgets_spec.rb index 54eea5f..f9415be 100644 --- a/spec/imdb_budgets_spec.rb +++ b/spec/imdb_budgets_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ImdbBudgets do - let(:movies) { TopMovies::MovieCollection.new('data/movies.txt') { include ImdbBudgets } } + let(:movies) { TopMovies::MovieCollection.new("lib/topmovies/data/movies.txt") { include ImdbBudgets } } describe '#take_budget_from_file' do subject { movie.take_budget_from_file(file) } diff --git a/spec/modern_movie_spec.rb b/spec/modern_movie_spec.rb index fd75494..3d88aad 100644 --- a/spec/modern_movie_spec.rb +++ b/spec/modern_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ModernMovie do - let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } let(:movie) { netflix.filter(period: :modern).first } describe '#cost' do diff --git a/spec/movie_collection_spec.rb b/spec/movie_collection_spec.rb index e61645e..70b110b 100644 --- a/spec/movie_collection_spec.rb +++ b/spec/movie_collection_spec.rb @@ -1,7 +1,7 @@ module TopMovies describe MovieCollection do - let(:collection) { TopMovies::MovieCollection.new('data/movies.txt') } + let(:collection) { TopMovies::MovieCollection.new("lib/topmovies/data/movies.txt") } describe '#by_genre' do before { TopMovies::MovieCollection.send(:define_method, 'comedy') { filter(genre: 'Comedy') } } diff --git a/spec/movie_spec.rb b/spec/movie_spec.rb index 532555c..a183eec 100644 --- a/spec/movie_spec.rb +++ b/spec/movie_spec.rb @@ -36,7 +36,7 @@ module TopMovies describe '#matches_all?' do subject { movie.matches_all?(params) } - let(:netflix) { Netflix.new("data/movies.txt")} + let(:netflix) { Netflix.new("lib/topmovies/data/movies.txt")} let(:movie) { netflix.filter(genre: 'Comedy').first } let(:params) { {genre: 'Comedy', year: 1983...1998} } it { expect( subject ).to be_truthy } @@ -44,7 +44,7 @@ module TopMovies describe '#imdb_id' do subject { movie.imdb_id } - let(:netflix) { Netflix.new("data/movies.txt")} + let(:netflix) { Netflix.new("lib/topmovies/data/movies.txt")} let(:movie) { netflix.all.first } it { expect( subject ).to eq('tt0111161') } end diff --git a/spec/netflix_spec.rb b/spec/netflix_spec.rb index 5abc372..a78d5dc 100644 --- a/spec/netflix_spec.rb +++ b/spec/netflix_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe Netflix do - let(:netflix) { TopMovies::Netflix.new('data/movies.txt') } + let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } describe '#balance status' do subject { netflix } @@ -130,7 +130,7 @@ module TopMovies end describe '#cash' do - let(:value) {Money.new(19000, "UAH")} + let(:value) {Money.new(18500, "UAH")} it { expect( Netflix.cash ).to eq(value) } end diff --git a/spec/newmovie_spec.rb b/spec/newmovie_spec.rb index 14a4351..e9a5b3b 100644 --- a/spec/newmovie_spec.rb +++ b/spec/newmovie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe NewMovie do - let(:netflix) { TopMovies::Netflix.new("data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } let(:movie) { netflix.filter(period: :new).first } describe '#cost' do From 4d748273b469b40b9525fcc77633758362359c9a Mon Sep 17 00:00:00 2001 From: devico Date: Sun, 16 Oct 2016 14:55:17 +0300 Subject: [PATCH 08/26] =?UTF-8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=83=D1=82=D0=B8=20=D0=B2=20=D1=81=D0=BF=D0=B5?= =?UTF-8?q?=D0=BA=D0=B0=D1=85=20=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D1=82=D1=83=20=D0=B8=20=D0=B2=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B8=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20?= =?UTF-8?q?=D0=B2=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20TopMovies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/topmovies/imdb_budgets.rb | 34 ++++++++++++++++++---------------- lib/topmovies/tmdb_posters.rb | 30 ++++++++++++++++-------------- spec/ancient_movie_spec.rb | 2 +- spec/cash_box_spec.rb | 2 +- spec/classic_movie_spec.rb | 2 +- spec/imdb_budgets_spec.rb | 2 +- spec/modern_movie_spec.rb | 2 +- spec/movie_collection_spec.rb | 2 +- spec/movie_spec.rb | 4 ++-- spec/netflix_spec.rb | 4 ++-- spec/newmovie_spec.rb | 2 +- spec/spec_helper.rb | 4 +++- spec/tmdb_posters_spec.rb | 2 +- 13 files changed, 49 insertions(+), 43 deletions(-) diff --git a/lib/topmovies/imdb_budgets.rb b/lib/topmovies/imdb_budgets.rb index b2d0e81..a960c98 100644 --- a/lib/topmovies/imdb_budgets.rb +++ b/lib/topmovies/imdb_budgets.rb @@ -2,25 +2,27 @@ require 'open-uri' require 'yaml' require 'ruby-progressbar' -module ImdbBudgets +module TopMovies + module ImdbBudgets - PATH_BUDGETS = File.dirname(File.expand_path('data/budgets/*.*',__dir__)) + PATH_BUDGETS = File.dirname(File.expand_path('data/budgets/*.*',__dir__)) - def take_budget_from_file(file_name) - YAML::load_file(File.open("#{PATH_BUDGETS}/#{file_name}"))[file_name[0,9]] - end + def take_budget_from_file(file_name) + YAML::load_file(File.open("#{PATH_BUDGETS}/#{file_name}"))[file_name[0,9]] + end - def take_budget_from_imdb(id) - data = take_info - data = if data =~ /^(\$|\€|\£|DEM|AUD|FRF)/ - data - else - nil - end - File.write("#{PATH_BUDGETS}/#{id}.yml", {id => data}.to_yaml) - end + def take_budget_from_imdb(id) + data = take_info + data = if data =~ /^(\$|\€|\£|DEM|AUD|FRF)/ + data + else + nil + end + File.write("#{PATH_BUDGETS}/#{id}.yml", {id => data}.to_yaml) + end - def take_info - Nokogiri::HTML(open(self.link)).css('div.txt-block:nth-child(11)').text.split(' ')[1] + def take_info + Nokogiri::HTML(open(self.link)).css('div.txt-block:nth-child(11)').text.split(' ')[1] + end end end diff --git a/lib/topmovies/tmdb_posters.rb b/lib/topmovies/tmdb_posters.rb index 4bddf86..bd7786a 100644 --- a/lib/topmovies/tmdb_posters.rb +++ b/lib/topmovies/tmdb_posters.rb @@ -1,21 +1,23 @@ -module TmdbPosters - def take_posters - @collection.map do |film| - Tmdb::Movie.detail(imdb_to_tmdb(film.imdb_id))['poster_path'] +module TopMovies + module TmdbPosters + def take_posters + @collection.map do |film| + Tmdb::Movie.detail(imdb_to_tmdb(film.imdb_id))['poster_path'] + end end - end - def take_translations - @collection.map do |film| - Tmdb::Movie.translations(imdb_to_tmdb(film.imdb_id))['translations'] + def take_translations + @collection.map do |film| + Tmdb::Movie.translations(imdb_to_tmdb(film.imdb_id))['translations'] + end end - end - def imdb_to_tmdb(id_imdb) - Tmdb::Find.imdb_id(id_imdb).first[1][0]['id'] - end + def imdb_to_tmdb(id_imdb) + Tmdb::Find.imdb_id(id_imdb).first[1][0]['id'] + end - def take_poster(*) - Tmdb::Movie.detail(imdb_to_tmdb(imdb_id))['poster_path'] + def take_poster(*) + Tmdb::Movie.detail(imdb_to_tmdb(imdb_id))['poster_path'] + end end end diff --git a/spec/ancient_movie_spec.rb b/spec/ancient_movie_spec.rb index 1de4f4c..6b79081 100644 --- a/spec/ancient_movie_spec.rb +++ b/spec/ancient_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe AncientMovie do - let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new(DEFAULT_MOVIES_PATH) } let(:movie) { netflix.filter(period: :ancient).first } describe '#cost and #period' do diff --git a/spec/cash_box_spec.rb b/spec/cash_box_spec.rb index fc1459e..295caa6 100644 --- a/spec/cash_box_spec.rb +++ b/spec/cash_box_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe CashBox do - let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") { include CashBox } } + let(:netflix) { TopMovies::Netflix.new(DEFAULT_MOVIES_PATH) { include CashBox } } let(:value) { Money.new(0, "UAH") } diff --git a/spec/classic_movie_spec.rb b/spec/classic_movie_spec.rb index 0eb20a3..976af3f 100644 --- a/spec/classic_movie_spec.rb +++ b/spec/classic_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ClassicMovie do - let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new(DEFAULT_MOVIES_PATH) } let(:movie) { netflix.filter(period: :classic).first } describe '#cost' do diff --git a/spec/imdb_budgets_spec.rb b/spec/imdb_budgets_spec.rb index f9415be..836f2c2 100644 --- a/spec/imdb_budgets_spec.rb +++ b/spec/imdb_budgets_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ImdbBudgets do - let(:movies) { TopMovies::MovieCollection.new("lib/topmovies/data/movies.txt") { include ImdbBudgets } } + let(:movies) { TopMovies::MovieCollection.new(DEFAULT_MOVIES_PATH) { include ImdbBudgets } } describe '#take_budget_from_file' do subject { movie.take_budget_from_file(file) } diff --git a/spec/modern_movie_spec.rb b/spec/modern_movie_spec.rb index 3d88aad..1f46d86 100644 --- a/spec/modern_movie_spec.rb +++ b/spec/modern_movie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe ModernMovie do - let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new(DEFAULT_MOVIES_PATH) } let(:movie) { netflix.filter(period: :modern).first } describe '#cost' do diff --git a/spec/movie_collection_spec.rb b/spec/movie_collection_spec.rb index 70b110b..18c4633 100644 --- a/spec/movie_collection_spec.rb +++ b/spec/movie_collection_spec.rb @@ -1,7 +1,7 @@ module TopMovies describe MovieCollection do - let(:collection) { TopMovies::MovieCollection.new("lib/topmovies/data/movies.txt") } + let(:collection) { TopMovies::MovieCollection.new(DEFAULT_MOVIES_PATH) } describe '#by_genre' do before { TopMovies::MovieCollection.send(:define_method, 'comedy') { filter(genre: 'Comedy') } } diff --git a/spec/movie_spec.rb b/spec/movie_spec.rb index a183eec..2fa6f13 100644 --- a/spec/movie_spec.rb +++ b/spec/movie_spec.rb @@ -36,7 +36,7 @@ module TopMovies describe '#matches_all?' do subject { movie.matches_all?(params) } - let(:netflix) { Netflix.new("lib/topmovies/data/movies.txt")} + let(:netflix) { Netflix.new(DEFAULT_MOVIES_PATH)} let(:movie) { netflix.filter(genre: 'Comedy').first } let(:params) { {genre: 'Comedy', year: 1983...1998} } it { expect( subject ).to be_truthy } @@ -44,7 +44,7 @@ module TopMovies describe '#imdb_id' do subject { movie.imdb_id } - let(:netflix) { Netflix.new("lib/topmovies/data/movies.txt")} + let(:netflix) { Netflix.new(DEFAULT_MOVIES_PATH)} let(:movie) { netflix.all.first } it { expect( subject ).to eq('tt0111161') } end diff --git a/spec/netflix_spec.rb b/spec/netflix_spec.rb index a78d5dc..0054eae 100644 --- a/spec/netflix_spec.rb +++ b/spec/netflix_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe Netflix do - let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new(DEFAULT_MOVIES_PATH) } describe '#balance status' do subject { netflix } @@ -130,7 +130,7 @@ module TopMovies end describe '#cash' do - let(:value) {Money.new(18500, "UAH")} + let(:value) {Money.new(19000, "UAH")} it { expect( Netflix.cash ).to eq(value) } end diff --git a/spec/newmovie_spec.rb b/spec/newmovie_spec.rb index e9a5b3b..10cf030 100644 --- a/spec/newmovie_spec.rb +++ b/spec/newmovie_spec.rb @@ -2,7 +2,7 @@ module TopMovies describe NewMovie do - let(:netflix) { TopMovies::Netflix.new("lib/topmovies/data/movies.txt") } + let(:netflix) { TopMovies::Netflix.new(DEFAULT_MOVIES_PATH) } let(:movie) { netflix.filter(period: :new).first } describe '#cost' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6c86ee0..f174026 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -18,4 +18,6 @@ VCR.configure do |config| config.cassette_library_dir = "spec/fixtures/vcr_cassettes" config.hook_into :webmock # or :fakeweb -end \ No newline at end of file +end + +DEFAULT_MOVIES_PATH = "lib/topmovies/data/movies.txt" diff --git a/spec/tmdb_posters_spec.rb b/spec/tmdb_posters_spec.rb index 7fc605f..593ef5b 100644 --- a/spec/tmdb_posters_spec.rb +++ b/spec/tmdb_posters_spec.rb @@ -25,7 +25,7 @@ module TopMovies end describe '#imdb_to_tmdb' do - let(:movies) { TopMovies::MovieCollection.new("data/movies.txt") } + let(:movies) { TopMovies::MovieCollection.new(DEFAULT_MOVIES_PATH) } let(:film) { movies.all.first } let(:id_imdb) { film.link.scan(/tt\d{7}/).first } it 'when imdb_id convert to tmdb_id' do From 8c026b94615affd6c2d63835a707c413994ecec0 Mon Sep 17 00:00:00 2001 From: devico Date: Fri, 21 Oct 2016 01:20:31 +0300 Subject: [PATCH 09/26] =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=20readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 372 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 372 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e1df2b7 --- /dev/null +++ b/readme.md @@ -0,0 +1,372 @@ +TopMovies +======== + +TopMovies is a console application to manipulate the data from the list of top 250 IMDB movies. + +1. MovieCollection, created in the application allows you to: + + * the names and rating of films, + * the list of the longest films, + * comedies list, + * the list by producer and + * display statistics by month + * show the list of all films, + * show a list sorted by date movies, + * show a filtered list of movies by genre and country, + * give statistics for: actor, year, month, country, genre + +2. Netflix and Theatre are cinemas based on MovieCollection can: + + * show movies, using various filters, + * cinemas have cashbox to receive money, + * make it possible to buy tickets for a movie, + * cinema it is also a schedule for the showing of films at different times and in different rooms + +3. In addition, the application can: + + * get the budget for each film with IMDb site, + * extract the posters and film title translation into other languages with TMDB site, + * renders html page with all the movies + +Installation +------------------- +$ gem install topmovies + +Usage +------------------- + +To use gem topmovies you need to do the following: + +1. add to your file list of films + +```sh + file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + if File.exist?(file_name) + File.open(file_name) + else + puts 'Ошибка. Файл отсутствует!' + exit + end +``` + +2. create a Movie Collection on the basis of added movies list + +```sh + movies = TopMovies::MovieCollection.new(file_name) +``` + +3. create an online cinema Netflix + +```sh + online = TopMovies::Netflix.new(file_name) +``` + +4. create a normal cinema Theatre + +```sh + theatre = + TopMovies::Theatre.new do + hall :red, title: 'Красный зал', places: 100 + hall :blue, title: 'Синий зал', places: 50 + hall :green, title: 'Зелёный зал (deluxe)', places: 12 + + period '09:00'..'12:00' do + description 'Утренний сеанс' + filters genre: 'Comedy', year: 1900..1980 + price 10 + hall :red, :blue + end + + period '12:00'..'16:00' do + description 'Спецпоказ' + title 'The Terminator' + price 50 + hall :green + end + + period '16:00'..'20:00' do + description 'Вечерний сеанс' + filters genre: %w(Action Drama), year: 2007..Time.now.year + price 20 + hall :red, :blue + end + + period '19:00'..'22:00' do + description 'Вечерний сеанс для киноманов' + filters year: 1900..1945, exclude_country: 'USA' + price 30 + hall :green + end + end +``` + +After that you will be available to a large number of methods for manipulating data list IMDB top 250 films + +Examples +------------ + +####MovieCollection + + # show list all films + +```sh + movies.all +``` + + # get a filtered list of movies by genre + +```sh + movies.filter(genre: 'Comedy') +``` + + # get a filtered list on the film by year + +```sh + movies.filter(year: 2000) + movies.filter(year: 1980..2000) +``` + + # get a sorted list on the film by tear + +```sh + movies.sort_by(:year) +``` + + # obtain statistics on the number of films made by each director + +```sh + movies.stats(:author) +``` + + # display statistics by month + +```sh + groups = movies.reject{ |f| + !f.date.include?('-') } + .group_by{ |f| + Date.strptime( f.date, '%Y-%m').mon + }.sort + + groups.map do |month, group| + puts "#{ Date.strptime(month.to_s, '%m').strftime('%B') } - #{group.count}" + end +``` + + # get the number of films made outside the US + +```sh + movies.each.count { |f| f.country != "USA" } +``` + + # get a list of all directors alphabetically + +```sh + movies + .sort_by { |a| a.author.split(' ').reverse.join(" ") } + .uniq(&:author) + .each { |a| puts a.author} +``` + + # get 10 comedies (the first on the release date) + +```sh + movies + .reject { |c| !c.genre.split(",").include?("Comedy")} + .sort_by(&:year) + .take(10) + .each { |a| puts "#{a.title} - #{a.genre} - #{a.year}"} +``` + + # get 5 longest movies + +```sh + def show(f) + puts "#{ f.title} (#{f.date} #{f.genre}) - #{f.length }" + end + + movies + .sort_by { |f| -f.length.to_i } + .take(5) + .each { |a| show(a) } +``` + +####Netflix + + # at each call show different amounts of money withdrawn + (1, 1.5, 3, 5 dollars, depending on the type of movie +   There are 4 types of films: + ancient - AncientMovie (1900-1945); + classic - ClassicMovie (1945-1968); + modern - ModernMovie (1968-2000); + new - NewMovie (2000 until today) + + # show newest drama + +```sh + online.show(genre: 'Drama', period: :new) +``` + + # component filter for movies + +```sh + movies = online.show do |movie| + !movie.title.include?('Terminator') && \ + movie.genre[0].include?('Action') && \ + movie.year > 2003 + end +``` + + # You can define your filter and display a list of films according to this filter + +```sh + online.define_filter(:new_sci_fi) do |movie| + movie.genre[0].include?('Sci-Fi') && \ + !movie.country.include?('UK') + end + online.show(new_sci_fi: true) + + online.define_filter(:not_spielberg) do |movie| + !movie.author.include?('Steven Spielberg') + end + online.show(new_sci_fi: true, not_spielberg: true) + + online.define_filter(:country) do |movie| + movie.genre.include?('Sci-Fi') && \ + !movie.author.include?('Steven Spielberg') && \ + !movie.country.include?('UK') + end +``` + + # You can create a filter based on an existing + +```sh + online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } + online.show(new_sci_fi: 2010) + online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) + online.show(newest_sci_fi: 2014) +``` + + # for different cinemas various online cash + +```sh + online.cash != online1.cash +``` + + # see the amount of money at the cashbox + +```sh + online.cash +``` + + # put money in the cinema cashbox + +```sh + online.pay(35) +``` + + # how much film + +```sh + netflix.how_much?('The Terminator') +``` + + # holding cash collection and reset cashbox + - if who == Bank - going cash collection + - if something else - an error occurs + +```sh + netflix.take(Bank) +``` + + +####Theatre + + # see the amount of money at the cashbox + +```sh + theatre.cash +``` + + # to know when you can see the right movie + +```sh + theatre.when?('The Terminator') +``` + + # You can buy a ticket to a movie at a specific time + +```sh + theatre.buy_ticket('10:20') + theatre.buy_ticket('13:20') + theatre.buy_ticket('17:20') + theatre.buy_ticket('19:20', hall: :green) +``` + + # holding cash collection and reset cashbox + - if who == Bank - going cash collection + - if something else - an error occurs + +```sh + theatre.take(Bank) +``` + +####Movie + + # get some film in several ways + +```sh + movie = movies.all.first + movie = movies.all[0] + movie = movies.filter(title: 'Terminator') +``` + + # get the number of well-known actors, who played in the film + +```sh + movie.actors.count +``` + + # does the actor plays in the film + +```sh + movie.actors.include?('Arnold Shwarzenegger') +``` + + # to know whether the film belongs to the genre + +```sh + movies.first.has_genre?('Camedy') +``` + + # to know the film's budget + +```sh + movie = movies.all[112] + movie.budget +``` + + # get a poster for the film + +```sh + movie = movies.filter(title: 'Terminator') + movie.poster +``` + + # receive translations of the film in other language + +```sh + movie = movies.filter(title: '12 Angry Men') + movie.translations +``` + +####HTML + + # create HTML markup + +```sh + movies.render_html +``` + +Author +-------------- +Serhii Dmytrakov \ No newline at end of file From 75a505402677ab23ef8ec77de9b3d0d6b3fcb502 Mon Sep 17 00:00:00 2001 From: devico Date: Fri, 21 Oct 2016 21:36:36 +0300 Subject: [PATCH 10/26] =?UTF-8?q?=D0=B2=D0=BD=D0=B5=D1=81=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BE=D0=B3?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D0=BD=D0=BE=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 409 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1c1db21 --- /dev/null +++ b/README.md @@ -0,0 +1,409 @@ +TopMovies +======== + +TopMovies is a console application to manipulate the data from the list of top 250 IMDB movies. + +MovieCollection, created in the application, allows you to extract data and show filtered and sorted lists of movies, based on different criteria, also it can display any statistics on films. + +Netflix and Theatre are cinemas based on MovieCollection have cashboxes that can accept payments and sell tickets. + +In addition, the application can get the budget for each film with IMDb site, extract the posters and film title translation into other languages with TMDB site, and renders html page with all the movies + +Installation +------------------- +$ gem install topmovies + +Usage +------------------- + +To use gem topmovies you need to do the following: + +1.create a Movie Collection on the basis of added movies list + + ```ruby + file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + if File.exist?(file_name) + File.open(file_name) + else + puts 'Ошибка. Файл отсутствует!' + exit + end + ``` + +2.create a Movie Collection on the basis of added movies list + +```ruby + movies = TopMovies::MovieCollection.new(file_name) +``` + +3.create an online cinema Netflix + +```ruby + online = TopMovies::Netflix.new(file_name) +``` + +4.create a normal cinema Theatre + +```ruby + theatre = + TopMovies::Theatre.new do + hall :red, title: 'Красный зал', places: 100 + hall :blue, title: 'Синий зал', places: 50 + hall :green, title: 'Зелёный зал (deluxe)', places: 12 + + period '09:00'..'12:00' do + description 'Утренний сеанс' + filters genre: 'Comedy', year: 1900..1980 + price 10 + hall :red, :blue + end + + period '12:00'..'16:00' do + description 'Спецпоказ' + title 'The Terminator' + price 50 + hall :green + end + + period '16:00'..'20:00' do + description 'Вечерний сеанс' + filters genre: %w(Action Drama), year: 2007..Time.now.year + price 20 + hall :red, :blue + end + + period '19:00'..'22:00' do + description 'Вечерний сеанс для киноманов' + filters year: 1900..1945, exclude_country: 'USA' + price 30 + hall :green + end + end +``` + +After that you will be available to a large number of methods for manipulating data list IMDB top 250 films + +Examples +----------- +####MovieCollection + +```ruby +movies.filter(year: 2000) - show movies, created in 2000 +movies.filter(genre: 'Comedy') - show comedies +movies.sort_by(:year) - show sorted list of movies by year +``` + +####Netflix + + Show all the drama from 2000 to present + +```ruby + online.show(genre: 'Drama', period: :new) +``` + + See the amount of money at the cashbox + +```ruby + online.cash +``` + + Define new filter and show movies of genre Sci-Fi make not UK + +```ruby + online.define_filter(:new_sci_fi) do |movie| + movie.genre[0].include?('Sci-Fi') && \ + !movie.country.include?('UK') + end + puts online.show(new_sci_fi: true) +``` + +####Theatre + + Add new period + +```ruby + theatre.period '21:00'..'23:00' do + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red + end +``` + + Buy tickets + +```ruby + theatre.buy_ticket('17:20') + theatre.buy_ticket('19:20', hall: :green) +``` + +Features +------------ + +####MovieCollection + + Show list all films + +```ruby + movies.all +``` + + Get a filtered list of movies by genre + +```ruby + movies.filter(genre: 'Comedy') +``` + + Get a filtered list on the film by year + +```ruby + movies.filter(year: 2000) + movies.filter(year: 1980..2000) +``` + + Get a sorted list on the film by tear + +```ruby + movies.sort_by(:year) +``` + + Obtain statistics on the number of films made by each director + +```ruby + movies.stats(:author) +``` + + Display statistics by month + +```ruby + groups = movies.reject{ |f| + !f.date.include?('-') } + .group_by{ |f| + Date.strptime( f.date, '%Y-%m').mon + }.sort + + groups.map do |month, group| + puts "#{ Date.strptime(month.to_s, '%m').strftime('%B') } - #{group.count}" + end +``` + + Get the number of films made outside the US + +```ruby + movies.each.count { |f| f.country != "USA" } +``` + + Get a list of all directors alphabetically + +```ruby + movies + .sort_by { |a| a.author.split(' ').reverse.join(" ") } + .uniq(&:author) + .each { |a| puts a.author} +``` + + Get 10 comedies (the first on the release date) + +```ruby + movies + .reject { |c| !c.genre.split(",").include?("Comedy")} + .sort_by(&:year) + .take(10) + .each { |a| puts "#{a.title} - #{a.genre} - #{a.year}"} +``` + + Get 5 longest movies + +```ruby + def show(f) + puts "#{ f.title} (#{f.date} #{f.genre}) - #{f.length }" + end + + movies + .sort_by { |f| -f.length.to_i } + .take(5) + .each { |a| show(a) } +``` + +####Netflix + + At each call show different amounts of money withdrawn + (1, 1.5, 3, 5 dollars, depending on the type of movie. + + There are 4 types of films: + +* ancient - AncientMovie (1900-1945) +* classic - ClassicMovie (1945-1968) +* modern - ModernMovie (1968-2000) +* new - NewMovie (2000 until today) + +Show newest drama + +```ruby + online.show(genre: 'Drama', period: :new) +``` + + Component filter for movies + +```ruby + movies = online.show do |movie| + !movie.title.include?('Terminator') && \ + movie.genre[0].include?('Action') && \ + movie.year > 2003 + end +``` + + You can define your filter and display a list of films according to this filter + +```ruby + online.define_filter(:new_sci_fi) do |movie| + movie.genre[0].include?('Sci-Fi') && \ + !movie.country.include?('UK') + end + online.show(new_sci_fi: true) + + online.define_filter(:not_spielberg) do |movie| + !movie.author.include?('Steven Spielberg') + end + online.show(new_sci_fi: true, not_spielberg: true) + + online.define_filter(:country) do |movie| + movie.genre.include?('Sci-Fi') && \ + !movie.author.include?('Steven Spielberg') && \ + !movie.country.include?('UK') + end +``` + + You can create a filter based on an existing + +```ruby + online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } + online.show(new_sci_fi: 2010) + online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) + online.show(newest_sci_fi: 2014) +``` + + For different cinemas various online cash + +```ruby + online.cash != online1.cash +``` + + See the amount of money at the cashbox + +```ruby + online.cash +``` + + Put money in the cinema cashbox + +```ruby + online.pay(35) +``` + + How much film + +```ruby + netflix.how_much?('The Terminator') +``` + + Holding cash collection and reset cashbox + - if who == Bank - going cash collection + - if something else - an error occurs + +```ruby + netflix.take(Bank) +``` + + +####Theatre + + See the amount of money at the cashbox + +```ruby + theatre.cash +``` + + To know when you can see the right movie + +```ruby + theatre.when?('The Terminator') +``` + + You can buy a ticket to a movie at a specific time + +```ruby + theatre.buy_ticket('10:20') + theatre.buy_ticket('13:20') + theatre.buy_ticket('17:20') + theatre.buy_ticket('19:20', hall: :green) +``` + + Holding cash collection and reset cashbox + - if who == Bank - going cash collection + - if something else - an error occurs + +```ruby + theatre.take(Bank) +``` + +####Movie + + Get some film in several ways + +```ruby + movie = movies.all.first + movie = movies.all[0] + movie = movies.filter(title: 'Terminator') +``` + + Get the number of well-known actors, who played in the film + +```ruby + movie.actors.count +``` + + Does the actor plays in the film + +```ruby + movie.actors.include?('Arnold Shwarzenegger') +``` + + To know whether the film belongs to the genre + +```ruby + movies.first.has_genre?('Camedy') +``` + + To know the film's budget + +```ruby + movie = movies.all[112] + movie.budget +``` + + Get a poster for the film + +```ruby + movie = movies.filter(title: 'Terminator') + movie.poster +``` + + Receive translations of the film in other language + +```ruby + movie = movies.filter(title: '12 Angry Men') + movie.translations +``` + +####HTML + + Create HTML markup + +```ruby + movies.render_html +``` + +Author +-------------- +Serhii Dmytrakov \ No newline at end of file From 876c40cfc680dc64b8255d1451a1ca00d5aa5ba7 Mon Sep 17 00:00:00 2001 From: devico Date: Fri, 21 Oct 2016 22:22:15 +0300 Subject: [PATCH 11/26] =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=8B=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=B4=D0=B8=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20usage=20=D0=B8=20examples?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 1c1db21..b20839d 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,7 @@ $ gem install topmovies Usage ------------------- -To use gem topmovies you need to do the following: - -1.create a Movie Collection on the basis of added movies list - - ```ruby +```ruby file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' if File.exist?(file_name) File.open(file_name) @@ -28,23 +24,14 @@ To use gem topmovies you need to do the following: puts 'Ошибка. Файл отсутствует!' exit end - ``` -2.create a Movie Collection on the basis of added movies list - -```ruby movies = TopMovies::MovieCollection.new(file_name) -``` - -3.create an online cinema Netflix + movies.filter(genre: 'Comedy') + movies.sort_by(:year) -```ruby online = TopMovies::Netflix.new(file_name) -``` - -4.create a normal cinema Theatre + online.show(genre: 'Drama', period: :new) -```ruby theatre = TopMovies::Theatre.new do hall :red, title: 'Красный зал', places: 100 @@ -79,9 +66,18 @@ To use gem topmovies you need to do the following: hall :green end end + + theatre.period '21:00'..'23:00' do + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red + end + + theatre.buy_ticket('19:20', hall: :green) ``` -After that you will be available to a large number of methods for manipulating data list IMDB top 250 films +Other methods for manipulating data list IMDB top 250 films described to documentation Examples ----------- From 61b0ed0396fa2b9f4127242b4ed79bf36dc7e244 Mon Sep 17 00:00:00 2001 From: devico Date: Sat, 22 Oct 2016 11:31:40 +0300 Subject: [PATCH 12/26] =?UTF-8?q?=D0=B5=D1=89=D0=B5=20=D0=BE=D0=B4=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D0=BF=D1=8B=D1=82=D0=BA=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 426 ++++++++++++++---------------------------------------- 1 file changed, 105 insertions(+), 321 deletions(-) diff --git a/README.md b/README.md index b20839d..8487e41 100644 --- a/README.md +++ b/README.md @@ -3,35 +3,99 @@ TopMovies TopMovies is a console application to manipulate the data from the list of top 250 IMDB movies. -MovieCollection, created in the application, allows you to extract data and show filtered and sorted lists of movies, based on different criteria, also it can display any statistics on films. - -Netflix and Theatre are cinemas based on MovieCollection have cashboxes that can accept payments and sell tickets. - In addition, the application can get the budget for each film with IMDb site, extract the posters and film title translation into other languages with TMDB site, and renders html page with all the movies +Usage +========== + Installation ------------------- $ gem install topmovies -Usage -------------------- +Перед тем как использовать все возможности библиотеки нужно подключить файл данных с фильмами ```ruby - file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' - if File.exist?(file_name) - File.open(file_name) - else - puts 'Ошибка. Файл отсутствует!' - exit - end + file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' + if File.exist?(file_name) + File.open(file_name) + else + puts 'Ошибка. Файл отсутствует!' + exit + end +``` + +####MovieCollection +MovieCollection, created in the application, allows you to extract data and show filtered and sorted lists of movies, based on different criteria, also it can display any statistics on films. + +```ruby + # make collection of movies movies = TopMovies::MovieCollection.new(file_name) + # => + + #show comedies movies.filter(genre: 'Comedy') + # => + # => + # => + # => ... + + # show sorted list movies by year movies.sort_by(:year) + # => The Kid - 1921 + # => The Gold Rush - 1925 + # => The General - 1926 + # => Metropolis - 1927 + # => ... + + # show count of movies maked each author + movies.stats(:author) + # => {"Adam Elliot"=>1, "Akira Kurosawa"=>6, "Alejandro González Iñárritu"=>1, ... } + + # get first movie + movie = movies.all.first + + # number famous actors played in this movie + movie.actors.count + # => 3 + + # Arnold Shwarzenegger played in this movie + movie.actors.include?('Arnold Shwarzenegger') + # => false + +####Cinema + Netflix and Theatre are cinemas based on MovieCollection have cashboxes that can accept payments and sell tickets. + +#####Netflix + +```ruby + # make online cinema Netflix online = TopMovies::Netflix.new(file_name) + # => # + + # show newest Drama online.show(genre: 'Drama', period: :new) + # => Downfall — новинка, вышло 12 лет назад! + + # create component filter + movies = online.show do |movie| + !movie.title.include?('Terminator') && \ + movie.genre[0].include?('Action') && \ + movie.year > 2003 + end + # genre of movies is Action and not have Terminator and newer 2003 + # => Elite Squad: The Enemy Within — новинка, вышло 6 лет назад! + # put cash to cashbox of Netflix + online.pay(35) + # => 35.00 +``` + +#####Theatre + +```ruby + # make usual cinema Theatre theatre = TopMovies::Theatre.new do hall :red, title: 'Красный зал', places: 100 @@ -66,340 +130,60 @@ Usage hall :green end end + # => + # you can add period into Theatre theatre.period '21:00'..'23:00' do - description 'Еще один сеанс' - filters genre: 'Sci-Fi', year: 1900..1980 - price 13 - hall :red - end - - theatre.buy_ticket('19:20', hall: :green) -``` - -Other methods for manipulating data list IMDB top 250 films described to documentation - -Examples ------------ -####MovieCollection - -```ruby -movies.filter(year: 2000) - show movies, created in 2000 -movies.filter(genre: 'Comedy') - show comedies -movies.sort_by(:year) - show sorted list of movies by year -``` - -####Netflix - - Show all the drama from 2000 to present - -```ruby - online.show(genre: 'Drama', period: :new) -``` - - See the amount of money at the cashbox - -```ruby - online.cash -``` - - Define new filter and show movies of genre Sci-Fi make not UK - -```ruby - online.define_filter(:new_sci_fi) do |movie| - movie.genre[0].include?('Sci-Fi') && \ - !movie.country.include?('UK') - end - puts online.show(new_sci_fi: true) -``` - -####Theatre - - Add new period - -```ruby - theatre.period '21:00'..'23:00' do - description 'Еще один сеанс' - filters genre: 'Sci-Fi', year: 1900..1980 - price 13 - hall :red - end -``` - - Buy tickets - -```ruby - theatre.buy_ticket('17:20') - theatre.buy_ticket('19:20', hall: :green) -``` - -Features ------------- - -####MovieCollection - - Show list all films - -```ruby - movies.all -``` - - Get a filtered list of movies by genre - -```ruby - movies.filter(genre: 'Comedy') -``` - - Get a filtered list on the film by year - -```ruby - movies.filter(year: 2000) - movies.filter(year: 1980..2000) -``` - - Get a sorted list on the film by tear - -```ruby - movies.sort_by(:year) -``` - - Obtain statistics on the number of films made by each director - -```ruby - movies.stats(:author) -``` - - Display statistics by month - -```ruby - groups = movies.reject{ |f| - !f.date.include?('-') } - .group_by{ |f| - Date.strptime( f.date, '%Y-%m').mon - }.sort - - groups.map do |month, group| - puts "#{ Date.strptime(month.to_s, '%m').strftime('%B') } - #{group.count}" - end -``` - - Get the number of films made outside the US - -```ruby - movies.each.count { |f| f.country != "USA" } -``` - - Get a list of all directors alphabetically - -```ruby - movies - .sort_by { |a| a.author.split(' ').reverse.join(" ") } - .uniq(&:author) - .each { |a| puts a.author} -``` - - Get 10 comedies (the first on the release date) - -```ruby - movies - .reject { |c| !c.genre.split(",").include?("Comedy")} - .sort_by(&:year) - .take(10) - .each { |a| puts "#{a.title} - #{a.genre} - #{a.year}"} -``` - - Get 5 longest movies - -```ruby - def show(f) - puts "#{ f.title} (#{f.date} #{f.genre}) - #{f.length }" - end - - movies - .sort_by { |f| -f.length.to_i } - .take(5) - .each { |a| show(a) } -``` - -####Netflix - - At each call show different amounts of money withdrawn - (1, 1.5, 3, 5 dollars, depending on the type of movie. - - There are 4 types of films: - -* ancient - AncientMovie (1900-1945) -* classic - ClassicMovie (1945-1968) -* modern - ModernMovie (1968-2000) -* new - NewMovie (2000 until today) - -Show newest drama - -```ruby - online.show(genre: 'Drama', period: :new) -``` - - Component filter for movies - -```ruby - movies = online.show do |movie| - !movie.title.include?('Terminator') && \ - movie.genre[0].include?('Action') && \ - movie.year > 2003 + description 'Еще один сеанс' + filters genre: 'Sci-Fi', year: 1900..1980 + price 13 + hall :red end -``` - - You can define your filter and display a list of films according to this filter - -```ruby - online.define_filter(:new_sci_fi) do |movie| - movie.genre[0].include?('Sci-Fi') && \ - !movie.country.include?('UK') - end - online.show(new_sci_fi: true) - - online.define_filter(:not_spielberg) do |movie| - !movie.author.include?('Steven Spielberg') - end - online.show(new_sci_fi: true, not_spielberg: true) - - online.define_filter(:country) do |movie| - movie.genre.include?('Sci-Fi') && \ - !movie.author.include?('Steven Spielberg') && \ - !movie.country.include?('UK') - end -``` - - You can create a filter based on an existing - -```ruby - online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } - online.show(new_sci_fi: 2010) - online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) - online.show(newest_sci_fi: 2014) -``` - - For different cinemas various online cash - -```ruby - online.cash != online1.cash -``` - - See the amount of money at the cashbox - -```ruby - online.cash -``` - - Put money in the cinema cashbox - -```ruby - online.pay(35) -``` - - How much film -```ruby - netflix.how_much?('The Terminator') -``` - - Holding cash collection and reset cashbox - - if who == Bank - going cash collection - - if something else - an error occurs - -```ruby - netflix.take(Bank) -``` - - -####Theatre - - See the amount of money at the cashbox - -```ruby - theatre.cash -``` - - To know when you can see the right movie - -```ruby - theatre.when?('The Terminator') -``` - - You can buy a ticket to a movie at a specific time - -```ruby + # you can buy a ticket theatre.buy_ticket('10:20') + # => Утренний сеанс - 09:00..12:00 : Фильм: The Gold Rush - 10.00 ₴ theatre.buy_ticket('13:20') + # => Спецпоказ - 12:00..16:00 : Фильм: The Terminator - 50.00 ₴ theatre.buy_ticket('17:20') + # => Вечерний сеанс - 16:00..20:00 : Фильм: Interstellar - 20.00 ₴ theatre.buy_ticket('19:20', hall: :green) -``` + # => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: The Maltese Falcon - 30.00 ₴ - Holding cash collection and reset cashbox - - if who == Bank - going cash collection - - if something else - an error occurs - -```ruby - theatre.take(Bank) -``` - -####Movie - - Get some film in several ways - -```ruby - movie = movies.all.first - movie = movies.all[0] - movie = movies.filter(title: 'Terminator') -``` - - Get the number of well-known actors, who played in the film - -```ruby - movie.actors.count -``` + # if you want you can check the money in cashbox of Theatre + theatre.cash + # => 110.00 - Does the actor plays in the film + # yet you can spend cash collection into cashbox of Theatre + theatre.take('Bank') + # => Проведена инкассация + # => 0.00 -```ruby - movie.actors.include?('Arnold Shwarzenegger') ``` - - To know whether the film belongs to the genre - -```ruby - movies.first.has_genre?('Camedy') -``` - - To know the film's budget +####Additional info ```ruby + # get the film's budget movie = movies.all[112] movie.budget -``` - - Get a poster for the film + # => $14,400,000 -```ruby + # get a poster for the film movie = movies.filter(title: 'Terminator') movie.poster -``` - Receive translations of the film in other language -```ruby + # receive translations of the film in other language movie = movies.filter(title: '12 Angry Men') movie.translations -``` - -####HTML - - Create HTML markup -```ruby + # create HTML markup movies.render_html + # => html markup ``` +Other methods for manipulating data list IMDB top 250 films described to documentation + Author -------------- -Serhii Dmytrakov \ No newline at end of file +Serhii Dmytrakov From a8142ff7bb6c704836e931172989676f02a562ff Mon Sep 17 00:00:00 2001 From: devico Date: Sat, 22 Oct 2016 15:24:05 +0300 Subject: [PATCH 13/26] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D0=B0=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8487e41..b3e8b54 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,6 @@ TopMovies ======== TopMovies is a console application to manipulate the data from the list of top 250 IMDB movies. - -In addition, the application can get the budget for each film with IMDb site, extract the posters and film title translation into other languages with TMDB site, and renders html page with all the movies - Usage ========== @@ -12,7 +9,7 @@ Installation ------------------- $ gem install topmovies -Перед тем как использовать все возможности библиотеки нужно подключить файл данных с фильмами +Before you can use all the features of the library you want to connect a data file with movies ```ruby file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' @@ -62,6 +59,7 @@ MovieCollection, created in the application, allows you to extract data and show # Arnold Shwarzenegger played in this movie movie.actors.include?('Arnold Shwarzenegger') # => false +``` ####Cinema @@ -162,6 +160,8 @@ MovieCollection, created in the application, allows you to extract data and show ``` ####Additional info + In addition, the application can get the budget for each film with IMDb site, extract the posters and film title translation into other languages with TMDB site, and renders html page with all the movies. + ```ruby # get the film's budget movie = movies.all[112] From c19a11bf4d45604ac4bc0c824fc53554284657fd Mon Sep 17 00:00:00 2001 From: devico Date: Sun, 23 Oct 2016 18:19:32 +0300 Subject: [PATCH 14/26] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20=D0=B4=D0=BE=D0=BA=D1=83?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .yardoc/checksums | 15 + .yardoc/complete | 0 .yardoc/object_types | Bin 0 -> 4722 bytes .yardoc/objects/root.dat | Bin 0 -> 59517 bytes .yardoc/proxy_types | Bin 0 -> 4 bytes .yardopts | 3 + doc/ruby/CashBox.html | 313 ++++ doc/ruby/TopMovies.html | 131 ++ doc/ruby/TopMovies/AncientMovie.html | 291 ++++ doc/ruby/TopMovies/ClassicMovie.html | 295 ++++ doc/ruby/TopMovies/CountryFilter.html | 427 +++++ doc/ruby/TopMovies/FilterGenre.html | 425 +++++ doc/ruby/TopMovies/ImdbBudgets.html | 307 ++++ doc/ruby/TopMovies/ModernMovie.html | 291 ++++ doc/ruby/TopMovies/Movie.html | 879 ++++++++++ doc/ruby/TopMovies/Movie/SplitArray.html | 195 +++ doc/ruby/TopMovies/MovieCollection.html | 1090 ++++++++++++ doc/ruby/TopMovies/Netflix.html | 1999 ++++++++++++++++++++++ doc/ruby/TopMovies/NewMovie.html | 293 ++++ doc/ruby/TopMovies/Period.html | 1127 ++++++++++++ doc/ruby/TopMovies/Theatre.html | 1113 ++++++++++++ doc/ruby/TopMovies/TmdbPosters.html | 345 ++++ doc/ruby/_index.html | 279 +++ doc/ruby/class_list.html | 51 + doc/ruby/css/common.css | 1 + doc/ruby/css/full_list.css | 58 + doc/ruby/css/style.css | 481 ++++++ doc/ruby/file.README.html | 264 +++ doc/ruby/file_list.html | 56 + doc/ruby/frames.html | 17 + doc/ruby/index.html | 264 +++ doc/ruby/js/app.js | 243 +++ doc/ruby/js/full_list.js | 216 +++ doc/ruby/js/jquery.js | 4 + doc/ruby/method_list.html | 803 +++++++++ doc/ruby/top-level-namespace.html | 112 ++ examples/collection_filters.rb | 1 + examples/netflix_filters.rb | 4 +- examples/theatre_buy_ticket.rb | 1 + lib/topmovies/movie.rb | 4 + lib/topmovies/netflix.rb | 102 ++ readme.md | 372 ---- 42 files changed, 12499 insertions(+), 373 deletions(-) create mode 100644 .yardoc/checksums create mode 100644 .yardoc/complete create mode 100644 .yardoc/object_types create mode 100644 .yardoc/objects/root.dat create mode 100644 .yardoc/proxy_types create mode 100644 .yardopts create mode 100644 doc/ruby/CashBox.html create mode 100644 doc/ruby/TopMovies.html create mode 100644 doc/ruby/TopMovies/AncientMovie.html create mode 100644 doc/ruby/TopMovies/ClassicMovie.html create mode 100644 doc/ruby/TopMovies/CountryFilter.html create mode 100644 doc/ruby/TopMovies/FilterGenre.html create mode 100644 doc/ruby/TopMovies/ImdbBudgets.html create mode 100644 doc/ruby/TopMovies/ModernMovie.html create mode 100644 doc/ruby/TopMovies/Movie.html create mode 100644 doc/ruby/TopMovies/Movie/SplitArray.html create mode 100644 doc/ruby/TopMovies/MovieCollection.html create mode 100644 doc/ruby/TopMovies/Netflix.html create mode 100644 doc/ruby/TopMovies/NewMovie.html create mode 100644 doc/ruby/TopMovies/Period.html create mode 100644 doc/ruby/TopMovies/Theatre.html create mode 100644 doc/ruby/TopMovies/TmdbPosters.html create mode 100644 doc/ruby/_index.html create mode 100644 doc/ruby/class_list.html create mode 100644 doc/ruby/css/common.css create mode 100644 doc/ruby/css/full_list.css create mode 100644 doc/ruby/css/style.css create mode 100644 doc/ruby/file.README.html create mode 100644 doc/ruby/file_list.html create mode 100644 doc/ruby/frames.html create mode 100644 doc/ruby/index.html create mode 100644 doc/ruby/js/app.js create mode 100644 doc/ruby/js/full_list.js create mode 100644 doc/ruby/js/jquery.js create mode 100644 doc/ruby/method_list.html create mode 100644 doc/ruby/top-level-namespace.html delete mode 100644 readme.md diff --git a/.yardoc/checksums b/.yardoc/checksums new file mode 100644 index 0000000..da885ab --- /dev/null +++ b/.yardoc/checksums @@ -0,0 +1,15 @@ +lib/top_movies.rb 008590f106ec3e567b0406e15df2416c9817967c +lib/topmovies/movie.rb 4bdd42807beb316321d2ecdede7c167eb8e94667 +lib/topmovies/period.rb 277c98679e679ad19bce54990b8ac4b52823d013 +lib/topmovies/netflix.rb eea07a934bd4da6843695cf6708d5ed763dd7107 +lib/topmovies/theatre.rb 9c0aa2e2c9469b075dc8f18f0112799f394f0041 +lib/topmovies/cash_box.rb 623916b2898432c51d6ffb48002c30a008d0ed2f +lib/topmovies/new_movie.rb 25f1fa836a45fc77f4be2e99f4db9d36752b0547 +lib/topmovies/filter_genre.rb 21727d0eb6895705db1e024c3e2b36a07ccc338b +lib/topmovies/tmdb_posters.rb 682837818443e69ac20bbd4bfedd818824cb3c48 +lib/topmovies/imdb_budgets.rb 47545e6cb0d5ade0ab9bcdc5d4df472ad62e9f13 +lib/topmovies/modern_movie.rb bbb707f5e7803887e0d5f19e75fcc08d5ea6ae8a +lib/topmovies/ancient_movie.rb e0f658a76f29a9d05c7f78cf58ecc2b361ef4ceb +lib/topmovies/classic_movie.rb 36eb48644bb02a739d7fb72b55ee21b5e65917a1 +lib/topmovies/country_filter.rb ff0d767206550cc9419b5ed5d297a62db4f9de8b +lib/topmovies/movie_collection.rb 86732e93d5b85b9a6cd79069702e7a1f636633e0 diff --git a/.yardoc/complete b/.yardoc/complete new file mode 100644 index 0000000..e69de29 diff --git a/.yardoc/object_types b/.yardoc/object_types new file mode 100644 index 0000000000000000000000000000000000000000..25dd0b23f6ced882ed22400923c8dc4019470983 GIT binary patch literal 4722 zcma)AS#RSu5bi^fcDL;U`_Kd3?Pd4c9x3{&MNv48lL}}OBXJj4_<@jRIwB&G0!44) z_Rp8%46TtwxqXc1<2MJt8IJPyyZ=0n9%-e_^62GT(R+njZ*#tU6px-PRC%G^2wojU zN3*kd^!_xdvJ>@i^zt41*R#DjiWbFsHCL74y6PKaYdqPmZ@F>C=z~ z$zsy?)nI1V@zp6ioxDCkWUXv|9Z%8Ow;^X|@t+Hu8FP^V*9(FptgG8J5!0qe9bg-D6@GjevS zw$kVwI0wI95VJeg6uJi3&fq3f>!pfE-*=%=)Rb|YDy~yZhQ{kik5g?mIAk3ciAl5H zAt0(;cNVO?Vo9DOrpG_Ntt*MvPrGrBt4!Skd;erfZkyH$d<)yfOrRM0hgYt_2dUj` z7)s0NL{@oHOB%-qbq^vOS3Hrvs-Kg*TIS!t#n%CQ$y2crsq+G;Z~g;?WC3Rzt66Qw zqML(MHy8}sk$|cl0jaGAoTil|Mm!p-Ly{{c;cy_d%9)2f%cKa14?WjLJW3}8T7?uw zB)Rw-38+31vgTE)MOokEV1#vX_U}X>{Zb2m&w(rkz>oozwKv*w6s&GqEZLWVsExAak{nrR=i;k4 zuCVIskkS>NmBD<`xXnOz1r@W5$PQd^p7X2c)eA%0uNQE379I~ zlh_>>dWLOuSLx4jdmh*0V5J^dtMQ+CYq>RbLI{FFKlMgqM*;jq%jK6VyLtF$C1`G9 zr_1$Ovw&Fww_Ab>dT#*`%8a%GMKuo%eM-6rB%zHLl?MlgA;I6UR|91Ux(it=#c5cV0!TfVYdtv0-eBJc>O?t??a?&WfCD_G6qIs hm(=cZE({<(bVnAM!Z$Qv50zhYX+PsxW(v2u{|hEaJ%RuL literal 0 HcmV?d00001 diff --git a/.yardoc/objects/root.dat b/.yardoc/objects/root.dat new file mode 100644 index 0000000000000000000000000000000000000000..d4eb78c7a8f3a17c2c260af1843026bc9a8fa993 GIT binary patch literal 59517 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 literal 0 HcmV?d00001 diff --git a/.yardoc/proxy_types b/.yardoc/proxy_types new file mode 100644 index 0000000000000000000000000000000000000000..beefda1ae32c2cef8eb53a4f3c8407a532a22b51 GIT binary patch literal 4 LcmZSKsAd2F0U`j1 literal 0 HcmV?d00001 diff --git a/.yardopts b/.yardopts new file mode 100644 index 0000000..19f9a00 --- /dev/null +++ b/.yardopts @@ -0,0 +1,3 @@ +--private +--protected +-o doc/ruby diff --git a/doc/ruby/CashBox.html b/doc/ruby/CashBox.html new file mode 100644 index 0000000..0e7f142 --- /dev/null +++ b/doc/ruby/CashBox.html @@ -0,0 +1,313 @@ + + + + + + + Module: CashBox + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Module: CashBox + + + +

+
+ + + + + + + + + +
+
Included in:
+
TopMovies::MovieCollection, TopMovies::Netflix
+
+ + + +
+
Defined in:
+
lib/topmovies/cash_box.rb
+
+ +
+ + + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #cashbox_balanceObject + + + + + +

+ + + + +
+
+
+
+2
+3
+4
+
+
# File 'lib/topmovies/cash_box.rb', line 2
+
+def cashbox_balance
+  @cashbox_balance ||= Money.new(0, 'UAH')
+end
+
+
+ +
+

+ + #put_to_cashbox(money) ⇒ Object + + + + + +

+ + + + +
+
+
+
+6
+7
+8
+
+
# File 'lib/topmovies/cash_box.rb', line 6
+
+def put_to_cashbox(money)
+  @cashbox_balance = cashbox_balance + money
+end
+
+
+ +
+

+ + #take(who) ⇒ Object + + + + + +

+
+ + +
+
+
+ +

Raises:

+
    + +
  • + + + (ArgumentError) + + + +
  • + +
+ +
+ + + + +
+
+
+
+10
+11
+12
+13
+14
+15
+
+
# File 'lib/topmovies/cash_box.rb', line 10
+
+def take(who)
+  raise ArgumentError,
+        'Нарушение безопасности, вызвана полиция' unless who == 'Bank'
+  puts 'Проведена инкассация'
+  @cashbox_balance = Money.new(0, 'UAH')
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies.html b/doc/ruby/TopMovies.html new file mode 100644 index 0000000..cbf0650 --- /dev/null +++ b/doc/ruby/TopMovies.html @@ -0,0 +1,131 @@ + + + + + + + Module: TopMovies + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Module: TopMovies + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/top_movies.rb,
+ lib/topmovies/movie.rb,
lib/topmovies/period.rb,
lib/topmovies/netflix.rb,
lib/topmovies/theatre.rb,
lib/topmovies/new_movie.rb,
lib/topmovies/filter_genre.rb,
lib/topmovies/tmdb_posters.rb,
lib/topmovies/imdb_budgets.rb,
lib/topmovies/modern_movie.rb,
lib/topmovies/ancient_movie.rb,
lib/topmovies/classic_movie.rb,
lib/topmovies/country_filter.rb,
lib/topmovies/movie_collection.rb
+
+
+ +
+ +

Defined Under Namespace

+

+ + + Modules: ImdbBudgets, TmdbPosters + + + + Classes: AncientMovie, ClassicMovie, CountryFilter, FilterGenre, ModernMovie, Movie, MovieCollection, Netflix, NewMovie, Period, Theatre + + +

+ +

Constant Summary

+
+ +
VERSION = + +
+
'0.1.0'
+ +
+ + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/AncientMovie.html b/doc/ruby/TopMovies/AncientMovie.html new file mode 100644 index 0000000..cc4c27b --- /dev/null +++ b/doc/ruby/TopMovies/AncientMovie.html @@ -0,0 +1,291 @@ + + + + + + + Class: TopMovies::AncientMovie + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::AncientMovie + + + +

+
+ +
+
Inherits:
+
+ Movie + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/ancient_movie.rb
+
+ +
+ + + + +

Constant Summary

+ +

Constants inherited + from Movie

+

Movie::MOVIE_TYPE, Movie::PATH_BUDGETS

+ + + +

Constants included + from ImdbBudgets

+

ImdbBudgets::PATH_BUDGETS

+ + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods inherited from Movie

+

#budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

+ + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ + +
+

Instance Method Details

+ + +
+

+ + #costObject + + + + + +

+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/ancient_movie.rb', line 3
+
+def cost
+  1.0
+end
+
+
+ +
+

+ + #showObject + + + + + +

+ + + + +
+
+
+
+7
+8
+9
+
+
# File 'lib/topmovies/ancient_movie.rb', line 7
+
+def show
+  "#{@title} — старый фильм (#{@year} год)"
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/ClassicMovie.html b/doc/ruby/TopMovies/ClassicMovie.html new file mode 100644 index 0000000..1f9633d --- /dev/null +++ b/doc/ruby/TopMovies/ClassicMovie.html @@ -0,0 +1,295 @@ + + + + + + + Class: TopMovies::ClassicMovie + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::ClassicMovie + + + +

+
+ +
+
Inherits:
+
+ Movie + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/classic_movie.rb
+
+ +
+ + + + +

Constant Summary

+ +

Constants inherited + from Movie

+

Movie::MOVIE_TYPE, Movie::PATH_BUDGETS

+ + + +

Constants included + from ImdbBudgets

+

ImdbBudgets::PATH_BUDGETS

+ + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods inherited from Movie

+

#budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

+ + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ + +
+

Instance Method Details

+ + +
+

+ + #costObject + + + + + +

+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/classic_movie.rb', line 3
+
+def cost
+  1.5
+end
+
+
+ +
+

+ + #showObject + + + + + +

+ + + + +
+
+
+
+7
+8
+9
+10
+11
+
+
# File 'lib/topmovies/classic_movie.rb', line 7
+
+def show
+  "#{@title} — классический фильм, режиссёр #{@author}"", кроме этого еще \
+#{@collection.filter(author: @author).length} фильмa(ов) #{@author} \
+вошли в ТОП-250"
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/CountryFilter.html b/doc/ruby/TopMovies/CountryFilter.html new file mode 100644 index 0000000..84019cc --- /dev/null +++ b/doc/ruby/TopMovies/CountryFilter.html @@ -0,0 +1,427 @@ + + + + + + + Class: TopMovies::CountryFilter + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::CountryFilter + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/country_filter.rb
+
+ +
+ + + + + +

Instance Attribute Summary collapse

+
    + +
  • + + + #collect ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute collect.

    +
    + +
  • + + +
+ + + + + +

+ Instance Method Summary + collapse +

+ + + + +
+

Constructor Details

+ +
+

+ + #initialize(collection) ⇒ CountryFilter + + + + + +

+
+ +

Returns a new instance of CountryFilter

+ + +
+
+
+ + +
+ + + + +
+
+
+
+5
+6
+7
+
+
# File 'lib/topmovies/country_filter.rb', line 5
+
+def initialize(collection)
+  @collect = collection
+end
+
+
+ +
+
+

Dynamic Method Handling

+

+ This class handles dynamic methods through the method_missing method + +

+ +
+

+ + #method_missing(method_name) ⇒ Object + + + + + +

+ + + + +
+
+
+
+13
+14
+15
+16
+
+
# File 'lib/topmovies/country_filter.rb', line 13
+
+def method_missing(method_name)
+  return super if method_name =~ /(\?|\.|\=)$/
+  @collect.select { |c| c.country.include?(method_name.to_s.upcase) }
+end
+
+
+ +
+ +
+

Instance Attribute Details

+ + + +
+

+ + #collectObject + + + + + +

+
+ +

Returns the value of attribute collect

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/country_filter.rb', line 3
+
+def collect
+  @collect
+end
+
+
+ +
+ + +
+

Instance Method Details

+ + +
+

+ + #respond_to_missing?(method_name) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+9
+10
+11
+
+
# File 'lib/topmovies/country_filter.rb', line 9
+
+def respond_to_missing?(method_name)
+  method_name =~ /(\?|\.|\=)$/ ? super : true
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/FilterGenre.html b/doc/ruby/TopMovies/FilterGenre.html new file mode 100644 index 0000000..39b62b4 --- /dev/null +++ b/doc/ruby/TopMovies/FilterGenre.html @@ -0,0 +1,425 @@ + + + + + + + Class: TopMovies::FilterGenre + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::FilterGenre + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/filter_genre.rb
+
+ +
+ + + + + +

Instance Attribute Summary collapse

+
    + +
  • + + + #collect ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute collect.

    +
    + +
  • + + +
  • + + + #name ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute name.

    +
    + +
  • + + +
+ + + + + +

+ Instance Method Summary + collapse +

+ + + + +
+

Constructor Details

+ +
+

+ + #initialize(collection) ⇒ FilterGenre + + + + + +

+
+ +

Returns a new instance of FilterGenre

+ + +
+
+
+ + +
+ + + + +
+
+
+
+5
+6
+7
+8
+
+
# File 'lib/topmovies/filter_genre.rb', line 5
+
+def initialize(collection)
+  @collect = collection
+  setup_genre_methods
+end
+
+
+ +
+ +
+

Instance Attribute Details

+ + + +
+

+ + #collectObject + + + + + +

+
+ +

Returns the value of attribute collect

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/filter_genre.rb', line 3
+
+def collect
+  @collect
+end
+
+
+ + + +
+

+ + #nameObject + + + + + +

+
+ +

Returns the value of attribute name

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/filter_genre.rb', line 3
+
+def name
+  @name
+end
+
+
+ +
+ + +
+

Instance Method Details

+ + +
+

+ + #setup_genre_methodsObject (private) + + + + + +

+ + + + +
+
+
+
+12
+13
+14
+15
+16
+17
+18
+19
+
+
# File 'lib/topmovies/filter_genre.rb', line 12
+
+def setup_genre_methods
+  @genres ||= @collect.map(&:genre).flatten.uniq
+  @genres.map do |dm|
+    self.class.send(:define_method, dm.downcase) do
+      @collect.select { |c| c.genre.include?(dm) }
+    end
+  end
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/ImdbBudgets.html b/doc/ruby/TopMovies/ImdbBudgets.html new file mode 100644 index 0000000..32b16d7 --- /dev/null +++ b/doc/ruby/TopMovies/ImdbBudgets.html @@ -0,0 +1,307 @@ + + + + + + + Module: TopMovies::ImdbBudgets + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Module: TopMovies::ImdbBudgets + + + +

+
+ + + + + + + + + +
+
Included in:
+
Movie, MovieCollection
+
+ + + +
+
Defined in:
+
lib/topmovies/imdb_budgets.rb
+
+ +
+ + +

Constant Summary

+
+ +
PATH_BUDGETS = + +
+
File.dirname(File.expand_path('data/budgets/*.*',__dir__))
+ +
+ + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #take_budget_from_file(file_name) ⇒ Object + + + + + +

+ + + + +
+
+
+
+10
+11
+12
+
+
# File 'lib/topmovies/imdb_budgets.rb', line 10
+
+def take_budget_from_file(file_name)
+  YAML::load_file(File.open("#{PATH_BUDGETS}/#{file_name}"))[file_name[0,9]]
+end
+
+
+ +
+

+ + #take_budget_from_imdb(id) ⇒ Object + + + + + +

+ + + + +
+
+
+
+14
+15
+16
+17
+18
+19
+20
+21
+22
+
+
# File 'lib/topmovies/imdb_budgets.rb', line 14
+
+def take_budget_from_imdb(id)
+  data = take_info
+  data = if data =~ /^(\$|\€|\£|DEM|AUD|FRF)/
+          data
+         else
+           nil
+         end
+  File.write("#{PATH_BUDGETS}/#{id}.yml", {id => data}.to_yaml)
+end
+
+
+ +
+

+ + #take_infoObject + + + + + +

+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/topmovies/imdb_budgets.rb', line 24
+
+def take_info
+  Nokogiri::HTML(open(self.link)).css('div.txt-block:nth-child(11)').text.split(' ')[1]
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/ModernMovie.html b/doc/ruby/TopMovies/ModernMovie.html new file mode 100644 index 0000000..b00b0f9 --- /dev/null +++ b/doc/ruby/TopMovies/ModernMovie.html @@ -0,0 +1,291 @@ + + + + + + + Class: TopMovies::ModernMovie + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::ModernMovie + + + +

+
+ +
+
Inherits:
+
+ Movie + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/modern_movie.rb
+
+ +
+ + + + +

Constant Summary

+ +

Constants inherited + from Movie

+

TopMovies::Movie::MOVIE_TYPE, TopMovies::Movie::PATH_BUDGETS

+ + + +

Constants included + from ImdbBudgets

+

ImdbBudgets::PATH_BUDGETS

+ + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods inherited from Movie

+

#budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

+ + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ + +
+

Instance Method Details

+ + +
+

+ + #costObject + + + + + +

+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/modern_movie.rb', line 3
+
+def cost
+  3.0
+end
+
+
+ +
+

+ + #showObject + + + + + +

+ + + + +
+
+
+
+7
+8
+9
+
+
# File 'lib/topmovies/modern_movie.rb', line 7
+
+def show
+  "#{@title} — современное кино: играют #{@actors.join(', ')}"
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/Movie.html b/doc/ruby/TopMovies/Movie.html new file mode 100644 index 0000000..18e6aff --- /dev/null +++ b/doc/ruby/TopMovies/Movie.html @@ -0,0 +1,879 @@ + + + + + + + Class: TopMovies::Movie + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::Movie + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + +
+
Includes:
+
ImdbBudgets, TmdbPosters
+
+ + + + + + +
+
Defined in:
+
lib/topmovies/movie.rb
+
+ +
+ +
+

Direct Known Subclasses

+

AncientMovie, ClassicMovie, ModernMovie, NewMovie

+
+

Defined Under Namespace

+

+ + + + + Classes: SplitArray + + +

+ +

Constant Summary

+
+ +
PATH_BUDGETS = + +
+
File.dirname(File.expand_path('data/budgets/*.*', __dir__))
+ +
MOVIE_TYPE = + +
+
{ AncientMovie => (1900..1944), ClassicMovie => (1945..1967),
+ModernMovie => (1968..1999), NewMovie => (2000..2015) }.freeze
+ +
+ + + + + + + + +

+ Class Method Summary + collapse +

+ + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ + +
+

Class Method Details

+ + +
+

+ + .create(params) ⇒ Object + + + + + +

+
+ + +
+
+
+ +

Raises:

+
    + +
  • + + + (ArgumentError) + + + +
  • + +
+ +
+ + + + +
+
+
+
+37
+38
+39
+40
+41
+42
+
+
# File 'lib/topmovies/movie.rb', line 37
+
+def self.create(params)
+  mov_type = MOVIE_TYPE.select { |_k, v| v.include?(params[:year].to_i) }
+                       .keys[0]
+  raise ArgumentError, 'Фильма такого класса нет' unless mov_type
+  mov_type.new(params)
+end
+
+
+ +
+ +
+

Instance Method Details

+ + +
+

+ + #budgetObject + + + + + +

+ + + + +
+
+
+
+86
+87
+88
+89
+90
+
+
# File 'lib/topmovies/movie.rb', line 86
+
+def budget
+  file_name = "#{imdb_id}.yml"
+  take_budget_from_imdb(imdb_id) unless File.exist?("#{PATH_BUDGETS}/#{file_name}")
+  take_budget_from_file(file_name)
+end
+
+
+ +
+

+ + #genre?(type_of_genre) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+

Raises:

+
    + +
  • + + + (ArgumentError) + + + +
  • + +
+ +
+ + + + +
+
+
+
+65
+66
+67
+68
+69
+
+
# File 'lib/topmovies/movie.rb', line 65
+
+def genre?(type_of_genre)
+  raise ArgumentError, "Жанра #{type_of_genre} в коллекции нет!" unless
+    collection.genre_exists?(type_of_genre)
+  genre.include?(type_of_genre)
+end
+
+
+ +
+

+ + #imdb_idObject + + + + + +

+ + + + +
+
+
+
+82
+83
+84
+
+
# File 'lib/topmovies/movie.rb', line 82
+
+def imdb_id
+  link.scan(/tt\d{7}/).first
+end
+
+
+ +
+

+ + #match?(filter_name, filter_value) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+
+
# File 'lib/topmovies/movie.rb', line 44
+
+def match?(filter_name, filter_value)
+  value = if filter_value.is_a? Symbol
+            send(filter_name).to_s[11..-1].to_sym
+          else
+            send(filter_name)
+          end
+  if value.is_a? Array
+    value.any? do |v|
+      filter_value.is_a?(Array) ? filter_value.include?(v) : v.include?(filter_value)
+    end
+  else
+    # rubocop:disable CaseEquality
+    filter_value === value
+    # rubocop:enable CaseEquality
+  end
+end
+
+
+ +
+

+ + #matches_all?(filters) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+61
+62
+63
+
+
# File 'lib/topmovies/movie.rb', line 61
+
+def matches_all?(filters)
+  filters.all? { |k, v| match?(k, v) }
+end
+
+
+ +
+

+ + #periodObject + + + + + +

+ + + + +
+
+
+
+78
+79
+80
+
+
# File 'lib/topmovies/movie.rb', line 78
+
+def period
+  self.class.to_s.chomp('Movie').downcase.to_sym
+end
+
+
+ +
+

+ + #posterObject + + + + + +

+ + + + +
+
+
+
+92
+93
+94
+
+
# File 'lib/topmovies/movie.rb', line 92
+
+def poster
+  take_poster(imdb_id)
+end
+
+
+ +
+

+ + #showObject + + + + + +

+ + + + +
+
+
+
+71
+72
+73
+74
+75
+76
+
+
# File 'lib/topmovies/movie.rb', line 71
+
+def show
+  start_time = Time.now
+  end_time = start_time + length.to_i * 60
+  "Now showing: #{title} #{start_time.strftime('%H:%M')}
+    - #{end_time.strftime('%H:%M')}"
+end
+
+
+ +
+

+ + #translationsObject + + + + + +

+ + + + +
+
+
+
+96
+97
+98
+
+
# File 'lib/topmovies/movie.rb', line 96
+
+def translations
+  take_translations(imdb_id)
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/Movie/SplitArray.html b/doc/ruby/TopMovies/Movie/SplitArray.html new file mode 100644 index 0000000..a260392 --- /dev/null +++ b/doc/ruby/TopMovies/Movie/SplitArray.html @@ -0,0 +1,195 @@ + + + + + + + Class: TopMovies::Movie::SplitArray + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::Movie::SplitArray + + + +

+
+ +
+
Inherits:
+
+ Virtus::Attribute + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/movie.rb
+
+ +
+ + + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + +
+

Instance Method Details

+ + +
+

+ + #coerce(value) ⇒ Object + + + + + +

+ + + + +
+
+
+
+13
+14
+15
+
+
# File 'lib/topmovies/movie.rb', line 13
+
+def coerce(value)
+  value.split(',')
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/MovieCollection.html b/doc/ruby/TopMovies/MovieCollection.html new file mode 100644 index 0000000..2c944c6 --- /dev/null +++ b/doc/ruby/TopMovies/MovieCollection.html @@ -0,0 +1,1090 @@ + + + + + + + Class: TopMovies::MovieCollection + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::MovieCollection + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + +
+
Includes:
+
CashBox, Enumerable, ImdbBudgets, TmdbPosters
+
+ + + + + + +
+
Defined in:
+
lib/topmovies/movie_collection.rb
+
+ +
+ +
+

Direct Known Subclasses

+

Netflix, Theatre

+
+ +

Constant Summary

+
+ +
PATH_PAGES = + +
+
File.expand_path('pages/', __dir__)
+ +
+ + + + + +

Constants included + from ImdbBudgets

+

ImdbBudgets::PATH_BUDGETS

+ + +

Instance Attribute Summary collapse

+
    + +
  • + + + #collection ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute collection.

    +
    + +
  • + + +
+ + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ + + + + + + + + +

Methods included from CashBox

+

#cashbox_balance, #put_to_cashbox, #take

+ +
+

Constructor Details

+ +
+

+ + #initialize(file_name) ⇒ MovieCollection + + + + + +

+
+ +

Returns a new instance of MovieCollection

+ + +
+
+
+ + +
+ + + + +
+
+
+
+21
+22
+23
+24
+25
+26
+
+
# File 'lib/topmovies/movie_collection.rb', line 21
+
+def initialize(file_name)
+  @collection = make_collection(file_name)
+  @balance = Money.new(0, 'UAH')
+  @filter = {}
+  # Tmdb::Api.key('d0607e9a2cf6b939168457281815bc4d')
+end
+
+
+ +
+ +
+

Instance Attribute Details

+ + + +
+

+ + #collectionObject + + + + + +

+
+ +

Returns the value of attribute collection

+ + +
+
+
+ + +
+ + + + +
+
+
+
+17
+18
+19
+
+
# File 'lib/topmovies/movie_collection.rb', line 17
+
+def collection
+  @collection
+end
+
+
+ +
+ + +
+

Instance Method Details

+ + +
+

+ + #allObject + + + + + +

+ + + + +
+
+
+
+45
+46
+47
+
+
# File 'lib/topmovies/movie_collection.rb', line 45
+
+def all
+  @collection
+end
+
+
+ +
+

+ + #by_countryObject + + + + + +

+ + + + +
+
+
+
+88
+89
+90
+91
+
+
# File 'lib/topmovies/movie_collection.rb', line 88
+
+def by_country
+  country_filter = CountryFilter.new(@collection)
+  country_filter
+end
+
+
+ +
+

+ + #by_genreObject + + + + + +

+ + + + +
+
+
+
+83
+84
+85
+86
+
+
# File 'lib/topmovies/movie_collection.rb', line 83
+
+def by_genre
+  filter_genre = FilterGenre.new(@collection)
+  filter_genre
+end
+
+
+ +
+

+ + #cashObject + + + + + +

+ + + + +
+
+
+
+75
+76
+77
+
+
# File 'lib/topmovies/movie_collection.rb', line 75
+
+def cash
+  cashbox_balance
+end
+
+
+ +
+

+ + #filter(filters) ⇒ Object + + + + + +

+ + + + +
+
+
+
+59
+60
+61
+62
+63
+
+
# File 'lib/topmovies/movie_collection.rb', line 59
+
+def filter(filters)
+  filters.reduce(@collection) do |filtered, (name, value)|
+    filtered.select { |f| f.match?(name, value) }
+  end
+end
+
+
+ +
+

+ + #first_movieObject + + + + + +

+ + + + +
+
+
+
+49
+50
+51
+
+
# File 'lib/topmovies/movie_collection.rb', line 49
+
+def first_movie
+  @collection.first
+end
+
+
+ +
+

+ + #genre_exists?(genre_film) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+70
+71
+72
+73
+
+
# File 'lib/topmovies/movie_collection.rb', line 70
+
+def genre_exists?(genre_film)
+  @genres ||= setup_genre_methods
+  @genres.include?(genre_film)
+end
+
+
+ +
+

+ + #make_collection(name_file) ⇒ Object + + + + + +

+ + + + +
+
+
+
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+
+
# File 'lib/topmovies/movie_collection.rb', line 28
+
+def make_collection(name_file)
+  CSV.read(name_file, col_sep: '|', headers:
+     %i(link title year country date genre length rate author actors))
+     .map(&:to_hash).map do |film|
+    Movie.create(
+      { link: film[:link], title: film[:title], year: film[:year],
+        country: film[:country], date: film[:date], genre: film[:genre],
+        length: film[:length], rate: film[:rate], author: film[:author],
+        actors: film[:actors] }.merge(collection: self)
+    )
+  end
+end
+
+
+ +
+

+ + #make_movieObject + + + + + +

+ + + + +
+
+
+
+41
+42
+43
+
+
# File 'lib/topmovies/movie_collection.rb', line 41
+
+def make_movie
+  @collection
+end
+
+
+ +
+

+ + #obtain_genresObject + + + + + +

+ + + + +
+
+
+
+79
+80
+81
+
+
# File 'lib/topmovies/movie_collection.rb', line 79
+
+def obtain_genres
+  @genres ||= @collection.map(&:genre).flatten.uniq
+end
+
+
+ +
+

+ + #render_htmlObject + + + + + +

+ + + + +
+
+
+
+93
+94
+95
+96
+
+
# File 'lib/topmovies/movie_collection.rb', line 93
+
+def render_html
+  template = File.open("#{PATH_PAGES}/index.haml")
+  Haml::Engine.new(template.read).render(@collection)
+end
+
+
+ +
+

+ + #sort_by(filter) ⇒ Object + + + + + +

+ + + + +
+
+
+
+53
+54
+55
+56
+57
+
+
# File 'lib/topmovies/movie_collection.rb', line 53
+
+def sort_by(filter)
+  @collection
+    .sort_by(&filter)
+    .map { |c| puts "#{c.title} - #{c.send(filter)}" }
+end
+
+
+ +
+

+ + #stats(movie_field) ⇒ Object + + + + + +

+ + + + +
+
+
+
+65
+66
+67
+68
+
+
# File 'lib/topmovies/movie_collection.rb', line 65
+
+def stats(movie_field)
+  @collection.map(&movie_field).flatten.group_by(&:itself)
+             .map { |k, v| [k, v.count] }.sort.to_h
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/Netflix.html b/doc/ruby/TopMovies/Netflix.html new file mode 100644 index 0000000..51ba74d --- /dev/null +++ b/doc/ruby/TopMovies/Netflix.html @@ -0,0 +1,1999 @@ + + + + + + + Class: TopMovies::Netflix + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::Netflix + + + +

+
+ +
+
Inherits:
+
+ MovieCollection + + + show all + +
+
+ + + + +
+
Extended by:
+
CashBox
+
+ + + + + + + + +
+
Defined in:
+
lib/topmovies/netflix.rb
+
+ +
+ + + + +

Constant Summary

+ +

Constants inherited + from MovieCollection

+

MovieCollection::PATH_PAGES

+ + + +

Constants included + from ImdbBudgets

+

ImdbBudgets::PATH_BUDGETS

+ + +

Instance Attribute Summary collapse

+
    + +
  • + + + #balance ⇒ Object + + + + + + + + + readonly + + + + + + + + + +
    +

    Returns the value of attribute balance.

    +
    + +
  • + + +
+ + + + + +

Attributes inherited from MovieCollection

+

#collection

+ + + +

+ Class Method Summary + collapse +

+ +
    + +
  • + + + .cash ⇒ Fixnum + + + + + + + + + + + + + +
    +

    show amount money in cashbox.

    +
    + +
  • + + +
+ +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods included from CashBox

+

cashbox_balance, put_to_cashbox, take

+ + + + + + + + + +

Methods inherited from MovieCollection

+

#all, #by_country, #by_genre, #cash, #filter, #first_movie, #genre_exists?, #initialize, #make_collection, #make_movie, #obtain_genres, #render_html, #sort_by, #stats

+ + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ +
+

Constructor Details

+ +

This class inherits a constructor from TopMovies::MovieCollection

+ +
+ +
+

Instance Attribute Details

+ + + +
+

+ + #balanceObject (readonly) + + + + + +

+
+ +

Returns the value of attribute balance

+ + +
+
+
+ + +
+ + + + +
+
+
+
+14
+15
+16
+
+
# File 'lib/topmovies/netflix.rb', line 14
+
+def balance
+  @balance
+end
+
+
+ +
+ + +
+

Class Method Details

+ + +
+

+ + .cashFixnum + + + + + +

+
+ +
+ Note: +
+

called when you need to know how much money in cashbox

+
+
+ + +

show amount money in cashbox

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Fixnum) + + + + — +
    +

    @balance

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+10
+11
+12
+
+
# File 'lib/topmovies/netflix.rb', line 10
+
+def self.cash
+  cashbox_balance
+end
+
+
+ +
+ +
+

Instance Method Details

+ + +
+

+ + #define_filter(filter_name, from: nil, arg: nil, &blk) ⇒ Hash + + + + + +

+
+ +
+ Note: +
+

called from #show

+
+
+ + +

define filter

+ + +
+
+
+ +
+

Examples:

+ + +
define_filter(:new_sci_fi) { |movie, year| movie.year > year }
+define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014)
+ +
+

Parameters:

+
    + +
  • + + filter_name + + + + + + + — +
    Symbol +
    +

    name new filter

    +
    + +

    from: [Symbol] name filter on which the new filter is created arg: [Array] +value property of the movie, that define in based filter &block [Proc] +code block containing the filter condition

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Hash) + + + + — +
    +

    @filter

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+
+
# File 'lib/topmovies/netflix.rb', line 42
+
+def define_filter(filter_name, from: nil, arg: nil, &blk)
+  @filter[filter_name] =
+    if block_given?
+      blk
+    elsif !from.nil? && !arg.nil?
+      proc { |film, value| @filter[from].call(film, value) }
+    else
+      raise ArgumentError, 'Невозможно создать пользовательский фильтр'
+    end
+end
+
+
+ +
+

+ + #film_costs(title) ⇒ Money + + + + + +

+
+ +
+ Note: +
+

called as needed

+
+
+ + +

define the cost of the film by title

+ + +
+
+
+ +
+

Examples:

+ + +
netflix.film_costs('Terminator')
+# => 50.00 ₴
+ +
+

Parameters:

+
    + +
  • + + title + + + (String) + + + + — +
    +

    title movie

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Money) + + + + — +
    +

    movie cost in currency format

    +
    + +
  • + +
+

Raises:

+
    + +
  • + + + (NameError) + + + +
  • + +
+ +
+ + + + +
+
+
+
+191
+192
+193
+194
+195
+
+
# File 'lib/topmovies/netflix.rb', line 191
+
+def film_costs(title)
+  movie = filter(title).first
+  raise NameError, 'В базе нет такого фильма' unless movie
+  to_money(movie.cost)
+end
+
+
+ +
+

+ + #filter_movie(filters, &block) ⇒ Movie + + + + + +

+
+ +
+ Note: +
+

called from #show

+
+
+ + +

get movie that will show

+ + +
+
+
+ +
+

Examples:

+ + +
filter_movie(new_sci_fi: true)
+# => Blade Runner — современное кино:
+ +
+

Parameters:

+
    + +
  • + + filters + + + + + + + — +
    Hash +
    +

    show filters represents as hash

    +
    + +

    &block [Proc] show filters represents as block

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Movie) + + + + — +
    +

    movie

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+73
+74
+75
+76
+77
+78
+79
+80
+
+
# File 'lib/topmovies/netflix.rb', line 73
+
+def filter_movie(filters, &block)
+  movies = @collection.dup
+  movies = find_by_block(movies, &block)
+  movies = find_by_custom_filters(movies, filters)
+  movies = find_by_inner_filters(movies, filters)
+  movie = movies.sort_by { |m| m.rate.to_f * rand(1000) }.last
+  movie
+end
+
+
+ +
+

+ + #find_by_block(movies, &block) ⇒ Array + + + + + +

+
+ +
+ Note: +
+

called when send block

+
+
+ + +

get movies if send block into

+ + +
+
+
+ +
+

Examples:

+ + +
find_by_block(movies, &block)
+ +
+

Parameters:

+
    + +
  • + + movies + + + + + + + — +
    MovieCollection +
    +

    movies collection

    +
    + +

    &block [Proc] it filter represents as block

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Array) + + + + — +
    +

    array movies

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+90
+91
+92
+93
+
+
# File 'lib/topmovies/netflix.rb', line 90
+
+def find_by_block(movies, &block)
+  movies = movies.select(&block) if block_given?
+  movies
+end
+
+
+ +
+

+ + #find_by_custom_filters(movies, filters) ⇒ Array + + + + + +

+
+ +
+ Note: +
+

called when define custom filter

+
+
+ + +

get movies filetred composite filters

+ + +
+
+
+ +
+

Examples:

+ + +
netflix.find_by_custom_filters(@collection, new_sci_fi: true)
+# => Blade Runner — современное кино: играют Harrison Ford, Rutger Hauer, Sean Young
+ +
+

Parameters:

+
    + +
  • + + movies + + + + + + + — +
    MovieCollection +
    +

    movies collection

    +
    + +

    filters [Hash] filters represents as hash

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Array) + + + + — +
    +

    array movies

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+
+
# File 'lib/topmovies/netflix.rb', line 104
+
+def find_by_custom_filters(movies, filters)
+  parse_filters(filters)
+  if @custom_filters.empty?
+    movies
+  else
+    @custom_filters.each do |k, v|
+      movies = movies.select do |film|
+        @filter[k].call(film, v)
+      end
+    end
+  end
+  movies
+end
+
+
+ +
+

+ + #find_by_inner_filters(movies, filters) ⇒ Array + + + + + +

+
+ +
+ Note: +
+

called as needed

+
+
+ + +

get movies filetred inner filters

+ + +
+
+
+ +
+

Examples:

+ + +
netflix.find_by_inner_filters(@collection, genre: 'Drama')
+# => Pulp Fiction — современное кино: играют John Travolta, Uma Thurman, Samuel L. Jackson
+ +
+

Parameters:

+
    + +
  • + + movies + + + + + + + — +
    MovieCollection +
    +

    movies collection

    +
    + +

    filters [Hash] filters represents as hash

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Array) + + + + — +
    +

    array movies

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+127
+128
+129
+130
+131
+132
+133
+134
+135
+
+
# File 'lib/topmovies/netflix.rb', line 127
+
+def find_by_inner_filters(movies, filters)
+  parse_filters(filters)
+  if @inner_filters.empty?
+    movies
+  else
+    movies = movies.select { |m| m.matches_all?(@inner_filters) }
+  end
+  movies
+end
+
+
+ +
+

+ + #make_payment(movie) ⇒ Fixnum + + + + + +

+
+ +
+ Note: +
+

called from #show

+
+
+ + +

withdraw money from the cashbox for preview movie

+ + +
+
+
+

Parameters:

+
    + +
  • + + movie + + + + + + + — +
    Movie +
    +

    movie to shown

    +
    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Fixnum) + + + + — +
    +

    @balance

    +
    + +
  • + +
+

Raises:

+
    + +
  • + + + (ArgumentError) + + + +
  • + +
+ +
+ + + + +
+
+
+
+21
+22
+23
+24
+25
+26
+27
+28
+29
+
+
# File 'lib/topmovies/netflix.rb', line 21
+
+def make_payment(movie)
+  raise ArgumentError, 'В базе нет такого фильма' unless movie
+  if @balance.to_f < movie.cost
+    raise ArgumentError, "Для просмотра #{movie.title} нужно еще пополнить \
+баланс на #{movie.cost - @balance.to_f}"
+  else
+    @balance -= to_money(movie.cost)
+  end
+end
+
+
+ +
+

+ + #parse_filters(filters) ⇒ Array + + + + + +

+
+ +
+ Note: +
+

called from find_by_custom_filters and find_by_inner_filters

+
+
+ + +

split filters to internal and external

+ + +
+
+
+

Parameters:

+
    + +
  • + + filters + + + + + + + — +
    Hash +
    +

    filters represents as hash

    +
    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Array) + + + + — +
    +

    @custom_filters and @inner_filters

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+58
+59
+60
+61
+62
+
+
# File 'lib/topmovies/netflix.rb', line 58
+
+def parse_filters(filters)
+  @custom_filters, @inner_filters = filters.partition do |flt|
+    @filter.include?(flt[0])
+  end
+end
+
+
+ +
+

+ + #pay(payment) ⇒ Fixnum + + + + + +

+
+ +
+ Note: +
+

called as needed

+
+
+ + +

put cash to cashbox of Netflix

+ + +
+
+
+ +
+

Examples:

+ + +
netflix.pay(35)
+# => 35.00
+ +
+

Parameters:

+
    + +
  • + + payment + + + (Fixnum) + + + + — +
    +

    amount of payment

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Fixnum) + + + + — +
    +

    the amount of money at the cashbox

    +
    + +
  • + +
+

Raises:

+
    + +
  • + + + (ArgumentError) + + + +
  • + +
+ +
+ + + + +
+
+
+
+175
+176
+177
+178
+179
+180
+181
+182
+
+
# File 'lib/topmovies/netflix.rb', line 175
+
+def pay(payment)
+  money = Money.new(payment * 100, 'UAH')
+  raise ArgumentError,
+        "Ожидается положительное число, получено #{money}" if payment <= 0
+  put_to_cashbox(money)
+  self.class.put_to_cashbox(money)
+  @balance += money
+end
+
+
+ +
+

+ + #rand_high_rate(col_movies) ⇒ Movie + + + + + +

+
+ +
+ Note: +
+

called as needed

+
+
+ + +

get movie with high rate

+ + +
+
+
+ +
+

Examples:

+ + +
rand_high_rate(col_movies)
+ +
+

Parameters:

+
    + +
  • + + col_movies + + + (MovieCollection) + + + + — +
    +

    movies collection

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Movie) + + + + — +
    +

    movie with high rate

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+164
+165
+166
+
+
# File 'lib/topmovies/netflix.rb', line 164
+
+def rand_high_rate(col_movies)
+  col_movies.sort_by { |m| m.rate.to_f * rand(1000) }.last
+end
+
+
+ +
+

+ + #show(filter_name = {}, &block) ⇒ Movie + + + + + +

+
+ +
+ Note: +
+

called as needed

+
+
+ + +

show movie

+ + +
+
+
+ +
+

Examples:

+ + +
netflix.show(genre: 'Drama', period: :new)
+# => The Departed — новинка, вышло 10 лет назад!
+movie = netflix.show do |movie|
+  !movie.title.include?('Terminator') && \
+  movie.genre[0].include?('Action') && \
+  movie.year > 2003
+end
+# => The Dark Knight Rises — новинка, вышло 4 лет назад!
+ +
+

Parameters:

+
    + +
  • + + filter_name + + + + + + (defaults to: {}) + + + — +
    Hash +
    +

    filter name

    +
    + +

    block [Proc] composite filter represented as a block

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Movie) + + + + — +
    +

    film in a certain format

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+152
+153
+154
+155
+156
+
+
# File 'lib/topmovies/netflix.rb', line 152
+
+def show(filter_name = {}, &block)
+  movie = filter_movie(filter_name, &block)
+  make_payment(movie)
+  movie.show
+end
+
+
+ +
+

+ + #to_money(price) ⇒ Money + + + + + +

+
+ +
+ Note: +
+

called as needed

+
+
+ + +

converts number into a currency format

+ + +
+
+
+ +
+

Examples:

+ + +
to_money(35.00)
+# => 35.00 ₴
+ +
+

Parameters:

+
    + +
  • + + price + + + (Fixnum) + + + + — +
    +

    ticket cost

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Money) + + + + — +
    +

    ticket cost with currency symbol

    +
    + +
  • + +
+ +

See Also:

+
    + +
  • Money
  • + +
+ +
+ + + + +
+
+
+
+205
+206
+207
+
+
# File 'lib/topmovies/netflix.rb', line 205
+
+def to_money(price)
+  Money.new(price * 100, 'UAH')
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/NewMovie.html b/doc/ruby/TopMovies/NewMovie.html new file mode 100644 index 0000000..ba2701c --- /dev/null +++ b/doc/ruby/TopMovies/NewMovie.html @@ -0,0 +1,293 @@ + + + + + + + Class: TopMovies::NewMovie + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::NewMovie + + + +

+
+ +
+
Inherits:
+
+ Movie + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/new_movie.rb
+
+ +
+ + + + +

Constant Summary

+ +

Constants inherited + from Movie

+

Movie::MOVIE_TYPE, Movie::PATH_BUDGETS

+ + + +

Constants included + from ImdbBudgets

+

ImdbBudgets::PATH_BUDGETS

+ + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods inherited from Movie

+

#budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

+ + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ + +
+

Instance Method Details

+ + +
+

+ + #costObject + + + + + +

+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/new_movie.rb', line 3
+
+def cost
+  5.0
+end
+
+
+ +
+

+ + #showObject + + + + + +

+ + + + +
+
+
+
+7
+8
+9
+10
+
+
# File 'lib/topmovies/new_movie.rb', line 7
+
+def show
+  start_time = Time.now
+  "#{title} — новинка, вышло #{start_time.year - year.to_i} лет назад!"
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/Period.html b/doc/ruby/TopMovies/Period.html new file mode 100644 index 0000000..c07a78b --- /dev/null +++ b/doc/ruby/TopMovies/Period.html @@ -0,0 +1,1127 @@ + + + + + + + Class: TopMovies::Period + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::Period + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/period.rb
+
+ +
+ + + + + +

Instance Attribute Summary collapse

+
    + +
  • + + + #cost ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute cost.

    +
    + +
  • + + +
  • + + + #filtres ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute filtres.

    +
    + +
  • + + +
  • + + + #name ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute name.

    +
    + +
  • + + +
  • + + + #saloon ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute saloon.

    +
    + +
  • + + +
  • + + + #seance ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute seance.

    +
    + +
  • + + +
  • + + + #specification ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute specification.

    +
    + +
  • + + +
+ + + + + +

+ Instance Method Summary + collapse +

+ + + + +
+

Constructor Details

+ +
+

+ + #initialize(period, &block) ⇒ Period + + + + + +

+
+ +

Returns a new instance of Period

+ + +
+
+
+ + +
+ + + + +
+
+
+
+5
+6
+7
+8
+
+
# File 'lib/topmovies/period.rb', line 5
+
+def initialize(period, &block)
+  @seance = period
+  instance_eval(&block)
+end
+
+
+ +
+ +
+

Instance Attribute Details

+ + + +
+

+ + #costObject + + + + + +

+
+ +

Returns the value of attribute cost

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/period.rb', line 3
+
+def cost
+  @cost
+end
+
+
+ + + +
+

+ + #filtresObject + + + + + +

+
+ +

Returns the value of attribute filtres

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/period.rb', line 3
+
+def filtres
+  @filtres
+end
+
+
+ + + +
+

+ + #nameObject + + + + + +

+
+ +

Returns the value of attribute name

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/period.rb', line 3
+
+def name
+  @name
+end
+
+
+ + + +
+

+ + #saloonObject + + + + + +

+
+ +

Returns the value of attribute saloon

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/period.rb', line 3
+
+def saloon
+  @saloon
+end
+
+
+ + + +
+

+ + #seanceObject + + + + + +

+
+ +

Returns the value of attribute seance

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/period.rb', line 3
+
+def seance
+  @seance
+end
+
+
+ + + +
+

+ + #specificationObject + + + + + +

+
+ +

Returns the value of attribute specification

+ + +
+
+
+ + +
+ + + + +
+
+
+
+3
+4
+5
+
+
# File 'lib/topmovies/period.rb', line 3
+
+def specification
+  @specification
+end
+
+
+ +
+ + +
+

Instance Method Details

+ + +
+

+ + #description(descr) ⇒ Object + + + + + +

+ + + + +
+
+
+
+10
+11
+12
+
+
# File 'lib/topmovies/period.rb', line 10
+
+def description(descr)
+  @specification = descr
+end
+
+
+ +
+

+ + #filters(value = nil) ⇒ Object + + + + + +

+ + + + +
+
+
+
+14
+15
+16
+17
+
+
# File 'lib/topmovies/period.rb', line 14
+
+def filters(value = nil)
+  return @filters unless value
+  @filtres = value
+end
+
+
+ +
+

+ + #hall(*hall) ⇒ Object + + + + + +

+ + + + +
+
+
+
+23
+24
+25
+
+
# File 'lib/topmovies/period.rb', line 23
+
+def hall(*hall)
+  @saloon = hall
+end
+
+
+ +
+

+ + #intersects?(period) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+31
+32
+33
+
+
# File 'lib/topmovies/period.rb', line 31
+
+def intersects?(period)
+  seance_intersect?(period) if saloon_intersect?(period)
+end
+
+
+ +
+

+ + #price(price) ⇒ Object + + + + + +

+ + + + +
+
+
+
+19
+20
+21
+
+
# File 'lib/topmovies/period.rb', line 19
+
+def price(price)
+  @cost = price
+end
+
+
+ +
+

+ + #saloon_intersect?(current) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+39
+40
+41
+
+
# File 'lib/topmovies/period.rb', line 39
+
+def saloon_intersect?(current)
+  !(saloon & current.saloon).empty?
+end
+
+
+ +
+

+ + #seance_intersect?(current) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+35
+36
+37
+
+
# File 'lib/topmovies/period.rb', line 35
+
+def seance_intersect?(current)
+  seance.include?(current.seance.first) || seance.include?(current.seance.last)
+end
+
+
+ +
+

+ + #title(ttl) ⇒ Object + + + + + +

+ + + + +
+
+
+
+27
+28
+29
+
+
# File 'lib/topmovies/period.rb', line 27
+
+def title(ttl)
+  @name = ttl
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/Theatre.html b/doc/ruby/TopMovies/Theatre.html new file mode 100644 index 0000000..44d7794 --- /dev/null +++ b/doc/ruby/TopMovies/Theatre.html @@ -0,0 +1,1113 @@ + + + + + + + Class: TopMovies::Theatre + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Class: TopMovies::Theatre + + + +

+
+ +
+
Inherits:
+
+ MovieCollection + + + show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/topmovies/theatre.rb
+
+ +
+ + +

Constant Summary

+
+ +
PATH_DATA = + +
+
File.expand_path('data/movies.txt', __dir__)
+ +
PERIOD_DAY = + +
+
{ morning: (8..12), afternoon: (13..16), evening: (17..23),
+night: (0..7) }.freeze
+ +
DAY_PRICE = + +
+
{ morning: 3.0, afternoon: 5.0, evening: 10.0 }.freeze
+ +
FILTERS_MOVIE = + +
+
{ morning: { period: :ancient },
+afternoon: { genre: %w(Comedy Adventure) },
+evening: { genre: %w(Drama Mystery) } }.freeze
+ +
+ + + + + +

Constants inherited + from MovieCollection

+

MovieCollection::PATH_PAGES

+ + + +

Constants included + from ImdbBudgets

+

ImdbBudgets::PATH_BUDGETS

+ + +

Instance Attribute Summary collapse

+
    + +
  • + + + #halls ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute halls.

    +
    + +
  • + + +
  • + + + #periods ⇒ Object + + + + + + + + + + + + + + + + +
    +

    Returns the value of attribute periods.

    +
    + +
  • + + +
+ + + + + +

Attributes inherited from MovieCollection

+

#collection

+ + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods inherited from MovieCollection

+

#all, #by_country, #by_genre, #cash, #filter, #first_movie, #genre_exists?, #make_collection, #make_movie, #obtain_genres, #render_html, #sort_by, #stats

+ + + + + + + + + +

Methods included from TmdbPosters

+

#imdb_to_tmdb, #take_poster, #take_posters, #take_translations

+ + + + + + + + + +

Methods included from ImdbBudgets

+

#take_budget_from_file, #take_budget_from_imdb, #take_info

+ + + + + + + + + +

Methods included from CashBox

+

#cashbox_balance, #put_to_cashbox, #take

+ +
+

Constructor Details

+ +
+

+ + #initialize(&block) ⇒ Theatre + + + + + +

+
+ +

Returns a new instance of Theatre

+ + +
+
+
+ + +
+ + + + +
+
+
+
+9
+10
+11
+12
+13
+14
+15
+
+
# File 'lib/topmovies/theatre.rb', line 9
+
+def initialize(&block)
+  super(PATH_DATA)
+  @halls = {}
+  @periods = []
+  @blck = {}
+  instance_eval(&block)
+end
+
+
+ +
+ +
+

Instance Attribute Details

+ + + +
+

+ + #hallsObject + + + + + +

+
+ +

Returns the value of attribute halls

+ + +
+
+
+ + +
+ + + + +
+
+
+
+5
+6
+7
+
+
# File 'lib/topmovies/theatre.rb', line 5
+
+def halls
+  @halls
+end
+
+
+ + + +
+

+ + #periodsObject + + + + + +

+
+ +

Returns the value of attribute periods

+ + +
+
+
+ + +
+ + + + +
+
+
+
+5
+6
+7
+
+
# File 'lib/topmovies/theatre.rb', line 5
+
+def periods
+  @periods
+end
+
+
+ +
+ + +
+

Instance Method Details

+ + +
+

+ + #buy_ticket(time_show, hall = nil) ⇒ Object + + + + + +

+ + + + +
+
+
+
+70
+71
+72
+73
+74
+75
+76
+77
+78
+
+
# File 'lib/topmovies/theatre.rb', line 70
+
+def buy_ticket(time_show, hall = nil)
+  period = select_period(time_show, hall)
+  movie = show(period)
+  check = Money.new(period.cost * 100, 'UAH')
+  put_to_cashbox(check)
+  result = "#{period.specification} - #{period.seance} : \
+Фильм: #{movie.title} - #{check.format}"
+  result
+end
+
+
+ +
+

+ + #filters_to_hash(filters) ⇒ Object + + + + + +

+ + + + +
+
+
+
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+
+
# File 'lib/topmovies/theatre.rb', line 59
+
+def filters_to_hash(filters)
+  flts = filters.map do |k, v|
+    if v.is_a?(Array)
+      v.map { |gen| Hash[k, gen] }
+    else
+      Hash[k, v]
+    end
+  end
+  flts.flatten
+end
+
+
+ +
+

+ + #get_movie_from_filters(period) ⇒ Object + + + + + +

+ + + + +
+
+
+
+99
+100
+101
+102
+103
+104
+105
+106
+
+
# File 'lib/topmovies/theatre.rb', line 99
+
+def get_movie_from_filters(period)
+  mov = @collection.dup
+  movies = period.filtres.inject(mov) do |films, (key, value)|
+    key = :country if key == :exclude_country
+    films.select { |f| f.matches_all?(key => value) }
+  end
+  movies.flatten.sort_by { |m| m.rate.to_f * rand(1000) }.last
+end
+
+
+ +
+

+ + #hall(name, description) ⇒ Object + + + + + +

+ + + + +
+
+
+
+17
+18
+19
+
+
# File 'lib/topmovies/theatre.rb', line 17
+
+def hall(name, description)
+  @halls[name] = description
+end
+
+
+ +
+

+ + #period(name, &block) ⇒ Object + + + + + +

+ + + + +
+
+
+
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+
+
# File 'lib/topmovies/theatre.rb', line 21
+
+def period(name, &block)
+  new_period = TopMovies::Period.new(name, &block)
+  if @periods.empty?
+    @periods.push(new_period)
+  elsif verify_period(new_period)
+    raise ArgumentError, 'Невозможно добавить период, так как этот зал занят'
+  else
+    @periods.push(new_period)
+  end
+end
+
+
+ +
+

+ + #select_period(time, hall) ⇒ Object + + + + + +

+ + + + +
+
+
+
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+
+
# File 'lib/topmovies/theatre.rb', line 80
+
+def select_period(time, hall)
+  period = @periods.select { |p| p.seance.include?(time) }
+  pr = if period.size > 1
+         period.select { |p| p.saloon.include?(hall[:hall]) }
+       else
+         period[0]
+       end
+  selected_period = hall.nil? ? pr : pr[0]
+  selected_period
+end
+
+
+ +
+

+ + #show(period) ⇒ Object + + + + + +

+ + + + +
+
+
+
+91
+92
+93
+94
+95
+96
+97
+
+
# File 'lib/topmovies/theatre.rb', line 91
+
+def show(period)
+  if period.name
+    filter(title: period.name).first
+  else
+    get_movie_from_filters(period)
+  end
+end
+
+
+ +
+

+ + #time_to_show(time) ⇒ Object + + + + + +

+
+ + +
+
+
+ +

Raises:

+
    + +
  • + + + (ArgumentError) + + + +
  • + +
+ +
+ + + + +
+
+
+
+43
+44
+45
+46
+47
+48
+49
+
+
# File 'lib/topmovies/theatre.rb', line 43
+
+def time_to_show(time)
+  hour = DateTime.strptime(time, '%H').hour
+  period = PERIOD_DAY.select { |_k, v| v.include?(hour) }.keys[0]
+  raise ArgumentError,
+        'В ночное время кинотеатр не работает' if period == :night
+  period
+end
+
+
+ +
+

+ + #verify_period(current) ⇒ Object + + + + + +

+ + + + +
+
+
+
+32
+33
+34
+
+
# File 'lib/topmovies/theatre.rb', line 32
+
+def verify_period(current)
+  @periods.any? { |p| p.intersects?(current) }
+end
+
+
+ +
+

+ + #when?(title) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+51
+52
+53
+54
+55
+56
+57
+
+
# File 'lib/topmovies/theatre.rb', line 51
+
+def when?(title)
+  movie = filter(title).first
+  period = FILTERS_MOVIE.find_all do |_per, fil|
+    filters_to_hash(fil).detect { |k| movie.matches_all?(k) }
+  end
+  period.flatten[0]
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/TopMovies/TmdbPosters.html b/doc/ruby/TopMovies/TmdbPosters.html new file mode 100644 index 0000000..937adc7 --- /dev/null +++ b/doc/ruby/TopMovies/TmdbPosters.html @@ -0,0 +1,345 @@ + + + + + + + Module: TopMovies::TmdbPosters + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Module: TopMovies::TmdbPosters + + + +

+
+ + + + + + + + + +
+
Included in:
+
Movie, MovieCollection
+
+ + + +
+
Defined in:
+
lib/topmovies/tmdb_posters.rb
+
+ +
+ + + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #imdb_to_tmdb(id_imdb) ⇒ Object + + + + + +

+ + + + +
+
+
+
+15
+16
+17
+
+
# File 'lib/topmovies/tmdb_posters.rb', line 15
+
+def imdb_to_tmdb(id_imdb)
+  Tmdb::Find.imdb_id(id_imdb).first[1][0]['id']
+end
+
+
+ +
+

+ + #take_posterObject + + + + + +

+ + + + +
+
+
+
+19
+20
+21
+
+
# File 'lib/topmovies/tmdb_posters.rb', line 19
+
+def take_poster(*)
+  Tmdb::Movie.detail(imdb_to_tmdb(imdb_id))['poster_path']
+end
+
+
+ +
+

+ + #take_postersObject + + + + + +

+ + + + +
+
+
+
+3
+4
+5
+6
+7
+
+
# File 'lib/topmovies/tmdb_posters.rb', line 3
+
+def take_posters
+  @collection.map do |film|
+    Tmdb::Movie.detail(imdb_to_tmdb(film.imdb_id))['poster_path']
+  end
+end
+
+
+ +
+

+ + #take_translationsObject + + + + + +

+ + + + +
+
+
+
+9
+10
+11
+12
+13
+
+
# File 'lib/topmovies/tmdb_posters.rb', line 9
+
+def take_translations
+  @collection.map do |film|
+    Tmdb::Movie.translations(imdb_to_tmdb(film.imdb_id))['translations']
+  end
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/_index.html b/doc/ruby/_index.html new file mode 100644 index 0000000..20bbe8b --- /dev/null +++ b/doc/ruby/_index.html @@ -0,0 +1,279 @@ + + + + + + + Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
+ + + + +

Documentation by YARD 0.9.5

+
+

Alphabetic Index

+ +

File Listing

+ + +
+

Namespace Listing A-Z

+ + + + + + + + +
+ + + + + + + + + + + + + + + + + +
    +
  • N
  • + +
+ + +
    +
  • P
  • +
      + +
    • + Period + + (TopMovies) + +
    • + +
    +
+ + +
+ + +
    +
  • S
  • + +
+ + + + +
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/doc/ruby/class_list.html b/doc/ruby/class_list.html new file mode 100644 index 0000000..ea9bc75 --- /dev/null +++ b/doc/ruby/class_list.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + Class List + + + +
+
+

Class List

+ + + +
+ + +
+ + diff --git a/doc/ruby/css/common.css b/doc/ruby/css/common.css new file mode 100644 index 0000000..cf25c45 --- /dev/null +++ b/doc/ruby/css/common.css @@ -0,0 +1 @@ +/* Override this file with custom rules */ \ No newline at end of file diff --git a/doc/ruby/css/full_list.css b/doc/ruby/css/full_list.css new file mode 100644 index 0000000..fa35982 --- /dev/null +++ b/doc/ruby/css/full_list.css @@ -0,0 +1,58 @@ +body { + margin: 0; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; + height: 101%; + overflow-x: hidden; + background: #fafafa; +} + +h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; } +.clear { clear: both; } +.fixed_header { position: fixed; background: #fff; width: 100%; padding-bottom: 10px; margin-top: 0; top: 0; z-index: 9999; height: 70px; } +#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; } +#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; } +#full_list { padding: 0; list-style: none; margin-left: 0; margin-top: 80px; font-size: 1.1em; } +#full_list ul { padding: 0; } +#full_list li { padding: 0; margin: 0; list-style: none; } +#full_list li .item { padding: 5px 5px 5px 12px; } +#noresults { padding: 7px 12px; background: #fff; } +#content.insearch #noresults { margin-left: 7px; } +li.collapsed ul { display: none; } +li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; } +li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; } +li { color: #888; cursor: pointer; } +li.deprecated { text-decoration: line-through; font-style: italic; } +li.odd { background: #f0f0f0; } +li.even { background: #fafafa; } +.item:hover { background: #ddd; } +li small:before { content: "("; } +li small:after { content: ")"; } +li small.search_info { display: none; } +a, a:visited { text-decoration: none; color: #05a; } +li.clicked > .item { background: #05a; color: #ccc; } +li.clicked > .item a, li.clicked > .item a:visited { color: #eee; } +li.clicked > .item a.toggle { opacity: 0.5; background-position: bottom right; } +li.collapsed.clicked a.toggle { background-position: top right; } +#search input { border: 1px solid #bbb; border-radius: 3px; } +#full_list_nav { margin-left: 10px; font-size: 0.9em; display: block; color: #aaa; } +#full_list_nav a, #nav a:visited { color: #358; } +#full_list_nav a:hover { background: transparent; color: #5af; } +#full_list_nav span:after { content: ' | '; } +#full_list_nav span:last-child:after { content: ''; } + +#content h1 { margin-top: 0; } +li { white-space: nowrap; cursor: normal; } +li small { display: block; font-size: 0.8em; } +li small:before { content: ""; } +li small:after { content: ""; } +li small.search_info { display: none; } +#search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; } +#content.insearch #search { background-position: center right; } +#search input { width: 110px; } + +#full_list.insearch ul { display: block; } +#full_list.insearch .item { display: none; } +#full_list.insearch .found { display: block; padding-left: 11px !important; } +#full_list.insearch li a.toggle { display: none; } +#full_list.insearch li small.search_info { display: block; } diff --git a/doc/ruby/css/style.css b/doc/ruby/css/style.css new file mode 100644 index 0000000..55ec699 --- /dev/null +++ b/doc/ruby/css/style.css @@ -0,0 +1,481 @@ +html { + width: 100%; + height: 100%; +} +body { + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; + width: 100%; + margin: 0; + padding: 0; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; +} + +#nav { + position: relative; + width: 100%; + height: 100%; + border: 0; + border-right: 1px dotted #eee; + overflow: auto; +} +.nav_wrap { + margin: 0; + padding: 0; + width: 20%; + height: 100%; + position: relative; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; + flex-shrink: 0; + -webkit-flex-shrink: 0; + -ms-flex: 1 0; +} +#resizer { + position: absolute; + right: -5px; + top: 0; + width: 10px; + height: 100%; + cursor: col-resize; + z-index: 9999; +} +#main { + flex: 5 1; + -webkit-flex: 5 1; + -ms-flex: 5 1; + outline: none; + position: relative; + background: #fff; + padding: 1.2em; + padding-top: 0.2em; +} + +@media (max-width: 920px) { + .nav_wrap { display: none; } +} + +@media (min-width: 920px) { + body { height: 100%; overflow: hidden; } + #main { height: 100%; overflow: auto; } + #search { display: none; } + #search_frame { display: none; } +} + +#main img { max-width: 100%; } +h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; } +h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; } +h1.title { margin-bottom: 10px; } +h1.alphaindex { margin-top: 0; font-size: 22px; } +h2 { + padding: 0; + padding-bottom: 3px; + border-bottom: 1px #aaa solid; + font-size: 1.4em; + margin: 1.8em 0 0.5em; + position: relative; +} +h2 small { font-weight: normal; font-size: 0.7em; display: inline; position: absolute; right: 0; } +h2 small a { + display: block; + height: 20px; + border: 1px solid #aaa; + border-bottom: 0; + border-top-left-radius: 5px; + background: #f8f8f8; + position: relative; + padding: 2px 7px; +} +.clear { clear: both; } +.inline { display: inline; } +.inline p:first-child { display: inline; } +.docstring, .tags, #filecontents { font-size: 15px; line-height: 1.5145em; } +.docstring p > code, .docstring p > tt, .tags p > code, .tags p > tt { + color: #c7254e; background: #f9f2f4; padding: 2px 4px; font-size: 1em; + border-radius: 4px; +} +.docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; } +.docstring h1 { font-size: 1.2em; } +.docstring h2 { font-size: 1.1em; } +.docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; } +.summary_desc .object_link a, .docstring .object_link a { + font-family: monospace; font-size: 1.05em; + color: #05a; background: #EDF4FA; padding: 2px 4px; font-size: 1em; + border-radius: 4px; +} +.rdoc-term { padding-right: 25px; font-weight: bold; } +.rdoc-list p { margin: 0; padding: 0; margin-bottom: 4px; } + +/* style for */ +#filecontents table, .docstring table { border-collapse: collapse; } +#filecontents table th, #filecontents table td, +.docstring table th, .docstring table td { border: 1px solid #ccc; padding: 8px; padding-right: 17px; } +#filecontents table tr:nth-child(odd), +.docstring table tr:nth-child(odd) { background: #eee; } +#filecontents table tr:nth-child(even), +.docstring table tr:nth-child(even) { background: #fff; } +#filecontents table th, .docstring table th { background: #fff; } + +/* style for
    */ +#filecontents li > p, .docstring li > p { margin: 0px; } +#filecontents ul, .docstring ul { padding-left: 20px; } +/* style for
    */ +#filecontents dl, .docstring dl { border: 1px solid #ccc; } +#filecontents dt, .docstring dt { background: #ddd; font-weight: bold; padding: 3px 5px; } +#filecontents dd, .docstring dd { padding: 5px 0px; margin-left: 18px; } +#filecontents dd > p, .docstring dd > p { margin: 0px; } + +.note { + color: #222; + margin: 20px 0; + padding: 10px; + border: 1px solid #eee; + border-radius: 3px; + display: block; +} +.docstring .note { + border-left-color: #ccc; + border-left-width: 5px; +} +.note.todo { background: #ffffc5; border-color: #ececaa; } +.note.returns_void { background: #efefef; } +.note.deprecated { background: #ffe5e5; border-color: #e9dada; } +.note.title.deprecated { background: #ffe5e5; border-color: #e9dada; } +.note.private { background: #ffffc5; border-color: #ececaa; } +.note.title { padding: 3px 6px; font-size: 0.9em; font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; display: inline; } +.summary_signature + .note.title { margin-left: 7px; } +h1 .note.title { font-size: 0.5em; font-weight: normal; padding: 3px 5px; position: relative; top: -3px; text-transform: capitalize; } +.note.title { background: #efefef; } +.note.title.constructor { color: #fff; background: #6a98d6; border-color: #6689d6; } +.note.title.writeonly { color: #fff; background: #45a638; border-color: #2da31d; } +.note.title.readonly { color: #fff; background: #6a98d6; border-color: #6689d6; } +.note.title.private { background: #d5d5d5; border-color: #c5c5c5; } +.note.title.not_defined_here { background: transparent; border: none; font-style: italic; } +.discussion .note { margin-top: 6px; } +.discussion .note:first-child { margin-top: 0; } + +h3.inherited { + font-style: italic; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-weight: normal; + padding: 0; + margin: 0; + margin-top: 12px; + margin-bottom: 3px; + font-size: 13px; +} +p.inherited { + padding: 0; + margin: 0; + margin-left: 25px; +} + +.box_info dl { + margin: 0; + border: 0; + width: 100%; + font-size: 1em; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; +} +.box_info dl dt { + flex-shrink: 0; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + width: 100px; + text-align: right; + font-weight: bold; + border: 1px solid #aaa; + border-width: 1px 0px 0px 1px; + padding: 6px 0; + padding-right: 10px; +} +.box_info dl dd { + flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex: 1; + max-width: 420px; + padding: 6px 0; + padding-right: 20px; + border: 1px solid #aaa; + border-width: 1px 1px 0 0; + overflow: hidden; + position: relative; +} +.box_info dl:last-child > * { + border-bottom: 1px solid #aaa; +} +.box_info dl:nth-child(odd) > * { background: #eee; } +.box_info dl:nth-child(even) > * { background: #fff; } +.box_info dl > * { margin: 0; } + +ul.toplevel { list-style: none; padding-left: 0; font-size: 1.1em; } +.index_inline_list { padding-left: 0; font-size: 1.1em; } + +.index_inline_list li { + list-style: none; + display: inline-block; + padding: 0 12px; + line-height: 30px; + margin-bottom: 5px; +} + +dl.constants { margin-left: 10px; } +dl.constants dt { font-weight: bold; font-size: 1.1em; margin-bottom: 5px; } +dl.constants dd { width: 75%; white-space: pre; font-family: monospace; margin-bottom: 18px; } +dl.constants .docstring .note:first-child { margin-top: 5px; } + +.summary_desc { + margin-left: 32px; + display: block; + font-family: sans-serif; + font-size: 1.1em; + margin-top: 8px; + line-height: 1.5145em; + margin-bottom: 0.8em; +} +.summary_desc tt { font-size: 0.9em; } +dl.constants .note { padding: 2px 6px; padding-right: 12px; margin-top: 6px; } +dl.constants .docstring { margin-left: 32px; font-size: 0.9em; font-weight: normal; } +dl.constants .tags { padding-left: 32px; font-size: 0.9em; line-height: 0.8em; } +dl.constants .discussion *:first-child { margin-top: 0; } +dl.constants .discussion *:last-child { margin-bottom: 0; } + +.method_details { border-top: 1px dotted #ccc; margin-top: 25px; padding-top: 0; } +.method_details.first { border: 0; margin-top: 5px; } +.method_details.first h3.signature { margin-top: 1em; } +p.signature, h3.signature { + font-size: 1.1em; font-weight: normal; font-family: Monaco, Consolas, Courier, monospace; + padding: 6px 10px; margin-top: 1em; + background: #E8F4FF; border: 1px solid #d8d8e5; border-radius: 5px; +} +p.signature tt, +h3.signature tt { font-family: Monaco, Consolas, Courier, monospace; } +p.signature .overload, +h3.signature .overload { display: block; } +p.signature .extras, +h3.signature .extras { font-weight: normal; font-family: sans-serif; color: #444; font-size: 1em; } +p.signature .not_defined_here, +h3.signature .not_defined_here, +p.signature .aliases, +h3.signature .aliases { display: block; font-weight: normal; font-size: 0.9em; font-family: sans-serif; margin-top: 0px; color: #555; } +p.signature .aliases .names, +h3.signature .aliases .names { font-family: Monaco, Consolas, Courier, monospace; font-weight: bold; color: #000; font-size: 1.2em; } + +.tags .tag_title { font-size: 1.05em; margin-bottom: 0; font-weight: bold; } +.tags .tag_title tt { color: initial; padding: initial; background: initial; } +.tags ul { margin-top: 5px; padding-left: 30px; list-style: square; } +.tags ul li { margin-bottom: 3px; } +.tags ul .name { font-family: monospace; font-weight: bold; } +.tags ul .note { padding: 3px 6px; } +.tags { margin-bottom: 12px; } + +.tags .examples .tag_title { margin-bottom: 10px; font-weight: bold; } +.tags .examples .inline p { padding: 0; margin: 0; font-weight: bold; font-size: 1em; } +.tags .examples .inline p:before { content: "▸"; font-size: 1em; margin-right: 5px; } + +.tags .overload .overload_item { list-style: none; margin-bottom: 25px; } +.tags .overload .overload_item .signature { + padding: 2px 8px; + background: #F1F8FF; border: 1px solid #d8d8e5; border-radius: 3px; +} +.tags .overload .signature { margin-left: -15px; font-family: monospace; display: block; font-size: 1.1em; } +.tags .overload .docstring { margin-top: 15px; } + +.defines { display: none; } + +#method_missing_details .notice.this { position: relative; top: -8px; color: #888; padding: 0; margin: 0; } + +.showSource { font-size: 0.9em; } +.showSource a, .showSource a:visited { text-decoration: none; color: #666; } + +#content a, #content a:visited { text-decoration: none; color: #05a; } +#content a:hover { background: #ffffa5; } + +ul.summary { + list-style: none; + font-family: monospace; + font-size: 1em; + line-height: 1.5em; + padding-left: 0px; +} +ul.summary a, ul.summary a:visited { + text-decoration: none; font-size: 1.1em; +} +ul.summary li { margin-bottom: 5px; } +.summary .summary_signature { + padding: 4px 8px; + background: #f8f8f8; + border: 1px solid #f0f0f0; + border-radius: 5px; +} +.summary_signature:hover { background: #CFEBFF; border-color: #A4CCDA; cursor: pointer; } +ul.summary.compact li { display: inline-block; margin: 0px 5px 0px 0px; line-height: 2.6em;} +ul.summary.compact .summary_signature { padding: 5px 7px; padding-right: 4px; } +#content .summary_signature:hover a, +#content .summary_signature:hover a:visited { + background: transparent; + color: #049; +} + +p.inherited a { font-family: monospace; font-size: 0.9em; } +p.inherited { word-spacing: 5px; font-size: 1.2em; } + +p.children { font-size: 1.2em; } +p.children a { font-size: 0.9em; } +p.children strong { font-size: 0.8em; } +p.children strong.modules { padding-left: 5px; } + +ul.fullTree { display: none; padding-left: 0; list-style: none; margin-left: 0; margin-bottom: 10px; } +ul.fullTree ul { margin-left: 0; padding-left: 0; list-style: none; } +ul.fullTree li { text-align: center; padding-top: 18px; padding-bottom: 12px; background: url(data:image/gif;base64,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) no-repeat top center; } +ul.fullTree li:first-child { padding-top: 0; background: transparent; } +ul.fullTree li:last-child { padding-bottom: 0; } +.showAll ul.fullTree { display: block; } +.showAll .inheritName { display: none; } + +#search { position: absolute; right: 12px; top: 0px; z-index: 9000; } +#search a { + display: block; float: left; + padding: 4px 8px; text-decoration: none; color: #05a; fill: #05a; + border: 1px solid #d8d8e5; + border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; + background: #F1F8FF; + box-shadow: -1px 1px 3px #ddd; +} +#search a:hover { background: #f5faff; color: #06b; fill: #06b; } +#search a.active { + background: #568; padding-bottom: 20px; color: #fff; fill: #fff; + border: 1px solid #457; + border-top-left-radius: 5px; border-top-right-radius: 5px; +} +#search a.inactive { color: #999; fill: #999; } +.inheritanceTree, .toggleDefines { + float: right; + border-left: 1px solid #aaa; + position: absolute; top: 0; right: 0; + height: 100%; + background: #f6f6f6; + padding: 5px; + min-width: 55px; + text-align: center; +} + +#menu { font-size: 1.3em; color: #bbb; } +#menu .title, #menu a { font-size: 0.7em; } +#menu .title a { font-size: 1em; } +#menu .title { color: #555; } +#menu a, #menu a:visited { color: #333; text-decoration: none; border-bottom: 1px dotted #bbd; } +#menu a:hover { color: #05a; } + +#footer { margin-top: 15px; border-top: 1px solid #ccc; text-align: center; padding: 7px 0; color: #999; } +#footer a, #footer a:visited { color: #444; text-decoration: none; border-bottom: 1px dotted #bbd; } +#footer a:hover { color: #05a; } + +#listing ul.alpha { font-size: 1.1em; } +#listing ul.alpha { margin: 0; padding: 0; padding-bottom: 10px; list-style: none; } +#listing ul.alpha li.letter { font-size: 1.4em; padding-bottom: 10px; } +#listing ul.alpha ul { margin: 0; padding-left: 15px; } +#listing ul small { color: #666; font-size: 0.7em; } + +li.r1 { background: #f0f0f0; } +li.r2 { background: #fafafa; } + +#search_frame { + z-index: 9999; + background: #fff; + display: none; + position: absolute; + top: 40px; + right: 12px; + width: 500px; + max-width: 80%; + height: 80%; + overflow-y: scroll; + border: 1px solid #999; + border-collapse: collapse; + box-shadow: -7px 5px 25px #aaa; + border-radius: 2px; +} + +#content ul.summary li.deprecated .summary_signature a, +#content ul.summary li.deprecated .summary_signature a:visited { text-decoration: line-through; font-style: italic; } + +#toc { + position: relative; + float: right; + overflow-x: auto; + right: -3px; + margin-left: 20px; + margin-bottom: 20px; + padding: 20px; padding-right: 30px; + max-width: 300px; + z-index: 5000; + background: #fefefe; + border: 1px solid #ddd; + box-shadow: -2px 2px 6px #bbb; +} +#toc .title { margin: 0; } +#toc ol { padding-left: 1.8em; } +#toc li { font-size: 1.1em; line-height: 1.7em; } +#toc > ol > li { font-size: 1.1em; font-weight: bold; } +#toc ol > ol { font-size: 0.9em; } +#toc ol ol > ol { padding-left: 2.3em; } +#toc ol + li { margin-top: 0.3em; } +#toc.hidden { padding: 10px; background: #fefefe; box-shadow: none; } +#toc.hidden:hover { background: #fafafa; } +#filecontents h1 + #toc.nofloat { margin-top: 0; } +@media (max-width: 560px) { + #toc { + margin-left: 0; + margin-top: 16px; + float: none; + max-width: none; + } +} + +/* syntax highlighting */ +.source_code { display: none; padding: 3px 8px; border-left: 8px solid #ddd; margin-top: 5px; } +#filecontents pre.code, .docstring pre.code, .source_code pre { font-family: monospace; } +#filecontents pre.code, .docstring pre.code { display: block; } +.source_code .lines { padding-right: 12px; color: #555; text-align: right; } +#filecontents pre.code, .docstring pre.code, +.tags pre.example { + padding: 9px 14px; + margin-top: 4px; + border: 1px solid #e1e1e8; + background: #f7f7f9; + border-radius: 4px; + font-size: 1em; + overflow-x: auto; + line-height: 1.2em; +} +pre.code { color: #000; tab-size: 2; } +pre.code .info.file { color: #555; } +pre.code .val { color: #036A07; } +pre.code .tstring_content, +pre.code .heredoc_beg, pre.code .heredoc_end, +pre.code .qwords_beg, pre.code .qwords_end, +pre.code .tstring, pre.code .dstring { color: #036A07; } +pre.code .fid, pre.code .rubyid_new, pre.code .rubyid_to_s, +pre.code .rubyid_to_sym, pre.code .rubyid_to_f, +pre.code .dot + pre.code .id, +pre.code .rubyid_to_i pre.code .rubyid_each { color: #0085FF; } +pre.code .comment { color: #0066FF; } +pre.code .const, pre.code .constant { color: #585CF6; } +pre.code .label, +pre.code .symbol { color: #C5060B; } +pre.code .kw, +pre.code .rubyid_require, +pre.code .rubyid_extend, +pre.code .rubyid_include { color: #0000FF; } +pre.code .ivar { color: #318495; } +pre.code .gvar, +pre.code .rubyid_backref, +pre.code .rubyid_nth_ref { color: #6D79DE; } +pre.code .regexp, .dregexp { color: #036A07; } +pre.code a { border-bottom: 1px dotted #bbf; } diff --git a/doc/ruby/file.README.html b/doc/ruby/file.README.html new file mode 100644 index 0000000..864cd83 --- /dev/null +++ b/doc/ruby/file.README.html @@ -0,0 +1,264 @@ + + + + + + + File: README + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
    + + + + +
    +

    TopMovies

    + +

    TopMovies is a console application to manipulate the data from the list of +top 250 IMDB movies.

    + +

    Usage

    + +

    Installation

    + +

    $ gem install topmovies

    + +

    Before you can use all the features of the library you want to connect a +data file with movies

    + +
    file_name = ARGV[0] || '../lib/topmovies/data/movies.txt'
    +  if File.exist?(file_name)
    +    File.open(file_name)
    +  else
    +    puts 'Ошибка. Файл отсутствует!'
    +    exit
    +  end
    +
    + +

    MovieCollection

    + +

    MovieCollection, created in the application, allows you to extract data and +show filtered and sorted lists of movies, based on different criteria, also +it can display any statistics on films.

    + +
    # make collection of movies
    +  movies = TopMovies::MovieCollection.new(file_name)
    +  # => <TopMovies::MovieCollection:0x00000002ab6da8>
    +
    +  #show comedies
    +  movies.filter(genre: 'Comedy')
    +  # => <TopMovies::ModernMovie:0x00000002ff7038>
    +  # => <TopMovies::AncientMovie:0x00000002fdcaa8>
    +  # => <TopMovies::NewMovie:0x00000002fd5ca8>
    +  # => ...
    +
    +  # show sorted list movies by year
    +  movies.sort_by(:year)
    +  # => The Kid - 1921
    +  # => The Gold Rush - 1925
    +  # => The General - 1926
    +  # => Metropolis - 1927
    +  # =>  ...
    +
    +  # show count of movies maked each author
    +  movies.stats(:author)
    +  # => {"Adam Elliot"=>1, "Akira Kurosawa"=>6, "Alejandro González Iñárritu"=>1, ... }
    +
    +  # get first movie
    +  movie = movies.all.first
    +
    +  # number famous actors played in this movie
    +  movie.actors.count
    +  # => 3
    +
    +  # Arnold Shwarzenegger played in this movie
    +  movie.actors.include?('Arnold Shwarzenegger')
    +  # => false
    +
    + +

    Cinema

    + +

    Netflix and Theatre are cinemas based on MovieCollection have cashboxes +that can accept payments and sell tickets.

    + +
    Netflix
    + +
    # make online cinema Netflix
    +  online = TopMovies::Netflix.new(file_name)
    +  # => #<TopMovies::Netflix:0x000000021e0558>
    +
    +  # show newest Drama
    +  online.show(genre: 'Drama', period: :new)
    +  # => Downfall — новинка, вышло 12 лет назад!
    +
    +  # create component filter
    +  movies = online.show do |movie|
    +    !movie.title.include?('Terminator') && \
    +      movie.genre[0].include?('Action') && \
    +      movie.year > 2003
    +  end
    +  # genre of movies is Action and not have Terminator and newer 2003
    +  # => Elite Squad: The Enemy Within — новинка, вышло 6 лет назад!
    +
    +  # put cash to cashbox of Netflix
    +  online.pay(35)
    +  # => 35.00
    +
    + +
    Theatre
    + +
    # make usual cinema Theatre
    +  theatre =
    +    TopMovies::Theatre.new do
    +      hall :red, title: 'Красный зал', places: 100
    +      hall :blue, title: 'Синий зал', places: 50
    +      hall :green, title: 'Зелёный зал (deluxe)', places: 12
    +
    +      period '09:00'..'12:00' do
    +        description 'Утренний сеанс'
    +        filters genre: 'Comedy', year: 1900..1980
    +        price 10
    +        hall :red, :blue
    +      end
    +
    +      period '12:00'..'16:00' do
    +        description 'Спецпоказ'
    +        title 'The Terminator'
    +        price 50
    +        hall :green
    +      end
    +
    +      period '16:00'..'20:00' do
    +        description 'Вечерний сеанс'
    +        filters genre: %w(Action Drama), year: 2007..Time.now.year
    +        price 20
    +        hall :red, :blue
    +      end
    +
    +      period '19:00'..'22:00' do
    +        description 'Вечерний сеанс для киноманов'
    +        filters year: 1900..1945, exclude_country: 'USA'
    +        price 30
    +        hall :green
    +      end
    +  end
    +  # => <TopMovies::Netflix:0x000000011152a0>
    +
    +  # you can add period into Theatre
    +  theatre.period '21:00'..'23:00' do
    +    description 'Еще один сеанс'
    +    filters genre: 'Sci-Fi', year: 1900..1980
    +    price 13
    +    hall :red
    +  end
    +
    +  # you can buy a ticket
    +  theatre.buy_ticket('10:20')
    +  # => Утренний сеанс - 09:00..12:00 : Фильм: The Gold Rush - 10.00 ₴
    +  theatre.buy_ticket('13:20')
    +  # => Спецпоказ - 12:00..16:00 : Фильм: The Terminator - 50.00 ₴
    +  theatre.buy_ticket('17:20')
    +  # => Вечерний сеанс - 16:00..20:00 : Фильм: Interstellar - 20.00 ₴
    +  theatre.buy_ticket('19:20', hall: :green)
    +  # => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: The Maltese Falcon - 30.00 ₴
    +
    +  # if you want you can check the money in cashbox of Theatre
    +  theatre.cash
    +  # => 110.00
    +
    +  # yet you can spend cash collection into cashbox of Theatre
    +  theatre.take('Bank')
    +  # => Проведена инкассация
    +  # => 0.00
    +
    + +

    Additional info

    + +

    In addition, the application can get the budget for each film with IMDb +site, extract the posters and film title translation into other languages +with TMDB site, and renders html page with all the movies.

    + +
    # get the film's budget
    +  movie = movies.all[112]
    +  movie.budget
    +  # => $14,400,000
    +
    +  # get a poster for the film
    +  movie = movies.filter(title: 'Terminator')
    +  movie.poster
    +
    +
    +  # receive translations of the film in other language
    +  movie = movies.filter(title: '12 Angry Men')
    +  movie.translations
    +
    +  # create HTML markup
    +  movies.render_html
    +  # => html markup
    +
    + +

    Other methods for manipulating data list IMDB top 250 films described to +documentation

    + +

    Author

    + +

    Serhii Dmytrakov clamdm@mail.ru

    +
    + + + +
    + + \ No newline at end of file diff --git a/doc/ruby/file_list.html b/doc/ruby/file_list.html new file mode 100644 index 0000000..f2b7288 --- /dev/null +++ b/doc/ruby/file_list.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + File List + + + +
    +
    +

    File List

    + + + +
    + + +
    + + diff --git a/doc/ruby/frames.html b/doc/ruby/frames.html new file mode 100644 index 0000000..1479606 --- /dev/null +++ b/doc/ruby/frames.html @@ -0,0 +1,17 @@ + + + + + Documentation by YARD 0.9.5 + + + + diff --git a/doc/ruby/index.html b/doc/ruby/index.html new file mode 100644 index 0000000..115d04c --- /dev/null +++ b/doc/ruby/index.html @@ -0,0 +1,264 @@ + + + + + + + File: README + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
    + + + + +
    +

    TopMovies

    + +

    TopMovies is a console application to manipulate the data from the list of +top 250 IMDB movies.

    + +

    Usage

    + +

    Installation

    + +

    $ gem install topmovies

    + +

    Before you can use all the features of the library you want to connect a +data file with movies

    + +
    file_name = ARGV[0] || '../lib/topmovies/data/movies.txt'
    +  if File.exist?(file_name)
    +    File.open(file_name)
    +  else
    +    puts 'Ошибка. Файл отсутствует!'
    +    exit
    +  end
    +
    + +

    MovieCollection

    + +

    MovieCollection, created in the application, allows you to extract data and +show filtered and sorted lists of movies, based on different criteria, also +it can display any statistics on films.

    + +
    # make collection of movies
    +  movies = TopMovies::MovieCollection.new(file_name)
    +  # => <TopMovies::MovieCollection:0x00000002ab6da8>
    +
    +  #show comedies
    +  movies.filter(genre: 'Comedy')
    +  # => <TopMovies::ModernMovie:0x00000002ff7038>
    +  # => <TopMovies::AncientMovie:0x00000002fdcaa8>
    +  # => <TopMovies::NewMovie:0x00000002fd5ca8>
    +  # => ...
    +
    +  # show sorted list movies by year
    +  movies.sort_by(:year)
    +  # => The Kid - 1921
    +  # => The Gold Rush - 1925
    +  # => The General - 1926
    +  # => Metropolis - 1927
    +  # =>  ...
    +
    +  # show count of movies maked each author
    +  movies.stats(:author)
    +  # => {"Adam Elliot"=>1, "Akira Kurosawa"=>6, "Alejandro González Iñárritu"=>1, ... }
    +
    +  # get first movie
    +  movie = movies.all.first
    +
    +  # number famous actors played in this movie
    +  movie.actors.count
    +  # => 3
    +
    +  # Arnold Shwarzenegger played in this movie
    +  movie.actors.include?('Arnold Shwarzenegger')
    +  # => false
    +
    + +

    Cinema

    + +

    Netflix and Theatre are cinemas based on MovieCollection have cashboxes +that can accept payments and sell tickets.

    + +
    Netflix
    + +
    # make online cinema Netflix
    +  online = TopMovies::Netflix.new(file_name)
    +  # => #<TopMovies::Netflix:0x000000021e0558>
    +
    +  # show newest Drama
    +  online.show(genre: 'Drama', period: :new)
    +  # => Downfall — новинка, вышло 12 лет назад!
    +
    +  # create component filter
    +  movies = online.show do |movie|
    +    !movie.title.include?('Terminator') && \
    +      movie.genre[0].include?('Action') && \
    +      movie.year > 2003
    +  end
    +  # genre of movies is Action and not have Terminator and newer 2003
    +  # => Elite Squad: The Enemy Within — новинка, вышло 6 лет назад!
    +
    +  # put cash to cashbox of Netflix
    +  online.pay(35)
    +  # => 35.00
    +
    + +
    Theatre
    + +
    # make usual cinema Theatre
    +  theatre =
    +    TopMovies::Theatre.new do
    +      hall :red, title: 'Красный зал', places: 100
    +      hall :blue, title: 'Синий зал', places: 50
    +      hall :green, title: 'Зелёный зал (deluxe)', places: 12
    +
    +      period '09:00'..'12:00' do
    +        description 'Утренний сеанс'
    +        filters genre: 'Comedy', year: 1900..1980
    +        price 10
    +        hall :red, :blue
    +      end
    +
    +      period '12:00'..'16:00' do
    +        description 'Спецпоказ'
    +        title 'The Terminator'
    +        price 50
    +        hall :green
    +      end
    +
    +      period '16:00'..'20:00' do
    +        description 'Вечерний сеанс'
    +        filters genre: %w(Action Drama), year: 2007..Time.now.year
    +        price 20
    +        hall :red, :blue
    +      end
    +
    +      period '19:00'..'22:00' do
    +        description 'Вечерний сеанс для киноманов'
    +        filters year: 1900..1945, exclude_country: 'USA'
    +        price 30
    +        hall :green
    +      end
    +  end
    +  # => <TopMovies::Netflix:0x000000011152a0>
    +
    +  # you can add period into Theatre
    +  theatre.period '21:00'..'23:00' do
    +    description 'Еще один сеанс'
    +    filters genre: 'Sci-Fi', year: 1900..1980
    +    price 13
    +    hall :red
    +  end
    +
    +  # you can buy a ticket
    +  theatre.buy_ticket('10:20')
    +  # => Утренний сеанс - 09:00..12:00 : Фильм: The Gold Rush - 10.00 ₴
    +  theatre.buy_ticket('13:20')
    +  # => Спецпоказ - 12:00..16:00 : Фильм: The Terminator - 50.00 ₴
    +  theatre.buy_ticket('17:20')
    +  # => Вечерний сеанс - 16:00..20:00 : Фильм: Interstellar - 20.00 ₴
    +  theatre.buy_ticket('19:20', hall: :green)
    +  # => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: The Maltese Falcon - 30.00 ₴
    +
    +  # if you want you can check the money in cashbox of Theatre
    +  theatre.cash
    +  # => 110.00
    +
    +  # yet you can spend cash collection into cashbox of Theatre
    +  theatre.take('Bank')
    +  # => Проведена инкассация
    +  # => 0.00
    +
    + +

    Additional info

    + +

    In addition, the application can get the budget for each film with IMDb +site, extract the posters and film title translation into other languages +with TMDB site, and renders html page with all the movies.

    + +
    # get the film's budget
    +  movie = movies.all[112]
    +  movie.budget
    +  # => $14,400,000
    +
    +  # get a poster for the film
    +  movie = movies.filter(title: 'Terminator')
    +  movie.poster
    +
    +
    +  # receive translations of the film in other language
    +  movie = movies.filter(title: '12 Angry Men')
    +  movie.translations
    +
    +  # create HTML markup
    +  movies.render_html
    +  # => html markup
    +
    + +

    Other methods for manipulating data list IMDB top 250 films described to +documentation

    + +

    Author

    + +

    Serhii Dmytrakov clamdm@mail.ru

    +
    + + + +
    + + \ No newline at end of file diff --git a/doc/ruby/js/app.js b/doc/ruby/js/app.js new file mode 100644 index 0000000..c9d6aff --- /dev/null +++ b/doc/ruby/js/app.js @@ -0,0 +1,243 @@ +(function() { + +var localStorage = {}, sessionStorage = {}; +try { localStorage = window.localStorage; } catch (e) { } +try { sessionStorage = window.sessionStorage; } catch (e) { } + +function createSourceLinks() { + $('.method_details_list .source_code'). + before("[View source]"); + $('.toggleSource').toggle(function() { + $(this).parent().nextAll('.source_code').slideDown(100); + $(this).text("Hide source"); + }, + function() { + $(this).parent().nextAll('.source_code').slideUp(100); + $(this).text("View source"); + }); +} + +function createDefineLinks() { + var tHeight = 0; + $('.defines').after(" more..."); + $('.toggleDefines').toggle(function() { + tHeight = $(this).parent().prev().height(); + $(this).prev().css('display', 'inline'); + $(this).parent().prev().height($(this).parent().height()); + $(this).text("(less)"); + }, + function() { + $(this).prev().hide(); + $(this).parent().prev().height(tHeight); + $(this).text("more..."); + }); +} + +function createFullTreeLinks() { + var tHeight = 0; + $('.inheritanceTree').toggle(function() { + tHeight = $(this).parent().prev().height(); + $(this).parent().toggleClass('showAll'); + $(this).text("(hide)"); + $(this).parent().prev().height($(this).parent().height()); + }, + function() { + $(this).parent().toggleClass('showAll'); + $(this).parent().prev().height(tHeight); + $(this).text("show all"); + }); +} + +function searchFrameButtons() { + $('.full_list_link').click(function() { + toggleSearchFrame(this, $(this).attr('href')); + return false; + }); + window.addEventListener('message', function(e) { + if (e.data === 'navEscape') { + $('#search_frame').slideUp(100); + $('#search a').removeClass('active inactive'); + $(window).focus(); + } + }); + + $(window).resize(function() { + if ($('#search:visible').length === 0) { + $('#search_frame').slideUp(100); + $('#search a').removeClass('active inactive'); + $(window).focus(); + } + }); +} + +function toggleSearchFrame(id, link) { + var frame = $('#search_frame'); + $('#search a').removeClass('active').addClass('inactive'); + if (frame.attr('src') === link && frame.css('display') !== "none") { + frame.slideUp(100); + $('#search a').removeClass('active inactive'); + } + else { + $(id).addClass('active').removeClass('inactive'); + if (frame.attr('src') !== link) frame.attr('src', link); + frame.slideDown(100); + } +} + +function linkSummaries() { + $('.summary_signature').click(function() { + document.location = $(this).find('a').attr('href'); + }); +} + +function summaryToggle() { + $('.summary_toggle').click(function(e) { + e.preventDefault(); + localStorage.summaryCollapsed = $(this).text(); + $('.summary_toggle').each(function() { + $(this).text($(this).text() == "collapse" ? "expand" : "collapse"); + var next = $(this).parent().parent().nextAll('ul.summary').first(); + if (next.hasClass('compact')) { + next.toggle(); + next.nextAll('ul.summary').first().toggle(); + } + else if (next.hasClass('summary')) { + var list = $('
      '); + list.html(next.html()); + list.find('.summary_desc, .note').remove(); + list.find('a').each(function() { + $(this).html($(this).find('strong').html()); + $(this).parent().html($(this)[0].outerHTML); + }); + next.before(list); + next.toggle(); + } + }); + return false; + }); + if (localStorage.summaryCollapsed == "collapse") { + $('.summary_toggle').first().click(); + } else { localStorage.summaryCollapsed = "expand"; } +} + +function generateTOC() { + if ($('#filecontents').length === 0) return; + var _toc = $('
        '); + var show = false; + var toc = _toc; + var counter = 0; + var tags = ['h2', 'h3', 'h4', 'h5', 'h6']; + var i; + if ($('#filecontents h1').length > 1) tags.unshift('h1'); + for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; } + var lastTag = parseInt(tags[0][1], 10); + $(tags.join(', ')).each(function() { + if ($(this).parents('.method_details .docstring').length != 0) return; + if (this.id == "filecontents") return; + show = true; + var thisTag = parseInt(this.tagName[1], 10); + if (this.id.length === 0) { + var proposedId = $(this).attr('toc-id'); + if (typeof(proposedId) != "undefined") this.id = proposedId; + else { + var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_'); + if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; } + this.id = proposedId; + } + } + if (thisTag > lastTag) { + for (i = 0; i < thisTag - lastTag; i++) { + var tmp = $('
          '); toc.append(tmp); toc = tmp; + } + } + if (thisTag < lastTag) { + for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent(); + } + var title = $(this).attr('toc-title'); + if (typeof(title) == "undefined") title = $(this).text(); + toc.append('
        1. ' + title + '
        2. '); + lastTag = thisTag; + }); + if (!show) return; + html = ''; + $('#content').prepend(html); + $('#toc').append(_toc); + $('#toc .hide_toc').toggle(function() { + $('#toc .top').slideUp('fast'); + $('#toc').toggleClass('hidden'); + $('#toc .title small').toggle(); + }, function() { + $('#toc .top').slideDown('fast'); + $('#toc').toggleClass('hidden'); + $('#toc .title small').toggle(); + }); +} + +function navResizeFn(e) { + if (e.which !== 1) { + navResizeFnStop(); + return; + } + + sessionStorage.navWidth = e.pageX.toString(); + $('.nav_wrap').css('width', e.pageX); + $('.nav_wrap').css('-ms-flex', 'inherit'); +} + +function navResizeFnStop() { + $(window).unbind('mousemove', navResizeFn); + window.removeEventListener('message', navMessageFn, false); +} + +function navMessageFn(e) { + if (e.data.action === 'mousemove') navResizeFn(e.data.event); + if (e.data.action === 'mouseup') navResizeFnStop(); +} + +function navResizer() { + $('#resizer').mousedown(function(e) { + e.preventDefault(); + $(window).mousemove(navResizeFn); + window.addEventListener('message', navMessageFn, false); + }); + $(window).mouseup(navResizeFnStop); + + if (sessionStorage.navWidth) { + navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)}); + } +} + +function navExpander() { + var done = false, timer = setTimeout(postMessage, 500); + function postMessage() { + if (done) return; + clearTimeout(timer); + var opts = { action: 'expand', path: pathId }; + document.getElementById('nav').contentWindow.postMessage(opts, '*'); + done = true; + } + + window.addEventListener('message', function(event) { + if (event.data === 'navReady') postMessage(); + return false; + }, false); +} + +function mainFocus() { + $('#main')[0].focus(); +} + +$(document).ready(function() { + navResizer(); + navExpander(); + createSourceLinks(); + createDefineLinks(); + createFullTreeLinks(); + searchFrameButtons(); + linkSummaries(); + summaryToggle(); + generateTOC(); + mainFocus(); +}); + +})(); diff --git a/doc/ruby/js/full_list.js b/doc/ruby/js/full_list.js new file mode 100644 index 0000000..59069c5 --- /dev/null +++ b/doc/ruby/js/full_list.js @@ -0,0 +1,216 @@ +(function() { + +var $clicked = $(null); +var searchTimeout = null; +var searchCache = []; +var caseSensitiveMatch = false; +var ignoreKeyCodeMin = 8; +var ignoreKeyCodeMax = 46; +var commandKey = 91; + +RegExp.escape = function(text) { + return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +} + +function escapeShortcut() { + $(document).keydown(function(evt) { + if (evt.which == 27) { + window.parent.postMessage('navEscape', '*'); + } + }); +} + +function navResizer() { + $(window).mousemove(function(e) { + window.parent.postMessage({ + action: 'mousemove', event: {pageX: e.pageX, which: e.which} + }, '*'); + }).mouseup(function(e) { + window.parent.postMessage({action: 'mouseup'}, '*'); + }); + window.parent.postMessage("navReady", "*"); +} + +function clearSearchTimeout() { + clearTimeout(searchTimeout); + searchTimeout = null; +} + +function enableLinks() { + // load the target page in the parent window + $('#full_list li').on('click', function(evt) { + $('#full_list li').removeClass('clicked'); + $clicked = $(this); + $clicked.addClass('clicked'); + evt.stopPropagation(); + + if (evt.target.tagName === 'A') return true; + + var elem = $clicked.find('> .item .object_link a')[0]; + var e = evt.originalEvent; + var newEvent = new MouseEvent(evt.originalEvent.type); + newEvent.initMouseEvent(e.type, e.canBubble, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget); + elem.dispatchEvent(newEvent); + evt.preventDefault(); + return false; + }); +} + +function enableToggles() { + // show/hide nested classes on toggle click + $('#full_list a.toggle').on('click', function(evt) { + evt.stopPropagation(); + evt.preventDefault(); + $(this).parent().parent().toggleClass('collapsed'); + highlight(); + }); +} + +function populateSearchCache() { + $('#full_list li .item').each(function() { + var $node = $(this); + var $link = $node.find('.object_link a'); + if ($link.length > 0) { + searchCache.push({ + node: $node, + link: $link, + name: $link.text(), + fullName: $link.attr('title').split(' ')[0] + }); + } + }); +} + +function enableSearch() { + $('#search input').keyup(function(event) { + if (ignoredKeyPress(event)) return; + if (this.value === "") { + clearSearch(); + } else { + performSearch(this.value); + } + }); + + $('#full_list').after(""); +} + +function ignoredKeyPress(event) { + if ( + (event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax) || + (event.keyCode == commandKey) + ) { + return true; + } else { + return false; + } +} + +function clearSearch() { + clearSearchTimeout(); + $('#full_list .found').removeClass('found').each(function() { + var $link = $(this).find('.object_link a'); + $link.text($link.text()); + }); + $('#full_list, #content').removeClass('insearch'); + $clicked.parents().removeClass('collapsed'); + highlight(); +} + +function performSearch(searchString) { + clearSearchTimeout(); + $('#full_list, #content').addClass('insearch'); + $('#noresults').text('').hide(); + partialSearch(searchString, 0); +} + +function partialSearch(searchString, offset) { + var lastRowClass = ''; + var i = null; + for (i = offset; i < Math.min(offset + 50, searchCache.length); i++) { + var item = searchCache[i]; + var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name); + var matchString = buildMatchString(searchString); + var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i"); + if (searchName.match(matchRegexp) == null) { + item.node.removeClass('found'); + item.link.text(item.link.text()); + } + else { + item.node.addClass('found'); + item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1'); + lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2'; + item.link.html(item.name.replace(matchRegexp, "$&")); + } + } + if(i == searchCache.length) { + searchDone(); + } else { + searchTimeout = setTimeout(function() { + partialSearch(searchString, i); + }, 0); + } +} + +function searchDone() { + searchTimeout = null; + highlight(); + if ($('#full_list li:visible').size() === 0) { + $('#noresults').text('No results were found.').hide().fadeIn(); + } else { + $('#noresults').text('').hide(); + } + $('#content').removeClass('insearch'); +} + +function buildMatchString(searchString, event) { + caseSensitiveMatch = searchString.match(/[A-Z]/) != null; + var regexSearchString = RegExp.escape(searchString); + if (caseSensitiveMatch) { + regexSearchString += "|" + + $.map(searchString.split(''), function(e) { return RegExp.escape(e); }). + join('.+?'); + } + return regexSearchString; +} + +function highlight() { + $('#full_list li:visible').each(function(n) { + $(this).removeClass('even odd').addClass(n % 2 == 0 ? 'odd' : 'even'); + }); +} + +/** + * Expands the tree to the target element and its immediate + * children. + */ +function expandTo(path) { + var $target = $(document.getElementById('object_' + path)); + $target.addClass('clicked'); + $target.removeClass('collapsed'); + $target.parentsUntil('#full_list', 'li').removeClass('collapsed'); + if($target[0]) { + window.scrollTo(window.scrollX, $target.offset().top - 250); + highlight(); + } +} + +function windowEvents(event) { + var msg = event.data; + if (msg.action === "expand") { + expandTo(msg.path); + } + return false; +} + +window.addEventListener("message", windowEvents, false); + +$(document).ready(function() { + escapeShortcut(); + navResizer(); + enableLinks(); + enableToggles(); + populateSearchCache(); + enableSearch(); +}); + +})(); diff --git a/doc/ruby/js/jquery.js b/doc/ruby/js/jquery.js new file mode 100644 index 0000000..198b3ff --- /dev/null +++ b/doc/ruby/js/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
    a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
    "+""+"
    ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
    t
    ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
    ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/doc/ruby/method_list.html b/doc/ruby/method_list.html new file mode 100644 index 0000000..4e44093 --- /dev/null +++ b/doc/ruby/method_list.html @@ -0,0 +1,803 @@ + + + + + + + + + + + + + + + + + + Method List + + + +
    +
    +

    Method List

    + + + +
    + + +
    + + diff --git a/doc/ruby/top-level-namespace.html b/doc/ruby/top-level-namespace.html new file mode 100644 index 0000000..b5ccf00 --- /dev/null +++ b/doc/ruby/top-level-namespace.html @@ -0,0 +1,112 @@ + + + + + + + Top Level Namespace + + — Documentation by YARD 0.9.5 + + + + + + + + + + + + + + + + + + + +
    + + + + +

    Top Level Namespace + + + +

    +
    + + + + + + + + + + + +
    + +

    Defined Under Namespace

    +

    + + + Modules: CashBox, TopMovies + + + + +

    + + + + + + + + + +
    + + + +
    + + \ No newline at end of file diff --git a/examples/collection_filters.rb b/examples/collection_filters.rb index 264ac43..0f5a4e8 100644 --- a/examples/collection_filters.rb +++ b/examples/collection_filters.rb @@ -11,6 +11,7 @@ end movies = TopMovies::MovieCollection.new(file_name) +puts movies # collection filters by genre puts movies.filter(genre: 'Comedy') diff --git a/examples/netflix_filters.rb b/examples/netflix_filters.rb index 8494366..4242d35 100644 --- a/examples/netflix_filters.rb +++ b/examples/netflix_filters.rb @@ -11,7 +11,9 @@ end online = TopMovies::Netflix.new(file_name) -online.pay(35) +puts online + +puts online.pay(35) # inner filters puts online.show(genre: 'Drama', period: :new) diff --git a/examples/theatre_buy_ticket.rb b/examples/theatre_buy_ticket.rb index 5ca3e21..18f2140 100644 --- a/examples/theatre_buy_ticket.rb +++ b/examples/theatre_buy_ticket.rb @@ -51,6 +51,7 @@ hall :red end end +puts theatre puts theatre.buy_ticket('10:20') puts theatre.buy_ticket('13:20') diff --git a/lib/topmovies/movie.rb b/lib/topmovies/movie.rb index 15852e7..44b8e58 100644 --- a/lib/topmovies/movie.rb +++ b/lib/topmovies/movie.rb @@ -92,5 +92,9 @@ def budget def poster take_poster(imdb_id) end + + def translations + take_translations(imdb_id) + end end end diff --git a/lib/topmovies/netflix.rb b/lib/topmovies/netflix.rb index b75ac23..5260457 100644 --- a/lib/topmovies/netflix.rb +++ b/lib/topmovies/netflix.rb @@ -4,12 +4,20 @@ class Netflix < MovieCollection Money.use_i18n = false + # show amount money in cashbox + # @note called when you need to know how much money in cashbox + # @return [Fixnum] @balance def self.cash cashbox_balance end attr_reader :balance + # withdraw money from the cashbox for preview movie + # @note called from #show + # @param + # movie [Movie] movie to shown + # @return [Fixnum] @balance def make_payment(movie) raise ArgumentError, 'В базе нет такого фильма' unless movie if @balance.to_f < movie.cost @@ -20,6 +28,17 @@ def make_payment(movie) end end + # define filter + # @note called from #show + # @param + # filter_name [Symbol] name new filter + # from: [Symbol] name filter on which the new filter is created + # arg: [Array] value property of the movie, that define in based filter + # &block [Proc] code block containing the filter condition + # @return [Hash] @filter + # @example + # define_filter(:new_sci_fi) { |movie, year| movie.year > year } + # define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) def define_filter(filter_name, from: nil, arg: nil, &blk) @filter[filter_name] = if block_given? @@ -31,12 +50,26 @@ def define_filter(filter_name, from: nil, arg: nil, &blk) end end + # split filters to internal and external + # @note called from find_by_custom_filters and find_by_inner_filters + # @param + # filters [Hash] filters represents as hash + # @return [Array] @custom_filters and @inner_filters def parse_filters(filters) @custom_filters, @inner_filters = filters.partition do |flt| @filter.include?(flt[0]) end end + # get movie that will show + # @note called from #show + # @param + # filters [Hash] show filters represents as hash + # &block [Proc] show filters represents as block + # @return [Movie] movie + # @example + # filter_movie(new_sci_fi: true) + # # => Blade Runner — современное кино: def filter_movie(filters, &block) movies = @collection.dup movies = find_by_block(movies, &block) @@ -46,11 +79,28 @@ def filter_movie(filters, &block) movie end + # get movies if send block into + # @note called when send block + # @param + # movies [MovieCollection] movies collection + # &block [Proc] it filter represents as block + # @return [Array] array movies + # @example + # find_by_block(movies, &block) def find_by_block(movies, &block) movies = movies.select(&block) if block_given? movies end + # get movies filetred composite filters + # @note called when define custom filter + # @param + # movies [MovieCollection] movies collection + # filters [Hash] filters represents as hash + # @return [Array] array movies + # @example + # netflix.find_by_custom_filters(@collection, new_sci_fi: true) + # # => Blade Runner — современное кино: играют Harrison Ford, Rutger Hauer, Sean Young def find_by_custom_filters(movies, filters) parse_filters(filters) if @custom_filters.empty? @@ -65,6 +115,15 @@ def find_by_custom_filters(movies, filters) movies end + # get movies filetred inner filters + # @note called as needed + # @param + # movies [MovieCollection] movies collection + # filters [Hash] filters represents as hash + # @return [Array] array movies + # @example + # netflix.find_by_inner_filters(@collection, genre: 'Drama') + # # => Pulp Fiction — современное кино: играют John Travolta, Uma Thurman, Samuel L. Jackson def find_by_inner_filters(movies, filters) parse_filters(filters) if @inner_filters.empty? @@ -75,16 +134,44 @@ def find_by_inner_filters(movies, filters) movies end + # show movie + # @note called as needed + # @param + # filter_name [Hash] filter name + # block [Proc] composite filter represented as a block + # @return [Movie] film in a certain format + # @example + # netflix.show(genre: 'Drama', period: :new) + # # => The Departed — новинка, вышло 10 лет назад! + # movie = netflix.show do |movie| + # !movie.title.include?('Terminator') && \ + # movie.genre[0].include?('Action') && \ + # movie.year > 2003 + # end + # # => The Dark Knight Rises — новинка, вышло 4 лет назад! def show(filter_name = {}, &block) movie = filter_movie(filter_name, &block) make_payment(movie) movie.show end + # get movie with high rate + # @note called as needed + # @param col_movies [MovieCollection] movies collection + # @return [Movie] movie with high rate + # @example + # rand_high_rate(col_movies) def rand_high_rate(col_movies) col_movies.sort_by { |m| m.rate.to_f * rand(1000) }.last end + # put cash to cashbox of Netflix + # @note called as needed + # @param payment [Fixnum] amount of payment + # @return [Fixnum] the amount of money at the cashbox + # @example + # netflix.pay(35) + # # => 35.00 def pay(payment) money = Money.new(payment * 100, 'UAH') raise ArgumentError, @@ -94,12 +181,27 @@ def pay(payment) @balance += money end + # define the cost of the film by title + # @note called as needed + # @param title [String] title movie + # @return [Money] movie cost in currency format + # @example + # netflix.film_costs('Terminator') + # # => 50.00 ₴ def film_costs(title) movie = filter(title).first raise NameError, 'В базе нет такого фильма' unless movie to_money(movie.cost) end + # converts number into a currency format + # @note called as needed + # @param price [Fixnum] ticket cost + # @return [Money] ticket cost with currency symbol + # @example + # to_money(35.00) + # # => 35.00 ₴ + # @see Money def to_money(price) Money.new(price * 100, 'UAH') end diff --git a/readme.md b/readme.md deleted file mode 100644 index e1df2b7..0000000 --- a/readme.md +++ /dev/null @@ -1,372 +0,0 @@ -TopMovies -======== - -TopMovies is a console application to manipulate the data from the list of top 250 IMDB movies. - -1. MovieCollection, created in the application allows you to: - - * the names and rating of films, - * the list of the longest films, - * comedies list, - * the list by producer and - * display statistics by month - * show the list of all films, - * show a list sorted by date movies, - * show a filtered list of movies by genre and country, - * give statistics for: actor, year, month, country, genre - -2. Netflix and Theatre are cinemas based on MovieCollection can: - - * show movies, using various filters, - * cinemas have cashbox to receive money, - * make it possible to buy tickets for a movie, - * cinema it is also a schedule for the showing of films at different times and in different rooms - -3. In addition, the application can: - - * get the budget for each film with IMDb site, - * extract the posters and film title translation into other languages with TMDB site, - * renders html page with all the movies - -Installation -------------------- -$ gem install topmovies - -Usage -------------------- - -To use gem topmovies you need to do the following: - -1. add to your file list of films - -```sh - file_name = ARGV[0] || '../lib/topmovies/data/movies.txt' - if File.exist?(file_name) - File.open(file_name) - else - puts 'Ошибка. Файл отсутствует!' - exit - end -``` - -2. create a Movie Collection on the basis of added movies list - -```sh - movies = TopMovies::MovieCollection.new(file_name) -``` - -3. create an online cinema Netflix - -```sh - online = TopMovies::Netflix.new(file_name) -``` - -4. create a normal cinema Theatre - -```sh - theatre = - TopMovies::Theatre.new do - hall :red, title: 'Красный зал', places: 100 - hall :blue, title: 'Синий зал', places: 50 - hall :green, title: 'Зелёный зал (deluxe)', places: 12 - - period '09:00'..'12:00' do - description 'Утренний сеанс' - filters genre: 'Comedy', year: 1900..1980 - price 10 - hall :red, :blue - end - - period '12:00'..'16:00' do - description 'Спецпоказ' - title 'The Terminator' - price 50 - hall :green - end - - period '16:00'..'20:00' do - description 'Вечерний сеанс' - filters genre: %w(Action Drama), year: 2007..Time.now.year - price 20 - hall :red, :blue - end - - period '19:00'..'22:00' do - description 'Вечерний сеанс для киноманов' - filters year: 1900..1945, exclude_country: 'USA' - price 30 - hall :green - end - end -``` - -After that you will be available to a large number of methods for manipulating data list IMDB top 250 films - -Examples ------------- - -####MovieCollection - - # show list all films - -```sh - movies.all -``` - - # get a filtered list of movies by genre - -```sh - movies.filter(genre: 'Comedy') -``` - - # get a filtered list on the film by year - -```sh - movies.filter(year: 2000) - movies.filter(year: 1980..2000) -``` - - # get a sorted list on the film by tear - -```sh - movies.sort_by(:year) -``` - - # obtain statistics on the number of films made by each director - -```sh - movies.stats(:author) -``` - - # display statistics by month - -```sh - groups = movies.reject{ |f| - !f.date.include?('-') } - .group_by{ |f| - Date.strptime( f.date, '%Y-%m').mon - }.sort - - groups.map do |month, group| - puts "#{ Date.strptime(month.to_s, '%m').strftime('%B') } - #{group.count}" - end -``` - - # get the number of films made outside the US - -```sh - movies.each.count { |f| f.country != "USA" } -``` - - # get a list of all directors alphabetically - -```sh - movies - .sort_by { |a| a.author.split(' ').reverse.join(" ") } - .uniq(&:author) - .each { |a| puts a.author} -``` - - # get 10 comedies (the first on the release date) - -```sh - movies - .reject { |c| !c.genre.split(",").include?("Comedy")} - .sort_by(&:year) - .take(10) - .each { |a| puts "#{a.title} - #{a.genre} - #{a.year}"} -``` - - # get 5 longest movies - -```sh - def show(f) - puts "#{ f.title} (#{f.date} #{f.genre}) - #{f.length }" - end - - movies - .sort_by { |f| -f.length.to_i } - .take(5) - .each { |a| show(a) } -``` - -####Netflix - - # at each call show different amounts of money withdrawn - (1, 1.5, 3, 5 dollars, depending on the type of movie -   There are 4 types of films: - ancient - AncientMovie (1900-1945); - classic - ClassicMovie (1945-1968); - modern - ModernMovie (1968-2000); - new - NewMovie (2000 until today) - - # show newest drama - -```sh - online.show(genre: 'Drama', period: :new) -``` - - # component filter for movies - -```sh - movies = online.show do |movie| - !movie.title.include?('Terminator') && \ - movie.genre[0].include?('Action') && \ - movie.year > 2003 - end -``` - - # You can define your filter and display a list of films according to this filter - -```sh - online.define_filter(:new_sci_fi) do |movie| - movie.genre[0].include?('Sci-Fi') && \ - !movie.country.include?('UK') - end - online.show(new_sci_fi: true) - - online.define_filter(:not_spielberg) do |movie| - !movie.author.include?('Steven Spielberg') - end - online.show(new_sci_fi: true, not_spielberg: true) - - online.define_filter(:country) do |movie| - movie.genre.include?('Sci-Fi') && \ - !movie.author.include?('Steven Spielberg') && \ - !movie.country.include?('UK') - end -``` - - # You can create a filter based on an existing - -```sh - online.define_filter(:new_sci_fi) { |movie, year| movie.year > year } - online.show(new_sci_fi: 2010) - online.define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014) - online.show(newest_sci_fi: 2014) -``` - - # for different cinemas various online cash - -```sh - online.cash != online1.cash -``` - - # see the amount of money at the cashbox - -```sh - online.cash -``` - - # put money in the cinema cashbox - -```sh - online.pay(35) -``` - - # how much film - -```sh - netflix.how_much?('The Terminator') -``` - - # holding cash collection and reset cashbox - - if who == Bank - going cash collection - - if something else - an error occurs - -```sh - netflix.take(Bank) -``` - - -####Theatre - - # see the amount of money at the cashbox - -```sh - theatre.cash -``` - - # to know when you can see the right movie - -```sh - theatre.when?('The Terminator') -``` - - # You can buy a ticket to a movie at a specific time - -```sh - theatre.buy_ticket('10:20') - theatre.buy_ticket('13:20') - theatre.buy_ticket('17:20') - theatre.buy_ticket('19:20', hall: :green) -``` - - # holding cash collection and reset cashbox - - if who == Bank - going cash collection - - if something else - an error occurs - -```sh - theatre.take(Bank) -``` - -####Movie - - # get some film in several ways - -```sh - movie = movies.all.first - movie = movies.all[0] - movie = movies.filter(title: 'Terminator') -``` - - # get the number of well-known actors, who played in the film - -```sh - movie.actors.count -``` - - # does the actor plays in the film - -```sh - movie.actors.include?('Arnold Shwarzenegger') -``` - - # to know whether the film belongs to the genre - -```sh - movies.first.has_genre?('Camedy') -``` - - # to know the film's budget - -```sh - movie = movies.all[112] - movie.budget -``` - - # get a poster for the film - -```sh - movie = movies.filter(title: 'Terminator') - movie.poster -``` - - # receive translations of the film in other language - -```sh - movie = movies.filter(title: '12 Angry Men') - movie.translations -``` - -####HTML - - # create HTML markup - -```sh - movies.render_html -``` - -Author --------------- -Serhii Dmytrakov \ No newline at end of file From f7d1f021231f3d3ecfe49f3137d80c35ee178f7a Mon Sep 17 00:00:00 2001 From: devico Date: Mon, 24 Oct 2016 15:46:32 +0300 Subject: [PATCH 15/26] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BA=20=D1=84=D0=B0=D0=B9=D0=BB=D1=83=20theatre.rb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .yardoc/checksums | 4 +- .yardoc/objects/root.dat | Bin 59517 -> 65971 bytes doc/ruby/CashBox.html | 2 +- doc/ruby/TopMovies.html | 2 +- doc/ruby/TopMovies/AncientMovie.html | 2 +- doc/ruby/TopMovies/ClassicMovie.html | 2 +- doc/ruby/TopMovies/CountryFilter.html | 2 +- doc/ruby/TopMovies/FilterGenre.html | 2 +- doc/ruby/TopMovies/ImdbBudgets.html | 2 +- doc/ruby/TopMovies/ModernMovie.html | 2 +- doc/ruby/TopMovies/Movie.html | 2 +- doc/ruby/TopMovies/Movie/SplitArray.html | 2 +- doc/ruby/TopMovies/MovieCollection.html | 2 +- doc/ruby/TopMovies/Netflix.html | 469 ++++++------ doc/ruby/TopMovies/NewMovie.html | 2 +- doc/ruby/TopMovies/Period.html | 2 +- doc/ruby/TopMovies/Theatre.html | 860 +++++++++++++++++++---- doc/ruby/TopMovies/TmdbPosters.html | 2 +- doc/ruby/_index.html | 2 +- doc/ruby/file.README.html | 2 +- doc/ruby/index.html | 2 +- doc/ruby/top-level-namespace.html | 2 +- lib/topmovies/netflix.rb | 89 +-- lib/topmovies/theatre.rb | 68 ++ 25 files changed, 1129 insertions(+), 399 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b72c73 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.yardoc/ +/doc/ruby/ diff --git a/.yardoc/checksums b/.yardoc/checksums index da885ab..be1125b 100644 --- a/.yardoc/checksums +++ b/.yardoc/checksums @@ -1,8 +1,8 @@ lib/top_movies.rb 008590f106ec3e567b0406e15df2416c9817967c lib/topmovies/movie.rb 4bdd42807beb316321d2ecdede7c167eb8e94667 lib/topmovies/period.rb 277c98679e679ad19bce54990b8ac4b52823d013 -lib/topmovies/netflix.rb eea07a934bd4da6843695cf6708d5ed763dd7107 -lib/topmovies/theatre.rb 9c0aa2e2c9469b075dc8f18f0112799f394f0041 +lib/topmovies/netflix.rb 678c06c069594502e872bc70a78183dafaa7aa5d +lib/topmovies/theatre.rb 6ba07a935d9c6c321a48eb0c851582398ced45b1 lib/topmovies/cash_box.rb 623916b2898432c51d6ffb48002c30a008d0ed2f lib/topmovies/new_movie.rb 25f1fa836a45fc77f4be2e99f4db9d36752b0547 lib/topmovies/filter_genre.rb 21727d0eb6895705db1e024c3e2b36a07ccc338b diff --git a/.yardoc/objects/root.dat b/.yardoc/objects/root.dat index d4eb78c7a8f3a17c2c260af1843026bc9a8fa993..b3be10ab6081a947137a60a04ace99a301a8e219 100644 GIT binary patch delta 11366 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 b4TV=S4Go?34*Hv2A99=xRbS+B3)TM*u3MTF delta 6014 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
    diff --git a/doc/ruby/TopMovies.html b/doc/ruby/TopMovies.html index cbf0650..35205ac 100644 --- a/doc/ruby/TopMovies.html +++ b/doc/ruby/TopMovies.html @@ -121,7 +121,7 @@

    Constant Summary

    diff --git a/doc/ruby/TopMovies/AncientMovie.html b/doc/ruby/TopMovies/AncientMovie.html index cc4c27b..15db824 100644 --- a/doc/ruby/TopMovies/AncientMovie.html +++ b/doc/ruby/TopMovies/AncientMovie.html @@ -281,7 +281,7 @@

    diff --git a/doc/ruby/TopMovies/ClassicMovie.html b/doc/ruby/TopMovies/ClassicMovie.html index 1f9633d..f7b5841 100644 --- a/doc/ruby/TopMovies/ClassicMovie.html +++ b/doc/ruby/TopMovies/ClassicMovie.html @@ -285,7 +285,7 @@

    diff --git a/doc/ruby/TopMovies/CountryFilter.html b/doc/ruby/TopMovies/CountryFilter.html index 84019cc..472f2fb 100644 --- a/doc/ruby/TopMovies/CountryFilter.html +++ b/doc/ruby/TopMovies/CountryFilter.html @@ -417,7 +417,7 @@

    diff --git a/doc/ruby/TopMovies/FilterGenre.html b/doc/ruby/TopMovies/FilterGenre.html index 39b62b4..692f88c 100644 --- a/doc/ruby/TopMovies/FilterGenre.html +++ b/doc/ruby/TopMovies/FilterGenre.html @@ -415,7 +415,7 @@

    diff --git a/doc/ruby/TopMovies/ImdbBudgets.html b/doc/ruby/TopMovies/ImdbBudgets.html index 32b16d7..f78957e 100644 --- a/doc/ruby/TopMovies/ImdbBudgets.html +++ b/doc/ruby/TopMovies/ImdbBudgets.html @@ -297,7 +297,7 @@

    diff --git a/doc/ruby/TopMovies/ModernMovie.html b/doc/ruby/TopMovies/ModernMovie.html index b00b0f9..82bc9eb 100644 --- a/doc/ruby/TopMovies/ModernMovie.html +++ b/doc/ruby/TopMovies/ModernMovie.html @@ -281,7 +281,7 @@

    diff --git a/doc/ruby/TopMovies/Movie.html b/doc/ruby/TopMovies/Movie.html index 18e6aff..db1fbce 100644 --- a/doc/ruby/TopMovies/Movie.html +++ b/doc/ruby/TopMovies/Movie.html @@ -869,7 +869,7 @@

    diff --git a/doc/ruby/TopMovies/Movie/SplitArray.html b/doc/ruby/TopMovies/Movie/SplitArray.html index a260392..348181c 100644 --- a/doc/ruby/TopMovies/Movie/SplitArray.html +++ b/doc/ruby/TopMovies/Movie/SplitArray.html @@ -185,7 +185,7 @@

    diff --git a/doc/ruby/TopMovies/MovieCollection.html b/doc/ruby/TopMovies/MovieCollection.html index 2c944c6..95a16e7 100644 --- a/doc/ruby/TopMovies/MovieCollection.html +++ b/doc/ruby/TopMovies/MovieCollection.html @@ -1080,7 +1080,7 @@

    diff --git a/doc/ruby/TopMovies/Netflix.html b/doc/ruby/TopMovies/Netflix.html index 51ba74d..69afb09 100644 --- a/doc/ruby/TopMovies/Netflix.html +++ b/doc/ruby/TopMovies/Netflix.html @@ -192,7 +192,7 @@

    -

    show amount money in cashbox.

    +

    Get the amount of money at the cashbox.

    @@ -225,7 +225,7 @@

    -

    define filter.

    +

    Define a new filter based on an existing filter.

    @@ -249,7 +249,7 @@

    -

    define the cost of the film by title.

    +

    Want to know how much of the movie by title.

    @@ -273,7 +273,7 @@

    -

    get movie that will show.

    +

    Get movie that will show.

    @@ -297,7 +297,7 @@

    -

    get movies if send block into.

    +

    Get array movies.

    @@ -321,7 +321,7 @@

    -

    get movies filetred composite filters.

    +

    Get movies filtered composite filters.

    @@ -345,7 +345,7 @@

    -

    get movies filetred inner filters.

    +

    Get movies filtered inner filters.

    @@ -369,7 +369,7 @@

    -

    withdraw money from the cashbox for preview movie.

    +

    Withdraw money from the cashbox for preview movie.

    @@ -393,7 +393,8 @@

    -

    split filters to internal and external.

    +

    Split filters to internal(based on properties of the movie) and +external(custom filters maked users).

    @@ -417,7 +418,7 @@

    -

    put cash to cashbox of Netflix.

    +

    Put cash to cashbox of Netflix to be able to watch movie.

    @@ -441,7 +442,7 @@

    -

    get movie with high rate.

    +

    Get movie with high rate.

    @@ -465,7 +466,7 @@

    -

    show movie.

    +

    Show movie.

    @@ -489,7 +490,7 @@

    -

    converts number into a currency format.

    +

    Converts number into a currency format.

    @@ -581,12 +582,12 @@

     
     
    +13
     14
    -15
    -16
    +15

    -
    # File 'lib/topmovies/netflix.rb', line 14
    +      
    # File 'lib/topmovies/netflix.rb', line 13
     
     def balance
       @balance
    @@ -615,15 +616,7 @@ 

    -
    - Note: -
    -

    called when you need to know how much money in cashbox

    -
    -
    - - -

    show amount money in cashbox

    +

    Get the amount of money at the cashbox

    @@ -640,11 +633,6 @@

    - — -
    -

    @balance

    -
    - @@ -655,12 +643,12 @@

     
     
    +9
     10
    -11
    -12
    +11

    -
    # File 'lib/topmovies/netflix.rb', line 10
    +      
    # File 'lib/topmovies/netflix.rb', line 9
     
     def self.cash
       cashbox_balance
    @@ -696,7 +684,7 @@ 

    -

    define filter

    +

    Define a new filter based on an existing filter

    @@ -719,19 +707,65 @@

    filter_name - + (Symbol) — -
    Symbol -
    +

    name new filter

    -
    - -

    from: [Symbol] name filter on which the new filter is created arg: [Array] -value property of the movie, that define in based filter &block [Proc] -code block containing the filter condition

    +
    + + + +
  • + + from: + + + (Symbol) + + + (defaults to: nil) + + + — +
    +

    name existing filter

    +
    + +
  • + +
  • + + arg: + + + (Array) + + + (defaults to: nil) + + + — +
    +

    value property of the movie, that define in existing filter

    +
    + +
  • + +
  • + + &block + + + (Proc) + + + + — +
    +

    code block containing the filter condition

  • @@ -763,19 +797,19 @@

     
     
    +39
    +40
    +41
     42
     43
     44
     45
     46
     47
    -48
    -49
    -50
    -51
    +48

    -
    # File 'lib/topmovies/netflix.rb', line 42
    +      
    # File 'lib/topmovies/netflix.rb', line 39
     
     def define_filter(filter_name, from: nil, arg: nil, &blk)
       @filter[filter_name] =
    @@ -804,15 +838,7 @@ 

    -
    - Note: -
    -

    called as needed

    -
    -
    - - -

    define the cost of the film by title

    +

    Want to know how much of the movie by title

    @@ -886,14 +912,14 @@

     
     
    -191
    -192
    -193
    -194
    -195
    +178 +179 +180 +181 +182

    -
    # File 'lib/topmovies/netflix.rb', line 191
    +      
    # File 'lib/topmovies/netflix.rb', line 178
     
     def film_costs(title)
       movie = filter(title).first
    @@ -925,7 +951,7 @@ 

    -

    get movie that will show

    +

    Get movie that will show

    @@ -937,7 +963,7 @@

    filter_movie(new_sci_fi: true)
    -# => Blade Runner — современное кино:
    +# => Blade Runner — современное кино...

    Parameters:

    @@ -948,17 +974,29 @@

    filters - + (Hash) — -
    Hash -
    -

    show filters represents as hash

    -
    - -

    &block [Proc] show filters represents as block

    +
    +

    filters for the selection of the movie represents as hash

    +
    + + + +
  • + + &block + + + (Proc) + + + + — +
    +

    filters for the selection of the movie represents as block

  • @@ -977,7 +1015,7 @@

    -

    movie

    +

    movie satisfying all filters

    @@ -990,17 +1028,17 @@

     
     
    +69
    +70
    +71
    +72
     73
     74
     75
    -76
    -77
    -78
    -79
    -80
    +76

    -
    # File 'lib/topmovies/netflix.rb', line 73
    +      
    # File 'lib/topmovies/netflix.rb', line 69
     
     def filter_movie(filters, &block)
       movies = @collection.dup
    @@ -1030,12 +1068,12 @@ 

    Note:
    -

    called when send block

    +

    called when into #show send block

    -

    get movies if send block into

    +

    Get array movies

    @@ -1057,17 +1095,29 @@

    movies - + (MovieCollection) — -
    MovieCollection -
    +

    movies collection

    -
    - -

    &block [Proc] it filter represents as block

    +
    + + + +
  • + + &block + + + (Proc) + + + + — +
    +

    it filter represents as block

  • @@ -1099,13 +1149,13 @@

     
     
    -90
    -91
    -92
    -93
    +85 +86 +87 +88

    -
    # File 'lib/topmovies/netflix.rb', line 90
    +      
    # File 'lib/topmovies/netflix.rb', line 85
     
     def find_by_block(movies, &block)
       movies = movies.select(&block) if block_given?
    @@ -1136,7 +1186,7 @@ 

    -

    get movies filetred composite filters

    +

    Get movies filtered composite filters

    @@ -1159,17 +1209,29 @@

    movies - + (MovieCollection) — -
    MovieCollection -
    +

    movies collection

    -
    - -

    filters [Hash] filters represents as hash

    +
    + + + +
  • + + filters + + + (Hash) + + + + — +
    +

    filters represents as hash

  • @@ -1201,22 +1263,22 @@

     
     
    +98
    +99
    +100
    +101
    +102
    +103
     104
     105
     106
     107
     108
     109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    +110

    -
    # File 'lib/topmovies/netflix.rb', line 104
    +      
    # File 'lib/topmovies/netflix.rb', line 98
     
     def find_by_custom_filters(movies, filters)
       parse_filters(filters)
    @@ -1251,12 +1313,12 @@ 

    Note:
    -

    called as needed

    +

    called when into #show send inner filters

    -

    get movies filetred inner filters

    +

    Get movies filtered inner filters

    @@ -1279,17 +1341,29 @@

    movies - + (MovieCollection) — -
    MovieCollection -
    +

    movies collection

    -
    - -

    filters [Hash] filters represents as hash

    +
    + + + +
  • + + filters + + + (Hash) + + + + — +
    +

    filters represents as hash

  • @@ -1321,18 +1395,18 @@

     
     
    +120
    +121
    +122
    +123
    +124
    +125
    +126
     127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    +128

    -
    # File 'lib/topmovies/netflix.rb', line 127
    +      
    # File 'lib/topmovies/netflix.rb', line 120
     
     def find_by_inner_filters(movies, filters)
       parse_filters(filters)
    @@ -1368,7 +1442,7 @@ 

    -

    withdraw money from the cashbox for preview movie

    +

    Withdraw money from the cashbox for preview movie

    @@ -1382,15 +1456,13 @@

    movie - + (Movie) — -
    Movie -
    +

    movie to shown

    -
    @@ -1409,7 +1481,7 @@

    -

    @balance

    +

    amount money in cashbox

    @@ -1435,18 +1507,18 @@

     
     
    +19
    +20
     21
     22
     23
     24
     25
     26
    -27
    -28
    -29
    +27

    -
    # File 'lib/topmovies/netflix.rb', line 21
    +      
    # File 'lib/topmovies/netflix.rb', line 19
     
     def make_payment(movie)
       raise ArgumentError, 'В базе нет такого фильма' unless movie
    @@ -1482,7 +1554,10 @@ 

    -

    split filters to internal and external

    +

    Split filters to internal(based on properties of the movie) and

    + +
    external(custom filters maked users)
    +
    @@ -1496,15 +1571,13 @@

    filters - + (Hash) — -
    Hash -
    +

    filters represents as hash

    -
    @@ -1536,14 +1609,14 @@

     
     
    +55
    +56
    +57
     58
    -59
    -60
    -61
    -62
    +59

    -
    # File 'lib/topmovies/netflix.rb', line 58
    +      
    # File 'lib/topmovies/netflix.rb', line 55
     
     def parse_filters(filters)
       @custom_filters, @inner_filters = filters.partition do |flt|
    @@ -1570,12 +1643,12 @@ 

    Note:
    -

    called as needed

    +

    called before show the movie

    -

    put cash to cashbox of Netflix

    +

    Put cash to cashbox of Netflix to be able to watch movie

    @@ -1649,17 +1722,17 @@

     
     
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    +163 +164 +165 +166 +167 +168 +169 +170

    -
    # File 'lib/topmovies/netflix.rb', line 175
    +      
    # File 'lib/topmovies/netflix.rb', line 163
     
     def pay(payment)
       money = Money.new(payment * 100, 'UAH')
    @@ -1686,29 +1759,13 @@ 

    -
    - Note: -
    -

    called as needed

    -
    -
    - - -

    get movie with high rate

    +

    Get movie with high rate

    - -
    -

    Examples:

    - - -
    rand_high_rate(col_movies)
    - -
    -

    Parameters:

    +

    Parameters:

    • @@ -1754,12 +1811,12 @@

       
       
      -164
      -165
      -166
      +152 +153 +154

    -
    # File 'lib/topmovies/netflix.rb', line 164
    +      
    # File 'lib/topmovies/netflix.rb', line 152
     
     def rand_high_rate(col_movies)
       col_movies.sort_by { |m| m.rate.to_f * rand(1000) }.last
    @@ -1781,15 +1838,7 @@ 

    -
    - Note: -
    -

    called as needed

    -
    -
    - - -

    show movie

    +

    Show movie

    @@ -1818,19 +1867,31 @@

    filter_name - + (Hash) (defaults to: {}) — -
    Hash -
    +

    filter name

    -
    - -

    block [Proc] composite filter represented as a block

    +
    + + + +
  • + + block + + + (Proc) + + + + — +
    +

    composite filter represented as a block

  • @@ -1862,14 +1923,14 @@

     
     
    -152
    -153
    -154
    -155
    -156
    +143 +144 +145 +146 +147

    -
    # File 'lib/topmovies/netflix.rb', line 152
    +      
    # File 'lib/topmovies/netflix.rb', line 143
     
     def show(filter_name = {}, &block)
       movie = filter_movie(filter_name, &block)
    @@ -1896,12 +1957,12 @@ 

    Note:
    -

    called as needed

    +

    called when numerical amount need represents in currency format

    -

    converts number into a currency format

    +

    Converts number into a currency format

    @@ -1969,12 +2030,12 @@

     
     
    -205
    -206
    -207
    +192 +193 +194

    -
    # File 'lib/topmovies/netflix.rb', line 205
    +      
    # File 'lib/topmovies/netflix.rb', line 192
     
     def to_money(price)
       Money.new(price * 100, 'UAH')
    @@ -1989,7 +2050,7 @@ 

    diff --git a/doc/ruby/TopMovies/NewMovie.html b/doc/ruby/TopMovies/NewMovie.html index ba2701c..2593d2b 100644 --- a/doc/ruby/TopMovies/NewMovie.html +++ b/doc/ruby/TopMovies/NewMovie.html @@ -283,7 +283,7 @@

    diff --git a/doc/ruby/TopMovies/Period.html b/doc/ruby/TopMovies/Period.html index c07a78b..a46a168 100644 --- a/doc/ruby/TopMovies/Period.html +++ b/doc/ruby/TopMovies/Period.html @@ -1117,7 +1117,7 @@

    diff --git a/doc/ruby/TopMovies/Theatre.html b/doc/ruby/TopMovies/Theatre.html index 44d7794..0e25934 100644 --- a/doc/ruby/TopMovies/Theatre.html +++ b/doc/ruby/TopMovies/Theatre.html @@ -225,7 +225,7 @@

  • - #buy_ticket(time_show, hall = nil) ⇒ Object + #buy_ticket(time_show, hall = nil) ⇒ String @@ -239,7 +239,9 @@

    -
    +
    +

    Buy a ticket to a movie at a certain time, you can specify the hall.

    +

  • @@ -247,7 +249,7 @@

  • - #filters_to_hash(filters) ⇒ Object + #filters_to_hash(filters) ⇒ Hash @@ -261,7 +263,11 @@

    -
    +
    +

    Converts filters to hash filters_to_hash({ genre: ['Comedy', +'Adventure']}) # => { genre: 'Comedy', genre: +'Adventure'}.

    +

  • @@ -269,7 +275,7 @@

  • - #get_movie_from_filters(period) ⇒ Object + #get_movie_from_filters(period) ⇒ Movie @@ -283,7 +289,9 @@

    -
    +
    +

    Get filtered movie with high rate.

    +

  • @@ -291,7 +299,7 @@

  • - #hall(name, description) ⇒ Object + #hall(name, description) ⇒ Hash @@ -305,7 +313,9 @@

    -
    +
    +

    Add hall to Theatre.

    +

  • @@ -339,7 +349,7 @@

  • - #period(name, &block) ⇒ Object + #period(name, &block) ⇒ Hash @@ -353,7 +363,9 @@

    -
    +
    +

    Add period to Theatre.

    +

  • @@ -361,7 +373,7 @@

  • - #select_period(time, hall) ⇒ Object + #select_period(time, hall) ⇒ String @@ -375,7 +387,9 @@

    -
    +
    +

    Select period for movie show when halls intersects.

    +

  • @@ -383,7 +397,7 @@

  • - #show(period) ⇒ Object + #show(period) ⇒ Movie @@ -397,7 +411,9 @@

    -
    +
    +

    Show the movie according to the period.

    +

  • @@ -405,7 +421,7 @@

  • - #time_to_show(time) ⇒ Object + #time_to_show(time) ⇒ Symbol @@ -419,7 +435,9 @@

    -
    +
    +

    Get period day for show movie.

    +

  • @@ -427,7 +445,7 @@

  • - #verify_period(current) ⇒ Object + #verify_period(current) ⇒ Boolean @@ -441,7 +459,9 @@

    -
    +
    +

    Check the period added to the schedule on intesection time.

    +

  • @@ -449,7 +469,7 @@

  • - #when?(title) ⇒ Boolean + #when?(title) ⇒ Symbol @@ -463,7 +483,9 @@

    -
    +
    +

    Know when show movie by title.

    +

  • @@ -669,30 +691,103 @@

    Instance Method Details

    - #buy_ticket(time_show, hall = nil) ⇒ Object + #buy_ticket(time_show, hall = nil) ⇒ String -

    +
    +
    + +

    Buy a ticket to a movie at a certain time, you can specify the hall

    + + +
    +
    +
    + +
    +

    Examples:

    + + +
    buy_ticket('17:20')
    +# => Вечерний сеанс - 16:00..20:00 : Фильм: The Hunt - 20.00 ₴
    +buy_ticket('19:20', hall: :green)
    +# => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: Modern Times - 30.00 ₴
    + +
    +

    Parameters:

    +
      + +
    • + + time + + + (String) + + + + — +
      +

      show time

      +
      + +
    • + +
    • + + hall + + + (Hash) + + + (defaults to: nil) + + + — +
      +

      name hall

      +
      + +
    • + +
    + +

    Returns:

    +
      + +
    • + + + (String) + + + +
    • + +
    + +
     
     
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    +118 +119 +120 +121 +122 +123 +124 +125 +126
    -
    # File 'lib/topmovies/theatre.rb', line 70
    +      
    # File 'lib/topmovies/theatre.rb', line 118
     
     def buy_ticket(time_show, hall = nil)
       period = select_period(time_show, hall)
    @@ -711,31 +806,82 @@ 

    - #filters_to_hash(filters) ⇒ Object + #filters_to_hash(filters) ⇒ Hash + + +

    +
    + +
    + Note: +
    +

    called in #when?

    +
    +
    + + +

    Converts filters to hash filters_to_hash({ genre: ['Comedy', +'Adventure']})

    +
    # => { genre: 'Comedy', genre: 'Adventure'}
    +
    + + +
    +
    +
    +

    Parameters:

    +
      -

    +
  • + + filters + + + (Array) + + + +
  • + + + +

    Returns:

    +
      + +
    • + + + (Hash) + + + +
    • + +
    + +
     
     
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    +98 +99 +100 +101 +102 +103 +104 +105 +106 +107
    -
    # File 'lib/topmovies/theatre.rb', line 59
    +      
    # File 'lib/topmovies/theatre.rb', line 98
     
     def filters_to_hash(filters)
       flts = filters.map do |k, v|
    @@ -755,29 +901,85 @@ 

    - #get_movie_from_filters(period) ⇒ Object + #get_movie_from_filters(period) ⇒ Movie -

    +
    +
    + +
    + Note: +
    +

    called from #show

    +
    +
    + + +

    Get filtered movie with high rate

    + + +
    +
    +
    + +
    +

    Examples:

    + + +
    get_movie_from_filters('19:20', hall: :green)
    +# => <TopMovies::AncientMovie:0x000000032a5988>
    + +
    +

    Parameters:

    + + +

    Returns:

    +
      + +
    • + + + (Movie) + + + +
    • + +
    + +
     
     
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    +167 +168 +169 +170 +171 +172 +173 +174
    -
    # File 'lib/topmovies/theatre.rb', line 99
    +      
    # File 'lib/topmovies/theatre.rb', line 167
     
     def get_movie_from_filters(period)
       mov = @collection.dup
    @@ -795,24 +997,97 @@ 

    - #hall(name, description) ⇒ Object + #hall(name, description) ⇒ Hash -

    +
    +
    + +

    Add hall to Theatre

    + + +
    +
    +
    + +
    +

    Examples:

    + + +
    hall(:red, {title: 'Красный зал', places: 100})
    + +
    +

    Parameters:

    +
      + +
    • + + name + + + (Symbol) + + + + — +
      +

      name hall

      +
      + +
    • + +
    • + + description + + + (Hash) + + + + — +
      +

      description hall (title, places)

      +
      + +
    • + +
    + +

    Returns:

    +
      + +
    • + + + (Hash) + + + + — +
      +

      @halls

      +
      + +
    • + +
    + +
     
     
    -17
    -18
    -19
    +23 +24 +25
    -
    # File 'lib/topmovies/theatre.rb', line 17
    +      
    # File 'lib/topmovies/theatre.rb', line 23
     
     def hall(name, description)
       @halls[name] = description
    @@ -825,31 +1100,109 @@ 

    - #period(name, &block) ⇒ Object + #period(name, &block) ⇒ Hash + + +

    +
    + +

    Add period to Theatre

    + + +
    +
    +
    + +
    +

    Examples:

    + + +
    period '09:00'..'12:00' do
    +  description 'Утренний сеанс'
    +  filters genre: 'Comedy', year: 1900..1980
    +  price 10
    +  hall :red, :blue
    +end
    + +
    +

    Parameters:

    +
      + +
    • + + name + + + (Range) + + + + — +
      +

      name period

      +
      + +
    • + +
    • + + &block + + + (Proc) + + + + — +
      +

      data period(description, filters, price, hall)

      +
      + +
    • + +
    +

    Returns:

    +
      + +
    • + + + (Hash) + + + + — +
      +

      @periods

      +
      + +
    • -

    + + +
     
     
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    +38 +39 +40 +41 +42 +43 +44 +45 +46 +47
    -
    # File 'lib/topmovies/theatre.rb', line 21
    +      
    # File 'lib/topmovies/theatre.rb', line 38
     
     def period(name, &block)
       new_period = TopMovies::Period.new(name, &block)
    @@ -869,31 +1222,105 @@ 

    - #select_period(time, hall) ⇒ Object + #select_period(time, hall) ⇒ String + + + + +

    +
    + +

    Select period for movie show when halls intersects

    + +
    +
    +
    + +
    +

    Examples:

    + + +
    select_period('19:20', hall: :green)
    +# => <TopMovies::Period:0x0000000123bee0>
    + +
    +

    Parameters:

    +
      + +
    • + + time + + + (String) + + + + — +
      +

      show movie time

      +
      + +
    • + +
    • + + hall + + + (Hash) + + + + — +
      +

      hall name

      +
      + +
    • +
    +

    Returns:

    +
      + +
    • + + + (String) + + + + — +
      +

      period name

      +
      + +
    • -

    + + +
     
     
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    +135 +136 +137 +138 +139 +140 +141 +142 +143 +144
    -
    # File 'lib/topmovies/theatre.rb', line 80
    +      
    # File 'lib/topmovies/theatre.rb', line 135
     
     def select_period(time, hall)
       period = @periods.select { |p| p.seance.include?(time) }
    @@ -913,28 +1340,76 @@ 

    - #show(period) ⇒ Object + #show(period) ⇒ Movie + + +

    +
    + +

    Show the movie according to the period

    + +
    +
    +
    + +
    +

    Examples:

    + + +
    show('19:20', hall: :green)
    +# => <TopMovies::AncientMovie:0x00000002d5fe10>
    + +
    +

    Parameters:

    + + +

    Returns:

    +
      -

    +
  • + + + (Movie) + + + +
  • + + + +
     
     
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    +152 +153 +154 +155 +156 +157 +158
    -
    # File 'lib/topmovies/theatre.rb', line 91
    +      
    # File 'lib/topmovies/theatre.rb', line 152
     
     def show(period)
       if period.name
    @@ -951,7 +1426,7 @@ 

    - #time_to_show(time) ⇒ Object + #time_to_show(time) ⇒ Symbol @@ -960,11 +1435,60 @@

    +

    Get period day for show movie

    +
    +
    +

    Examples:

    + + +
    time_to_show('09:00')
    +# => morning
    + +
    +

    Parameters:

    +
      + +
    • + + time + + + (String) + + + + — +
      +

      show time

      +
      + +
    • + +
    + +

    Returns:

    +
      + +
    • + + + (Symbol) + + + + — +
      +

      any hash key from PERIOD_DAY

      +
      + +
    • + +

    Raises:

      @@ -985,16 +1509,16 @@

       
       
      -43
      -44
      -45
      -46
      -47
      -48
      -49
      +69 +70 +71 +72 +73 +74 +75

    -
    # File 'lib/topmovies/theatre.rb', line 43
    +      
    # File 'lib/topmovies/theatre.rb', line 69
     
     def time_to_show(time)
       hour = DateTime.strptime(time, '%H').hour
    @@ -1011,24 +1535,68 @@ 

    - #verify_period(current) ⇒ Object + #verify_period(current) ⇒ Boolean -

    +
    +
    + +

    Check the period added to the schedule on intesection time

    + + +
    +
    +
    +

    Parameters:

    + + +

    Returns:

    +
      + +
    • + + + (Boolean) + + + +
    • + +
    + +
    ",""],legend:[1,"
    ","
    "],thead:[1,"
     
     
    -32
    -33
    -34
    +52 +53 +54
    -
    # File 'lib/topmovies/theatre.rb', line 32
    +      
    # File 'lib/topmovies/theatre.rb', line 52
     
     def verify_period(current)
       @periods.any? { |p| p.intersects?(current) }
    @@ -1041,7 +1609,7 @@ 

    - #when?(title) ⇒ Boolean + #when?(title) ⇒ Symbol @@ -1050,21 +1618,65 @@

    +
    + Note: +
    +

    based on check type of movie (ancient, classic, modern, new)

    +
    +
    + + +

    Know when show movie by title

    +
    +
    +

    Examples:

    + + +
    when?('Terminator')
    +# => afternoon
    + +
    +

    Parameters:

    +
      + +
    • + + title + + + (String) + + + + — +
      +

      movie title

      +
      + +
    • + +
    +

    Returns:

    • - (Boolean) + (Symbol) + — +
      +

      any hash key from FILTERS_MOVIE

      +
      +
    @@ -1075,16 +1687,16 @@

     
     
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    +84 +85 +86 +87 +88 +89 +90

    -
    # File 'lib/topmovies/theatre.rb', line 51
    +      
    # File 'lib/topmovies/theatre.rb', line 84
     
     def when?(title)
       movie = filter(title).first
    @@ -1103,7 +1715,7 @@ 

    diff --git a/doc/ruby/TopMovies/TmdbPosters.html b/doc/ruby/TopMovies/TmdbPosters.html index 937adc7..512b075 100644 --- a/doc/ruby/TopMovies/TmdbPosters.html +++ b/doc/ruby/TopMovies/TmdbPosters.html @@ -335,7 +335,7 @@

    diff --git a/doc/ruby/_index.html b/doc/ruby/_index.html index 20bbe8b..1b9b23c 100644 --- a/doc/ruby/_index.html +++ b/doc/ruby/_index.html @@ -269,7 +269,7 @@

    Namespace Listing A-Z

    diff --git a/doc/ruby/file.README.html b/doc/ruby/file.README.html index 864cd83..f5f0782 100644 --- a/doc/ruby/file.README.html +++ b/doc/ruby/file.README.html @@ -254,7 +254,7 @@

    Author

    diff --git a/doc/ruby/index.html b/doc/ruby/index.html index 115d04c..4e6ee75 100644 --- a/doc/ruby/index.html +++ b/doc/ruby/index.html @@ -254,7 +254,7 @@

    Author

    diff --git a/doc/ruby/top-level-namespace.html b/doc/ruby/top-level-namespace.html index b5ccf00..b03ce89 100644 --- a/doc/ruby/top-level-namespace.html +++ b/doc/ruby/top-level-namespace.html @@ -102,7 +102,7 @@

    Defined Under Namespace

    diff --git a/lib/topmovies/netflix.rb b/lib/topmovies/netflix.rb index 5260457..816809d 100644 --- a/lib/topmovies/netflix.rb +++ b/lib/topmovies/netflix.rb @@ -4,20 +4,18 @@ class Netflix < MovieCollection Money.use_i18n = false - # show amount money in cashbox - # @note called when you need to know how much money in cashbox - # @return [Fixnum] @balance + # Get the amount of money at the cashbox + # @return [Fixnum] def self.cash cashbox_balance end attr_reader :balance - # withdraw money from the cashbox for preview movie + # Withdraw money from the cashbox for preview movie # @note called from #show - # @param - # movie [Movie] movie to shown - # @return [Fixnum] @balance + # @param movie [Movie] movie to shown + # @return [Fixnum] amount money in cashbox def make_payment(movie) raise ArgumentError, 'В базе нет такого фильма' unless movie if @balance.to_f < movie.cost @@ -28,13 +26,12 @@ def make_payment(movie) end end - # define filter + # Define a new filter based on an existing filter # @note called from #show - # @param - # filter_name [Symbol] name new filter - # from: [Symbol] name filter on which the new filter is created - # arg: [Array] value property of the movie, that define in based filter - # &block [Proc] code block containing the filter condition + # @param filter_name [Symbol] name new filter + # @param from: [Symbol] name existing filter + # @param arg: [Array] value property of the movie, that define in existing filter + # @param &block [Proc] code block containing the filter condition # @return [Hash] @filter # @example # define_filter(:new_sci_fi) { |movie, year| movie.year > year } @@ -50,10 +47,10 @@ def define_filter(filter_name, from: nil, arg: nil, &blk) end end - # split filters to internal and external + # Split filters to internal(based on properties of the movie) and + # external(custom filters maked users) # @note called from find_by_custom_filters and find_by_inner_filters - # @param - # filters [Hash] filters represents as hash + # @param filters [Hash] filters represents as hash # @return [Array] @custom_filters and @inner_filters def parse_filters(filters) @custom_filters, @inner_filters = filters.partition do |flt| @@ -61,15 +58,14 @@ def parse_filters(filters) end end - # get movie that will show + # Get movie that will show # @note called from #show - # @param - # filters [Hash] show filters represents as hash - # &block [Proc] show filters represents as block - # @return [Movie] movie + # @param filters [Hash] filters for the selection of the movie represents as hash + # @param &block [Proc] filters for the selection of the movie represents as block + # @return [Movie] movie satisfying all filters # @example # filter_movie(new_sci_fi: true) - # # => Blade Runner — современное кино: + # # => Blade Runner — современное кино... def filter_movie(filters, &block) movies = @collection.dup movies = find_by_block(movies, &block) @@ -79,11 +75,10 @@ def filter_movie(filters, &block) movie end - # get movies if send block into - # @note called when send block - # @param - # movies [MovieCollection] movies collection - # &block [Proc] it filter represents as block + # Get array movies + # @note called when into #show send block + # @param movies [MovieCollection] movies collection + # @param &block [Proc] it filter represents as block # @return [Array] array movies # @example # find_by_block(movies, &block) @@ -92,11 +87,10 @@ def find_by_block(movies, &block) movies end - # get movies filetred composite filters + # Get movies filtered composite filters # @note called when define custom filter - # @param - # movies [MovieCollection] movies collection - # filters [Hash] filters represents as hash + # @param movies [MovieCollection] movies collection + # @param filters [Hash] filters represents as hash # @return [Array] array movies # @example # netflix.find_by_custom_filters(@collection, new_sci_fi: true) @@ -115,11 +109,10 @@ def find_by_custom_filters(movies, filters) movies end - # get movies filetred inner filters - # @note called as needed - # @param - # movies [MovieCollection] movies collection - # filters [Hash] filters represents as hash + # Get movies filtered inner filters + # @note called when into #show send inner filters + # @param movies [MovieCollection] movies collection + # @param filters [Hash] filters represents as hash # @return [Array] array movies # @example # netflix.find_by_inner_filters(@collection, genre: 'Drama') @@ -134,11 +127,9 @@ def find_by_inner_filters(movies, filters) movies end - # show movie - # @note called as needed - # @param - # filter_name [Hash] filter name - # block [Proc] composite filter represented as a block + # Show movie + # @param filter_name [Hash] filter name + # @param block [Proc] composite filter represented as a block # @return [Movie] film in a certain format # @example # netflix.show(genre: 'Drama', period: :new) @@ -155,18 +146,15 @@ def show(filter_name = {}, &block) movie.show end - # get movie with high rate - # @note called as needed + # Get movie with high rate # @param col_movies [MovieCollection] movies collection # @return [Movie] movie with high rate - # @example - # rand_high_rate(col_movies) def rand_high_rate(col_movies) col_movies.sort_by { |m| m.rate.to_f * rand(1000) }.last end - # put cash to cashbox of Netflix - # @note called as needed + # Put cash to cashbox of Netflix to be able to watch movie + # @note called before show the movie # @param payment [Fixnum] amount of payment # @return [Fixnum] the amount of money at the cashbox # @example @@ -181,8 +169,7 @@ def pay(payment) @balance += money end - # define the cost of the film by title - # @note called as needed + # Want to know how much of the movie by title # @param title [String] title movie # @return [Money] movie cost in currency format # @example @@ -194,8 +181,8 @@ def film_costs(title) to_money(movie.cost) end - # converts number into a currency format - # @note called as needed + # Converts number into a currency format + # @note called when numerical amount need represents in currency format # @param price [Fixnum] ticket cost # @return [Money] ticket cost with currency symbol # @example diff --git a/lib/topmovies/theatre.rb b/lib/topmovies/theatre.rb index 6280c8d..16d9c16 100644 --- a/lib/topmovies/theatre.rb +++ b/lib/topmovies/theatre.rb @@ -14,10 +14,27 @@ def initialize(&block) instance_eval(&block) end + # Add hall to Theatre + # @param name [Symbol] name hall + # @param description [Hash] description hall (title, places) + # @return [Hash] @halls + # @example + # hall(:red, {title: 'Красный зал', places: 100}) def hall(name, description) @halls[name] = description end + # Add period to Theatre + # @param name [Range] name period + # @param &block [Proc] data period(description, filters, price, hall) + # @return [Hash] @periods + # @example + # period '09:00'..'12:00' do + # description 'Утренний сеанс' + # filters genre: 'Comedy', year: 1900..1980 + # price 10 + # hall :red, :blue + # end def period(name, &block) new_period = TopMovies::Period.new(name, &block) if @periods.empty? @@ -29,6 +46,9 @@ def period(name, &block) end end + # Check the period added to the schedule on intesection time + # @param current [TopMovies::Period] period added + # @return [Boolean] def verify_period(current) @periods.any? { |p| p.intersects?(current) } end @@ -40,6 +60,12 @@ def verify_period(current) afternoon: { genre: %w(Comedy Adventure) }, evening: { genre: %w(Drama Mystery) } }.freeze + # Get period day for show movie + # @param time [String] show time + # @return [Symbol] any hash key from PERIOD_DAY + # @example + # time_to_show('09:00') + # # => morning def time_to_show(time) hour = DateTime.strptime(time, '%H').hour period = PERIOD_DAY.select { |_k, v| v.include?(hour) }.keys[0] @@ -48,6 +74,13 @@ def time_to_show(time) period end + # Know when show movie by title + # @note based on check type of movie (ancient, classic, modern, new) + # @param title [String] movie title + # @return [Symbol] any hash key from FILTERS_MOVIE + # @example + # when?('Terminator') + # # => afternoon def when?(title) movie = filter(title).first period = FILTERS_MOVIE.find_all do |_per, fil| @@ -56,6 +89,12 @@ def when?(title) period.flatten[0] end + # Converts filters to hash + # @note called in #when? + # @param filters [Array] + # @return [Hash] + # filters_to_hash({ genre: ['Comedy', 'Adventure']}) + # # => { genre: 'Comedy', genre: 'Adventure'} def filters_to_hash(filters) flts = filters.map do |k, v| if v.is_a?(Array) @@ -67,6 +106,15 @@ def filters_to_hash(filters) flts.flatten end + # Buy a ticket to a movie at a certain time, you can specify the hall + # @param time [String] show time + # @param hall [Hash] name hall + # @return [String] + # @example + # buy_ticket('17:20') + # # => Вечерний сеанс - 16:00..20:00 : Фильм: The Hunt - 20.00 ₴ + # buy_ticket('19:20', hall: :green) + # # => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: Modern Times - 30.00 ₴ def buy_ticket(time_show, hall = nil) period = select_period(time_show, hall) movie = show(period) @@ -77,6 +125,13 @@ def buy_ticket(time_show, hall = nil) result end + # Select period for movie show when halls intersects + # @param time [String] show movie time + # @param hall [Hash] hall name + # @return [String] period name + # @example + # select_period('19:20', hall: :green) + # # => def select_period(time, hall) period = @periods.select { |p| p.seance.include?(time) } pr = if period.size > 1 @@ -88,6 +143,12 @@ def select_period(time, hall) selected_period end + # Show the movie according to the period + # @param period [TopMovies::Period] + # @return [Movie] + # @example + # show('19:20', hall: :green) + # # => def show(period) if period.name filter(title: period.name).first @@ -96,6 +157,13 @@ def show(period) end end + # Get filtered movie with high rate + # @note called from #show + # @param period [TopMovies::Period] + # @return [Movie] + # @example + # get_movie_from_filters('19:20', hall: :green) + # # => def get_movie_from_filters(period) mov = @collection.dup movies = period.filtres.inject(mov) do |films, (key, value)| From 81572fe876317141c6794ca82352347ba8815afa Mon Sep 17 00:00:00 2001 From: Serhii Dmytrakov Date: Mon, 24 Oct 2016 17:23:27 +0300 Subject: [PATCH 16/26] Delete checksums --- .yardoc/checksums | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 .yardoc/checksums diff --git a/.yardoc/checksums b/.yardoc/checksums deleted file mode 100644 index be1125b..0000000 --- a/.yardoc/checksums +++ /dev/null @@ -1,15 +0,0 @@ -lib/top_movies.rb 008590f106ec3e567b0406e15df2416c9817967c -lib/topmovies/movie.rb 4bdd42807beb316321d2ecdede7c167eb8e94667 -lib/topmovies/period.rb 277c98679e679ad19bce54990b8ac4b52823d013 -lib/topmovies/netflix.rb 678c06c069594502e872bc70a78183dafaa7aa5d -lib/topmovies/theatre.rb 6ba07a935d9c6c321a48eb0c851582398ced45b1 -lib/topmovies/cash_box.rb 623916b2898432c51d6ffb48002c30a008d0ed2f -lib/topmovies/new_movie.rb 25f1fa836a45fc77f4be2e99f4db9d36752b0547 -lib/topmovies/filter_genre.rb 21727d0eb6895705db1e024c3e2b36a07ccc338b -lib/topmovies/tmdb_posters.rb 682837818443e69ac20bbd4bfedd818824cb3c48 -lib/topmovies/imdb_budgets.rb 47545e6cb0d5ade0ab9bcdc5d4df472ad62e9f13 -lib/topmovies/modern_movie.rb bbb707f5e7803887e0d5f19e75fcc08d5ea6ae8a -lib/topmovies/ancient_movie.rb e0f658a76f29a9d05c7f78cf58ecc2b361ef4ceb -lib/topmovies/classic_movie.rb 36eb48644bb02a739d7fb72b55ee21b5e65917a1 -lib/topmovies/country_filter.rb ff0d767206550cc9419b5ed5d297a62db4f9de8b -lib/topmovies/movie_collection.rb 86732e93d5b85b9a6cd79069702e7a1f636633e0 From 4ff586fee1ece61e99a9439f357c7dff371539e9 Mon Sep 17 00:00:00 2001 From: devico Date: Mon, 24 Oct 2016 17:56:30 +0300 Subject: [PATCH 17/26] add folder --- .folder/1.txt | 0 .folder/2.txt | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .folder/1.txt create mode 100644 .folder/2.txt diff --git a/.folder/1.txt b/.folder/1.txt new file mode 100644 index 0000000..e69de29 diff --git a/.folder/2.txt b/.folder/2.txt new file mode 100644 index 0000000..e69de29 From d429f6272e3d845562b7493390bc13588db93065 Mon Sep 17 00:00:00 2001 From: devico Date: Mon, 24 Oct 2016 18:09:16 +0300 Subject: [PATCH 18/26] delete folder --- .folder/1.txt | 0 .folder/2.txt | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .folder/1.txt delete mode 100644 .folder/2.txt diff --git a/.folder/1.txt b/.folder/1.txt deleted file mode 100644 index e69de29..0000000 diff --git a/.folder/2.txt b/.folder/2.txt deleted file mode 100644 index e69de29..0000000 From 5cf6607c662597cb8caf465f60dc19d1a47ed6fd Mon Sep 17 00:00:00 2001 From: devico Date: Mon, 24 Oct 2016 18:11:10 +0300 Subject: [PATCH 19/26] delete .yardoc --- .yardoc/complete | 0 .yardoc/object_types | Bin 4722 -> 0 bytes .yardoc/objects/root.dat | Bin 65971 -> 0 bytes .yardoc/proxy_types | Bin 4 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .yardoc/complete delete mode 100644 .yardoc/object_types delete mode 100644 .yardoc/objects/root.dat delete mode 100644 .yardoc/proxy_types diff --git a/.yardoc/complete b/.yardoc/complete deleted file mode 100644 index e69de29..0000000 diff --git a/.yardoc/object_types b/.yardoc/object_types deleted file mode 100644 index 25dd0b23f6ced882ed22400923c8dc4019470983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4722 zcma)AS#RSu5bi^fcDL;U`_Kd3?Pd4c9x3{&MNv48lL}}OBXJj4_<@jRIwB&G0!44) z_Rp8%46TtwxqXc1<2MJt8IJPyyZ=0n9%-e_^62GT(R+njZ*#tU6px-PRC%G^2wojU zN3*kd^!_xdvJ>@i^zt41*R#DjiWbFsHCL74y6PKaYdqPmZ@F>C=z~ z$zsy?)nI1V@zp6ioxDCkWUXv|9Z%8Ow;^X|@t+Hu8FP^V*9(FptgG8J5!0qe9bg-D6@GjevS zw$kVwI0wI95VJeg6uJi3&fq3f>!pfE-*=%=)Rb|YDy~yZhQ{kik5g?mIAk3ciAl5H zAt0(;cNVO?Vo9DOrpG_Ntt*MvPrGrBt4!Skd;erfZkyH$d<)yfOrRM0hgYt_2dUj` z7)s0NL{@oHOB%-qbq^vOS3Hrvs-Kg*TIS!t#n%CQ$y2crsq+G;Z~g;?WC3Rzt66Qw zqML(MHy8}sk$|cl0jaGAoTil|Mm!p-Ly{{c;cy_d%9)2f%cKa14?WjLJW3}8T7?uw zB)Rw-38+31vgTE)MOokEV1#vX_U}X>{Zb2m&w(rkz>oozwKv*w6s&GqEZLWVsExAak{nrR=i;k4 zuCVIskkS>NmBD<`xXnOz1r@W5$PQd^p7X2c)eA%0uNQE379I~ zlh_>>dWLOuSLx4jdmh*0V5J^dtMQ+CYq>RbLI{FFKlMgqM*;jq%jK6VyLtF$C1`G9 zr_1$Ovw&Fww_Ab>dT#*`%8a%GMKuo%eM-6rB%zHLl?MlgA;I6UR|91Ux(it=#c5cV0!TfVYdtv0-eBJc>O?t??a?&WfCD_G6qIs hm(=cZE({<(bVnAM!Z$Qv50zhYX+PsxW(v2u{|hEaJ%RuL diff --git a/.yardoc/objects/root.dat b/.yardoc/objects/root.dat deleted file mode 100644 index b3be10ab6081a947137a60a04ace99a301a8e219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65971 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 Date: Mon, 24 Oct 2016 18:12:59 +0300 Subject: [PATCH 20/26] delete doc --- doc/ruby/CashBox.html | 313 ---- doc/ruby/TopMovies.html | 131 -- doc/ruby/TopMovies/AncientMovie.html | 291 --- doc/ruby/TopMovies/ClassicMovie.html | 295 ---- doc/ruby/TopMovies/CountryFilter.html | 427 ----- doc/ruby/TopMovies/FilterGenre.html | 425 ----- doc/ruby/TopMovies/ImdbBudgets.html | 307 ---- doc/ruby/TopMovies/ModernMovie.html | 291 --- doc/ruby/TopMovies/Movie.html | 879 --------- doc/ruby/TopMovies/Movie/SplitArray.html | 195 -- doc/ruby/TopMovies/MovieCollection.html | 1090 ------------ doc/ruby/TopMovies/Netflix.html | 2060 ---------------------- doc/ruby/TopMovies/NewMovie.html | 293 --- doc/ruby/TopMovies/Period.html | 1127 ------------ doc/ruby/TopMovies/Theatre.html | 1725 ------------------ doc/ruby/TopMovies/TmdbPosters.html | 345 ---- doc/ruby/_index.html | 279 --- doc/ruby/class_list.html | 51 - doc/ruby/css/common.css | 1 - doc/ruby/css/full_list.css | 58 - doc/ruby/css/style.css | 481 ----- doc/ruby/file.README.html | 264 --- doc/ruby/file_list.html | 56 - doc/ruby/frames.html | 17 - doc/ruby/index.html | 264 --- doc/ruby/js/app.js | 243 --- doc/ruby/js/full_list.js | 216 --- doc/ruby/js/jquery.js | 4 - doc/ruby/method_list.html | 803 --------- doc/ruby/top-level-namespace.html | 112 -- 30 files changed, 13043 deletions(-) delete mode 100644 doc/ruby/CashBox.html delete mode 100644 doc/ruby/TopMovies.html delete mode 100644 doc/ruby/TopMovies/AncientMovie.html delete mode 100644 doc/ruby/TopMovies/ClassicMovie.html delete mode 100644 doc/ruby/TopMovies/CountryFilter.html delete mode 100644 doc/ruby/TopMovies/FilterGenre.html delete mode 100644 doc/ruby/TopMovies/ImdbBudgets.html delete mode 100644 doc/ruby/TopMovies/ModernMovie.html delete mode 100644 doc/ruby/TopMovies/Movie.html delete mode 100644 doc/ruby/TopMovies/Movie/SplitArray.html delete mode 100644 doc/ruby/TopMovies/MovieCollection.html delete mode 100644 doc/ruby/TopMovies/Netflix.html delete mode 100644 doc/ruby/TopMovies/NewMovie.html delete mode 100644 doc/ruby/TopMovies/Period.html delete mode 100644 doc/ruby/TopMovies/Theatre.html delete mode 100644 doc/ruby/TopMovies/TmdbPosters.html delete mode 100644 doc/ruby/_index.html delete mode 100644 doc/ruby/class_list.html delete mode 100644 doc/ruby/css/common.css delete mode 100644 doc/ruby/css/full_list.css delete mode 100644 doc/ruby/css/style.css delete mode 100644 doc/ruby/file.README.html delete mode 100644 doc/ruby/file_list.html delete mode 100644 doc/ruby/frames.html delete mode 100644 doc/ruby/index.html delete mode 100644 doc/ruby/js/app.js delete mode 100644 doc/ruby/js/full_list.js delete mode 100644 doc/ruby/js/jquery.js delete mode 100644 doc/ruby/method_list.html delete mode 100644 doc/ruby/top-level-namespace.html diff --git a/doc/ruby/CashBox.html b/doc/ruby/CashBox.html deleted file mode 100644 index a7b2bae..0000000 --- a/doc/ruby/CashBox.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - Module: CashBox - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Module: CashBox - - - -

    -
    - - - - - - - - - -
    -
    Included in:
    -
    TopMovies::MovieCollection, TopMovies::Netflix
    -
    - - - -
    -
    Defined in:
    -
    lib/topmovies/cash_box.rb
    -
    - -
    - - - - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - -
    -

    Instance Method Details

    - - -
    -

    - - #cashbox_balanceObject - - - - - -

    - - - - -
    -
    -
    -
    -2
    -3
    -4
    -
    -
    # File 'lib/topmovies/cash_box.rb', line 2
    -
    -def cashbox_balance
    -  @cashbox_balance ||= Money.new(0, 'UAH')
    -end
    -
    -
    - -
    -

    - - #put_to_cashbox(money) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -6
    -7
    -8
    -
    -
    # File 'lib/topmovies/cash_box.rb', line 6
    -
    -def put_to_cashbox(money)
    -  @cashbox_balance = cashbox_balance + money
    -end
    -
    -
    - -
    -

    - - #take(who) ⇒ Object - - - - - -

    -
    - - -
    -
    -
    - -

    Raises:

    -
      - -
    • - - - (ArgumentError) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -10
    -11
    -12
    -13
    -14
    -15
    -
    -
    # File 'lib/topmovies/cash_box.rb', line 10
    -
    -def take(who)
    -  raise ArgumentError,
    -        'Нарушение безопасности, вызвана полиция' unless who == 'Bank'
    -  puts 'Проведена инкассация'
    -  @cashbox_balance = Money.new(0, 'UAH')
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies.html b/doc/ruby/TopMovies.html deleted file mode 100644 index 35205ac..0000000 --- a/doc/ruby/TopMovies.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - Module: TopMovies - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Module: TopMovies - - - -

    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/top_movies.rb,
    - lib/topmovies/movie.rb,
    lib/topmovies/period.rb,
    lib/topmovies/netflix.rb,
    lib/topmovies/theatre.rb,
    lib/topmovies/new_movie.rb,
    lib/topmovies/filter_genre.rb,
    lib/topmovies/tmdb_posters.rb,
    lib/topmovies/imdb_budgets.rb,
    lib/topmovies/modern_movie.rb,
    lib/topmovies/ancient_movie.rb,
    lib/topmovies/classic_movie.rb,
    lib/topmovies/country_filter.rb,
    lib/topmovies/movie_collection.rb
    -
    -
    - -
    - -

    Defined Under Namespace

    -

    - - - Modules: ImdbBudgets, TmdbPosters - - - - Classes: AncientMovie, ClassicMovie, CountryFilter, FilterGenre, ModernMovie, Movie, MovieCollection, Netflix, NewMovie, Period, Theatre - - -

    - -

    Constant Summary

    -
    - -
    VERSION = - -
    -
    '0.1.0'
    - -
    - - - - - - - - - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/AncientMovie.html b/doc/ruby/TopMovies/AncientMovie.html deleted file mode 100644 index 15db824..0000000 --- a/doc/ruby/TopMovies/AncientMovie.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - Class: TopMovies::AncientMovie - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::AncientMovie - - - -

    -
    - -
    -
    Inherits:
    -
    - Movie - -
      -
    • Object
    • - - - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/ancient_movie.rb
    -
    - -
    - - - - -

    Constant Summary

    - -

    Constants inherited - from Movie

    -

    Movie::MOVIE_TYPE, Movie::PATH_BUDGETS

    - - - -

    Constants included - from ImdbBudgets

    -

    ImdbBudgets::PATH_BUDGETS

    - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods inherited from Movie

    -

    #budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

    - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - - -
    -

    Instance Method Details

    - - -
    -

    - - #costObject - - - - - -

    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/ancient_movie.rb', line 3
    -
    -def cost
    -  1.0
    -end
    -
    -
    - -
    -

    - - #showObject - - - - - -

    - - - - -
    -
    -
    -
    -7
    -8
    -9
    -
    -
    # File 'lib/topmovies/ancient_movie.rb', line 7
    -
    -def show
    -  "#{@title} — старый фильм (#{@year} год)"
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/ClassicMovie.html b/doc/ruby/TopMovies/ClassicMovie.html deleted file mode 100644 index f7b5841..0000000 --- a/doc/ruby/TopMovies/ClassicMovie.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - Class: TopMovies::ClassicMovie - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::ClassicMovie - - - -

    -
    - -
    -
    Inherits:
    -
    - Movie - -
      -
    • Object
    • - - - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/classic_movie.rb
    -
    - -
    - - - - -

    Constant Summary

    - -

    Constants inherited - from Movie

    -

    Movie::MOVIE_TYPE, Movie::PATH_BUDGETS

    - - - -

    Constants included - from ImdbBudgets

    -

    ImdbBudgets::PATH_BUDGETS

    - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods inherited from Movie

    -

    #budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

    - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - - -
    -

    Instance Method Details

    - - -
    -

    - - #costObject - - - - - -

    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/classic_movie.rb', line 3
    -
    -def cost
    -  1.5
    -end
    -
    -
    - -
    -

    - - #showObject - - - - - -

    - - - - -
    -
    -
    -
    -7
    -8
    -9
    -10
    -11
    -
    -
    # File 'lib/topmovies/classic_movie.rb', line 7
    -
    -def show
    -  "#{@title} — классический фильм, режиссёр #{@author}"", кроме этого еще \
    -#{@collection.filter(author: @author).length} фильмa(ов) #{@author} \
    -вошли в ТОП-250"
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/CountryFilter.html b/doc/ruby/TopMovies/CountryFilter.html deleted file mode 100644 index 472f2fb..0000000 --- a/doc/ruby/TopMovies/CountryFilter.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - - Class: TopMovies::CountryFilter - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::CountryFilter - - - -

    -
    - -
    -
    Inherits:
    -
    - Object - -
      -
    • Object
    • - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/country_filter.rb
    -
    - -
    - - - - - -

    Instance Attribute Summary collapse

    -
      - -
    • - - - #collect ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute collect.

      -
      - -
    • - - -
    - - - - - -

    - Instance Method Summary - collapse -

    - - - - -
    -

    Constructor Details

    - -
    -

    - - #initialize(collection) ⇒ CountryFilter - - - - - -

    -
    - -

    Returns a new instance of CountryFilter

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -5
    -6
    -7
    -
    -
    # File 'lib/topmovies/country_filter.rb', line 5
    -
    -def initialize(collection)
    -  @collect = collection
    -end
    -
    -
    - -
    -
    -

    Dynamic Method Handling

    -

    - This class handles dynamic methods through the method_missing method - -

    - -
    -

    - - #method_missing(method_name) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -13
    -14
    -15
    -16
    -
    -
    # File 'lib/topmovies/country_filter.rb', line 13
    -
    -def method_missing(method_name)
    -  return super if method_name =~ /(\?|\.|\=)$/
    -  @collect.select { |c| c.country.include?(method_name.to_s.upcase) }
    -end
    -
    -
    - -
    - -
    -

    Instance Attribute Details

    - - - -
    -

    - - #collectObject - - - - - -

    -
    - -

    Returns the value of attribute collect

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/country_filter.rb', line 3
    -
    -def collect
    -  @collect
    -end
    -
    -
    - -
    - - -
    -

    Instance Method Details

    - - -
    -

    - - #respond_to_missing?(method_name) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -9
    -10
    -11
    -
    -
    # File 'lib/topmovies/country_filter.rb', line 9
    -
    -def respond_to_missing?(method_name)
    -  method_name =~ /(\?|\.|\=)$/ ? super : true
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/FilterGenre.html b/doc/ruby/TopMovies/FilterGenre.html deleted file mode 100644 index 692f88c..0000000 --- a/doc/ruby/TopMovies/FilterGenre.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - - Class: TopMovies::FilterGenre - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::FilterGenre - - - -

    -
    - -
    -
    Inherits:
    -
    - Object - -
      -
    • Object
    • - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/filter_genre.rb
    -
    - -
    - - - - - -

    Instance Attribute Summary collapse

    -
      - -
    • - - - #collect ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute collect.

      -
      - -
    • - - -
    • - - - #name ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute name.

      -
      - -
    • - - -
    - - - - - -

    - Instance Method Summary - collapse -

    - - - - -
    -

    Constructor Details

    - -
    -

    - - #initialize(collection) ⇒ FilterGenre - - - - - -

    -
    - -

    Returns a new instance of FilterGenre

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -5
    -6
    -7
    -8
    -
    -
    # File 'lib/topmovies/filter_genre.rb', line 5
    -
    -def initialize(collection)
    -  @collect = collection
    -  setup_genre_methods
    -end
    -
    -
    - -
    - -
    -

    Instance Attribute Details

    - - - -
    -

    - - #collectObject - - - - - -

    -
    - -

    Returns the value of attribute collect

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/filter_genre.rb', line 3
    -
    -def collect
    -  @collect
    -end
    -
    -
    - - - -
    -

    - - #nameObject - - - - - -

    -
    - -

    Returns the value of attribute name

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/filter_genre.rb', line 3
    -
    -def name
    -  @name
    -end
    -
    -
    - -
    - - -
    -

    Instance Method Details

    - - -
    -

    - - #setup_genre_methodsObject (private) - - - - - -

    - - - - -
    -
    -
    -
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -
    -
    # File 'lib/topmovies/filter_genre.rb', line 12
    -
    -def setup_genre_methods
    -  @genres ||= @collect.map(&:genre).flatten.uniq
    -  @genres.map do |dm|
    -    self.class.send(:define_method, dm.downcase) do
    -      @collect.select { |c| c.genre.include?(dm) }
    -    end
    -  end
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/ImdbBudgets.html b/doc/ruby/TopMovies/ImdbBudgets.html deleted file mode 100644 index f78957e..0000000 --- a/doc/ruby/TopMovies/ImdbBudgets.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - Module: TopMovies::ImdbBudgets - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Module: TopMovies::ImdbBudgets - - - -

    -
    - - - - - - - - - -
    -
    Included in:
    -
    Movie, MovieCollection
    -
    - - - -
    -
    Defined in:
    -
    lib/topmovies/imdb_budgets.rb
    -
    - -
    - - -

    Constant Summary

    -
    - -
    PATH_BUDGETS = - -
    -
    File.dirname(File.expand_path('data/budgets/*.*',__dir__))
    - -
    - - - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - -
    -

    Instance Method Details

    - - -
    -

    - - #take_budget_from_file(file_name) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -10
    -11
    -12
    -
    -
    # File 'lib/topmovies/imdb_budgets.rb', line 10
    -
    -def take_budget_from_file(file_name)
    -  YAML::load_file(File.open("#{PATH_BUDGETS}/#{file_name}"))[file_name[0,9]]
    -end
    -
    -
    - -
    -

    - - #take_budget_from_imdb(id) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -
    -
    # File 'lib/topmovies/imdb_budgets.rb', line 14
    -
    -def take_budget_from_imdb(id)
    -  data = take_info
    -  data = if data =~ /^(\$|\€|\£|DEM|AUD|FRF)/
    -          data
    -         else
    -           nil
    -         end
    -  File.write("#{PATH_BUDGETS}/#{id}.yml", {id => data}.to_yaml)
    -end
    -
    -
    - -
    -

    - - #take_infoObject - - - - - -

    - - - - -
    -
    -
    -
    -24
    -25
    -26
    -
    -
    # File 'lib/topmovies/imdb_budgets.rb', line 24
    -
    -def take_info
    -  Nokogiri::HTML(open(self.link)).css('div.txt-block:nth-child(11)').text.split(' ')[1]
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/ModernMovie.html b/doc/ruby/TopMovies/ModernMovie.html deleted file mode 100644 index 82bc9eb..0000000 --- a/doc/ruby/TopMovies/ModernMovie.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - Class: TopMovies::ModernMovie - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::ModernMovie - - - -

    -
    - -
    -
    Inherits:
    -
    - Movie - -
      -
    • Object
    • - - - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/modern_movie.rb
    -
    - -
    - - - - -

    Constant Summary

    - -

    Constants inherited - from Movie

    -

    TopMovies::Movie::MOVIE_TYPE, TopMovies::Movie::PATH_BUDGETS

    - - - -

    Constants included - from ImdbBudgets

    -

    ImdbBudgets::PATH_BUDGETS

    - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods inherited from Movie

    -

    #budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

    - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - - -
    -

    Instance Method Details

    - - -
    -

    - - #costObject - - - - - -

    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/modern_movie.rb', line 3
    -
    -def cost
    -  3.0
    -end
    -
    -
    - -
    -

    - - #showObject - - - - - -

    - - - - -
    -
    -
    -
    -7
    -8
    -9
    -
    -
    # File 'lib/topmovies/modern_movie.rb', line 7
    -
    -def show
    -  "#{@title} — современное кино: играют #{@actors.join(', ')}"
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/Movie.html b/doc/ruby/TopMovies/Movie.html deleted file mode 100644 index db1fbce..0000000 --- a/doc/ruby/TopMovies/Movie.html +++ /dev/null @@ -1,879 +0,0 @@ - - - - - - - Class: TopMovies::Movie - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::Movie - - - -

    -
    - -
    -
    Inherits:
    -
    - Object - -
      -
    • Object
    • - - - -
    - show all - -
    -
    - - - - - - -
    -
    Includes:
    -
    ImdbBudgets, TmdbPosters
    -
    - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/movie.rb
    -
    - -
    - -
    -

    Direct Known Subclasses

    -

    AncientMovie, ClassicMovie, ModernMovie, NewMovie

    -
    -

    Defined Under Namespace

    -

    - - - - - Classes: SplitArray - - -

    - -

    Constant Summary

    -
    - -
    PATH_BUDGETS = - -
    -
    File.dirname(File.expand_path('data/budgets/*.*', __dir__))
    - -
    MOVIE_TYPE = - -
    -
    { AncientMovie => (1900..1944), ClassicMovie => (1945..1967),
    -ModernMovie => (1968..1999), NewMovie => (2000..2015) }.freeze
    - -
    - - - - - - - - -

    - Class Method Summary - collapse -

    - - - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - - -
    -

    Class Method Details

    - - -
    -

    - - .create(params) ⇒ Object - - - - - -

    -
    - - -
    -
    -
    - -

    Raises:

    -
      - -
    • - - - (ArgumentError) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -37
    -38
    -39
    -40
    -41
    -42
    -
    -
    # File 'lib/topmovies/movie.rb', line 37
    -
    -def self.create(params)
    -  mov_type = MOVIE_TYPE.select { |_k, v| v.include?(params[:year].to_i) }
    -                       .keys[0]
    -  raise ArgumentError, 'Фильма такого класса нет' unless mov_type
    -  mov_type.new(params)
    -end
    -
    -
    - -
    - -
    -

    Instance Method Details

    - - -
    -

    - - #budgetObject - - - - - -

    - - - - -
    -
    -
    -
    -86
    -87
    -88
    -89
    -90
    -
    -
    # File 'lib/topmovies/movie.rb', line 86
    -
    -def budget
    -  file_name = "#{imdb_id}.yml"
    -  take_budget_from_imdb(imdb_id) unless File.exist?("#{PATH_BUDGETS}/#{file_name}")
    -  take_budget_from_file(file_name)
    -end
    -
    -
    - -
    -

    - - #genre?(type_of_genre) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    -

    Raises:

    -
      - -
    • - - - (ArgumentError) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -65
    -66
    -67
    -68
    -69
    -
    -
    # File 'lib/topmovies/movie.rb', line 65
    -
    -def genre?(type_of_genre)
    -  raise ArgumentError, "Жанра #{type_of_genre} в коллекции нет!" unless
    -    collection.genre_exists?(type_of_genre)
    -  genre.include?(type_of_genre)
    -end
    -
    -
    - -
    -

    - - #imdb_idObject - - - - - -

    - - - - -
    -
    -
    -
    -82
    -83
    -84
    -
    -
    # File 'lib/topmovies/movie.rb', line 82
    -
    -def imdb_id
    -  link.scan(/tt\d{7}/).first
    -end
    -
    -
    - -
    -

    - - #match?(filter_name, filter_value) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -
    -
    # File 'lib/topmovies/movie.rb', line 44
    -
    -def match?(filter_name, filter_value)
    -  value = if filter_value.is_a? Symbol
    -            send(filter_name).to_s[11..-1].to_sym
    -          else
    -            send(filter_name)
    -          end
    -  if value.is_a? Array
    -    value.any? do |v|
    -      filter_value.is_a?(Array) ? filter_value.include?(v) : v.include?(filter_value)
    -    end
    -  else
    -    # rubocop:disable CaseEquality
    -    filter_value === value
    -    # rubocop:enable CaseEquality
    -  end
    -end
    -
    -
    - -
    -

    - - #matches_all?(filters) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -61
    -62
    -63
    -
    -
    # File 'lib/topmovies/movie.rb', line 61
    -
    -def matches_all?(filters)
    -  filters.all? { |k, v| match?(k, v) }
    -end
    -
    -
    - -
    -

    - - #periodObject - - - - - -

    - - - - -
    -
    -
    -
    -78
    -79
    -80
    -
    -
    # File 'lib/topmovies/movie.rb', line 78
    -
    -def period
    -  self.class.to_s.chomp('Movie').downcase.to_sym
    -end
    -
    -
    - -
    -

    - - #posterObject - - - - - -

    - - - - -
    -
    -
    -
    -92
    -93
    -94
    -
    -
    # File 'lib/topmovies/movie.rb', line 92
    -
    -def poster
    -  take_poster(imdb_id)
    -end
    -
    -
    - -
    -

    - - #showObject - - - - - -

    - - - - -
    -
    -
    -
    -71
    -72
    -73
    -74
    -75
    -76
    -
    -
    # File 'lib/topmovies/movie.rb', line 71
    -
    -def show
    -  start_time = Time.now
    -  end_time = start_time + length.to_i * 60
    -  "Now showing: #{title} #{start_time.strftime('%H:%M')}
    -    - #{end_time.strftime('%H:%M')}"
    -end
    -
    -
    - -
    -

    - - #translationsObject - - - - - -

    - - - - -
    -
    -
    -
    -96
    -97
    -98
    -
    -
    # File 'lib/topmovies/movie.rb', line 96
    -
    -def translations
    -  take_translations(imdb_id)
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/Movie/SplitArray.html b/doc/ruby/TopMovies/Movie/SplitArray.html deleted file mode 100644 index 348181c..0000000 --- a/doc/ruby/TopMovies/Movie/SplitArray.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - Class: TopMovies::Movie::SplitArray - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::Movie::SplitArray - - - -

    -
    - -
    -
    Inherits:
    -
    - Virtus::Attribute - -
      -
    • Object
    • - - - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/movie.rb
    -
    - -
    - - - - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - - -
    -

    Instance Method Details

    - - -
    -

    - - #coerce(value) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -13
    -14
    -15
    -
    -
    # File 'lib/topmovies/movie.rb', line 13
    -
    -def coerce(value)
    -  value.split(',')
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/MovieCollection.html b/doc/ruby/TopMovies/MovieCollection.html deleted file mode 100644 index 95a16e7..0000000 --- a/doc/ruby/TopMovies/MovieCollection.html +++ /dev/null @@ -1,1090 +0,0 @@ - - - - - - - Class: TopMovies::MovieCollection - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::MovieCollection - - - -

    -
    - -
    -
    Inherits:
    -
    - Object - -
      -
    • Object
    • - - - -
    - show all - -
    -
    - - - - - - -
    -
    Includes:
    -
    CashBox, Enumerable, ImdbBudgets, TmdbPosters
    -
    - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/movie_collection.rb
    -
    - -
    - -
    -

    Direct Known Subclasses

    -

    Netflix, Theatre

    -
    - -

    Constant Summary

    -
    - -
    PATH_PAGES = - -
    -
    File.expand_path('pages/', __dir__)
    - -
    - - - - - -

    Constants included - from ImdbBudgets

    -

    ImdbBudgets::PATH_BUDGETS

    - - -

    Instance Attribute Summary collapse

    -
      - -
    • - - - #collection ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute collection.

      -
      - -
    • - - -
    - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - - - - - - - - - -

    Methods included from CashBox

    -

    #cashbox_balance, #put_to_cashbox, #take

    - -
    -

    Constructor Details

    - -
    -

    - - #initialize(file_name) ⇒ MovieCollection - - - - - -

    -
    - -

    Returns a new instance of MovieCollection

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -21
    -22
    -23
    -24
    -25
    -26
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 21
    -
    -def initialize(file_name)
    -  @collection = make_collection(file_name)
    -  @balance = Money.new(0, 'UAH')
    -  @filter = {}
    -  # Tmdb::Api.key('d0607e9a2cf6b939168457281815bc4d')
    -end
    -
    -
    - -
    - -
    -

    Instance Attribute Details

    - - - -
    -

    - - #collectionObject - - - - - -

    -
    - -

    Returns the value of attribute collection

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -17
    -18
    -19
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 17
    -
    -def collection
    -  @collection
    -end
    -
    -
    - -
    - - -
    -

    Instance Method Details

    - - -
    -

    - - #allObject - - - - - -

    - - - - -
    -
    -
    -
    -45
    -46
    -47
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 45
    -
    -def all
    -  @collection
    -end
    -
    -
    - -
    -

    - - #by_countryObject - - - - - -

    - - - - -
    -
    -
    -
    -88
    -89
    -90
    -91
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 88
    -
    -def by_country
    -  country_filter = CountryFilter.new(@collection)
    -  country_filter
    -end
    -
    -
    - -
    -

    - - #by_genreObject - - - - - -

    - - - - -
    -
    -
    -
    -83
    -84
    -85
    -86
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 83
    -
    -def by_genre
    -  filter_genre = FilterGenre.new(@collection)
    -  filter_genre
    -end
    -
    -
    - -
    -

    - - #cashObject - - - - - -

    - - - - -
    -
    -
    -
    -75
    -76
    -77
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 75
    -
    -def cash
    -  cashbox_balance
    -end
    -
    -
    - -
    -

    - - #filter(filters) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -59
    -60
    -61
    -62
    -63
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 59
    -
    -def filter(filters)
    -  filters.reduce(@collection) do |filtered, (name, value)|
    -    filtered.select { |f| f.match?(name, value) }
    -  end
    -end
    -
    -
    - -
    -

    - - #first_movieObject - - - - - -

    - - - - -
    -
    -
    -
    -49
    -50
    -51
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 49
    -
    -def first_movie
    -  @collection.first
    -end
    -
    -
    - -
    -

    - - #genre_exists?(genre_film) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -70
    -71
    -72
    -73
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 70
    -
    -def genre_exists?(genre_film)
    -  @genres ||= setup_genre_methods
    -  @genres.include?(genre_film)
    -end
    -
    -
    - -
    -

    - - #make_collection(name_file) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 28
    -
    -def make_collection(name_file)
    -  CSV.read(name_file, col_sep: '|', headers:
    -     %i(link title year country date genre length rate author actors))
    -     .map(&:to_hash).map do |film|
    -    Movie.create(
    -      { link: film[:link], title: film[:title], year: film[:year],
    -        country: film[:country], date: film[:date], genre: film[:genre],
    -        length: film[:length], rate: film[:rate], author: film[:author],
    -        actors: film[:actors] }.merge(collection: self)
    -    )
    -  end
    -end
    -
    -
    - -
    -

    - - #make_movieObject - - - - - -

    - - - - -
    -
    -
    -
    -41
    -42
    -43
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 41
    -
    -def make_movie
    -  @collection
    -end
    -
    -
    - -
    -

    - - #obtain_genresObject - - - - - -

    - - - - -
    -
    -
    -
    -79
    -80
    -81
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 79
    -
    -def obtain_genres
    -  @genres ||= @collection.map(&:genre).flatten.uniq
    -end
    -
    -
    - -
    -

    - - #render_htmlObject - - - - - -

    - - - - -
    -
    -
    -
    -93
    -94
    -95
    -96
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 93
    -
    -def render_html
    -  template = File.open("#{PATH_PAGES}/index.haml")
    -  Haml::Engine.new(template.read).render(@collection)
    -end
    -
    -
    - -
    -

    - - #sort_by(filter) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -53
    -54
    -55
    -56
    -57
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 53
    -
    -def sort_by(filter)
    -  @collection
    -    .sort_by(&filter)
    -    .map { |c| puts "#{c.title} - #{c.send(filter)}" }
    -end
    -
    -
    - -
    -

    - - #stats(movie_field) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -65
    -66
    -67
    -68
    -
    -
    # File 'lib/topmovies/movie_collection.rb', line 65
    -
    -def stats(movie_field)
    -  @collection.map(&movie_field).flatten.group_by(&:itself)
    -             .map { |k, v| [k, v.count] }.sort.to_h
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/Netflix.html b/doc/ruby/TopMovies/Netflix.html deleted file mode 100644 index 69afb09..0000000 --- a/doc/ruby/TopMovies/Netflix.html +++ /dev/null @@ -1,2060 +0,0 @@ - - - - - - - Class: TopMovies::Netflix - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::Netflix - - - -

    -
    - -
    -
    Inherits:
    -
    - MovieCollection - - - show all - -
    -
    - - - - -
    -
    Extended by:
    -
    CashBox
    -
    - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/netflix.rb
    -
    - -
    - - - - -

    Constant Summary

    - -

    Constants inherited - from MovieCollection

    -

    MovieCollection::PATH_PAGES

    - - - -

    Constants included - from ImdbBudgets

    -

    ImdbBudgets::PATH_BUDGETS

    - - -

    Instance Attribute Summary collapse

    -
      - -
    • - - - #balance ⇒ Object - - - - - - - - - readonly - - - - - - - - - -
      -

      Returns the value of attribute balance.

      -
      - -
    • - - -
    - - - - - -

    Attributes inherited from MovieCollection

    -

    #collection

    - - - -

    - Class Method Summary - collapse -

    - -
      - -
    • - - - .cash ⇒ Fixnum - - - - - - - - - - - - - -
      -

      Get the amount of money at the cashbox.

      -
      - -
    • - - -
    - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods included from CashBox

    -

    cashbox_balance, put_to_cashbox, take

    - - - - - - - - - -

    Methods inherited from MovieCollection

    -

    #all, #by_country, #by_genre, #cash, #filter, #first_movie, #genre_exists?, #initialize, #make_collection, #make_movie, #obtain_genres, #render_html, #sort_by, #stats

    - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - -
    -

    Constructor Details

    - -

    This class inherits a constructor from TopMovies::MovieCollection

    - -
    - -
    -

    Instance Attribute Details

    - - - -
    -

    - - #balanceObject (readonly) - - - - - -

    -
    - -

    Returns the value of attribute balance

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -13
    -14
    -15
    -
    -
    # File 'lib/topmovies/netflix.rb', line 13
    -
    -def balance
    -  @balance
    -end
    -
    -
    - -
    - - -
    -

    Class Method Details

    - - -
    -

    - - .cashFixnum - - - - - -

    -
    - -

    Get the amount of money at the cashbox

    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Fixnum) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -9
    -10
    -11
    -
    -
    # File 'lib/topmovies/netflix.rb', line 9
    -
    -def self.cash
    -  cashbox_balance
    -end
    -
    -
    - -
    - -
    -

    Instance Method Details

    - - -
    -

    - - #define_filter(filter_name, from: nil, arg: nil, &blk) ⇒ Hash - - - - - -

    -
    - -
    - Note: -
    -

    called from #show

    -
    -
    - - -

    Define a new filter based on an existing filter

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    define_filter(:new_sci_fi) { |movie, year| movie.year > year }
    -define_filter(:newest_sci_fi, from: :new_sci_fi, arg: 2014)
    - -
    -

    Parameters:

    -
      - -
    • - - filter_name - - - (Symbol) - - - - — -
      -

      name new filter

      -
      - -
    • - -
    • - - from: - - - (Symbol) - - - (defaults to: nil) - - - — -
      -

      name existing filter

      -
      - -
    • - -
    • - - arg: - - - (Array) - - - (defaults to: nil) - - - — -
      -

      value property of the movie, that define in existing filter

      -
      - -
    • - -
    • - - &block - - - (Proc) - - - - — -
      -

      code block containing the filter condition

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Hash) - - - - — -
      -

      @filter

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -
    -
    # File 'lib/topmovies/netflix.rb', line 39
    -
    -def define_filter(filter_name, from: nil, arg: nil, &blk)
    -  @filter[filter_name] =
    -    if block_given?
    -      blk
    -    elsif !from.nil? && !arg.nil?
    -      proc { |film, value| @filter[from].call(film, value) }
    -    else
    -      raise ArgumentError, 'Невозможно создать пользовательский фильтр'
    -    end
    -end
    -
    -
    - -
    -

    - - #film_costs(title) ⇒ Money - - - - - -

    -
    - -

    Want to know how much of the movie by title

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    netflix.film_costs('Terminator')
    -# => 50.00 ₴
    - -
    -

    Parameters:

    -
      - -
    • - - title - - - (String) - - - - — -
      -

      title movie

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Money) - - - - — -
      -

      movie cost in currency format

      -
      - -
    • - -
    -

    Raises:

    -
      - -
    • - - - (NameError) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -178
    -179
    -180
    -181
    -182
    -
    -
    # File 'lib/topmovies/netflix.rb', line 178
    -
    -def film_costs(title)
    -  movie = filter(title).first
    -  raise NameError, 'В базе нет такого фильма' unless movie
    -  to_money(movie.cost)
    -end
    -
    -
    - -
    -

    - - #filter_movie(filters, &block) ⇒ Movie - - - - - -

    -
    - -
    - Note: -
    -

    called from #show

    -
    -
    - - -

    Get movie that will show

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    filter_movie(new_sci_fi: true)
    -# => Blade Runner — современное кино...
    - -
    -

    Parameters:

    -
      - -
    • - - filters - - - (Hash) - - - - — -
      -

      filters for the selection of the movie represents as hash

      -
      - -
    • - -
    • - - &block - - - (Proc) - - - - — -
      -

      filters for the selection of the movie represents as block

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Movie) - - - - — -
      -

      movie satisfying all filters

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -
    -
    # File 'lib/topmovies/netflix.rb', line 69
    -
    -def filter_movie(filters, &block)
    -  movies = @collection.dup
    -  movies = find_by_block(movies, &block)
    -  movies = find_by_custom_filters(movies, filters)
    -  movies = find_by_inner_filters(movies, filters)
    -  movie = movies.sort_by { |m| m.rate.to_f * rand(1000) }.last
    -  movie
    -end
    -
    -
    - -
    -

    - - #find_by_block(movies, &block) ⇒ Array - - - - - -

    -
    - -
    - Note: -
    -

    called when into #show send block

    -
    -
    - - -

    Get array movies

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    find_by_block(movies, &block)
    - -
    -

    Parameters:

    -
      - -
    • - - movies - - - (MovieCollection) - - - - — -
      -

      movies collection

      -
      - -
    • - -
    • - - &block - - - (Proc) - - - - — -
      -

      it filter represents as block

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Array) - - - - — -
      -

      array movies

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -85
    -86
    -87
    -88
    -
    -
    # File 'lib/topmovies/netflix.rb', line 85
    -
    -def find_by_block(movies, &block)
    -  movies = movies.select(&block) if block_given?
    -  movies
    -end
    -
    -
    - -
    -

    - - #find_by_custom_filters(movies, filters) ⇒ Array - - - - - -

    -
    - -
    - Note: -
    -

    called when define custom filter

    -
    -
    - - -

    Get movies filtered composite filters

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    netflix.find_by_custom_filters(@collection, new_sci_fi: true)
    -# => Blade Runner — современное кино: играют Harrison Ford, Rutger Hauer, Sean Young
    - -
    -

    Parameters:

    -
      - -
    • - - movies - - - (MovieCollection) - - - - — -
      -

      movies collection

      -
      - -
    • - -
    • - - filters - - - (Hash) - - - - — -
      -

      filters represents as hash

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Array) - - - - — -
      -

      array movies

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -
    -
    # File 'lib/topmovies/netflix.rb', line 98
    -
    -def find_by_custom_filters(movies, filters)
    -  parse_filters(filters)
    -  if @custom_filters.empty?
    -    movies
    -  else
    -    @custom_filters.each do |k, v|
    -      movies = movies.select do |film|
    -        @filter[k].call(film, v)
    -      end
    -    end
    -  end
    -  movies
    -end
    -
    -
    - -
    -

    - - #find_by_inner_filters(movies, filters) ⇒ Array - - - - - -

    -
    - -
    - Note: -
    -

    called when into #show send inner filters

    -
    -
    - - -

    Get movies filtered inner filters

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    netflix.find_by_inner_filters(@collection, genre: 'Drama')
    -# => Pulp Fiction — современное кино: играют John Travolta, Uma Thurman, Samuel L. Jackson
    - -
    -

    Parameters:

    -
      - -
    • - - movies - - - (MovieCollection) - - - - — -
      -

      movies collection

      -
      - -
    • - -
    • - - filters - - - (Hash) - - - - — -
      -

      filters represents as hash

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Array) - - - - — -
      -

      array movies

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -
    -
    # File 'lib/topmovies/netflix.rb', line 120
    -
    -def find_by_inner_filters(movies, filters)
    -  parse_filters(filters)
    -  if @inner_filters.empty?
    -    movies
    -  else
    -    movies = movies.select { |m| m.matches_all?(@inner_filters) }
    -  end
    -  movies
    -end
    -
    -
    - -
    -

    - - #make_payment(movie) ⇒ Fixnum - - - - - -

    -
    - -
    - Note: -
    -

    called from #show

    -
    -
    - - -

    Withdraw money from the cashbox for preview movie

    - - -
    -
    -
    -

    Parameters:

    -
      - -
    • - - movie - - - (Movie) - - - - — -
      -

      movie to shown

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Fixnum) - - - - — -
      -

      amount money in cashbox

      -
      - -
    • - -
    -

    Raises:

    -
      - -
    • - - - (ArgumentError) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -
    -
    # File 'lib/topmovies/netflix.rb', line 19
    -
    -def make_payment(movie)
    -  raise ArgumentError, 'В базе нет такого фильма' unless movie
    -  if @balance.to_f < movie.cost
    -    raise ArgumentError, "Для просмотра #{movie.title} нужно еще пополнить \
    -баланс на #{movie.cost - @balance.to_f}"
    -  else
    -    @balance -= to_money(movie.cost)
    -  end
    -end
    -
    -
    - -
    -

    - - #parse_filters(filters) ⇒ Array - - - - - -

    -
    - -
    - Note: -
    -

    called from find_by_custom_filters and find_by_inner_filters

    -
    -
    - - -

    Split filters to internal(based on properties of the movie) and

    - -
    external(custom filters maked users)
    -
    - - -
    -
    -
    -

    Parameters:

    -
      - -
    • - - filters - - - (Hash) - - - - — -
      -

      filters represents as hash

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Array) - - - - — -
      -

      @custom_filters and @inner_filters

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -55
    -56
    -57
    -58
    -59
    -
    -
    # File 'lib/topmovies/netflix.rb', line 55
    -
    -def parse_filters(filters)
    -  @custom_filters, @inner_filters = filters.partition do |flt|
    -    @filter.include?(flt[0])
    -  end
    -end
    -
    -
    - -
    -

    - - #pay(payment) ⇒ Fixnum - - - - - -

    -
    - -
    - Note: -
    -

    called before show the movie

    -
    -
    - - -

    Put cash to cashbox of Netflix to be able to watch movie

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    netflix.pay(35)
    -# => 35.00
    - -
    -

    Parameters:

    -
      - -
    • - - payment - - - (Fixnum) - - - - — -
      -

      amount of payment

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Fixnum) - - - - — -
      -

      the amount of money at the cashbox

      -
      - -
    • - -
    -

    Raises:

    -
      - -
    • - - - (ArgumentError) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -
    -
    # File 'lib/topmovies/netflix.rb', line 163
    -
    -def pay(payment)
    -  money = Money.new(payment * 100, 'UAH')
    -  raise ArgumentError,
    -        "Ожидается положительное число, получено #{money}" if payment <= 0
    -  put_to_cashbox(money)
    -  self.class.put_to_cashbox(money)
    -  @balance += money
    -end
    -
    -
    - -
    -

    - - #rand_high_rate(col_movies) ⇒ Movie - - - - - -

    -
    - -

    Get movie with high rate

    - - -
    -
    -
    -

    Parameters:

    -
      - -
    • - - col_movies - - - (MovieCollection) - - - - — -
      -

      movies collection

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Movie) - - - - — -
      -

      movie with high rate

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -152
    -153
    -154
    -
    -
    # File 'lib/topmovies/netflix.rb', line 152
    -
    -def rand_high_rate(col_movies)
    -  col_movies.sort_by { |m| m.rate.to_f * rand(1000) }.last
    -end
    -
    -
    - -
    -

    - - #show(filter_name = {}, &block) ⇒ Movie - - - - - -

    -
    - -

    Show movie

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    netflix.show(genre: 'Drama', period: :new)
    -# => The Departed — новинка, вышло 10 лет назад!
    -movie = netflix.show do |movie|
    -  !movie.title.include?('Terminator') && \
    -  movie.genre[0].include?('Action') && \
    -  movie.year > 2003
    -end
    -# => The Dark Knight Rises — новинка, вышло 4 лет назад!
    - -
    -

    Parameters:

    -
      - -
    • - - filter_name - - - (Hash) - - - (defaults to: {}) - - - — -
      -

      filter name

      -
      - -
    • - -
    • - - block - - - (Proc) - - - - — -
      -

      composite filter represented as a block

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Movie) - - - - — -
      -

      film in a certain format

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -143
    -144
    -145
    -146
    -147
    -
    -
    # File 'lib/topmovies/netflix.rb', line 143
    -
    -def show(filter_name = {}, &block)
    -  movie = filter_movie(filter_name, &block)
    -  make_payment(movie)
    -  movie.show
    -end
    -
    -
    - -
    -

    - - #to_money(price) ⇒ Money - - - - - -

    -
    - -
    - Note: -
    -

    called when numerical amount need represents in currency format

    -
    -
    - - -

    Converts number into a currency format

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    to_money(35.00)
    -# => 35.00 ₴
    - -
    -

    Parameters:

    -
      - -
    • - - price - - - (Fixnum) - - - - — -
      -

      ticket cost

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Money) - - - - — -
      -

      ticket cost with currency symbol

      -
      - -
    • - -
    - -

    See Also:

    -
      - -
    • Money
    • - -
    - -
    - - - - -
    -
    -
    -
    -192
    -193
    -194
    -
    -
    # File 'lib/topmovies/netflix.rb', line 192
    -
    -def to_money(price)
    -  Money.new(price * 100, 'UAH')
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/NewMovie.html b/doc/ruby/TopMovies/NewMovie.html deleted file mode 100644 index 2593d2b..0000000 --- a/doc/ruby/TopMovies/NewMovie.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - Class: TopMovies::NewMovie - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::NewMovie - - - -

    -
    - -
    -
    Inherits:
    -
    - Movie - -
      -
    • Object
    • - - - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/new_movie.rb
    -
    - -
    - - - - -

    Constant Summary

    - -

    Constants inherited - from Movie

    -

    Movie::MOVIE_TYPE, Movie::PATH_BUDGETS

    - - - -

    Constants included - from ImdbBudgets

    -

    ImdbBudgets::PATH_BUDGETS

    - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods inherited from Movie

    -

    #budget, create, #genre?, #imdb_id, #match?, #matches_all?, #period, #poster, #translations

    - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - - -
    -

    Instance Method Details

    - - -
    -

    - - #costObject - - - - - -

    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/new_movie.rb', line 3
    -
    -def cost
    -  5.0
    -end
    -
    -
    - -
    -

    - - #showObject - - - - - -

    - - - - -
    -
    -
    -
    -7
    -8
    -9
    -10
    -
    -
    # File 'lib/topmovies/new_movie.rb', line 7
    -
    -def show
    -  start_time = Time.now
    -  "#{title} — новинка, вышло #{start_time.year - year.to_i} лет назад!"
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/Period.html b/doc/ruby/TopMovies/Period.html deleted file mode 100644 index a46a168..0000000 --- a/doc/ruby/TopMovies/Period.html +++ /dev/null @@ -1,1127 +0,0 @@ - - - - - - - Class: TopMovies::Period - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::Period - - - -

    -
    - -
    -
    Inherits:
    -
    - Object - -
      -
    • Object
    • - - - -
    - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/period.rb
    -
    - -
    - - - - - -

    Instance Attribute Summary collapse

    -
      - -
    • - - - #cost ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute cost.

      -
      - -
    • - - -
    • - - - #filtres ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute filtres.

      -
      - -
    • - - -
    • - - - #name ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute name.

      -
      - -
    • - - -
    • - - - #saloon ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute saloon.

      -
      - -
    • - - -
    • - - - #seance ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute seance.

      -
      - -
    • - - -
    • - - - #specification ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute specification.

      -
      - -
    • - - -
    - - - - - -

    - Instance Method Summary - collapse -

    - - - - -
    -

    Constructor Details

    - -
    -

    - - #initialize(period, &block) ⇒ Period - - - - - -

    -
    - -

    Returns a new instance of Period

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -5
    -6
    -7
    -8
    -
    -
    # File 'lib/topmovies/period.rb', line 5
    -
    -def initialize(period, &block)
    -  @seance = period
    -  instance_eval(&block)
    -end
    -
    -
    - -
    - -
    -

    Instance Attribute Details

    - - - -
    -

    - - #costObject - - - - - -

    -
    - -

    Returns the value of attribute cost

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/period.rb', line 3
    -
    -def cost
    -  @cost
    -end
    -
    -
    - - - -
    -

    - - #filtresObject - - - - - -

    -
    - -

    Returns the value of attribute filtres

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/period.rb', line 3
    -
    -def filtres
    -  @filtres
    -end
    -
    -
    - - - -
    -

    - - #nameObject - - - - - -

    -
    - -

    Returns the value of attribute name

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/period.rb', line 3
    -
    -def name
    -  @name
    -end
    -
    -
    - - - -
    -

    - - #saloonObject - - - - - -

    -
    - -

    Returns the value of attribute saloon

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/period.rb', line 3
    -
    -def saloon
    -  @saloon
    -end
    -
    -
    - - - -
    -

    - - #seanceObject - - - - - -

    -
    - -

    Returns the value of attribute seance

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/period.rb', line 3
    -
    -def seance
    -  @seance
    -end
    -
    -
    - - - -
    -

    - - #specificationObject - - - - - -

    -
    - -

    Returns the value of attribute specification

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -
    -
    # File 'lib/topmovies/period.rb', line 3
    -
    -def specification
    -  @specification
    -end
    -
    -
    - -
    - - -
    -

    Instance Method Details

    - - -
    -

    - - #description(descr) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -10
    -11
    -12
    -
    -
    # File 'lib/topmovies/period.rb', line 10
    -
    -def description(descr)
    -  @specification = descr
    -end
    -
    -
    - -
    -

    - - #filters(value = nil) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -14
    -15
    -16
    -17
    -
    -
    # File 'lib/topmovies/period.rb', line 14
    -
    -def filters(value = nil)
    -  return @filters unless value
    -  @filtres = value
    -end
    -
    -
    - -
    -

    - - #hall(*hall) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -23
    -24
    -25
    -
    -
    # File 'lib/topmovies/period.rb', line 23
    -
    -def hall(*hall)
    -  @saloon = hall
    -end
    -
    -
    - -
    -

    - - #intersects?(period) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -31
    -32
    -33
    -
    -
    # File 'lib/topmovies/period.rb', line 31
    -
    -def intersects?(period)
    -  seance_intersect?(period) if saloon_intersect?(period)
    -end
    -
    -
    - -
    -

    - - #price(price) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -19
    -20
    -21
    -
    -
    # File 'lib/topmovies/period.rb', line 19
    -
    -def price(price)
    -  @cost = price
    -end
    -
    -
    - -
    -

    - - #saloon_intersect?(current) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -39
    -40
    -41
    -
    -
    # File 'lib/topmovies/period.rb', line 39
    -
    -def saloon_intersect?(current)
    -  !(saloon & current.saloon).empty?
    -end
    -
    -
    - -
    -

    - - #seance_intersect?(current) ⇒ Boolean - - - - - -

    -
    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -35
    -36
    -37
    -
    -
    # File 'lib/topmovies/period.rb', line 35
    -
    -def seance_intersect?(current)
    -  seance.include?(current.seance.first) || seance.include?(current.seance.last)
    -end
    -
    -
    - -
    -

    - - #title(ttl) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -27
    -28
    -29
    -
    -
    # File 'lib/topmovies/period.rb', line 27
    -
    -def title(ttl)
    -  @name = ttl
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/Theatre.html b/doc/ruby/TopMovies/Theatre.html deleted file mode 100644 index 0e25934..0000000 --- a/doc/ruby/TopMovies/Theatre.html +++ /dev/null @@ -1,1725 +0,0 @@ - - - - - - - Class: TopMovies::Theatre - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Class: TopMovies::Theatre - - - -

    -
    - -
    -
    Inherits:
    -
    - MovieCollection - - - show all - -
    -
    - - - - - - - - - - - -
    -
    Defined in:
    -
    lib/topmovies/theatre.rb
    -
    - -
    - - -

    Constant Summary

    -
    - -
    PATH_DATA = - -
    -
    File.expand_path('data/movies.txt', __dir__)
    - -
    PERIOD_DAY = - -
    -
    { morning: (8..12), afternoon: (13..16), evening: (17..23),
    -night: (0..7) }.freeze
    - -
    DAY_PRICE = - -
    -
    { morning: 3.0, afternoon: 5.0, evening: 10.0 }.freeze
    - -
    FILTERS_MOVIE = - -
    -
    { morning: { period: :ancient },
    -afternoon: { genre: %w(Comedy Adventure) },
    -evening: { genre: %w(Drama Mystery) } }.freeze
    - -
    - - - - - -

    Constants inherited - from MovieCollection

    -

    MovieCollection::PATH_PAGES

    - - - -

    Constants included - from ImdbBudgets

    -

    ImdbBudgets::PATH_BUDGETS

    - - -

    Instance Attribute Summary collapse

    -
      - -
    • - - - #halls ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute halls.

      -
      - -
    • - - -
    • - - - #periods ⇒ Object - - - - - - - - - - - - - - - - -
      -

      Returns the value of attribute periods.

      -
      - -
    • - - -
    - - - - - -

    Attributes inherited from MovieCollection

    -

    #collection

    - - - -

    - Instance Method Summary - collapse -

    - - - - - - - - - - - - - -

    Methods inherited from MovieCollection

    -

    #all, #by_country, #by_genre, #cash, #filter, #first_movie, #genre_exists?, #make_collection, #make_movie, #obtain_genres, #render_html, #sort_by, #stats

    - - - - - - - - - -

    Methods included from TmdbPosters

    -

    #imdb_to_tmdb, #take_poster, #take_posters, #take_translations

    - - - - - - - - - -

    Methods included from ImdbBudgets

    -

    #take_budget_from_file, #take_budget_from_imdb, #take_info

    - - - - - - - - - -

    Methods included from CashBox

    -

    #cashbox_balance, #put_to_cashbox, #take

    - -
    -

    Constructor Details

    - -
    -

    - - #initialize(&block) ⇒ Theatre - - - - - -

    -
    - -

    Returns a new instance of Theatre

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -9
    -10
    -11
    -12
    -13
    -14
    -15
    -
    -
    # File 'lib/topmovies/theatre.rb', line 9
    -
    -def initialize(&block)
    -  super(PATH_DATA)
    -  @halls = {}
    -  @periods = []
    -  @blck = {}
    -  instance_eval(&block)
    -end
    -
    -
    - -
    - -
    -

    Instance Attribute Details

    - - - -
    -

    - - #hallsObject - - - - - -

    -
    - -

    Returns the value of attribute halls

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -5
    -6
    -7
    -
    -
    # File 'lib/topmovies/theatre.rb', line 5
    -
    -def halls
    -  @halls
    -end
    -
    -
    - - - -
    -

    - - #periodsObject - - - - - -

    -
    - -

    Returns the value of attribute periods

    - - -
    -
    -
    - - -
    - - - - -
    -
    -
    -
    -5
    -6
    -7
    -
    -
    # File 'lib/topmovies/theatre.rb', line 5
    -
    -def periods
    -  @periods
    -end
    -
    -
    - -
    - - -
    -

    Instance Method Details

    - - -
    -

    - - #buy_ticket(time_show, hall = nil) ⇒ String - - - - - -

    -
    - -

    Buy a ticket to a movie at a certain time, you can specify the hall

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    buy_ticket('17:20')
    -# => Вечерний сеанс - 16:00..20:00 : Фильм: The Hunt - 20.00 ₴
    -buy_ticket('19:20', hall: :green)
    -# => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: Modern Times - 30.00 ₴
    - -
    -

    Parameters:

    -
      - -
    • - - time - - - (String) - - - - — -
      -

      show time

      -
      - -
    • - -
    • - - hall - - - (Hash) - - - (defaults to: nil) - - - — -
      -

      name hall

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (String) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -
    -
    # File 'lib/topmovies/theatre.rb', line 118
    -
    -def buy_ticket(time_show, hall = nil)
    -  period = select_period(time_show, hall)
    -  movie = show(period)
    -  check = Money.new(period.cost * 100, 'UAH')
    -  put_to_cashbox(check)
    -  result = "#{period.specification} - #{period.seance} : \
    -Фильм: #{movie.title} - #{check.format}"
    -  result
    -end
    -
    -
    - -
    -

    - - #filters_to_hash(filters) ⇒ Hash - - - - - -

    -
    - -
    - Note: -
    -

    called in #when?

    -
    -
    - - -

    Converts filters to hash filters_to_hash({ genre: ['Comedy', -'Adventure']})

    - -
    # => { genre: 'Comedy', genre: 'Adventure'}
    -
    - - -
    -
    -
    -

    Parameters:

    -
      - -
    • - - filters - - - (Array) - - - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Hash) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -98
    -99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -
    -
    # File 'lib/topmovies/theatre.rb', line 98
    -
    -def filters_to_hash(filters)
    -  flts = filters.map do |k, v|
    -    if v.is_a?(Array)
    -      v.map { |gen| Hash[k, gen] }
    -    else
    -      Hash[k, v]
    -    end
    -  end
    -  flts.flatten
    -end
    -
    -
    - -
    -

    - - #get_movie_from_filters(period) ⇒ Movie - - - - - -

    -
    - -
    - Note: -
    -

    called from #show

    -
    -
    - - -

    Get filtered movie with high rate

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    get_movie_from_filters('19:20', hall: :green)
    -# => <TopMovies::AncientMovie:0x000000032a5988>
    - -
    -

    Parameters:

    - - -

    Returns:

    -
      - -
    • - - - (Movie) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -
    -
    # File 'lib/topmovies/theatre.rb', line 167
    -
    -def get_movie_from_filters(period)
    -  mov = @collection.dup
    -  movies = period.filtres.inject(mov) do |films, (key, value)|
    -    key = :country if key == :exclude_country
    -    films.select { |f| f.matches_all?(key => value) }
    -  end
    -  movies.flatten.sort_by { |m| m.rate.to_f * rand(1000) }.last
    -end
    -
    -
    - -
    -

    - - #hall(name, description) ⇒ Hash - - - - - -

    -
    - -

    Add hall to Theatre

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    hall(:red, {title: 'Красный зал', places: 100})
    - -
    -

    Parameters:

    -
      - -
    • - - name - - - (Symbol) - - - - — -
      -

      name hall

      -
      - -
    • - -
    • - - description - - - (Hash) - - - - — -
      -

      description hall (title, places)

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Hash) - - - - — -
      -

      @halls

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -23
    -24
    -25
    -
    -
    # File 'lib/topmovies/theatre.rb', line 23
    -
    -def hall(name, description)
    -  @halls[name] = description
    -end
    -
    -
    - -
    -

    - - #period(name, &block) ⇒ Hash - - - - - -

    -
    - -

    Add period to Theatre

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    period '09:00'..'12:00' do
    -  description 'Утренний сеанс'
    -  filters genre: 'Comedy', year: 1900..1980
    -  price 10
    -  hall :red, :blue
    -end
    - -
    -

    Parameters:

    -
      - -
    • - - name - - - (Range) - - - - — -
      -

      name period

      -
      - -
    • - -
    • - - &block - - - (Proc) - - - - — -
      -

      data period(description, filters, price, hall)

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Hash) - - - - — -
      -

      @periods

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -
    -
    # File 'lib/topmovies/theatre.rb', line 38
    -
    -def period(name, &block)
    -  new_period = TopMovies::Period.new(name, &block)
    -  if @periods.empty?
    -    @periods.push(new_period)
    -  elsif verify_period(new_period)
    -    raise ArgumentError, 'Невозможно добавить период, так как этот зал занят'
    -  else
    -    @periods.push(new_period)
    -  end
    -end
    -
    -
    - -
    -

    - - #select_period(time, hall) ⇒ String - - - - - -

    -
    - -

    Select period for movie show when halls intersects

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    select_period('19:20', hall: :green)
    -# => <TopMovies::Period:0x0000000123bee0>
    - -
    -

    Parameters:

    -
      - -
    • - - time - - - (String) - - - - — -
      -

      show movie time

      -
      - -
    • - -
    • - - hall - - - (Hash) - - - - — -
      -

      hall name

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (String) - - - - — -
      -

      period name

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -
    -
    # File 'lib/topmovies/theatre.rb', line 135
    -
    -def select_period(time, hall)
    -  period = @periods.select { |p| p.seance.include?(time) }
    -  pr = if period.size > 1
    -         period.select { |p| p.saloon.include?(hall[:hall]) }
    -       else
    -         period[0]
    -       end
    -  selected_period = hall.nil? ? pr : pr[0]
    -  selected_period
    -end
    -
    -
    - -
    -

    - - #show(period) ⇒ Movie - - - - - -

    -
    - -

    Show the movie according to the period

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    show('19:20', hall: :green)
    -# => <TopMovies::AncientMovie:0x00000002d5fe10>
    - -
    -

    Parameters:

    - - -

    Returns:

    -
      - -
    • - - - (Movie) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -
    -
    # File 'lib/topmovies/theatre.rb', line 152
    -
    -def show(period)
    -  if period.name
    -    filter(title: period.name).first
    -  else
    -    get_movie_from_filters(period)
    -  end
    -end
    -
    -
    - -
    -

    - - #time_to_show(time) ⇒ Symbol - - - - - -

    -
    - -

    Get period day for show movie

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    time_to_show('09:00')
    -# => morning
    - -
    -

    Parameters:

    -
      - -
    • - - time - - - (String) - - - - — -
      -

      show time

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Symbol) - - - - — -
      -

      any hash key from PERIOD_DAY

      -
      - -
    • - -
    -

    Raises:

    -
      - -
    • - - - (ArgumentError) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -
    -
    # File 'lib/topmovies/theatre.rb', line 69
    -
    -def time_to_show(time)
    -  hour = DateTime.strptime(time, '%H').hour
    -  period = PERIOD_DAY.select { |_k, v| v.include?(hour) }.keys[0]
    -  raise ArgumentError,
    -        'В ночное время кинотеатр не работает' if period == :night
    -  period
    -end
    -
    -
    - -
    -

    - - #verify_period(current) ⇒ Boolean - - - - - -

    -
    - -

    Check the period added to the schedule on intesection time

    - - -
    -
    -
    -

    Parameters:

    - - -

    Returns:

    -
      - -
    • - - - (Boolean) - - - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -52
    -53
    -54
    -
    -
    # File 'lib/topmovies/theatre.rb', line 52
    -
    -def verify_period(current)
    -  @periods.any? { |p| p.intersects?(current) }
    -end
    -
    -
    - -
    -

    - - #when?(title) ⇒ Symbol - - - - - -

    -
    - -
    - Note: -
    -

    based on check type of movie (ancient, classic, modern, new)

    -
    -
    - - -

    Know when show movie by title

    - - -
    -
    -
    - -
    -

    Examples:

    - - -
    when?('Terminator')
    -# => afternoon
    - -
    -

    Parameters:

    -
      - -
    • - - title - - - (String) - - - - — -
      -

      movie title

      -
      - -
    • - -
    - -

    Returns:

    -
      - -
    • - - - (Symbol) - - - - — -
      -

      any hash key from FILTERS_MOVIE

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -
    -
    # File 'lib/topmovies/theatre.rb', line 84
    -
    -def when?(title)
    -  movie = filter(title).first
    -  period = FILTERS_MOVIE.find_all do |_per, fil|
    -    filters_to_hash(fil).detect { |k| movie.matches_all?(k) }
    -  end
    -  period.flatten[0]
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/TopMovies/TmdbPosters.html b/doc/ruby/TopMovies/TmdbPosters.html deleted file mode 100644 index 512b075..0000000 --- a/doc/ruby/TopMovies/TmdbPosters.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - Module: TopMovies::TmdbPosters - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Module: TopMovies::TmdbPosters - - - -

    -
    - - - - - - - - - -
    -
    Included in:
    -
    Movie, MovieCollection
    -
    - - - -
    -
    Defined in:
    -
    lib/topmovies/tmdb_posters.rb
    -
    - -
    - - - - - - - - - -

    - Instance Method Summary - collapse -

    - - - - - - -
    -

    Instance Method Details

    - - -
    -

    - - #imdb_to_tmdb(id_imdb) ⇒ Object - - - - - -

    - - - - -
    -
    -
    -
    -15
    -16
    -17
    -
    -
    # File 'lib/topmovies/tmdb_posters.rb', line 15
    -
    -def imdb_to_tmdb(id_imdb)
    -  Tmdb::Find.imdb_id(id_imdb).first[1][0]['id']
    -end
    -
    -
    - -
    -

    - - #take_posterObject - - - - - -

    - - - - -
    -
    -
    -
    -19
    -20
    -21
    -
    -
    # File 'lib/topmovies/tmdb_posters.rb', line 19
    -
    -def take_poster(*)
    -  Tmdb::Movie.detail(imdb_to_tmdb(imdb_id))['poster_path']
    -end
    -
    -
    - -
    -

    - - #take_postersObject - - - - - -

    - - - - -
    -
    -
    -
    -3
    -4
    -5
    -6
    -7
    -
    -
    # File 'lib/topmovies/tmdb_posters.rb', line 3
    -
    -def take_posters
    -  @collection.map do |film|
    -    Tmdb::Movie.detail(imdb_to_tmdb(film.imdb_id))['poster_path']
    -  end
    -end
    -
    -
    - -
    -

    - - #take_translationsObject - - - - - -

    - - - - -
    -
    -
    -
    -9
    -10
    -11
    -12
    -13
    -
    -
    # File 'lib/topmovies/tmdb_posters.rb', line 9
    -
    -def take_translations
    -  @collection.map do |film|
    -    Tmdb::Movie.translations(imdb_to_tmdb(film.imdb_id))['translations']
    -  end
    -end
    -
    -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/_index.html b/doc/ruby/_index.html deleted file mode 100644 index 1b9b23c..0000000 --- a/doc/ruby/_index.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
    - - - - -

    Documentation by YARD 0.9.5

    -
    -

    Alphabetic Index

    - -

    File Listing

    - - -
    -

    Namespace Listing A-Z

    - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
      -
    • N
    • - -
    - - -
      -
    • P
    • -
        - -
      • - Period - - (TopMovies) - -
      • - -
      -
    - - -
    - - -
      -
    • S
    • - -
    - - - - -
    - -
    - -
    - - - -
    - - \ No newline at end of file diff --git a/doc/ruby/class_list.html b/doc/ruby/class_list.html deleted file mode 100644 index ea9bc75..0000000 --- a/doc/ruby/class_list.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - Class List - - - -
    -
    -

    Class List

    - - - -
    - - -
    - - diff --git a/doc/ruby/css/common.css b/doc/ruby/css/common.css deleted file mode 100644 index cf25c45..0000000 --- a/doc/ruby/css/common.css +++ /dev/null @@ -1 +0,0 @@ -/* Override this file with custom rules */ \ No newline at end of file diff --git a/doc/ruby/css/full_list.css b/doc/ruby/css/full_list.css deleted file mode 100644 index fa35982..0000000 --- a/doc/ruby/css/full_list.css +++ /dev/null @@ -1,58 +0,0 @@ -body { - margin: 0; - font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; - font-size: 13px; - height: 101%; - overflow-x: hidden; - background: #fafafa; -} - -h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; } -.clear { clear: both; } -.fixed_header { position: fixed; background: #fff; width: 100%; padding-bottom: 10px; margin-top: 0; top: 0; z-index: 9999; height: 70px; } -#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; } -#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; } -#full_list { padding: 0; list-style: none; margin-left: 0; margin-top: 80px; font-size: 1.1em; } -#full_list ul { padding: 0; } -#full_list li { padding: 0; margin: 0; list-style: none; } -#full_list li .item { padding: 5px 5px 5px 12px; } -#noresults { padding: 7px 12px; background: #fff; } -#content.insearch #noresults { margin-left: 7px; } -li.collapsed ul { display: none; } -li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; } -li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; } -li { color: #888; cursor: pointer; } -li.deprecated { text-decoration: line-through; font-style: italic; } -li.odd { background: #f0f0f0; } -li.even { background: #fafafa; } -.item:hover { background: #ddd; } -li small:before { content: "("; } -li small:after { content: ")"; } -li small.search_info { display: none; } -a, a:visited { text-decoration: none; color: #05a; } -li.clicked > .item { background: #05a; color: #ccc; } -li.clicked > .item a, li.clicked > .item a:visited { color: #eee; } -li.clicked > .item a.toggle { opacity: 0.5; background-position: bottom right; } -li.collapsed.clicked a.toggle { background-position: top right; } -#search input { border: 1px solid #bbb; border-radius: 3px; } -#full_list_nav { margin-left: 10px; font-size: 0.9em; display: block; color: #aaa; } -#full_list_nav a, #nav a:visited { color: #358; } -#full_list_nav a:hover { background: transparent; color: #5af; } -#full_list_nav span:after { content: ' | '; } -#full_list_nav span:last-child:after { content: ''; } - -#content h1 { margin-top: 0; } -li { white-space: nowrap; cursor: normal; } -li small { display: block; font-size: 0.8em; } -li small:before { content: ""; } -li small:after { content: ""; } -li small.search_info { display: none; } -#search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; } -#content.insearch #search { background-position: center right; } -#search input { width: 110px; } - -#full_list.insearch ul { display: block; } -#full_list.insearch .item { display: none; } -#full_list.insearch .found { display: block; padding-left: 11px !important; } -#full_list.insearch li a.toggle { display: none; } -#full_list.insearch li small.search_info { display: block; } diff --git a/doc/ruby/css/style.css b/doc/ruby/css/style.css deleted file mode 100644 index 55ec699..0000000 --- a/doc/ruby/css/style.css +++ /dev/null @@ -1,481 +0,0 @@ -html { - width: 100%; - height: 100%; -} -body { - font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; - font-size: 13px; - width: 100%; - margin: 0; - padding: 0; - display: flex; - display: -webkit-flex; - display: -ms-flexbox; -} - -#nav { - position: relative; - width: 100%; - height: 100%; - border: 0; - border-right: 1px dotted #eee; - overflow: auto; -} -.nav_wrap { - margin: 0; - padding: 0; - width: 20%; - height: 100%; - position: relative; - display: flex; - display: -webkit-flex; - display: -ms-flexbox; - flex-shrink: 0; - -webkit-flex-shrink: 0; - -ms-flex: 1 0; -} -#resizer { - position: absolute; - right: -5px; - top: 0; - width: 10px; - height: 100%; - cursor: col-resize; - z-index: 9999; -} -#main { - flex: 5 1; - -webkit-flex: 5 1; - -ms-flex: 5 1; - outline: none; - position: relative; - background: #fff; - padding: 1.2em; - padding-top: 0.2em; -} - -@media (max-width: 920px) { - .nav_wrap { display: none; } -} - -@media (min-width: 920px) { - body { height: 100%; overflow: hidden; } - #main { height: 100%; overflow: auto; } - #search { display: none; } - #search_frame { display: none; } -} - -#main img { max-width: 100%; } -h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; } -h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; } -h1.title { margin-bottom: 10px; } -h1.alphaindex { margin-top: 0; font-size: 22px; } -h2 { - padding: 0; - padding-bottom: 3px; - border-bottom: 1px #aaa solid; - font-size: 1.4em; - margin: 1.8em 0 0.5em; - position: relative; -} -h2 small { font-weight: normal; font-size: 0.7em; display: inline; position: absolute; right: 0; } -h2 small a { - display: block; - height: 20px; - border: 1px solid #aaa; - border-bottom: 0; - border-top-left-radius: 5px; - background: #f8f8f8; - position: relative; - padding: 2px 7px; -} -.clear { clear: both; } -.inline { display: inline; } -.inline p:first-child { display: inline; } -.docstring, .tags, #filecontents { font-size: 15px; line-height: 1.5145em; } -.docstring p > code, .docstring p > tt, .tags p > code, .tags p > tt { - color: #c7254e; background: #f9f2f4; padding: 2px 4px; font-size: 1em; - border-radius: 4px; -} -.docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; } -.docstring h1 { font-size: 1.2em; } -.docstring h2 { font-size: 1.1em; } -.docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; } -.summary_desc .object_link a, .docstring .object_link a { - font-family: monospace; font-size: 1.05em; - color: #05a; background: #EDF4FA; padding: 2px 4px; font-size: 1em; - border-radius: 4px; -} -.rdoc-term { padding-right: 25px; font-weight: bold; } -.rdoc-list p { margin: 0; padding: 0; margin-bottom: 4px; } - -/* style for */ -#filecontents table, .docstring table { border-collapse: collapse; } -#filecontents table th, #filecontents table td, -.docstring table th, .docstring table td { border: 1px solid #ccc; padding: 8px; padding-right: 17px; } -#filecontents table tr:nth-child(odd), -.docstring table tr:nth-child(odd) { background: #eee; } -#filecontents table tr:nth-child(even), -.docstring table tr:nth-child(even) { background: #fff; } -#filecontents table th, .docstring table th { background: #fff; } - -/* style for
      */ -#filecontents li > p, .docstring li > p { margin: 0px; } -#filecontents ul, .docstring ul { padding-left: 20px; } -/* style for
      */ -#filecontents dl, .docstring dl { border: 1px solid #ccc; } -#filecontents dt, .docstring dt { background: #ddd; font-weight: bold; padding: 3px 5px; } -#filecontents dd, .docstring dd { padding: 5px 0px; margin-left: 18px; } -#filecontents dd > p, .docstring dd > p { margin: 0px; } - -.note { - color: #222; - margin: 20px 0; - padding: 10px; - border: 1px solid #eee; - border-radius: 3px; - display: block; -} -.docstring .note { - border-left-color: #ccc; - border-left-width: 5px; -} -.note.todo { background: #ffffc5; border-color: #ececaa; } -.note.returns_void { background: #efefef; } -.note.deprecated { background: #ffe5e5; border-color: #e9dada; } -.note.title.deprecated { background: #ffe5e5; border-color: #e9dada; } -.note.private { background: #ffffc5; border-color: #ececaa; } -.note.title { padding: 3px 6px; font-size: 0.9em; font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; display: inline; } -.summary_signature + .note.title { margin-left: 7px; } -h1 .note.title { font-size: 0.5em; font-weight: normal; padding: 3px 5px; position: relative; top: -3px; text-transform: capitalize; } -.note.title { background: #efefef; } -.note.title.constructor { color: #fff; background: #6a98d6; border-color: #6689d6; } -.note.title.writeonly { color: #fff; background: #45a638; border-color: #2da31d; } -.note.title.readonly { color: #fff; background: #6a98d6; border-color: #6689d6; } -.note.title.private { background: #d5d5d5; border-color: #c5c5c5; } -.note.title.not_defined_here { background: transparent; border: none; font-style: italic; } -.discussion .note { margin-top: 6px; } -.discussion .note:first-child { margin-top: 0; } - -h3.inherited { - font-style: italic; - font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; - font-weight: normal; - padding: 0; - margin: 0; - margin-top: 12px; - margin-bottom: 3px; - font-size: 13px; -} -p.inherited { - padding: 0; - margin: 0; - margin-left: 25px; -} - -.box_info dl { - margin: 0; - border: 0; - width: 100%; - font-size: 1em; - display: flex; - display: -webkit-flex; - display: -ms-flexbox; -} -.box_info dl dt { - flex-shrink: 0; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - width: 100px; - text-align: right; - font-weight: bold; - border: 1px solid #aaa; - border-width: 1px 0px 0px 1px; - padding: 6px 0; - padding-right: 10px; -} -.box_info dl dd { - flex-grow: 1; - -webkit-flex-grow: 1; - -ms-flex: 1; - max-width: 420px; - padding: 6px 0; - padding-right: 20px; - border: 1px solid #aaa; - border-width: 1px 1px 0 0; - overflow: hidden; - position: relative; -} -.box_info dl:last-child > * { - border-bottom: 1px solid #aaa; -} -.box_info dl:nth-child(odd) > * { background: #eee; } -.box_info dl:nth-child(even) > * { background: #fff; } -.box_info dl > * { margin: 0; } - -ul.toplevel { list-style: none; padding-left: 0; font-size: 1.1em; } -.index_inline_list { padding-left: 0; font-size: 1.1em; } - -.index_inline_list li { - list-style: none; - display: inline-block; - padding: 0 12px; - line-height: 30px; - margin-bottom: 5px; -} - -dl.constants { margin-left: 10px; } -dl.constants dt { font-weight: bold; font-size: 1.1em; margin-bottom: 5px; } -dl.constants dd { width: 75%; white-space: pre; font-family: monospace; margin-bottom: 18px; } -dl.constants .docstring .note:first-child { margin-top: 5px; } - -.summary_desc { - margin-left: 32px; - display: block; - font-family: sans-serif; - font-size: 1.1em; - margin-top: 8px; - line-height: 1.5145em; - margin-bottom: 0.8em; -} -.summary_desc tt { font-size: 0.9em; } -dl.constants .note { padding: 2px 6px; padding-right: 12px; margin-top: 6px; } -dl.constants .docstring { margin-left: 32px; font-size: 0.9em; font-weight: normal; } -dl.constants .tags { padding-left: 32px; font-size: 0.9em; line-height: 0.8em; } -dl.constants .discussion *:first-child { margin-top: 0; } -dl.constants .discussion *:last-child { margin-bottom: 0; } - -.method_details { border-top: 1px dotted #ccc; margin-top: 25px; padding-top: 0; } -.method_details.first { border: 0; margin-top: 5px; } -.method_details.first h3.signature { margin-top: 1em; } -p.signature, h3.signature { - font-size: 1.1em; font-weight: normal; font-family: Monaco, Consolas, Courier, monospace; - padding: 6px 10px; margin-top: 1em; - background: #E8F4FF; border: 1px solid #d8d8e5; border-radius: 5px; -} -p.signature tt, -h3.signature tt { font-family: Monaco, Consolas, Courier, monospace; } -p.signature .overload, -h3.signature .overload { display: block; } -p.signature .extras, -h3.signature .extras { font-weight: normal; font-family: sans-serif; color: #444; font-size: 1em; } -p.signature .not_defined_here, -h3.signature .not_defined_here, -p.signature .aliases, -h3.signature .aliases { display: block; font-weight: normal; font-size: 0.9em; font-family: sans-serif; margin-top: 0px; color: #555; } -p.signature .aliases .names, -h3.signature .aliases .names { font-family: Monaco, Consolas, Courier, monospace; font-weight: bold; color: #000; font-size: 1.2em; } - -.tags .tag_title { font-size: 1.05em; margin-bottom: 0; font-weight: bold; } -.tags .tag_title tt { color: initial; padding: initial; background: initial; } -.tags ul { margin-top: 5px; padding-left: 30px; list-style: square; } -.tags ul li { margin-bottom: 3px; } -.tags ul .name { font-family: monospace; font-weight: bold; } -.tags ul .note { padding: 3px 6px; } -.tags { margin-bottom: 12px; } - -.tags .examples .tag_title { margin-bottom: 10px; font-weight: bold; } -.tags .examples .inline p { padding: 0; margin: 0; font-weight: bold; font-size: 1em; } -.tags .examples .inline p:before { content: "▸"; font-size: 1em; margin-right: 5px; } - -.tags .overload .overload_item { list-style: none; margin-bottom: 25px; } -.tags .overload .overload_item .signature { - padding: 2px 8px; - background: #F1F8FF; border: 1px solid #d8d8e5; border-radius: 3px; -} -.tags .overload .signature { margin-left: -15px; font-family: monospace; display: block; font-size: 1.1em; } -.tags .overload .docstring { margin-top: 15px; } - -.defines { display: none; } - -#method_missing_details .notice.this { position: relative; top: -8px; color: #888; padding: 0; margin: 0; } - -.showSource { font-size: 0.9em; } -.showSource a, .showSource a:visited { text-decoration: none; color: #666; } - -#content a, #content a:visited { text-decoration: none; color: #05a; } -#content a:hover { background: #ffffa5; } - -ul.summary { - list-style: none; - font-family: monospace; - font-size: 1em; - line-height: 1.5em; - padding-left: 0px; -} -ul.summary a, ul.summary a:visited { - text-decoration: none; font-size: 1.1em; -} -ul.summary li { margin-bottom: 5px; } -.summary .summary_signature { - padding: 4px 8px; - background: #f8f8f8; - border: 1px solid #f0f0f0; - border-radius: 5px; -} -.summary_signature:hover { background: #CFEBFF; border-color: #A4CCDA; cursor: pointer; } -ul.summary.compact li { display: inline-block; margin: 0px 5px 0px 0px; line-height: 2.6em;} -ul.summary.compact .summary_signature { padding: 5px 7px; padding-right: 4px; } -#content .summary_signature:hover a, -#content .summary_signature:hover a:visited { - background: transparent; - color: #049; -} - -p.inherited a { font-family: monospace; font-size: 0.9em; } -p.inherited { word-spacing: 5px; font-size: 1.2em; } - -p.children { font-size: 1.2em; } -p.children a { font-size: 0.9em; } -p.children strong { font-size: 0.8em; } -p.children strong.modules { padding-left: 5px; } - -ul.fullTree { display: none; padding-left: 0; list-style: none; margin-left: 0; margin-bottom: 10px; } -ul.fullTree ul { margin-left: 0; padding-left: 0; list-style: none; } -ul.fullTree li { text-align: center; padding-top: 18px; padding-bottom: 12px; background: url(data:image/gif;base64,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) no-repeat top center; } -ul.fullTree li:first-child { padding-top: 0; background: transparent; } -ul.fullTree li:last-child { padding-bottom: 0; } -.showAll ul.fullTree { display: block; } -.showAll .inheritName { display: none; } - -#search { position: absolute; right: 12px; top: 0px; z-index: 9000; } -#search a { - display: block; float: left; - padding: 4px 8px; text-decoration: none; color: #05a; fill: #05a; - border: 1px solid #d8d8e5; - border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; - background: #F1F8FF; - box-shadow: -1px 1px 3px #ddd; -} -#search a:hover { background: #f5faff; color: #06b; fill: #06b; } -#search a.active { - background: #568; padding-bottom: 20px; color: #fff; fill: #fff; - border: 1px solid #457; - border-top-left-radius: 5px; border-top-right-radius: 5px; -} -#search a.inactive { color: #999; fill: #999; } -.inheritanceTree, .toggleDefines { - float: right; - border-left: 1px solid #aaa; - position: absolute; top: 0; right: 0; - height: 100%; - background: #f6f6f6; - padding: 5px; - min-width: 55px; - text-align: center; -} - -#menu { font-size: 1.3em; color: #bbb; } -#menu .title, #menu a { font-size: 0.7em; } -#menu .title a { font-size: 1em; } -#menu .title { color: #555; } -#menu a, #menu a:visited { color: #333; text-decoration: none; border-bottom: 1px dotted #bbd; } -#menu a:hover { color: #05a; } - -#footer { margin-top: 15px; border-top: 1px solid #ccc; text-align: center; padding: 7px 0; color: #999; } -#footer a, #footer a:visited { color: #444; text-decoration: none; border-bottom: 1px dotted #bbd; } -#footer a:hover { color: #05a; } - -#listing ul.alpha { font-size: 1.1em; } -#listing ul.alpha { margin: 0; padding: 0; padding-bottom: 10px; list-style: none; } -#listing ul.alpha li.letter { font-size: 1.4em; padding-bottom: 10px; } -#listing ul.alpha ul { margin: 0; padding-left: 15px; } -#listing ul small { color: #666; font-size: 0.7em; } - -li.r1 { background: #f0f0f0; } -li.r2 { background: #fafafa; } - -#search_frame { - z-index: 9999; - background: #fff; - display: none; - position: absolute; - top: 40px; - right: 12px; - width: 500px; - max-width: 80%; - height: 80%; - overflow-y: scroll; - border: 1px solid #999; - border-collapse: collapse; - box-shadow: -7px 5px 25px #aaa; - border-radius: 2px; -} - -#content ul.summary li.deprecated .summary_signature a, -#content ul.summary li.deprecated .summary_signature a:visited { text-decoration: line-through; font-style: italic; } - -#toc { - position: relative; - float: right; - overflow-x: auto; - right: -3px; - margin-left: 20px; - margin-bottom: 20px; - padding: 20px; padding-right: 30px; - max-width: 300px; - z-index: 5000; - background: #fefefe; - border: 1px solid #ddd; - box-shadow: -2px 2px 6px #bbb; -} -#toc .title { margin: 0; } -#toc ol { padding-left: 1.8em; } -#toc li { font-size: 1.1em; line-height: 1.7em; } -#toc > ol > li { font-size: 1.1em; font-weight: bold; } -#toc ol > ol { font-size: 0.9em; } -#toc ol ol > ol { padding-left: 2.3em; } -#toc ol + li { margin-top: 0.3em; } -#toc.hidden { padding: 10px; background: #fefefe; box-shadow: none; } -#toc.hidden:hover { background: #fafafa; } -#filecontents h1 + #toc.nofloat { margin-top: 0; } -@media (max-width: 560px) { - #toc { - margin-left: 0; - margin-top: 16px; - float: none; - max-width: none; - } -} - -/* syntax highlighting */ -.source_code { display: none; padding: 3px 8px; border-left: 8px solid #ddd; margin-top: 5px; } -#filecontents pre.code, .docstring pre.code, .source_code pre { font-family: monospace; } -#filecontents pre.code, .docstring pre.code { display: block; } -.source_code .lines { padding-right: 12px; color: #555; text-align: right; } -#filecontents pre.code, .docstring pre.code, -.tags pre.example { - padding: 9px 14px; - margin-top: 4px; - border: 1px solid #e1e1e8; - background: #f7f7f9; - border-radius: 4px; - font-size: 1em; - overflow-x: auto; - line-height: 1.2em; -} -pre.code { color: #000; tab-size: 2; } -pre.code .info.file { color: #555; } -pre.code .val { color: #036A07; } -pre.code .tstring_content, -pre.code .heredoc_beg, pre.code .heredoc_end, -pre.code .qwords_beg, pre.code .qwords_end, -pre.code .tstring, pre.code .dstring { color: #036A07; } -pre.code .fid, pre.code .rubyid_new, pre.code .rubyid_to_s, -pre.code .rubyid_to_sym, pre.code .rubyid_to_f, -pre.code .dot + pre.code .id, -pre.code .rubyid_to_i pre.code .rubyid_each { color: #0085FF; } -pre.code .comment { color: #0066FF; } -pre.code .const, pre.code .constant { color: #585CF6; } -pre.code .label, -pre.code .symbol { color: #C5060B; } -pre.code .kw, -pre.code .rubyid_require, -pre.code .rubyid_extend, -pre.code .rubyid_include { color: #0000FF; } -pre.code .ivar { color: #318495; } -pre.code .gvar, -pre.code .rubyid_backref, -pre.code .rubyid_nth_ref { color: #6D79DE; } -pre.code .regexp, .dregexp { color: #036A07; } -pre.code a { border-bottom: 1px dotted #bbf; } diff --git a/doc/ruby/file.README.html b/doc/ruby/file.README.html deleted file mode 100644 index f5f0782..0000000 --- a/doc/ruby/file.README.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - File: README - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
      - - - - -
      -

      TopMovies

      - -

      TopMovies is a console application to manipulate the data from the list of -top 250 IMDB movies.

      - -

      Usage

      - -

      Installation

      - -

      $ gem install topmovies

      - -

      Before you can use all the features of the library you want to connect a -data file with movies

      - -
      file_name = ARGV[0] || '../lib/topmovies/data/movies.txt'
      -  if File.exist?(file_name)
      -    File.open(file_name)
      -  else
      -    puts 'Ошибка. Файл отсутствует!'
      -    exit
      -  end
      -
      - -

      MovieCollection

      - -

      MovieCollection, created in the application, allows you to extract data and -show filtered and sorted lists of movies, based on different criteria, also -it can display any statistics on films.

      - -
      # make collection of movies
      -  movies = TopMovies::MovieCollection.new(file_name)
      -  # => <TopMovies::MovieCollection:0x00000002ab6da8>
      -
      -  #show comedies
      -  movies.filter(genre: 'Comedy')
      -  # => <TopMovies::ModernMovie:0x00000002ff7038>
      -  # => <TopMovies::AncientMovie:0x00000002fdcaa8>
      -  # => <TopMovies::NewMovie:0x00000002fd5ca8>
      -  # => ...
      -
      -  # show sorted list movies by year
      -  movies.sort_by(:year)
      -  # => The Kid - 1921
      -  # => The Gold Rush - 1925
      -  # => The General - 1926
      -  # => Metropolis - 1927
      -  # =>  ...
      -
      -  # show count of movies maked each author
      -  movies.stats(:author)
      -  # => {"Adam Elliot"=>1, "Akira Kurosawa"=>6, "Alejandro González Iñárritu"=>1, ... }
      -
      -  # get first movie
      -  movie = movies.all.first
      -
      -  # number famous actors played in this movie
      -  movie.actors.count
      -  # => 3
      -
      -  # Arnold Shwarzenegger played in this movie
      -  movie.actors.include?('Arnold Shwarzenegger')
      -  # => false
      -
      - -

      Cinema

      - -

      Netflix and Theatre are cinemas based on MovieCollection have cashboxes -that can accept payments and sell tickets.

      - -
      Netflix
      - -
      # make online cinema Netflix
      -  online = TopMovies::Netflix.new(file_name)
      -  # => #<TopMovies::Netflix:0x000000021e0558>
      -
      -  # show newest Drama
      -  online.show(genre: 'Drama', period: :new)
      -  # => Downfall — новинка, вышло 12 лет назад!
      -
      -  # create component filter
      -  movies = online.show do |movie|
      -    !movie.title.include?('Terminator') && \
      -      movie.genre[0].include?('Action') && \
      -      movie.year > 2003
      -  end
      -  # genre of movies is Action and not have Terminator and newer 2003
      -  # => Elite Squad: The Enemy Within — новинка, вышло 6 лет назад!
      -
      -  # put cash to cashbox of Netflix
      -  online.pay(35)
      -  # => 35.00
      -
      - -
      Theatre
      - -
      # make usual cinema Theatre
      -  theatre =
      -    TopMovies::Theatre.new do
      -      hall :red, title: 'Красный зал', places: 100
      -      hall :blue, title: 'Синий зал', places: 50
      -      hall :green, title: 'Зелёный зал (deluxe)', places: 12
      -
      -      period '09:00'..'12:00' do
      -        description 'Утренний сеанс'
      -        filters genre: 'Comedy', year: 1900..1980
      -        price 10
      -        hall :red, :blue
      -      end
      -
      -      period '12:00'..'16:00' do
      -        description 'Спецпоказ'
      -        title 'The Terminator'
      -        price 50
      -        hall :green
      -      end
      -
      -      period '16:00'..'20:00' do
      -        description 'Вечерний сеанс'
      -        filters genre: %w(Action Drama), year: 2007..Time.now.year
      -        price 20
      -        hall :red, :blue
      -      end
      -
      -      period '19:00'..'22:00' do
      -        description 'Вечерний сеанс для киноманов'
      -        filters year: 1900..1945, exclude_country: 'USA'
      -        price 30
      -        hall :green
      -      end
      -  end
      -  # => <TopMovies::Netflix:0x000000011152a0>
      -
      -  # you can add period into Theatre
      -  theatre.period '21:00'..'23:00' do
      -    description 'Еще один сеанс'
      -    filters genre: 'Sci-Fi', year: 1900..1980
      -    price 13
      -    hall :red
      -  end
      -
      -  # you can buy a ticket
      -  theatre.buy_ticket('10:20')
      -  # => Утренний сеанс - 09:00..12:00 : Фильм: The Gold Rush - 10.00 ₴
      -  theatre.buy_ticket('13:20')
      -  # => Спецпоказ - 12:00..16:00 : Фильм: The Terminator - 50.00 ₴
      -  theatre.buy_ticket('17:20')
      -  # => Вечерний сеанс - 16:00..20:00 : Фильм: Interstellar - 20.00 ₴
      -  theatre.buy_ticket('19:20', hall: :green)
      -  # => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: The Maltese Falcon - 30.00 ₴
      -
      -  # if you want you can check the money in cashbox of Theatre
      -  theatre.cash
      -  # => 110.00
      -
      -  # yet you can spend cash collection into cashbox of Theatre
      -  theatre.take('Bank')
      -  # => Проведена инкассация
      -  # => 0.00
      -
      - -

      Additional info

      - -

      In addition, the application can get the budget for each film with IMDb -site, extract the posters and film title translation into other languages -with TMDB site, and renders html page with all the movies.

      - -
      # get the film's budget
      -  movie = movies.all[112]
      -  movie.budget
      -  # => $14,400,000
      -
      -  # get a poster for the film
      -  movie = movies.filter(title: 'Terminator')
      -  movie.poster
      -
      -
      -  # receive translations of the film in other language
      -  movie = movies.filter(title: '12 Angry Men')
      -  movie.translations
      -
      -  # create HTML markup
      -  movies.render_html
      -  # => html markup
      -
      - -

      Other methods for manipulating data list IMDB top 250 films described to -documentation

      - -

      Author

      - -

      Serhii Dmytrakov clamdm@mail.ru

      -
      - - - -
      - - \ No newline at end of file diff --git a/doc/ruby/file_list.html b/doc/ruby/file_list.html deleted file mode 100644 index f2b7288..0000000 --- a/doc/ruby/file_list.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - File List - - - -
      -
      -

      File List

      - - - -
      - - -
      - - diff --git a/doc/ruby/frames.html b/doc/ruby/frames.html deleted file mode 100644 index 1479606..0000000 --- a/doc/ruby/frames.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Documentation by YARD 0.9.5 - - - - diff --git a/doc/ruby/index.html b/doc/ruby/index.html deleted file mode 100644 index 4e6ee75..0000000 --- a/doc/ruby/index.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - File: README - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
      - - - - -
      -

      TopMovies

      - -

      TopMovies is a console application to manipulate the data from the list of -top 250 IMDB movies.

      - -

      Usage

      - -

      Installation

      - -

      $ gem install topmovies

      - -

      Before you can use all the features of the library you want to connect a -data file with movies

      - -
      file_name = ARGV[0] || '../lib/topmovies/data/movies.txt'
      -  if File.exist?(file_name)
      -    File.open(file_name)
      -  else
      -    puts 'Ошибка. Файл отсутствует!'
      -    exit
      -  end
      -
      - -

      MovieCollection

      - -

      MovieCollection, created in the application, allows you to extract data and -show filtered and sorted lists of movies, based on different criteria, also -it can display any statistics on films.

      - -
      # make collection of movies
      -  movies = TopMovies::MovieCollection.new(file_name)
      -  # => <TopMovies::MovieCollection:0x00000002ab6da8>
      -
      -  #show comedies
      -  movies.filter(genre: 'Comedy')
      -  # => <TopMovies::ModernMovie:0x00000002ff7038>
      -  # => <TopMovies::AncientMovie:0x00000002fdcaa8>
      -  # => <TopMovies::NewMovie:0x00000002fd5ca8>
      -  # => ...
      -
      -  # show sorted list movies by year
      -  movies.sort_by(:year)
      -  # => The Kid - 1921
      -  # => The Gold Rush - 1925
      -  # => The General - 1926
      -  # => Metropolis - 1927
      -  # =>  ...
      -
      -  # show count of movies maked each author
      -  movies.stats(:author)
      -  # => {"Adam Elliot"=>1, "Akira Kurosawa"=>6, "Alejandro González Iñárritu"=>1, ... }
      -
      -  # get first movie
      -  movie = movies.all.first
      -
      -  # number famous actors played in this movie
      -  movie.actors.count
      -  # => 3
      -
      -  # Arnold Shwarzenegger played in this movie
      -  movie.actors.include?('Arnold Shwarzenegger')
      -  # => false
      -
      - -

      Cinema

      - -

      Netflix and Theatre are cinemas based on MovieCollection have cashboxes -that can accept payments and sell tickets.

      - -
      Netflix
      - -
      # make online cinema Netflix
      -  online = TopMovies::Netflix.new(file_name)
      -  # => #<TopMovies::Netflix:0x000000021e0558>
      -
      -  # show newest Drama
      -  online.show(genre: 'Drama', period: :new)
      -  # => Downfall — новинка, вышло 12 лет назад!
      -
      -  # create component filter
      -  movies = online.show do |movie|
      -    !movie.title.include?('Terminator') && \
      -      movie.genre[0].include?('Action') && \
      -      movie.year > 2003
      -  end
      -  # genre of movies is Action and not have Terminator and newer 2003
      -  # => Elite Squad: The Enemy Within — новинка, вышло 6 лет назад!
      -
      -  # put cash to cashbox of Netflix
      -  online.pay(35)
      -  # => 35.00
      -
      - -
      Theatre
      - -
      # make usual cinema Theatre
      -  theatre =
      -    TopMovies::Theatre.new do
      -      hall :red, title: 'Красный зал', places: 100
      -      hall :blue, title: 'Синий зал', places: 50
      -      hall :green, title: 'Зелёный зал (deluxe)', places: 12
      -
      -      period '09:00'..'12:00' do
      -        description 'Утренний сеанс'
      -        filters genre: 'Comedy', year: 1900..1980
      -        price 10
      -        hall :red, :blue
      -      end
      -
      -      period '12:00'..'16:00' do
      -        description 'Спецпоказ'
      -        title 'The Terminator'
      -        price 50
      -        hall :green
      -      end
      -
      -      period '16:00'..'20:00' do
      -        description 'Вечерний сеанс'
      -        filters genre: %w(Action Drama), year: 2007..Time.now.year
      -        price 20
      -        hall :red, :blue
      -      end
      -
      -      period '19:00'..'22:00' do
      -        description 'Вечерний сеанс для киноманов'
      -        filters year: 1900..1945, exclude_country: 'USA'
      -        price 30
      -        hall :green
      -      end
      -  end
      -  # => <TopMovies::Netflix:0x000000011152a0>
      -
      -  # you can add period into Theatre
      -  theatre.period '21:00'..'23:00' do
      -    description 'Еще один сеанс'
      -    filters genre: 'Sci-Fi', year: 1900..1980
      -    price 13
      -    hall :red
      -  end
      -
      -  # you can buy a ticket
      -  theatre.buy_ticket('10:20')
      -  # => Утренний сеанс - 09:00..12:00 : Фильм: The Gold Rush - 10.00 ₴
      -  theatre.buy_ticket('13:20')
      -  # => Спецпоказ - 12:00..16:00 : Фильм: The Terminator - 50.00 ₴
      -  theatre.buy_ticket('17:20')
      -  # => Вечерний сеанс - 16:00..20:00 : Фильм: Interstellar - 20.00 ₴
      -  theatre.buy_ticket('19:20', hall: :green)
      -  # => Вечерний сеанс для киноманов - 19:00..22:00 : Фильм: The Maltese Falcon - 30.00 ₴
      -
      -  # if you want you can check the money in cashbox of Theatre
      -  theatre.cash
      -  # => 110.00
      -
      -  # yet you can spend cash collection into cashbox of Theatre
      -  theatre.take('Bank')
      -  # => Проведена инкассация
      -  # => 0.00
      -
      - -

      Additional info

      - -

      In addition, the application can get the budget for each film with IMDb -site, extract the posters and film title translation into other languages -with TMDB site, and renders html page with all the movies.

      - -
      # get the film's budget
      -  movie = movies.all[112]
      -  movie.budget
      -  # => $14,400,000
      -
      -  # get a poster for the film
      -  movie = movies.filter(title: 'Terminator')
      -  movie.poster
      -
      -
      -  # receive translations of the film in other language
      -  movie = movies.filter(title: '12 Angry Men')
      -  movie.translations
      -
      -  # create HTML markup
      -  movies.render_html
      -  # => html markup
      -
      - -

      Other methods for manipulating data list IMDB top 250 films described to -documentation

      - -

      Author

      - -

      Serhii Dmytrakov clamdm@mail.ru

      -
      - - - -
      - - \ No newline at end of file diff --git a/doc/ruby/js/app.js b/doc/ruby/js/app.js deleted file mode 100644 index c9d6aff..0000000 --- a/doc/ruby/js/app.js +++ /dev/null @@ -1,243 +0,0 @@ -(function() { - -var localStorage = {}, sessionStorage = {}; -try { localStorage = window.localStorage; } catch (e) { } -try { sessionStorage = window.sessionStorage; } catch (e) { } - -function createSourceLinks() { - $('.method_details_list .source_code'). - before("[View source]"); - $('.toggleSource').toggle(function() { - $(this).parent().nextAll('.source_code').slideDown(100); - $(this).text("Hide source"); - }, - function() { - $(this).parent().nextAll('.source_code').slideUp(100); - $(this).text("View source"); - }); -} - -function createDefineLinks() { - var tHeight = 0; - $('.defines').after(" more..."); - $('.toggleDefines').toggle(function() { - tHeight = $(this).parent().prev().height(); - $(this).prev().css('display', 'inline'); - $(this).parent().prev().height($(this).parent().height()); - $(this).text("(less)"); - }, - function() { - $(this).prev().hide(); - $(this).parent().prev().height(tHeight); - $(this).text("more..."); - }); -} - -function createFullTreeLinks() { - var tHeight = 0; - $('.inheritanceTree').toggle(function() { - tHeight = $(this).parent().prev().height(); - $(this).parent().toggleClass('showAll'); - $(this).text("(hide)"); - $(this).parent().prev().height($(this).parent().height()); - }, - function() { - $(this).parent().toggleClass('showAll'); - $(this).parent().prev().height(tHeight); - $(this).text("show all"); - }); -} - -function searchFrameButtons() { - $('.full_list_link').click(function() { - toggleSearchFrame(this, $(this).attr('href')); - return false; - }); - window.addEventListener('message', function(e) { - if (e.data === 'navEscape') { - $('#search_frame').slideUp(100); - $('#search a').removeClass('active inactive'); - $(window).focus(); - } - }); - - $(window).resize(function() { - if ($('#search:visible').length === 0) { - $('#search_frame').slideUp(100); - $('#search a').removeClass('active inactive'); - $(window).focus(); - } - }); -} - -function toggleSearchFrame(id, link) { - var frame = $('#search_frame'); - $('#search a').removeClass('active').addClass('inactive'); - if (frame.attr('src') === link && frame.css('display') !== "none") { - frame.slideUp(100); - $('#search a').removeClass('active inactive'); - } - else { - $(id).addClass('active').removeClass('inactive'); - if (frame.attr('src') !== link) frame.attr('src', link); - frame.slideDown(100); - } -} - -function linkSummaries() { - $('.summary_signature').click(function() { - document.location = $(this).find('a').attr('href'); - }); -} - -function summaryToggle() { - $('.summary_toggle').click(function(e) { - e.preventDefault(); - localStorage.summaryCollapsed = $(this).text(); - $('.summary_toggle').each(function() { - $(this).text($(this).text() == "collapse" ? "expand" : "collapse"); - var next = $(this).parent().parent().nextAll('ul.summary').first(); - if (next.hasClass('compact')) { - next.toggle(); - next.nextAll('ul.summary').first().toggle(); - } - else if (next.hasClass('summary')) { - var list = $('
        '); - list.html(next.html()); - list.find('.summary_desc, .note').remove(); - list.find('a').each(function() { - $(this).html($(this).find('strong').html()); - $(this).parent().html($(this)[0].outerHTML); - }); - next.before(list); - next.toggle(); - } - }); - return false; - }); - if (localStorage.summaryCollapsed == "collapse") { - $('.summary_toggle').first().click(); - } else { localStorage.summaryCollapsed = "expand"; } -} - -function generateTOC() { - if ($('#filecontents').length === 0) return; - var _toc = $('
          '); - var show = false; - var toc = _toc; - var counter = 0; - var tags = ['h2', 'h3', 'h4', 'h5', 'h6']; - var i; - if ($('#filecontents h1').length > 1) tags.unshift('h1'); - for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; } - var lastTag = parseInt(tags[0][1], 10); - $(tags.join(', ')).each(function() { - if ($(this).parents('.method_details .docstring').length != 0) return; - if (this.id == "filecontents") return; - show = true; - var thisTag = parseInt(this.tagName[1], 10); - if (this.id.length === 0) { - var proposedId = $(this).attr('toc-id'); - if (typeof(proposedId) != "undefined") this.id = proposedId; - else { - var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_'); - if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; } - this.id = proposedId; - } - } - if (thisTag > lastTag) { - for (i = 0; i < thisTag - lastTag; i++) { - var tmp = $('
            '); toc.append(tmp); toc = tmp; - } - } - if (thisTag < lastTag) { - for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent(); - } - var title = $(this).attr('toc-title'); - if (typeof(title) == "undefined") title = $(this).text(); - toc.append('
          1. ' + title + '
          2. '); - lastTag = thisTag; - }); - if (!show) return; - html = ''; - $('#content').prepend(html); - $('#toc').append(_toc); - $('#toc .hide_toc').toggle(function() { - $('#toc .top').slideUp('fast'); - $('#toc').toggleClass('hidden'); - $('#toc .title small').toggle(); - }, function() { - $('#toc .top').slideDown('fast'); - $('#toc').toggleClass('hidden'); - $('#toc .title small').toggle(); - }); -} - -function navResizeFn(e) { - if (e.which !== 1) { - navResizeFnStop(); - return; - } - - sessionStorage.navWidth = e.pageX.toString(); - $('.nav_wrap').css('width', e.pageX); - $('.nav_wrap').css('-ms-flex', 'inherit'); -} - -function navResizeFnStop() { - $(window).unbind('mousemove', navResizeFn); - window.removeEventListener('message', navMessageFn, false); -} - -function navMessageFn(e) { - if (e.data.action === 'mousemove') navResizeFn(e.data.event); - if (e.data.action === 'mouseup') navResizeFnStop(); -} - -function navResizer() { - $('#resizer').mousedown(function(e) { - e.preventDefault(); - $(window).mousemove(navResizeFn); - window.addEventListener('message', navMessageFn, false); - }); - $(window).mouseup(navResizeFnStop); - - if (sessionStorage.navWidth) { - navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)}); - } -} - -function navExpander() { - var done = false, timer = setTimeout(postMessage, 500); - function postMessage() { - if (done) return; - clearTimeout(timer); - var opts = { action: 'expand', path: pathId }; - document.getElementById('nav').contentWindow.postMessage(opts, '*'); - done = true; - } - - window.addEventListener('message', function(event) { - if (event.data === 'navReady') postMessage(); - return false; - }, false); -} - -function mainFocus() { - $('#main')[0].focus(); -} - -$(document).ready(function() { - navResizer(); - navExpander(); - createSourceLinks(); - createDefineLinks(); - createFullTreeLinks(); - searchFrameButtons(); - linkSummaries(); - summaryToggle(); - generateTOC(); - mainFocus(); -}); - -})(); diff --git a/doc/ruby/js/full_list.js b/doc/ruby/js/full_list.js deleted file mode 100644 index 59069c5..0000000 --- a/doc/ruby/js/full_list.js +++ /dev/null @@ -1,216 +0,0 @@ -(function() { - -var $clicked = $(null); -var searchTimeout = null; -var searchCache = []; -var caseSensitiveMatch = false; -var ignoreKeyCodeMin = 8; -var ignoreKeyCodeMax = 46; -var commandKey = 91; - -RegExp.escape = function(text) { - return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); -} - -function escapeShortcut() { - $(document).keydown(function(evt) { - if (evt.which == 27) { - window.parent.postMessage('navEscape', '*'); - } - }); -} - -function navResizer() { - $(window).mousemove(function(e) { - window.parent.postMessage({ - action: 'mousemove', event: {pageX: e.pageX, which: e.which} - }, '*'); - }).mouseup(function(e) { - window.parent.postMessage({action: 'mouseup'}, '*'); - }); - window.parent.postMessage("navReady", "*"); -} - -function clearSearchTimeout() { - clearTimeout(searchTimeout); - searchTimeout = null; -} - -function enableLinks() { - // load the target page in the parent window - $('#full_list li').on('click', function(evt) { - $('#full_list li').removeClass('clicked'); - $clicked = $(this); - $clicked.addClass('clicked'); - evt.stopPropagation(); - - if (evt.target.tagName === 'A') return true; - - var elem = $clicked.find('> .item .object_link a')[0]; - var e = evt.originalEvent; - var newEvent = new MouseEvent(evt.originalEvent.type); - newEvent.initMouseEvent(e.type, e.canBubble, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget); - elem.dispatchEvent(newEvent); - evt.preventDefault(); - return false; - }); -} - -function enableToggles() { - // show/hide nested classes on toggle click - $('#full_list a.toggle').on('click', function(evt) { - evt.stopPropagation(); - evt.preventDefault(); - $(this).parent().parent().toggleClass('collapsed'); - highlight(); - }); -} - -function populateSearchCache() { - $('#full_list li .item').each(function() { - var $node = $(this); - var $link = $node.find('.object_link a'); - if ($link.length > 0) { - searchCache.push({ - node: $node, - link: $link, - name: $link.text(), - fullName: $link.attr('title').split(' ')[0] - }); - } - }); -} - -function enableSearch() { - $('#search input').keyup(function(event) { - if (ignoredKeyPress(event)) return; - if (this.value === "") { - clearSearch(); - } else { - performSearch(this.value); - } - }); - - $('#full_list').after(""); -} - -function ignoredKeyPress(event) { - if ( - (event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax) || - (event.keyCode == commandKey) - ) { - return true; - } else { - return false; - } -} - -function clearSearch() { - clearSearchTimeout(); - $('#full_list .found').removeClass('found').each(function() { - var $link = $(this).find('.object_link a'); - $link.text($link.text()); - }); - $('#full_list, #content').removeClass('insearch'); - $clicked.parents().removeClass('collapsed'); - highlight(); -} - -function performSearch(searchString) { - clearSearchTimeout(); - $('#full_list, #content').addClass('insearch'); - $('#noresults').text('').hide(); - partialSearch(searchString, 0); -} - -function partialSearch(searchString, offset) { - var lastRowClass = ''; - var i = null; - for (i = offset; i < Math.min(offset + 50, searchCache.length); i++) { - var item = searchCache[i]; - var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name); - var matchString = buildMatchString(searchString); - var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i"); - if (searchName.match(matchRegexp) == null) { - item.node.removeClass('found'); - item.link.text(item.link.text()); - } - else { - item.node.addClass('found'); - item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1'); - lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2'; - item.link.html(item.name.replace(matchRegexp, "$&")); - } - } - if(i == searchCache.length) { - searchDone(); - } else { - searchTimeout = setTimeout(function() { - partialSearch(searchString, i); - }, 0); - } -} - -function searchDone() { - searchTimeout = null; - highlight(); - if ($('#full_list li:visible').size() === 0) { - $('#noresults').text('No results were found.').hide().fadeIn(); - } else { - $('#noresults').text('').hide(); - } - $('#content').removeClass('insearch'); -} - -function buildMatchString(searchString, event) { - caseSensitiveMatch = searchString.match(/[A-Z]/) != null; - var regexSearchString = RegExp.escape(searchString); - if (caseSensitiveMatch) { - regexSearchString += "|" + - $.map(searchString.split(''), function(e) { return RegExp.escape(e); }). - join('.+?'); - } - return regexSearchString; -} - -function highlight() { - $('#full_list li:visible').each(function(n) { - $(this).removeClass('even odd').addClass(n % 2 == 0 ? 'odd' : 'even'); - }); -} - -/** - * Expands the tree to the target element and its immediate - * children. - */ -function expandTo(path) { - var $target = $(document.getElementById('object_' + path)); - $target.addClass('clicked'); - $target.removeClass('collapsed'); - $target.parentsUntil('#full_list', 'li').removeClass('collapsed'); - if($target[0]) { - window.scrollTo(window.scrollX, $target.offset().top - 250); - highlight(); - } -} - -function windowEvents(event) { - var msg = event.data; - if (msg.action === "expand") { - expandTo(msg.path); - } - return false; -} - -window.addEventListener("message", windowEvents, false); - -$(document).ready(function() { - escapeShortcut(); - navResizer(); - enableLinks(); - enableToggles(); - populateSearchCache(); - enableSearch(); -}); - -})(); diff --git a/doc/ruby/js/jquery.js b/doc/ruby/js/jquery.js deleted file mode 100644 index 198b3ff..0000000 --- a/doc/ruby/js/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
      a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
      "+""+"
      ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
      t
      ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
      ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/
      ","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
      ","
      "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
      ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/doc/ruby/method_list.html b/doc/ruby/method_list.html deleted file mode 100644 index 4e44093..0000000 --- a/doc/ruby/method_list.html +++ /dev/null @@ -1,803 +0,0 @@ - - - - - - - - - - - - - - - - - - Method List - - - -
      -
      -

      Method List

      - - - -
      - - -
      - - diff --git a/doc/ruby/top-level-namespace.html b/doc/ruby/top-level-namespace.html deleted file mode 100644 index b03ce89..0000000 --- a/doc/ruby/top-level-namespace.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - Top Level Namespace - - — Documentation by YARD 0.9.5 - - - - - - - - - - - - - - - - - - - -
      - - - - -

      Top Level Namespace - - - -

      -
      - - - - - - - - - - - -
      - -

      Defined Under Namespace

      -

      - - - Modules: CashBox, TopMovies - - - - -

      - - - - - - - - - -
      - - - -
      - - \ No newline at end of file From ef794f8972bb3d7f25d258a2ed9f2cf59dfc529b Mon Sep 17 00:00:00 2001 From: devico Date: Mon, 24 Oct 2016 22:39:36 +0300 Subject: [PATCH 21/26] =?UTF-8?q?=D0=B2=D0=BD=D0=B5=D1=81=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- lib/topmovies/netflix.rb | 10 +++++----- lib/topmovies/theatre.rb | 11 +++++++++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 1b72c73..19b7be2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /.yardoc/ -/doc/ruby/ +/doc/ \ No newline at end of file diff --git a/lib/topmovies/netflix.rb b/lib/topmovies/netflix.rb index 816809d..1f179bd 100644 --- a/lib/topmovies/netflix.rb +++ b/lib/topmovies/netflix.rb @@ -29,9 +29,9 @@ def make_payment(movie) # Define a new filter based on an existing filter # @note called from #show # @param filter_name [Symbol] name new filter - # @param from: [Symbol] name existing filter - # @param arg: [Array] value property of the movie, that define in existing filter - # @param &block [Proc] code block containing the filter condition + # @param from [Symbol] name existing filter + # @param arg [Array] value property of the movie, that define in existing filter + # @param blk [Proc] code block containing the filter condition # @return [Hash] @filter # @example # define_filter(:new_sci_fi) { |movie, year| movie.year > year } @@ -61,7 +61,7 @@ def parse_filters(filters) # Get movie that will show # @note called from #show # @param filters [Hash] filters for the selection of the movie represents as hash - # @param &block [Proc] filters for the selection of the movie represents as block + # @param block [Proc] filters for the selection of the movie represents as block # @return [Movie] movie satisfying all filters # @example # filter_movie(new_sci_fi: true) @@ -78,7 +78,7 @@ def filter_movie(filters, &block) # Get array movies # @note called when into #show send block # @param movies [MovieCollection] movies collection - # @param &block [Proc] it filter represents as block + # @param block [Proc] it filter represents as block # @return [Array] array movies # @example # find_by_block(movies, &block) diff --git a/lib/topmovies/theatre.rb b/lib/topmovies/theatre.rb index 16d9c16..e5e7654 100644 --- a/lib/topmovies/theatre.rb +++ b/lib/topmovies/theatre.rb @@ -15,6 +15,9 @@ def initialize(&block) end # Add hall to Theatre + # @note called when created Theatre + # Hall is the place showing of the movie and will be used + # in the methods of adding periods and buy tickets # @param name [Symbol] name hall # @param description [Hash] description hall (title, places) # @return [Hash] @halls @@ -25,8 +28,12 @@ def hall(name, description) end # Add period to Theatre + # @note called when created Theatre + # Period this is schedule, which indicates the hall and time for show movie, + # presence of filters and the cost of tickets, used used when displaying movies + # and buying tickets # @param name [Range] name period - # @param &block [Proc] data period(description, filters, price, hall) + # @param block [Proc] data period(description, filters, price, hall) # @return [Hash] @periods # @example # period '09:00'..'12:00' do @@ -107,7 +114,7 @@ def filters_to_hash(filters) end # Buy a ticket to a movie at a certain time, you can specify the hall - # @param time [String] show time + # @param time_show [String] show time # @param hall [Hash] name hall # @return [String] # @example From 64ccd821de40239b78bc0498bd17b6544afd873c Mon Sep 17 00:00:00 2001 From: devico Date: Wed, 26 Oct 2016 05:46:03 +0300 Subject: [PATCH 22/26] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F=D0=B5=D0=BC=D1=8B?= =?UTF-8?q?=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B2=20=D0=BF=D0=B0=D0=BF?= =?UTF-8?q?=D0=BA=D0=B5=20bin/=20,=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= =?UTF-8?q?=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/netflix | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 bin/netflix diff --git a/bin/netflix b/bin/netflix new file mode 100755 index 0000000..28c00f4 --- /dev/null +++ b/bin/netflix @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +require "thor" +require_relative '../lib/topmovies/movie' +require_relative '../lib/topmovies/ancient_movie' +require_relative '../lib/topmovies/classic_movie' +require_relative '../lib/topmovies/modern_movie' +require_relative '../lib/topmovies/new_movie' +require_relative '../lib/topmovies/movie_collection' +require_relative '../lib/topmovies/netflix' + +class MyCLI < Thor + online = TopMovies::Netflix.new('lib/topmovies/data/movies.txt') + desc "Preview Movie", "say hello to NAME" + option :pay, :required => true + option :show, :required => true + show_arg = ARGV[3].split(':') + filter = { show_arg[0].to_sym => show_arg[1] } + puts online.pay(ARGV[1].to_i) + puts online.show(filter) +end + +MyCLI.start(ARGV) From 357d4fa47760f155a4acb267c1582be4ca793219 Mon Sep 17 00:00:00 2001 From: devico Date: Thu, 27 Oct 2016 22:56:28 +0300 Subject: [PATCH 23/26] =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20bundler,=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB=20bin/netfl?= =?UTF-8?q?ix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 14 ++++++++ Gemfile.lock | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ bin/netflix | 18 +++++----- 3 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 Gemfile create mode 100644 Gemfile.lock diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..90f133d --- /dev/null +++ b/Gemfile @@ -0,0 +1,14 @@ +# frozen_string_literal: true +source "https://rubygems.org" + +gem 'rspec', :require => 'spec' +gem 'money' +gem 'rubocop' +gem 'virtus' +gem 'nokogiri' +gem 'webmock' +gem 'vcr' +gem 'themoviedb' +gem 'haml' +gem 'yard' +gem 'thor' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..7396f7c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,93 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.4.0) + ast (2.3.0) + axiom-types (0.1.1) + descendants_tracker (~> 0.0.4) + ice_nine (~> 0.11.0) + thread_safe (~> 0.3, >= 0.3.1) + coercible (1.0.0) + descendants_tracker (~> 0.0.1) + crack (0.4.3) + safe_yaml (~> 1.0.0) + descendants_tracker (0.0.4) + thread_safe (~> 0.3, >= 0.3.1) + diff-lcs (1.2.5) + equalizer (0.0.11) + haml (4.0.7) + tilt + hashdiff (0.3.0) + httparty (0.14.0) + multi_xml (>= 0.5.2) + i18n (0.7.0) + ice_nine (0.11.2) + mini_portile2 (2.1.0) + money (6.7.1) + i18n (>= 0.6.4, <= 0.7.0) + sixarm_ruby_unaccent (>= 1.1.1, < 2) + multi_xml (0.5.5) + nokogiri (1.6.8.1) + mini_portile2 (~> 2.1.0) + parser (2.3.1.4) + ast (~> 2.2) + powerpack (0.1.1) + rainbow (2.1.0) + rspec (3.5.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-core (3.5.4) + rspec-support (~> 3.5.0) + rspec-expectations (3.5.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.5.0) + rspec-mocks (3.5.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.5.0) + rspec-support (3.5.0) + rubocop (0.44.1) + parser (>= 2.3.1.1, < 3.0) + powerpack (~> 0.1) + rainbow (>= 1.99.1, < 3.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + ruby-progressbar (1.8.1) + safe_yaml (1.0.4) + sixarm_ruby_unaccent (1.1.1) + themoviedb (1.0.1) + httparty + thor (0.19.1) + thread_safe (0.3.5) + tilt (2.0.5) + unicode-display_width (1.1.1) + vcr (3.0.3) + virtus (1.0.5) + axiom-types (~> 0.1) + coercible (~> 1.0) + descendants_tracker (~> 0.0, >= 0.0.3) + equalizer (~> 0.0, >= 0.0.9) + webmock (2.1.0) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff + yard (0.9.5) + +PLATFORMS + ruby + +DEPENDENCIES + haml + money + nokogiri + rspec + rubocop + themoviedb + thor + vcr + virtus + webmock + yard + +BUNDLED WITH + 1.13.6 diff --git a/bin/netflix b/bin/netflix index 28c00f4..1b94331 100755 --- a/bin/netflix +++ b/bin/netflix @@ -9,14 +9,14 @@ require_relative '../lib/topmovies/movie_collection' require_relative '../lib/topmovies/netflix' class MyCLI < Thor - online = TopMovies::Netflix.new('lib/topmovies/data/movies.txt') - desc "Preview Movie", "say hello to NAME" - option :pay, :required => true - option :show, :required => true - show_arg = ARGV[3].split(':') - filter = { show_arg[0].to_sym => show_arg[1] } - puts online.pay(ARGV[1].to_i) - puts online.show(filter) + desc "Preview Movie", "pay to show movie" + option :pay, :type => :numeric, :required => true + option :show, :type => :hash, :required => true + def netflix + online = TopMovies::Netflix.new('lib/topmovies/data/movies.txt') + puts online.pay(options[:pay]) if options[:pay] + puts online.show(options[:show]) if options[:show] + end end -MyCLI.start(ARGV) +MyCLI.start From cd29b8cbb42d0632981311418359a612964f4178 Mon Sep 17 00:00:00 2001 From: devico Date: Fri, 28 Oct 2016 14:28:02 +0300 Subject: [PATCH 24/26] =?UTF-8?q?bin/netflix=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80?= =?UTF-8?q?=20year?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/topmovies/movie.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/topmovies/movie.rb b/lib/topmovies/movie.rb index 44b8e58..9e7398d 100644 --- a/lib/topmovies/movie.rb +++ b/lib/topmovies/movie.rb @@ -53,7 +53,11 @@ def match?(filter_name, filter_value) end else # rubocop:disable CaseEquality - filter_value === value + if value.is_a?(Fixnum) + filter_value.to_i === value + else + filter_value === value + end # rubocop:enable CaseEquality end end From 4eccade570805a35782bf6826b0469e83d3af24e Mon Sep 17 00:00:00 2001 From: devico Date: Fri, 28 Oct 2016 16:17:20 +0300 Subject: [PATCH 25/26] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8E=20=D0=BE=D0=B1=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D1=8F=D0=B5=D0=BC=D0=BE=D0=BC=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B5?= =?UTF-8?q?=20=D0=B2=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index b3e8b54..2ed6ad7 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,21 @@ MovieCollection, created in the application, allows you to extract data and show # => html markup ``` +####Run library from CLI + + There is an executable file (bin/netflix), which can be run from the command line +  passing it parameters, and receive the filtered data. + +```ruby + # run + $ bin/netflix netflix --pay 25 --show genre:Comedy + # => 25.00 + # => The General — старый фильм (1926 год) + $ bin/netflix netflix --pay 25 --show year:1988 + # => 25.00 + # => The General — старый фильм (1926 год) +``` + Other methods for manipulating data list IMDB top 250 films described to documentation Author From fac36650f7fc51cce076dcfdf02a3ccc9c1488b2 Mon Sep 17 00:00:00 2001 From: devico Date: Fri, 28 Oct 2016 20:29:45 +0300 Subject: [PATCH 26/26] =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=20.gemspec=20=D0=B8=20=D1=81=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BB=20gem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- topmovies-0.1.0.gem | Bin 0 -> 4096 bytes topmovies.gemspec | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 topmovies-0.1.0.gem create mode 100644 topmovies.gemspec diff --git a/topmovies-0.1.0.gem b/topmovies-0.1.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..0b97662405025906fc0242b143e0cdb248ad0a7c GIT binary patch literal 4096 zcmc~zElEsCEJ@T$uVSDTFaQD*6B7my4Fu@4fw`d>gP}1{jX4mRm@^m{8k?9JFen(% z%0bBHmKK*J76F}9o{^fGgDio@CL|B>8^UvF+6OCFzMF&Ld8cp$6Z6qv-~1~E0(*al z^X&aH#boy)jz}iO5Khrd{Vk6eRw*5y>D%^;`*vh$>yP(6lm9X_RvqmW>HnK{@62q^ z(9jP`es}+!D!(6){*!U-lyXMXT+h`$_c)j9c%86|*stu9)Nc53=b!e+&!2iR%yIDD zyGmNH=Tx-(+LlMkSEjhjPZklqlPJ^q;Mlw3kp8;xcQr@e3%jO?%I=)Eh~*zwui^Hp zkRyrv?K$m{DDOp5AWKil!3`-S0x*B3MWY6}l9QEs(KFMoeHZ5@|J zBUj^Tmen$?ox*M>l$#b#Ihfzguwh@`gRG@T%8zM&fPZA^ zGlx!p$=HdHQ{1i|yZ5@x+x^U@WJjLT@H1ECG?LWa@(oukJdx;8yo7bf&b{Jdo0DXx zw8-1Le$d?hBq;3I7O~){nlvSQ@jU^uS8|(AJ)Zcf;>Px+j&F@^|7~H=-F2q6FTLBD zG2~Cop4#Grx07tll~U(c=*>QDA1rZU+5cI`gtD)7&#kOr57YT&$An3W$zMTBPDY7Jekzn=YYwQ2XnSK3F1d5+^M^lJABfi@jX+j zLNuqSg>Ia_R)5N+x)RNrQ_UMW5AU(I{KR|r`+bx5>03_3{rOOEGWb~B`+4);fA4=Y zEi~Y>lvdZe#VM&k@bvx%RtARu|Ct$f%FkhE;375DhL8H>jMU`p;?mq=y~@Pg9NLru zpsEpH{cmDugqHtJ%nZy&^FKXO86y9u251K{JMet9b=410oBe(nU;A?wPqXer2BCB2 z=?aCo-1}d)JNDlFxZ{6|_SSt<4zqdm^zrXHUf*2fP{x$&S?g|Xb=Y)x<&KOWLW>Xo zerogR_4Ma5ZMNoqiXI0SI4~T2WIORxTlm&6o7mI`_VN6N{c=TplihZ_k$A&g>VG

      2_sk`m|u7Y@47b@2w37&0k+R z`fYoES;orUOMV2cRyHnB;lJ28Ave-eS)p@Qv_Z0^X;)$O{40|mPC3XrPttI@lQAFb z#*HR^Qnl08+}*VB+!3$W3cDn3yxOC0KY`8Q%OXa4g!QN$qaiRF0;3@?m_h&m6iFj3 literal 0 HcmV?d00001 diff --git a/topmovies.gemspec b/topmovies.gemspec new file mode 100644 index 0000000..c9b28fa --- /dev/null +++ b/topmovies.gemspec @@ -0,0 +1,11 @@ +Gem::Specification.new do |s| + s.name = 'topmovies' + s.version = '0.1.0' + s.date = '2016-10-28' + s.licenses = ['MIT'] + s.summary = "Juggle data of movies." + s.description = "TopMovies is app to manipulate the list of top 250 IMDB movies." + s.author = 'Serhii Dmytrakov' + s.email = 'clamdm@mail.ru' + s.files = ["lib/top_movies.rb"] +end \ No newline at end of file