facets 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ANN +53 -0
- data/ChangeLog +50 -0
- data/LICENSE-GPL +341 -0
- data/LICENSE-RUBY +60 -0
- data/README +130 -0
- data/Reapfile +74 -0
- data/TODO +42 -0
- data/VERSION +7 -0
- data/doc/classes/Array.html +1267 -0
- data/doc/classes/Array.src/M000027.html +19 -0
- data/doc/classes/Array.src/M000028.html +23 -0
- data/doc/classes/Array.src/M000029.html +18 -0
- data/doc/classes/Array.src/M000030.html +18 -0
- data/doc/classes/Array.src/M000031.html +18 -0
- data/doc/classes/Array.src/M000032.html +18 -0
- data/doc/classes/Array.src/M000033.html +18 -0
- data/doc/classes/Array.src/M000034.html +18 -0
- data/doc/classes/Array.src/M000035.html +18 -0
- data/doc/classes/Array.src/M000036.html +20 -0
- data/doc/classes/Array.src/M000037.html +31 -0
- data/doc/classes/Array.src/M000038.html +19 -0
- data/doc/classes/Array.src/M000039.html +24 -0
- data/doc/classes/Array.src/M000040.html +23 -0
- data/doc/classes/Array.src/M000041.html +31 -0
- data/doc/classes/Array.src/M000042.html +27 -0
- data/doc/classes/Array.src/M000044.html +22 -0
- data/doc/classes/Array.src/M000046.html +20 -0
- data/doc/classes/Array.src/M000047.html +18 -0
- data/doc/classes/Array.src/M000048.html +24 -0
- data/doc/classes/Array.src/M000049.html +19 -0
- data/doc/classes/Array.src/M000050.html +24 -0
- data/doc/classes/Array.src/M000051.html +22 -0
- data/doc/classes/Array.src/M000052.html +18 -0
- data/doc/classes/Array.src/M000053.html +25 -0
- data/doc/classes/Array.src/M000054.html +19 -0
- data/doc/classes/Array.src/M000055.html +26 -0
- data/doc/classes/Array.src/M000056.html +19 -0
- data/doc/classes/Array.src/M000057.html +28 -0
- data/doc/classes/Array.src/M000058.html +21 -0
- data/doc/classes/Array.src/M000059.html +18 -0
- data/doc/classes/Array.src/M000061.html +23 -0
- data/doc/classes/Binding.html +420 -0
- data/doc/classes/Binding.src/M000202.html +19 -0
- data/doc/classes/Binding.src/M000203.html +22 -0
- data/doc/classes/Binding.src/M000204.html +19 -0
- data/doc/classes/Binding.src/M000205.html +19 -0
- data/doc/classes/Binding.src/M000206.html +18 -0
- data/doc/classes/Binding.src/M000207.html +18 -0
- data/doc/classes/Binding.src/M000208.html +18 -0
- data/doc/classes/Binding.src/M000209.html +18 -0
- data/doc/classes/Binding.src/M000210.html +18 -0
- data/doc/classes/Binding.src/M000211.html +18 -0
- data/doc/classes/Binding.src/M000212.html +18 -0
- data/doc/classes/Binding.src/M000213.html +27 -0
- data/doc/classes/Binding.src/M000214.html +22 -0
- data/doc/classes/Class.html +216 -0
- data/doc/classes/Class.src/M000184.html +20 -0
- data/doc/classes/Class.src/M000185.html +20 -0
- data/doc/classes/Class.src/M000186.html +19 -0
- data/doc/classes/Comparable.html +190 -0
- data/doc/classes/Comparable.src/M000366.html +20 -0
- data/doc/classes/Comparable.src/M000367.html +18 -0
- data/doc/classes/Comparable.src/M000368.html +18 -0
- data/doc/classes/Continuation.html +188 -0
- data/doc/classes/Continuation.src/M000126.html +21 -0
- data/doc/classes/Enumerable.html +648 -0
- data/doc/classes/Enumerable.src/M000345.html +22 -0
- data/doc/classes/Enumerable.src/M000346.html +18 -0
- data/doc/classes/Enumerable.src/M000347.html +26 -0
- data/doc/classes/Enumerable.src/M000349.html +18 -0
- data/doc/classes/Enumerable.src/M000351.html +23 -0
- data/doc/classes/Enumerable.src/M000352.html +22 -0
- data/doc/classes/Enumerable.src/M000356.html +31 -0
- data/doc/classes/Enumerable.src/M000359.html +29 -0
- data/doc/classes/Enumerable.src/M000360.html +34 -0
- data/doc/classes/Enumerable.src/M000362.html +20 -0
- data/doc/classes/Enumerable.src/M000363.html +18 -0
- data/doc/classes/Enumerable.src/M000364.html +48 -0
- data/doc/classes/Enumerable.src/M000365.html +18 -0
- data/doc/classes/File.html +149 -0
- data/doc/classes/File.src/M000326.html +21 -0
- data/doc/classes/FileUtils.html +332 -0
- data/doc/classes/FileUtils.src/M000327.html +59 -0
- data/doc/classes/FileUtils.src/M000328.html +28 -0
- data/doc/classes/FileUtils.src/M000329.html +18 -0
- data/doc/classes/FileUtils.src/M000330.html +18 -0
- data/doc/classes/FileUtils.src/M000331.html +46 -0
- data/doc/classes/FileUtils.src/M000332.html +27 -0
- data/doc/classes/FileUtils.src/M000333.html +55 -0
- data/doc/classes/Float.html +180 -0
- data/doc/classes/Float.src/M000181.html +18 -0
- data/doc/classes/Float.src/M000182.html +19 -0
- data/doc/classes/Float.src/M000183.html +19 -0
- data/doc/classes/Functor.html +190 -0
- data/doc/classes/Functor.src/M000195.html +16 -0
- data/doc/classes/Functor.src/M000196.html +16 -0
- data/doc/classes/Functor.src/M000197.html +16 -0
- data/doc/classes/Functor.src/M000198.html +16 -0
- data/doc/classes/Hash.html +1319 -0
- data/doc/classes/Hash.src/M000063.html +20 -0
- data/doc/classes/Hash.src/M000064.html +18 -0
- data/doc/classes/Hash.src/M000065.html +22 -0
- data/doc/classes/Hash.src/M000066.html +23 -0
- data/doc/classes/Hash.src/M000067.html +21 -0
- data/doc/classes/Hash.src/M000068.html +25 -0
- data/doc/classes/Hash.src/M000069.html +18 -0
- data/doc/classes/Hash.src/M000070.html +22 -0
- data/doc/classes/Hash.src/M000071.html +20 -0
- data/doc/classes/Hash.src/M000072.html +26 -0
- data/doc/classes/Hash.src/M000073.html +19 -0
- data/doc/classes/Hash.src/M000074.html +19 -0
- data/doc/classes/Hash.src/M000075.html +24 -0
- data/doc/classes/Hash.src/M000078.html +18 -0
- data/doc/classes/Hash.src/M000080.html +20 -0
- data/doc/classes/Hash.src/M000083.html +18 -0
- data/doc/classes/Hash.src/M000084.html +20 -0
- data/doc/classes/Hash.src/M000086.html +19 -0
- data/doc/classes/Hash.src/M000087.html +20 -0
- data/doc/classes/Hash.src/M000089.html +16 -0
- data/doc/classes/Hash.src/M000090.html +19 -0
- data/doc/classes/Hash.src/M000091.html +22 -0
- data/doc/classes/Hash.src/M000092.html +18 -0
- data/doc/classes/Hash.src/M000093.html +18 -0
- data/doc/classes/Hash.src/M000094.html +20 -0
- data/doc/classes/Hash.src/M000095.html +19 -0
- data/doc/classes/Hash.src/M000096.html +19 -0
- data/doc/classes/Hash.src/M000097.html +19 -0
- data/doc/classes/Hash.src/M000098.html +18 -0
- data/doc/classes/Hash.src/M000099.html +18 -0
- data/doc/classes/Hash.src/M000100.html +19 -0
- data/doc/classes/Hash.src/M000101.html +24 -0
- data/doc/classes/Hash.src/M000104.html +55 -0
- data/doc/classes/Hash.src/M000105.html +19 -0
- data/doc/classes/Hash.src/M000106.html +19 -0
- data/doc/classes/Integer.html +248 -0
- data/doc/classes/Integer.src/M000007.html +19 -0
- data/doc/classes/Integer.src/M000008.html +18 -0
- data/doc/classes/Integer.src/M000009.html +18 -0
- data/doc/classes/Integer.src/M000010.html +21 -0
- data/doc/classes/Kernel.html +520 -0
- data/doc/classes/Kernel.src/M000334.html +27 -0
- data/doc/classes/Kernel.src/M000335.html +18 -0
- data/doc/classes/Kernel.src/M000336.html +18 -0
- data/doc/classes/Kernel.src/M000337.html +18 -0
- data/doc/classes/Kernel.src/M000338.html +24 -0
- data/doc/classes/Kernel.src/M000339.html +19 -0
- data/doc/classes/Kernel.src/M000340.html +22 -0
- data/doc/classes/Kernel.src/M000341.html +20 -0
- data/doc/classes/Kernel.src/M000342.html +19 -0
- data/doc/classes/Kernel.src/M000343.html +21 -0
- data/doc/classes/Kernel.src/M000344.html +18 -0
- data/doc/classes/MatchData.html +208 -0
- data/doc/classes/MatchData.src/M000107.html +21 -0
- data/doc/classes/MatchData.src/M000108.html +21 -0
- data/doc/classes/MatchData.src/M000109.html +18 -0
- data/doc/classes/Module.html +648 -0
- data/doc/classes/Module.src/M000112.html +32 -0
- data/doc/classes/Module.src/M000114.html +24 -0
- data/doc/classes/Module.src/M000115.html +41 -0
- data/doc/classes/Module.src/M000116.html +18 -0
- data/doc/classes/Module.src/M000117.html +20 -0
- data/doc/classes/Module.src/M000118.html +19 -0
- data/doc/classes/Module.src/M000119.html +20 -0
- data/doc/classes/Module.src/M000120.html +21 -0
- data/doc/classes/Module.src/M000122.html +23 -0
- data/doc/classes/Module.src/M000123.html +24 -0
- data/doc/classes/Module.src/M000124.html +20 -0
- data/doc/classes/Module.src/M000125.html +29 -0
- data/doc/classes/NilClass.html +336 -0
- data/doc/classes/NilClass.src/M000187.html +18 -0
- data/doc/classes/NilClass.src/M000188.html +16 -0
- data/doc/classes/NilClass.src/M000189.html +16 -0
- data/doc/classes/NilClass.src/M000190.html +16 -0
- data/doc/classes/NilClass.src/M000191.html +16 -0
- data/doc/classes/NilClass.src/M000192.html +16 -0
- data/doc/classes/NilClass.src/M000193.html +16 -0
- data/doc/classes/NilClass.src/M000194.html +16 -0
- data/doc/classes/Numeric.html +1122 -0
- data/doc/classes/Numeric.src/M000127.html +18 -0
- data/doc/classes/Numeric.src/M000128.html +18 -0
- data/doc/classes/Numeric.src/M000129.html +18 -0
- data/doc/classes/Numeric.src/M000130.html +29 -0
- data/doc/classes/Numeric.src/M000131.html +18 -0
- data/doc/classes/Numeric.src/M000132.html +18 -0
- data/doc/classes/Numeric.src/M000133.html +18 -0
- data/doc/classes/Numeric.src/M000135.html +18 -0
- data/doc/classes/Numeric.src/M000138.html +18 -0
- data/doc/classes/Numeric.src/M000141.html +18 -0
- data/doc/classes/Numeric.src/M000144.html +18 -0
- data/doc/classes/Numeric.src/M000147.html +19 -0
- data/doc/classes/Numeric.src/M000148.html +19 -0
- data/doc/classes/Numeric.src/M000149.html +18 -0
- data/doc/classes/Numeric.src/M000150.html +18 -0
- data/doc/classes/Numeric.src/M000151.html +18 -0
- data/doc/classes/Numeric.src/M000153.html +18 -0
- data/doc/classes/Numeric.src/M000155.html +18 -0
- data/doc/classes/Numeric.src/M000157.html +18 -0
- data/doc/classes/Numeric.src/M000159.html +18 -0
- data/doc/classes/Numeric.src/M000161.html +18 -0
- data/doc/classes/Numeric.src/M000163.html +18 -0
- data/doc/classes/Numeric.src/M000165.html +18 -0
- data/doc/classes/Numeric.src/M000167.html +18 -0
- data/doc/classes/Numeric.src/M000169.html +18 -0
- data/doc/classes/Numeric.src/M000171.html +18 -0
- data/doc/classes/Numeric.src/M000174.html +18 -0
- data/doc/classes/Numeric.src/M000178.html +20 -0
- data/doc/classes/Numeric.src/M000179.html +18 -0
- data/doc/classes/Numeric.src/M000180.html +18 -0
- data/doc/classes/Object.html +923 -0
- data/doc/classes/Object.src/M000215.html +21 -0
- data/doc/classes/Object.src/M000216.html +20 -0
- data/doc/classes/Object.src/M000217.html +18 -0
- data/doc/classes/Object.src/M000219.html +26 -0
- data/doc/classes/Object.src/M000220.html +20 -0
- data/doc/classes/Object.src/M000221.html +18 -0
- data/doc/classes/Object.src/M000222.html +18 -0
- data/doc/classes/Object.src/M000224.html +18 -0
- data/doc/classes/Object.src/M000226.html +18 -0
- data/doc/classes/Object.src/M000228.html +19 -0
- data/doc/classes/Object.src/M000229.html +19 -0
- data/doc/classes/Object.src/M000230.html +21 -0
- data/doc/classes/Object.src/M000232.html +18 -0
- data/doc/classes/Object.src/M000233.html +18 -0
- data/doc/classes/Object.src/M000234.html +19 -0
- data/doc/classes/Object.src/M000235.html +19 -0
- data/doc/classes/Object.src/M000236.html +19 -0
- data/doc/classes/Object.src/M000237.html +40 -0
- data/doc/classes/Object.src/M000238.html +27 -0
- data/doc/classes/Object.src/M000239.html +18 -0
- data/doc/classes/Object.src/M000240.html +18 -0
- data/doc/classes/Object.src/M000241.html +18 -0
- data/doc/classes/Object.src/M000242.html +18 -0
- data/doc/classes/OpenStruct.html +206 -0
- data/doc/classes/OpenStruct.src/M000199.html +22 -0
- data/doc/classes/OpenStruct.src/M000200.html +19 -0
- data/doc/classes/OpenStruct.src/M000201.html +20 -0
- data/doc/classes/Proc.html +184 -0
- data/doc/classes/Proc.src/M000110.html +20 -0
- data/doc/classes/Range.html +247 -0
- data/doc/classes/Range.src/M000003.html +23 -0
- data/doc/classes/Range.src/M000004.html +20 -0
- data/doc/classes/Range.src/M000005.html +18 -0
- data/doc/classes/Range.src/M000006.html +18 -0
- data/doc/classes/Regexp.html +205 -0
- data/doc/classes/Regexp.src/M000022.html +18 -0
- data/doc/classes/Regexp.src/M000023.html +18 -0
- data/doc/classes/Regexp.src/M000024.html +18 -0
- data/doc/classes/ScriptBug.html +111 -0
- data/doc/classes/String.html +1930 -0
- data/doc/classes/String.src/M000243.html +27 -0
- data/doc/classes/String.src/M000244.html +18 -0
- data/doc/classes/String.src/M000245.html +18 -0
- data/doc/classes/String.src/M000246.html +18 -0
- data/doc/classes/String.src/M000248.html +18 -0
- data/doc/classes/String.src/M000249.html +18 -0
- data/doc/classes/String.src/M000250.html +21 -0
- data/doc/classes/String.src/M000251.html +22 -0
- data/doc/classes/String.src/M000253.html +28 -0
- data/doc/classes/String.src/M000254.html +23 -0
- data/doc/classes/String.src/M000255.html +22 -0
- data/doc/classes/String.src/M000256.html +18 -0
- data/doc/classes/String.src/M000257.html +20 -0
- data/doc/classes/String.src/M000258.html +20 -0
- data/doc/classes/String.src/M000259.html +22 -0
- data/doc/classes/String.src/M000260.html +18 -0
- data/doc/classes/String.src/M000261.html +26 -0
- data/doc/classes/String.src/M000262.html +23 -0
- data/doc/classes/String.src/M000263.html +24 -0
- data/doc/classes/String.src/M000264.html +23 -0
- data/doc/classes/String.src/M000265.html +23 -0
- data/doc/classes/String.src/M000266.html +18 -0
- data/doc/classes/String.src/M000267.html +18 -0
- data/doc/classes/String.src/M000268.html +19 -0
- data/doc/classes/String.src/M000269.html +19 -0
- data/doc/classes/String.src/M000270.html +18 -0
- data/doc/classes/String.src/M000271.html +18 -0
- data/doc/classes/String.src/M000272.html +19 -0
- data/doc/classes/String.src/M000273.html +18 -0
- data/doc/classes/String.src/M000274.html +72 -0
- data/doc/classes/String.src/M000275.html +20 -0
- data/doc/classes/String.src/M000276.html +20 -0
- data/doc/classes/String.src/M000277.html +21 -0
- data/doc/classes/String.src/M000278.html +25 -0
- data/doc/classes/String.src/M000279.html +18 -0
- data/doc/classes/String.src/M000280.html +21 -0
- data/doc/classes/String.src/M000281.html +18 -0
- data/doc/classes/String.src/M000282.html +23 -0
- data/doc/classes/String.src/M000283.html +18 -0
- data/doc/classes/String.src/M000284.html +21 -0
- data/doc/classes/String.src/M000285.html +28 -0
- data/doc/classes/String.src/M000286.html +25 -0
- data/doc/classes/String.src/M000287.html +18 -0
- data/doc/classes/String.src/M000289.html +18 -0
- data/doc/classes/String.src/M000291.html +18 -0
- data/doc/classes/String.src/M000292.html +18 -0
- data/doc/classes/String.src/M000293.html +21 -0
- data/doc/classes/String.src/M000294.html +18 -0
- data/doc/classes/String.src/M000295.html +18 -0
- data/doc/classes/String.src/M000296.html +22 -0
- data/doc/classes/String.src/M000297.html +18 -0
- data/doc/classes/String.src/M000298.html +22 -0
- data/doc/classes/String.src/M000299.html +21 -0
- data/doc/classes/String.src/M000300.html +18 -0
- data/doc/classes/String.src/M000301.html +18 -0
- data/doc/classes/String.src/M000302.html +18 -0
- data/doc/classes/String.src/M000303.html +18 -0
- data/doc/classes/String.src/M000304.html +18 -0
- data/doc/classes/String.src/M000305.html +32 -0
- data/doc/classes/String.src/M000306.html +23 -0
- data/doc/classes/String.src/M000307.html +24 -0
- data/doc/classes/String.src/M000308.html +18 -0
- data/doc/classes/String.src/M000309.html +57 -0
- data/doc/classes/String/Format.html +279 -0
- data/doc/classes/String/Format.src/M000316.html +18 -0
- data/doc/classes/String/Format.src/M000317.html +18 -0
- data/doc/classes/String/Format.src/M000318.html +18 -0
- data/doc/classes/String/Format.src/M000320.html +18 -0
- data/doc/classes/String/Format.src/M000321.html +18 -0
- data/doc/classes/String/Format.src/M000322.html +18 -0
- data/doc/classes/String/Format.src/M000323.html +18 -0
- data/doc/classes/String/Format.src/M000324.html +18 -0
- data/doc/classes/String/Format.src/M000325.html +18 -0
- data/doc/classes/String/Inflect.html +221 -0
- data/doc/classes/String/Inflect.src/M000310.html +18 -0
- data/doc/classes/String/Inflect.src/M000311.html +18 -0
- data/doc/classes/String/Inflect.src/M000312.html +22 -0
- data/doc/classes/String/Inflect.src/M000313.html +22 -0
- data/doc/classes/String/Inflect.src/M000314.html +30 -0
- data/doc/classes/String/Inflect.src/M000315.html +31 -0
- data/doc/classes/Symbol.html +380 -0
- data/doc/classes/Symbol.src/M000012.html +18 -0
- data/doc/classes/Symbol.src/M000013.html +18 -0
- data/doc/classes/Symbol.src/M000014.html +22 -0
- data/doc/classes/Symbol.src/M000016.html +18 -0
- data/doc/classes/Symbol.src/M000017.html +18 -0
- data/doc/classes/Symbol.src/M000018.html +28 -0
- data/doc/classes/Symbol.src/M000019.html +26 -0
- data/doc/classes/Symbol.src/M000020.html +18 -0
- data/doc/classes/Symbol.src/M000021.html +18 -0
- data/doc/classes/Time.html +227 -0
- data/doc/classes/Time.src/M000025.html +51 -0
- data/doc/classes/Time.src/M000026.html +21 -0
- data/doc/created.rid +1 -0
- data/doc/files/LICENSE-GPL.html +537 -0
- data/doc/files/LICENSE-RUBY.html +166 -0
- data/doc/files/README.html +252 -0
- data/doc/files/lib/facet/all-base-common_rb.html +101 -0
- data/doc/files/lib/facet/all-base_rb.html +133 -0
- data/doc/files/lib/facet/array/[[]]_rb.html +108 -0
- data/doc/files/lib/facet/array/[]_rb.html +108 -0
- data/doc/files/lib/facet/array/at_rand_rb.html +101 -0
- data/doc/files/lib/facet/array/combinations_rb.html +101 -0
- data/doc/files/lib/facet/array/delete_values_rb.html +101 -0
- data/doc/files/lib/facet/array/first&last_rb.html +101 -0
- data/doc/files/lib/facet/array/get_rb.html +101 -0
- data/doc/files/lib/facet/array/head&tail_rb.html +101 -0
- data/doc/files/lib/facet/array/last_index_rb.html +101 -0
- data/doc/files/lib/facet/array/middle_rb.html +101 -0
- data/doc/files/lib/facet/array/pos_rb.html +101 -0
- data/doc/files/lib/facet/array/pull_rb.html +101 -0
- data/doc/files/lib/facet/array/range_rb.html +101 -0
- data/doc/files/lib/facet/array/rotate_rb.html +101 -0
- data/doc/files/lib/facet/array/select!_rb.html +101 -0
- data/doc/files/lib/facet/array/shuffle_rb.html +101 -0
- data/doc/files/lib/facet/array/store_rb.html +101 -0
- data/doc/files/lib/facet/array/thru_rb.html +101 -0
- data/doc/files/lib/facet/array/to_b_rb.html +101 -0
- data/doc/files/lib/facet/array/to_h_rb.html +101 -0
- data/doc/files/lib/facet/array_rb.html +120 -0
- data/doc/files/lib/facet/binding/called_rb.html +108 -0
- data/doc/files/lib/facet/binding/caller_rb.html +108 -0
- data/doc/files/lib/facet/binding/defined?_rb.html +108 -0
- data/doc/files/lib/facet/binding/delegate!_rb.html +101 -0
- data/doc/files/lib/facet/binding/eval_rb.html +101 -0
- data/doc/files/lib/facet/binding/lineno_rb.html +108 -0
- data/doc/files/lib/facet/binding/local_variables_rb.html +108 -0
- data/doc/files/lib/facet/binding/self_rb.html +108 -0
- data/doc/files/lib/facet/binding_rb.html +118 -0
- data/doc/files/lib/facet/class/cattr_rb.html +101 -0
- data/doc/files/lib/facet/class_rb.html +114 -0
- data/doc/files/lib/facet/comparable/bound_by_rb.html +101 -0
- data/doc/files/lib/facet/comparable_rb.html +114 -0
- data/doc/files/lib/facet/continuation/create_rb.html +101 -0
- data/doc/files/lib/facet/continuation_rb.html +114 -0
- data/doc/files/lib/facet/enumerable/**_rb.html +108 -0
- data/doc/files/lib/facet/enumerable/collect_with_counter_rb.html +101 -0
- data/doc/files/lib/facet/enumerable/cross_rb.html +108 -0
- data/doc/files/lib/facet/enumerable/each_slice_rb.html +101 -0
- data/doc/files/lib/facet/enumerable/every_rb.html +108 -0
- data/doc/files/lib/facet/enumerable/graph_rb.html +101 -0
- data/doc/files/lib/facet/enumerable/none?_rb.html +101 -0
- data/doc/files/lib/facet/enumerable/one?_rb.html +101 -0
- data/doc/files/lib/facet/enumerable/partition_by_rb.html +101 -0
- data/doc/files/lib/facet/enumerable/per_rb.html +108 -0
- data/doc/files/lib/facet/enumerable/to_hash_rb.html +101 -0
- data/doc/files/lib/facet/enumerable/uniq_by_rb.html +101 -0
- data/doc/files/lib/facet/enumerable_rb.html +118 -0
- data/doc/files/lib/facet/file/split_all_rb.html +101 -0
- data/doc/files/lib/facet/file_rb.html +114 -0
- data/doc/files/lib/facet/fileutils/head&tail_rb.html +108 -0
- data/doc/files/lib/facet/fileutils/safe_ln_rb.html +108 -0
- data/doc/files/lib/facet/fileutils/wc_rb.html +108 -0
- data/doc/files/lib/facet/fileutils/whereis_rb.html +108 -0
- data/doc/files/lib/facet/fileutils/which_rb.html +108 -0
- data/doc/files/lib/facet/fileutils_rb.html +115 -0
- data/doc/files/lib/facet/float/round_rb.html +101 -0
- data/doc/files/lib/facet/float_rb.html +114 -0
- data/doc/files/lib/facet/hash/<<_rb.html +101 -0
- data/doc/files/lib/facet/hash/[]_rb.html +101 -0
- data/doc/files/lib/facet/hash/alias!_rb.html +101 -0
- data/doc/files/lib/facet/hash/at_rand_rb.html +101 -0
- data/doc/files/lib/facet/hash/collate_rb.html +101 -0
- data/doc/files/lib/facet/hash/collect_rb.html +108 -0
- data/doc/files/lib/facet/hash/each_rb.html +101 -0
- data/doc/files/lib/facet/hash/has_keys?_rb.html +101 -0
- data/doc/files/lib/facet/hash/inverse_rb.html +101 -0
- data/doc/files/lib/facet/hash/keys_to_s_rb.html +101 -0
- data/doc/files/lib/facet/hash/keys_to_sym_rb.html +101 -0
- data/doc/files/lib/facet/hash/shuffle_rb.html +101 -0
- data/doc/files/lib/facet/hash/slice_rb.html +101 -0
- data/doc/files/lib/facet/hash/swap!_rb.html +101 -0
- data/doc/files/lib/facet/hash/swapkey!_rb.html +101 -0
- data/doc/files/lib/facet/hash/to_h_rb.html +101 -0
- data/doc/files/lib/facet/hash/to_ostruct_rb.html +108 -0
- data/doc/files/lib/facet/hash/traverse_rb.html +101 -0
- data/doc/files/lib/facet/hash/update_each_rb.html +101 -0
- data/doc/files/lib/facet/hash/weave_rb.html +101 -0
- data/doc/files/lib/facet/hash/zipnew_rb.html +101 -0
- data/doc/files/lib/facet/hash_rb.html +115 -0
- data/doc/files/lib/facet/integer/evenodd?_rb.html +101 -0
- data/doc/files/lib/facet/integer/factorial_rb.html +101 -0
- data/doc/files/lib/facet/integer/times_collect_rb.html +101 -0
- data/doc/files/lib/facet/integer_rb.html +116 -0
- data/doc/files/lib/facet/kernel/bug!_rb.html +101 -0
- data/doc/files/lib/facet/kernel/call_stack_rb.html +101 -0
- data/doc/files/lib/facet/kernel/called_rb.html +108 -0
- data/doc/files/lib/facet/kernel/demo_rb.html +101 -0
- data/doc/files/lib/facet/kernel/fn_rb.html +101 -0
- data/doc/files/lib/facet/kernel/get_by_id_rb.html +101 -0
- data/doc/files/lib/facet/kernel/here_rb.html +101 -0
- data/doc/files/lib/facet/kernel/maybe_rb.html +101 -0
- data/doc/files/lib/facet/kernel/method_name_rb.html +108 -0
- data/doc/files/lib/facet/kernel/require_all_rb.html +101 -0
- data/doc/files/lib/facet/kernel/require_local_rb.html +101 -0
- data/doc/files/lib/facet/kernel/resc_rb.html +101 -0
- data/doc/files/lib/facet/kernel/warn_with_line_rb.html +101 -0
- data/doc/files/lib/facet/kernel_rb.html +120 -0
- data/doc/files/lib/facet/matchdata/match_from_rb.html +108 -0
- data/doc/files/lib/facet/matchdata/match_rb.html +101 -0
- data/doc/files/lib/facet/matchdata_rb.html +115 -0
- data/doc/files/lib/facet/module/abstract_rb.html +118 -0
- data/doc/files/lib/facet/module/alias_module_function_rb.html +101 -0
- data/doc/files/lib/facet/module/basename_rb.html +101 -0
- data/doc/files/lib/facet/module/by_name_rb.html +108 -0
- data/doc/files/lib/facet/module/initializer_rb.html +101 -0
- data/doc/files/lib/facet/module/key_attributes_rb.html +101 -0
- data/doc/files/lib/facet/module/memoize_rb.html +130 -0
- data/doc/files/lib/facet/module/memoize_rb.src/M000002.html +18 -0
- data/doc/files/lib/facet/module/methods_rb.html +101 -0
- data/doc/files/lib/facet/module/redefine_method_rb.html +101 -0
- data/doc/files/lib/facet/module/redirect_rb.html +101 -0
- data/doc/files/lib/facet/module/sort_attributes_rb.html +101 -0
- data/doc/files/lib/facet/module/wrap_method_rb.html +101 -0
- data/doc/files/lib/facet/module_rb.html +116 -0
- data/doc/files/lib/facet/nil-as-emptiness_rb.html +130 -0
- data/doc/files/lib/facet/nil/[]_rb.html +101 -0
- data/doc/files/lib/facet/nil/empty?_rb.html +101 -0
- data/doc/files/lib/facet/nil/include?_rb.html +101 -0
- data/doc/files/lib/facet/nil/length_rb.html +101 -0
- data/doc/files/lib/facet/nil/to_f_rb.html +101 -0
- data/doc/files/lib/facet/nil/to_h_rb.html +101 -0
- data/doc/files/lib/facet/nil_rb.html +115 -0
- data/doc/files/lib/facet/numeric/bound_by_rb.html +101 -0
- data/doc/files/lib/facet/numeric/bytes_rb.html +101 -0
- data/doc/files/lib/facet/numeric/distance_rb.html +101 -0
- data/doc/files/lib/facet/numeric/octet_units_rb.html +108 -0
- data/doc/files/lib/facet/numeric/succ_rb.html +101 -0
- data/doc/files/lib/facet/numeric/times_rb.html +101 -0
- data/doc/files/lib/facet/numeric/to_b_rb.html +101 -0
- data/doc/files/lib/facet/numeric_rb.html +114 -0
- data/doc/files/lib/facet/object/__class___rb.html +101 -0
- data/doc/files/lib/facet/object/assign_with_rb.html +101 -0
- data/doc/files/lib/facet/object/bool?_rb.html +101 -0
- data/doc/files/lib/facet/object/constant_rb.html +101 -0
- data/doc/files/lib/facet/object/copy_rb.html +101 -0
- data/doc/files/lib/facet/object/in?_rb.html +101 -0
- data/doc/files/lib/facet/object/new_rb.html +101 -0
- data/doc/files/lib/facet/object/object_hexid_rb.html +101 -0
- data/doc/files/lib/facet/object/set_with_rb.html +101 -0
- data/doc/files/lib/facet/object/special_class_rb.html +101 -0
- data/doc/files/lib/facet/object/supers_rb.html +108 -0
- data/doc/files/lib/facet/object/to_b_rb.html +108 -0
- data/doc/files/lib/facet/object/to_bool_rb.html +101 -0
- data/doc/files/lib/facet/object/with_accessor_rb.html +101 -0
- data/doc/files/lib/facet/object_rb.html +120 -0
- data/doc/files/lib/facet/ostruct/[]_rb.html +108 -0
- data/doc/files/lib/facet/ostruct/ostruct_update_rb.html +108 -0
- data/doc/files/lib/facet/ostruct_rb.html +115 -0
- data/doc/files/lib/facet/proc/compose_rb.html +101 -0
- data/doc/files/lib/facet/proc/to_method_rb.html +138 -0
- data/doc/files/lib/facet/proc/to_method_rb.src/M000001.html +29 -0
- data/doc/files/lib/facet/proc_rb.html +115 -0
- data/doc/files/lib/facet/rand_rb.html +120 -0
- data/doc/files/lib/facet/range/to_r_rb.html +101 -0
- data/doc/files/lib/facet/range/umbrella_rb.html +101 -0
- data/doc/files/lib/facet/range/within?_rb.html +108 -0
- data/doc/files/lib/facet/range_rb.html +116 -0
- data/doc/files/lib/facet/regexp/arity_rb.html +101 -0
- data/doc/files/lib/facet/regexp/to_re_rb.html +101 -0
- data/doc/files/lib/facet/regexp_rb.html +115 -0
- data/doc/files/lib/facet/string/at_rand_rb.html +108 -0
- data/doc/files/lib/facet/string/blank?_rb.html +101 -0
- data/doc/files/lib/facet/string/braket_rb.html +101 -0
- data/doc/files/lib/facet/string/camelcase_rb.html +101 -0
- data/doc/files/lib/facet/string/case?_rb.html +101 -0
- data/doc/files/lib/facet/string/center_lines_rb.html +101 -0
- data/doc/files/lib/facet/string/chars_rb.html +101 -0
- data/doc/files/lib/facet/string/clump_rb.html +101 -0
- data/doc/files/lib/facet/string/cmp_rb.html +101 -0
- data/doc/files/lib/facet/string/dresner_rb.html +101 -0
- data/doc/files/lib/facet/string/each_word_rb.html +101 -0
- data/doc/files/lib/facet/string/first&last_rb.html +101 -0
- data/doc/files/lib/facet/string/format_rb.html +101 -0
- data/doc/files/lib/facet/string/fuzzy_match_rb.html +101 -0
- data/doc/files/lib/facet/string/index_all_rb.html +101 -0
- data/doc/files/lib/facet/string/inflect_rb.html +101 -0
- data/doc/files/lib/facet/string/line_to_char_map_rb.html +101 -0
- data/doc/files/lib/facet/string/line_wrap_rb.html +101 -0
- data/doc/files/lib/facet/string/margin_rb.html +101 -0
- data/doc/files/lib/facet/string/mscan_rb.html +101 -0
- data/doc/files/lib/facet/string/natcmp_rb.html +101 -0
- data/doc/files/lib/facet/string/rand_letter_rb.html +101 -0
- data/doc/files/lib/facet/string/range_rb.html +101 -0
- data/doc/files/lib/facet/string/shatter_rb.html +101 -0
- data/doc/files/lib/facet/string/shuffle_rb.html +101 -0
- data/doc/files/lib/facet/string/succ_rb.html +101 -0
- data/doc/files/lib/facet/string/tab_rb.html +101 -0
- data/doc/files/lib/facet/string/to_b_rb.html +101 -0
- data/doc/files/lib/facet/string/to_const_rb.html +108 -0
- data/doc/files/lib/facet/string/to_proc_rb.html +101 -0
- data/doc/files/lib/facet/string/to_re_rb.html +101 -0
- data/doc/files/lib/facet/string/unix_crypt_rb.html +108 -0
- data/doc/files/lib/facet/string/unpack_rb.html +101 -0
- data/doc/files/lib/facet/string/word_filter!_rb.html +101 -0
- data/doc/files/lib/facet/string/word_wrap_rb.html +101 -0
- data/doc/files/lib/facet/string_rb.html +122 -0
- data/doc/files/lib/facet/symbol/camelcase_rb.html +101 -0
- data/doc/files/lib/facet/symbol/gen_rb.html +101 -0
- data/doc/files/lib/facet/symbol/pad_rb.html +101 -0
- data/doc/files/lib/facet/symbol/succ_rb.html +101 -0
- data/doc/files/lib/facet/symbol/to_const_rb.html +108 -0
- data/doc/files/lib/facet/symbol/to_proc_rb.html +101 -0
- data/doc/files/lib/facet/symbol/to_str_rb.html +101 -0
- data/doc/files/lib/facet/symbol/~_rb.html +101 -0
- data/doc/files/lib/facet/symbol_rb.html +116 -0
- data/doc/files/lib/facet/time/custom_format_rb.html +108 -0
- data/doc/files/lib/facet/time/elapse_rb.html +101 -0
- data/doc/files/lib/facet/time_rb.html +107 -0
- data/doc/fr_class_index.html +54 -0
- data/doc/fr_file_index.html +239 -0
- data/doc/fr_method_index.html +394 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/facet-dev/README +11 -0
- data/lib/facet-dev/advice.rb +70 -0
- data/lib/facet-dev/array/**.rb +17 -0
- data/lib/facet-dev/array/at_rand.rb +95 -0
- data/lib/facet-dev/array/each_slice.rb +23 -0
- data/lib/facet-dev/array/pick_values.rb +32 -0
- data/lib/facet-dev/array/remove.rb +21 -0
- data/lib/facet-dev/arraysplit.tar.gz +0 -0
- data/lib/facet-dev/binding/class.rb +11 -0
- data/lib/facet-dev/binding/delegate.rb +15 -0
- data/lib/facet-dev/binding/proc.rb +6 -0
- data/lib/facet-dev/class_include.rb +13 -0
- data/lib/facet-dev/enumerable/[].rb +30 -0
- data/lib/facet-dev/enumerable/rand.rb +412 -0
- data/lib/facet-dev/fileutils/mv_f.rb +6 -0
- data/lib/facet-dev/fileutils/nl_convert.rb +69 -0
- data/lib/facet-dev/fileutils/tc_nlconvert.rb +60 -0
- data/lib/facet-dev/kernel/call_line.rb +15 -0
- data/lib/facet-dev/kernel/does.rb +7 -0
- data/lib/facet-dev/kernel/eval.rb +24 -0
- data/lib/facet-dev/kernel/message.rb +6 -0
- data/lib/facet-dev/module/preserved.rb +108 -0
- data/lib/facet-dev/object/==.rb +49 -0
- data/lib/facet-dev/object/>>.rb +50 -0
- data/lib/facet-dev/object/all.rb +11 -0
- data/lib/facet-dev/object/query.rb +15 -0
- data/lib/facet-dev/object/respond_with_value.rb +14 -0
- data/lib/facet-dev/rails/class_attribute_accessors.rb +57 -0
- data/lib/facet-dev/rails/class_inheritable_attributes.rb +117 -0
- data/lib/facet-dev/rails/clean_logger.rb +10 -0
- data/lib/facet-dev/rails/dependencies.rb +63 -0
- data/lib/facet-dev/rails/inflector.rb +84 -0
- data/lib/facet-dev/rails/misc.rb +8 -0
- data/lib/facet-dev/rails/module_attribute_accessors.rb +57 -0
- data/lib/facet-dev/rails/object_and_class.rb +24 -0
- data/lib/facet-dev/string/+.rb +19 -0
- data/lib/facet-dev/string/pred.rb +123 -0
- data/lib/facet-dev/string/slash.rb +15 -0
- data/lib/facet-dev/string/strip.rb +32 -0
- data/lib/facet-dev/string/succ_distance.rb +112 -0
- data/lib/facet-dev/string/tc_pred.rb +96 -0
- data/lib/facet-dev/string/word_wrap.rb +62 -0
- data/lib/facet-dev/taint.rb +10 -0
- data/lib/facet/all-base-common.rb +13 -0
- data/lib/facet/all-base.rb +27 -0
- data/lib/facet/array.rb +25 -0
- data/lib/facet/array/[[]].rb +42 -0
- data/lib/facet/array/[].rb +57 -0
- data/lib/facet/array/at_rand.rb +118 -0
- data/lib/facet/array/combinations.rb +122 -0
- data/lib/facet/array/delete_values.rb +46 -0
- data/lib/facet/array/first&last.rb +47 -0
- data/lib/facet/array/get.rb +15 -0
- data/lib/facet/array/head&tail.rb +33 -0
- data/lib/facet/array/last_index.rb +15 -0
- data/lib/facet/array/middle.rb +18 -0
- data/lib/facet/array/pos.rb +17 -0
- data/lib/facet/array/pull.rb +21 -0
- data/lib/facet/array/range.rb +22 -0
- data/lib/facet/array/rotate.rb +38 -0
- data/lib/facet/array/select!.rb +13 -0
- data/lib/facet/array/shuffle.rb +37 -0
- data/lib/facet/array/store.rb +4 -0
- data/lib/facet/array/thru.rb +18 -0
- data/lib/facet/array/to_b.rb +6 -0
- data/lib/facet/array/to_h.rb +30 -0
- data/lib/facet/binding.rb +15 -0
- data/lib/facet/binding/called.rb +29 -0
- data/lib/facet/binding/caller.rb +10 -0
- data/lib/facet/binding/defined?.rb +9 -0
- data/lib/facet/binding/delegate!.rb +19 -0
- data/lib/facet/binding/eval.rb +10 -0
- data/lib/facet/binding/lineno.rb +13 -0
- data/lib/facet/binding/local_variables.rb +39 -0
- data/lib/facet/binding/self.rb +10 -0
- data/lib/facet/class.rb +7 -0
- data/lib/facet/class/cattr.rb +82 -0
- data/lib/facet/comparable.rb +7 -0
- data/lib/facet/comparable/bound_by.rb +41 -0
- data/lib/facet/continuation.rb +8 -0
- data/lib/facet/continuation/create.rb +51 -0
- data/lib/facet/enumerable.rb +17 -0
- data/lib/facet/enumerable/**.rb +13 -0
- data/lib/facet/enumerable/collect_with_counter.rb +25 -0
- data/lib/facet/enumerable/cross.rb +79 -0
- data/lib/facet/enumerable/each_slice.rb +60 -0
- data/lib/facet/enumerable/every.rb +45 -0
- data/lib/facet/enumerable/graph.rb +48 -0
- data/lib/facet/enumerable/none?.rb +28 -0
- data/lib/facet/enumerable/one?.rb +35 -0
- data/lib/facet/enumerable/partition_by.rb +27 -0
- data/lib/facet/enumerable/per.rb +18 -0
- data/lib/facet/enumerable/to_hash.rb +17 -0
- data/lib/facet/enumerable/uniq_by.rb +35 -0
- data/lib/facet/file.rb +7 -0
- data/lib/facet/file/split_all.rb +17 -0
- data/lib/facet/fileutils.rb +11 -0
- data/lib/facet/fileutils/head&tail.rb +65 -0
- data/lib/facet/fileutils/safe_ln.rb +18 -0
- data/lib/facet/fileutils/wc.rb +62 -0
- data/lib/facet/fileutils/whereis.rb +63 -0
- data/lib/facet/fileutils/which.rb +53 -0
- data/lib/facet/float.rb +7 -0
- data/lib/facet/float/round.rb +33 -0
- data/lib/facet/hash.rb +23 -0
- data/lib/facet/hash/<<.rb +5 -0
- data/lib/facet/hash/[].rb +44 -0
- data/lib/facet/hash/alias!.rb +24 -0
- data/lib/facet/hash/at_rand.rb +88 -0
- data/lib/facet/hash/collate.rb +25 -0
- data/lib/facet/hash/collect.rb +8 -0
- data/lib/facet/hash/each.rb +28 -0
- data/lib/facet/hash/has_keys?.rb +48 -0
- data/lib/facet/hash/inverse.rb +29 -0
- data/lib/facet/hash/keys_to_s.rb +50 -0
- data/lib/facet/hash/keys_to_sym.rb +59 -0
- data/lib/facet/hash/shuffle.rb +51 -0
- data/lib/facet/hash/slice.rb +11 -0
- data/lib/facet/hash/swap!.rb +14 -0
- data/lib/facet/hash/swapkey!.rb +22 -0
- data/lib/facet/hash/to_h.rb +13 -0
- data/lib/facet/hash/to_ostruct.rb +30 -0
- data/lib/facet/hash/traverse.rb +35 -0
- data/lib/facet/hash/update_each.rb +24 -0
- data/lib/facet/hash/weave.rb +64 -0
- data/lib/facet/hash/zipnew.rb +15 -0
- data/lib/facet/integer.rb +9 -0
- data/lib/facet/integer/evenodd?.rb +25 -0
- data/lib/facet/integer/factorial.rb +27 -0
- data/lib/facet/integer/times_collect.rb +13 -0
- data/lib/facet/kernel.rb +18 -0
- data/lib/facet/kernel/bug!.rb +25 -0
- data/lib/facet/kernel/call_stack.rb +35 -0
- data/lib/facet/kernel/called.rb +20 -0
- data/lib/facet/kernel/demo.rb +25 -0
- data/lib/facet/kernel/fn.rb +10 -0
- data/lib/facet/kernel/get_by_id.rb +7 -0
- data/lib/facet/kernel/here.rb +11 -0
- data/lib/facet/kernel/maybe.rb +17 -0
- data/lib/facet/kernel/method_name.rb +18 -0
- data/lib/facet/kernel/require_all.rb +21 -0
- data/lib/facet/kernel/require_local.rb +26 -0
- data/lib/facet/kernel/resc.rb +7 -0
- data/lib/facet/kernel/warn_with_line.rb +19 -0
- data/lib/facet/matchdata.rb +8 -0
- data/lib/facet/matchdata/match.rb +12 -0
- data/lib/facet/matchdata/match_from.rb +38 -0
- data/lib/facet/module.rb +14 -0
- data/lib/facet/module/abstract.rb +20 -0
- data/lib/facet/module/alias_module_function.rb +28 -0
- data/lib/facet/module/basename.rb +18 -0
- data/lib/facet/module/by_name.rb +42 -0
- data/lib/facet/module/initializer.rb +35 -0
- data/lib/facet/module/key_attributes.rb +13 -0
- data/lib/facet/module/memoize.rb +50 -0
- data/lib/facet/module/methods.rb +98 -0
- data/lib/facet/module/redefine_method.rb +37 -0
- data/lib/facet/module/redirect.rb +39 -0
- data/lib/facet/module/sort_attributes.rb +12 -0
- data/lib/facet/module/wrap_method.rb +27 -0
- data/lib/facet/nil-as-emptiness.rb +34 -0
- data/lib/facet/nil.rb +15 -0
- data/lib/facet/nil/[].rb +12 -0
- data/lib/facet/nil/empty?.rb +19 -0
- data/lib/facet/nil/include?.rb +11 -0
- data/lib/facet/nil/length.rb +19 -0
- data/lib/facet/nil/to_f.rb +10 -0
- data/lib/facet/nil/to_h.rb +10 -0
- data/lib/facet/numeric.rb +9 -0
- data/lib/facet/numeric/bound_by.rb +41 -0
- data/lib/facet/numeric/bytes.rb +51 -0
- data/lib/facet/numeric/distance.rb +13 -0
- data/lib/facet/numeric/octet_units.rb +32 -0
- data/lib/facet/numeric/succ.rb +41 -0
- data/lib/facet/numeric/times.rb +106 -0
- data/lib/facet/numeric/to_b.rb +15 -0
- data/lib/facet/object.rb +20 -0
- data/lib/facet/object/__class__.rb +17 -0
- data/lib/facet/object/assign_with.rb +80 -0
- data/lib/facet/object/bool?.rb +49 -0
- data/lib/facet/object/constant.rb +22 -0
- data/lib/facet/object/copy.rb +13 -0
- data/lib/facet/object/in?.rb +12 -0
- data/lib/facet/object/new.rb +32 -0
- data/lib/facet/object/object_hexid.rb +12 -0
- data/lib/facet/object/set_with.rb +29 -0
- data/lib/facet/object/special_class.rb +45 -0
- data/lib/facet/object/supers.rb +38 -0
- data/lib/facet/object/to_b.rb +15 -0
- data/lib/facet/object/to_bool.rb +14 -0
- data/lib/facet/object/with_accessor.rb +50 -0
- data/lib/facet/ostruct.rb +8 -0
- data/lib/facet/ostruct/[].rb +29 -0
- data/lib/facet/ostruct/ostruct_update.rb +18 -0
- data/lib/facet/proc.rb +8 -0
- data/lib/facet/proc/compose.rb +22 -0
- data/lib/facet/proc/to_method.rb +43 -0
- data/lib/facet/rand.rb +10 -0
- data/lib/facet/range.rb +9 -0
- data/lib/facet/range/to_r.rb +16 -0
- data/lib/facet/range/umbrella.rb +37 -0
- data/lib/facet/range/within?.rb +19 -0
- data/lib/facet/regexp.rb +9 -0
- data/lib/facet/regexp/arity.rb +14 -0
- data/lib/facet/regexp/to_re.rb +25 -0
- data/lib/facet/string.rb +38 -0
- data/lib/facet/string/at_rand.rb +99 -0
- data/lib/facet/string/blank?.rb +14 -0
- data/lib/facet/string/braket.rb +27 -0
- data/lib/facet/string/camelcase.rb +24 -0
- data/lib/facet/string/case?.rb +44 -0
- data/lib/facet/string/center_lines.rb +26 -0
- data/lib/facet/string/chars.rb +34 -0
- data/lib/facet/string/clump.rb +51 -0
- data/lib/facet/string/cmp.rb +17 -0
- data/lib/facet/string/dresner.rb +25 -0
- data/lib/facet/string/each_word.rb +25 -0
- data/lib/facet/string/first&last.rb +123 -0
- data/lib/facet/string/format.rb +64 -0
- data/lib/facet/string/fuzzy_match.rb +82 -0
- data/lib/facet/string/index_all.rb +19 -0
- data/lib/facet/string/inflect.rb +70 -0
- data/lib/facet/string/line_to_char_map.rb +18 -0
- data/lib/facet/string/line_wrap.rb +20 -0
- data/lib/facet/string/margin.rb +27 -0
- data/lib/facet/string/mscan.rb +16 -0
- data/lib/facet/string/natcmp.rb +84 -0
- data/lib/facet/string/rand_letter.rb +13 -0
- data/lib/facet/string/range.rb +39 -0
- data/lib/facet/string/shatter.rb +17 -0
- data/lib/facet/string/shuffle.rb +49 -0
- data/lib/facet/string/succ.rb +17 -0
- data/lib/facet/string/tab.rb +38 -0
- data/lib/facet/string/to_b.rb +27 -0
- data/lib/facet/string/to_const.rb +16 -0
- data/lib/facet/string/to_proc.rb +25 -0
- data/lib/facet/string/to_re.rb +13 -0
- data/lib/facet/string/unix_crypt.rb +12 -0
- data/lib/facet/string/unpack.rb +15 -0
- data/lib/facet/string/word_filter!.rb +20 -0
- data/lib/facet/string/word_wrap.rb +43 -0
- data/lib/facet/symbol.rb +14 -0
- data/lib/facet/symbol/camelcase.rb +24 -0
- data/lib/facet/symbol/gen.rb +23 -0
- data/lib/facet/symbol/pad.rb +20 -0
- data/lib/facet/symbol/succ.rb +17 -0
- data/lib/facet/symbol/to_const.rb +16 -0
- data/lib/facet/symbol/to_proc.rb +22 -0
- data/lib/facet/symbol/to_str.rb +12 -0
- data/lib/facet/symbol/~.rb +8 -0
- data/lib/facet/time.rb +7 -0
- data/lib/facet/time/custom_format.rb +111 -0
- data/lib/facet/time/elapse.rb +18 -0
- data/setup.rb +1361 -0
- data/test/array/tc_array.rb +234 -0
- data/test/array/tc_brackets.rb +16 -0
- data/test/binding/tc_binding.rb +77 -0
- data/test/class/tc_class.rb +48 -0
- data/test/comparable/tc_comparable.rb +23 -0
- data/test/enumerable/tc_enumerable.rb +166 -0
- data/test/file/tc_file.rb +14 -0
- data/test/fileutils/tc_head&tail.rb +72 -0
- data/test/fileutils/tc_wc.rb +46 -0
- data/test/fileutils/tc_whereis.rb +35 -0
- data/test/fileutils/tc_which.rb +35 -0
- data/test/fileutils/test_file.txt +25 -0
- data/test/fileutils/test_file2.txt +25 -0
- data/test/float/tc_float.rb +70 -0
- data/test/hash/tc_each.rb +23 -0
- data/test/hash/tc_hash.rb +182 -0
- data/test/hash/tc_slice.rb +98 -0
- data/test/integer/tc_integer.rb +50 -0
- data/test/kernel/tc_kernel.rb +89 -0
- data/test/kernel/tc_warn_with_line.rb +1 -0
- data/test/kernel/test_file.rb +3 -0
- data/test/matchdata/tc_matchdata.rb +47 -0
- data/test/module/tc_memoize.rb +2 -0
- data/test/module/tc_methods.rb +13 -0
- data/test/module/tc_module.rb +51 -0
- data/test/module/tc_redef.rb +47 -0
- data/test/nil/tc_nil.rb +57 -0
- data/test/numeric/tc_numeric.rb +145 -0
- data/test/object/tc_constant.rb +21 -0
- data/test/object/tc_object.rb +138 -0
- data/test/object/tc_supers.rb +63 -0
- data/test/object/tc_with_accessor.rb +31 -0
- data/test/ostruct/tc_ostruct.rb +16 -0
- data/test/proc/tc_proc.rb +32 -0
- data/test/range/tc_range.rb +46 -0
- data/test/regexp/tc_regexp.rb +35 -0
- data/test/string/tc_fuzzy_match.rb +2 -0
- data/test/string/tc_margin.rb +98 -0
- data/test/string/tc_string.rb +341 -0
- data/test/string/tc_unix_crypt.rb +2 -0
- data/test/symbol/tc_symbol.rb +60 -0
- data/test/t_require.rb +4 -0
- data/test/time/tc_time.rb +30 -0
- metadata +1013 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
*** IMPORTANT!!! ***
|
|
2
|
+
|
|
3
|
+
This directory contains alpha code and is generally considered
|
|
4
|
+
expiremental. It is provided as a means for conmmon development
|
|
5
|
+
and potential inspiration.
|
|
6
|
+
|
|
7
|
+
Some of these, or variations there-of, will find eventually become
|
|
8
|
+
part of the main lib.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#Copyright MJFP
|
|
2
|
+
#batsman dot geo at yahoo dot com
|
|
3
|
+
|
|
4
|
+
class Module
|
|
5
|
+
def def_advice(meth, &block)
|
|
6
|
+
prev = self.instance_method(meth)
|
|
7
|
+
define_method(meth) do |*a|
|
|
8
|
+
block.call prev.bind(self), *a
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def def_preadvice(meth, &block)
|
|
13
|
+
prev = self.instance_method(meth)
|
|
14
|
+
define_method(meth) do |*a|
|
|
15
|
+
block.call(*a)
|
|
16
|
+
prev.bind(self).call(*a)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def def_postadvice(meth, &block)
|
|
21
|
+
prev = self.instance_method(meth)
|
|
22
|
+
define_method(meth) do |*a|
|
|
23
|
+
prev.bind(self).call(*a)
|
|
24
|
+
block.call(*a)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class A
|
|
30
|
+
def foo(*a)
|
|
31
|
+
puts "A#foo #{a.inspect}"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
a = A.new
|
|
35
|
+
a.foo
|
|
36
|
+
|
|
37
|
+
class A
|
|
38
|
+
def_advice(:foo) do |prev, *a|
|
|
39
|
+
puts "before"
|
|
40
|
+
prev[*a]
|
|
41
|
+
puts "after"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
puts "--"
|
|
46
|
+
a.foo
|
|
47
|
+
|
|
48
|
+
class A
|
|
49
|
+
def_preadvice(:foo) { puts "pre 1" }
|
|
50
|
+
def_postadvice(:foo) { puts "post 1"}
|
|
51
|
+
def_preadvice(:foo) { puts "pre 2" }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
puts "--"
|
|
55
|
+
a.foo
|
|
56
|
+
batsman@tux-chan:/tmp$ ruby aop2.rb
|
|
57
|
+
A#foo []
|
|
58
|
+
|
|
59
|
+
=begin
|
|
60
|
+
before
|
|
61
|
+
A#foo []
|
|
62
|
+
after
|
|
63
|
+
pre 2
|
|
64
|
+
pre 1
|
|
65
|
+
before
|
|
66
|
+
A#foo []
|
|
67
|
+
after
|
|
68
|
+
post 1
|
|
69
|
+
=end
|
|
70
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class Array
|
|
2
|
+
# Basic Array cross-product.
|
|
3
|
+
#--
|
|
4
|
+
# Note this code is wrong. The idea here is to
|
|
5
|
+
# offer a more effiecnt veriosn of Enumerable#cross
|
|
6
|
+
# for Array's. When done, require Array#**
|
|
7
|
+
# in Enumerable#** too.
|
|
8
|
+
#++
|
|
9
|
+
def **(other_enum)
|
|
10
|
+
res = Array.new
|
|
11
|
+
self.each do |i|
|
|
12
|
+
other_enum.each { |j| res << [i,j] }
|
|
13
|
+
end
|
|
14
|
+
return res
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
class Array
|
|
2
|
+
|
|
3
|
+
# Return an array element at random.
|
|
4
|
+
#
|
|
5
|
+
# require 'facet/array/at_rand'
|
|
6
|
+
#
|
|
7
|
+
# [1,2,3,4].at_rand #=> 1
|
|
8
|
+
# [1,2,3,4].at_rand #=> 4
|
|
9
|
+
# [1,2,3,4].at_rand(1) #=> [4]
|
|
10
|
+
# [1,2,3,4].at_rand(3) #=> [2,2,1]
|
|
11
|
+
# [1,2,3,4].at_rand(3) #=> [3,2,4]
|
|
12
|
+
#
|
|
13
|
+
# def at_rand(n=nil, exclusive=false)
|
|
14
|
+
# if n
|
|
15
|
+
# n = n.to_i
|
|
16
|
+
# if exclusive
|
|
17
|
+
# return dup if n >= length
|
|
18
|
+
# return sort_by{Kernel.rand}[0..n]
|
|
19
|
+
# else
|
|
20
|
+
# idx = []
|
|
21
|
+
# n.times do
|
|
22
|
+
# idx << Kernel.rand(self.size)
|
|
23
|
+
# end
|
|
24
|
+
# return values_at(*idx)
|
|
25
|
+
# end
|
|
26
|
+
# else
|
|
27
|
+
# return at( Kernel.rand(self.size) )
|
|
28
|
+
# end
|
|
29
|
+
# end
|
|
30
|
+
|
|
31
|
+
def at_rand(n=nil, exclusive=false)
|
|
32
|
+
if n
|
|
33
|
+
return values_at(*rand_index(n, :exclusive))
|
|
34
|
+
else
|
|
35
|
+
return at(Kernel.rand(length))
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
alias_method(:at_random, :at_rand)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def pick(n)
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# Return random index or indexes of an array. If a number
|
|
47
|
+
# of indexes _n_ is given, an array of indexes is returned.
|
|
48
|
+
# This in non-exlusive and may pick the same index more than
|
|
49
|
+
# once.
|
|
50
|
+
#
|
|
51
|
+
# ["a", "b", "c"].rand_index #=> "a" (or "b", or "c")
|
|
52
|
+
# ["a", "b", "c"].rand_index(2) #=> ["a","b"]
|
|
53
|
+
# ["a", "b", "c"].rand_index(3) #=> ["a","b","b"]
|
|
54
|
+
#
|
|
55
|
+
def rand_index(n=nil)
|
|
56
|
+
if n
|
|
57
|
+
n = n.to_i
|
|
58
|
+
if exclusive
|
|
59
|
+
idx = (0...size).to_a
|
|
60
|
+
return idx if n >= length
|
|
61
|
+
return idx.sort_by{Kernel.rand}.slice(0,n)
|
|
62
|
+
else
|
|
63
|
+
idx = []
|
|
64
|
+
n.times{ idx << Kernel.rand(self.length) }
|
|
65
|
+
return idx
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
return Kernel.rand(size)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Pick and return a random index or indexes of array.
|
|
73
|
+
# If a number of indexes _n_ is given, an array of indexes
|
|
74
|
+
# is returned. Unlike #rand_index, #pick_index is exclusive
|
|
75
|
+
# and will not pick the same index twice. If _n_ exceeds
|
|
76
|
+
# the size of the array, all elements are returned.
|
|
77
|
+
#
|
|
78
|
+
# ["a", "b", "c"].pick_index #=> "a" (or "b", or "c")
|
|
79
|
+
# ["a", "b", "c"].pick_index(2) #=> ["a","b"]
|
|
80
|
+
# ["a", "b", "c"].pick_index(3) #=> ["a","b","c"]
|
|
81
|
+
#
|
|
82
|
+
#
|
|
83
|
+
def pick_index(n=nil)
|
|
84
|
+
if n
|
|
85
|
+
n = n.to_i
|
|
86
|
+
idx = (0...size).to_a
|
|
87
|
+
return idx if n >= length
|
|
88
|
+
return idx.sort_by{Kernel.rand}.slice(0,n)
|
|
89
|
+
else
|
|
90
|
+
return Kernel.rand(size)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
end
|
|
95
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# DEPRECATE. THIS IS INCLUDED IN ENUMERABLE NOW.
|
|
2
|
+
class Array
|
|
3
|
+
# Iterates over +n+ elements at a time. If +n+ is
|
|
4
|
+
# not given then the arity of the block determines the
|
|
5
|
+
# slicing quantity.
|
|
6
|
+
#
|
|
7
|
+
# require 'facet/array/each_slice'
|
|
8
|
+
#
|
|
9
|
+
# [1, 2, 3, 4].each_slice(2){ |a,b| ... }
|
|
10
|
+
#
|
|
11
|
+
# Enumerable#each_slice offers the same functionality
|
|
12
|
+
# but this is a more efficient implementation specifically
|
|
13
|
+
# for the Array.
|
|
14
|
+
def each_slice(n=nil, &yld)
|
|
15
|
+
n = yld.arity.abs unless n
|
|
16
|
+
i=0
|
|
17
|
+
while i < self.length
|
|
18
|
+
yld.call(*self.slice(i,n))
|
|
19
|
+
i+=n
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
alias_method( :each_by, :each_slice )
|
|
23
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
|
|
2
|
+
class Array
|
|
3
|
+
|
|
4
|
+
# Pick out _n_ random elements from the array.
|
|
5
|
+
# If _n_ is not given then picks out a single
|
|
6
|
+
# element.
|
|
7
|
+
#
|
|
8
|
+
# require 'facet/array/pick'
|
|
9
|
+
#
|
|
10
|
+
# a = ["a", "b", "c", "d", "e"]
|
|
11
|
+
# a.pick #=> "b"
|
|
12
|
+
# a #=> ["a", "c", "d", "e"]
|
|
13
|
+
# a.pick(2) #=> ["a", "e"]
|
|
14
|
+
# a #=> ["c", "d"]
|
|
15
|
+
#
|
|
16
|
+
def pick(n=nil)
|
|
17
|
+
if n
|
|
18
|
+
n = n.to_i
|
|
19
|
+
all = (0..size).to_a
|
|
20
|
+
idx = pick_indexes(n)
|
|
21
|
+
vals = values_at(*idx)
|
|
22
|
+
replace( values_at( *(all - idx) )
|
|
23
|
+
return vals
|
|
24
|
+
else
|
|
25
|
+
i = Kernel.rand(size)
|
|
26
|
+
v = at(i)
|
|
27
|
+
delete_at(i)
|
|
28
|
+
return v
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
class Array
|
|
2
|
+
# Like +compact+ but takes an _object_ to be
|
|
3
|
+
# removed rather then just nil. Empty string
|
|
4
|
+
# ("") is the default if no parameter is given.
|
|
5
|
+
#
|
|
6
|
+
# require 'facet/array/remove'
|
|
7
|
+
#
|
|
8
|
+
# [1,'a',nil,""].remove #=> [1,'a',nil]
|
|
9
|
+
# [1,'a',nil,""].remove(nil) #=> [1,'a',""]
|
|
10
|
+
# [1,'a',nil,""].remove('a') #=> [1,nil,""]
|
|
11
|
+
#
|
|
12
|
+
# This could probably use a little error catching code (todo).
|
|
13
|
+
def remove(object="")
|
|
14
|
+
if object
|
|
15
|
+
delete(object)
|
|
16
|
+
else
|
|
17
|
+
compact
|
|
18
|
+
end
|
|
19
|
+
self
|
|
20
|
+
end
|
|
21
|
+
end
|
|
Binary file
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
class Binding
|
|
2
|
+
# Returns the class in the binding context
|
|
3
|
+
# this is just a shortcut for self.class
|
|
4
|
+
# You can still get to the old class (of the binding)
|
|
5
|
+
# via #__class__. (NOTE: Is this really a good idea?)
|
|
6
|
+
alias_method( :__class__, :class ) unless respond_to?( :__class__ )
|
|
7
|
+
def class()
|
|
8
|
+
@class ||= eval( "self.class" )
|
|
9
|
+
@class
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'facet/binding/binding' # This comes with the whole nine yards.
|
|
2
|
+
class Binding
|
|
3
|
+
# All missing methods delegate to binding's self.
|
|
4
|
+
#--
|
|
5
|
+
# (is this a good idea, or not?)
|
|
6
|
+
#++
|
|
7
|
+
alias_method( :method_missing_without_delegate, :method_missing )
|
|
8
|
+
def method_missing(sym, *args, &blk)
|
|
9
|
+
if send(:self).respond_to?(sym)
|
|
10
|
+
send(:self).send(sym, *args, &blk)
|
|
11
|
+
else
|
|
12
|
+
method_missing_without_delegate
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class Module
|
|
2
|
+
private
|
|
3
|
+
def when_included_provide_class_methods(&bl)
|
|
4
|
+
unless @__class_methods_module
|
|
5
|
+
@__class_methods_module = Module.new
|
|
6
|
+
def self.append_features(base)
|
|
7
|
+
super
|
|
8
|
+
base.extend(@__class_methods_module)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
@__class_methods_module.class_eval(&bl)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
|
|
2
|
+
module Enumerable
|
|
3
|
+
def [](*args)
|
|
4
|
+
arr = self.to_a
|
|
5
|
+
r = []
|
|
6
|
+
args.each{ |arg|
|
|
7
|
+
case arg
|
|
8
|
+
when Proc
|
|
9
|
+
r.concat arr.find_all &arg
|
|
10
|
+
when Range
|
|
11
|
+
r.concat arr[arg]
|
|
12
|
+
when Numeric
|
|
13
|
+
r << arr[arg]
|
|
14
|
+
else
|
|
15
|
+
raise ArgumentError, "Invalid enumeration"
|
|
16
|
+
#super if defined? super
|
|
17
|
+
end
|
|
18
|
+
}
|
|
19
|
+
r
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# --- test ---
|
|
25
|
+
|
|
26
|
+
if $0 == __FILE__
|
|
27
|
+
|
|
28
|
+
p ("a".."z")[2,5,3..4]
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
#
|
|
2
|
+
# = rand.rb -- library for picking random elements and shuffling
|
|
3
|
+
#
|
|
4
|
+
# Copyright (C) 2004 Ilmari Heikkinen <mailto:kig@misfiring.net>
|
|
5
|
+
#
|
|
6
|
+
# Documentation:: Christian Neukirchen <mailto:chneukirchen@gmail.com>
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
module Enumerable
|
|
11
|
+
# Choose and return a random element of the Enumerable.
|
|
12
|
+
# [1, 2, 3, 4].pick #=> 2 (or 1, 3, 4)
|
|
13
|
+
def pick
|
|
14
|
+
entries.pick
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Return an array of the elements in random order.
|
|
18
|
+
# [1, 2, 3, 4].shuffle #=> [3, 4, 1, 2]
|
|
19
|
+
def shuffle
|
|
20
|
+
entries.shuffle
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Calls _block_ once for each element in _self_ in random order,
|
|
24
|
+
# passing that element as a parameter.
|
|
25
|
+
def each_random(&block)
|
|
26
|
+
shuffle.each(&block)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Invokes _block_ once for each element of _self_ in random order.
|
|
30
|
+
# Creates a new array containing the values returned by the block.
|
|
31
|
+
def map_random(&block)
|
|
32
|
+
shuffle.map(&block)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class Array
|
|
38
|
+
# Choose and return a random element of _self_.
|
|
39
|
+
# [1, 2, 3, 4].pick #=> 2 (or 1, 3, 4)
|
|
40
|
+
def pick
|
|
41
|
+
self[pick_index]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Deletes a random element of _self_, returning that element.
|
|
45
|
+
# a = [1, 2, 3, 4]
|
|
46
|
+
# a.pick #=> 2
|
|
47
|
+
# a #=> [1, 3, 4]
|
|
48
|
+
def pick!
|
|
49
|
+
i = pick_index
|
|
50
|
+
rv = self[i]
|
|
51
|
+
delete_at(i)
|
|
52
|
+
rv
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Return the index of an random element of _self_.
|
|
56
|
+
# ["foo", "bar", "baz"].pick_index #=> 1 (or 0, or 2)
|
|
57
|
+
def pick_index
|
|
58
|
+
rand(size)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Destructive pick_index. Delete a random element of _self_ and
|
|
62
|
+
# return its index.
|
|
63
|
+
# a = [11, 22, 33, 44]
|
|
64
|
+
# a.pick_index! #=> 2
|
|
65
|
+
# a #=> [11, 22, 44]
|
|
66
|
+
def pick_index!
|
|
67
|
+
i = pick_index
|
|
68
|
+
delete_at i
|
|
69
|
+
i
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Return an array of the elements in random order.
|
|
73
|
+
# [11, 22, 33, 44].shuffle #=> [33, 11, 44, 22]
|
|
74
|
+
def shuffle
|
|
75
|
+
sort_by{rand}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Destructive shuffle. Arrange the elements of _self_ in new order.
|
|
79
|
+
# a = [11, 22, 33, 44]
|
|
80
|
+
# a.shuffle!
|
|
81
|
+
# a #=> [33, 11, 44, 22]
|
|
82
|
+
def shuffle!
|
|
83
|
+
sort!{rand <=> 0.5}
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class Hash
|
|
89
|
+
# Choose and return a random key-value pair of _self_.
|
|
90
|
+
# {:one => 1, :two => 2, :three => 3}.pick #=> [:one, 1]
|
|
91
|
+
def pick
|
|
92
|
+
k = keys.pick
|
|
93
|
+
[k, self[k]]
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Deletes a random key-value pair of _self_, returning that pair.
|
|
97
|
+
# a = {:one => 1, :two => 2, :three => 3}
|
|
98
|
+
# a.pick #=> [:two, 2]
|
|
99
|
+
# a #=> {:one => 1, :three => 3}
|
|
100
|
+
def pick!
|
|
101
|
+
rv = pick
|
|
102
|
+
delete rv.first
|
|
103
|
+
rv
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Return a random key of _self_.
|
|
107
|
+
# {:one => 1, :two => 2, :three => 3}.pick_key #=> :three
|
|
108
|
+
def pick_key
|
|
109
|
+
keys.pick
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Return a random value of _self_.
|
|
113
|
+
# {:one => 1, :two => 2, :three => 3}.pick_value #=> 3
|
|
114
|
+
def pick_value
|
|
115
|
+
values.pick
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Delete a random key-value pair of _self_ and return the key.
|
|
119
|
+
# a = {:one => 1, :two => 2, :three => 3}
|
|
120
|
+
# a.pick_key! #=> :two
|
|
121
|
+
# a #=> {:one => 1, :three => 3}
|
|
122
|
+
def pick_key!
|
|
123
|
+
pick!.first
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Delete a random key-value pair of _self_ and return the value.
|
|
127
|
+
# a = {:one => 1, :two => 2, :three => 3}
|
|
128
|
+
# a.pick_value! #=> 2
|
|
129
|
+
# a #=> {:one => 1, :three => 3}
|
|
130
|
+
def pick_value!
|
|
131
|
+
pick!.last
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Return the key-value pairs of _self_ with _keys_ and _values_
|
|
135
|
+
# shuffled independedly.
|
|
136
|
+
# {:one => 1, :two => 2, :three => 3}.shuffle_hash_pairs
|
|
137
|
+
# #=> [[:one, 3], [:two, 1], [:three, 2]]
|
|
138
|
+
def shuffle_hash_pairs
|
|
139
|
+
keys.shuffle.zip(values.shuffle)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Return a copy of _self_ with _values_ arranged in random order.
|
|
143
|
+
# {:one => 1, :two => 2, :three => 3}.shuffle_hash
|
|
144
|
+
# #=> {:two=>2, :three=>1, :one=>3}
|
|
145
|
+
def shuffle_hash
|
|
146
|
+
shuffled = {}
|
|
147
|
+
shuffle_hash_pairs.each{|k, v|
|
|
148
|
+
shuffled[k] = v
|
|
149
|
+
}
|
|
150
|
+
shuffled
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Destructive shuffle_hash. Arrange the values of _self_ in
|
|
154
|
+
# new, random order.
|
|
155
|
+
# h = {:one => 1, :two => 2, :three => 3}
|
|
156
|
+
# h.shuffle_hash!
|
|
157
|
+
# h #=> {:two=>2, :three=>1, :one=>3}
|
|
158
|
+
def shuffle_hash!
|
|
159
|
+
shuffle_hash_pairs.each{|k, v|
|
|
160
|
+
self[k] = v
|
|
161
|
+
}
|
|
162
|
+
self
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
class String
|
|
168
|
+
# Return the string with characters arranged in random order.
|
|
169
|
+
# "Ruby rules".shuffle_chars #=> "e lybRsuur"
|
|
170
|
+
def shuffle_chars
|
|
171
|
+
split(//).shuffle.join('')
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# Destructive shuffle_chars. Arrange the characters of the string
|
|
175
|
+
# in new, random order.
|
|
176
|
+
# s = "Ruby rules".shuffle_chars
|
|
177
|
+
# s.shuffle_chars!
|
|
178
|
+
# s #=> "e lybRsuur"
|
|
179
|
+
def shuffle_chars!
|
|
180
|
+
self[0,size] = shuffle_chars
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Return a random byte of _self_.
|
|
184
|
+
# "Ruby rules".pick_byte #=> 121
|
|
185
|
+
def pick_byte
|
|
186
|
+
self[pick_index]
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# Return a single-character string of a random character in _self_.
|
|
190
|
+
# "Ruby rules".pick_char #=> "y"
|
|
191
|
+
def pick_char
|
|
192
|
+
pick_byte.chr
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Destructive pick_char. Delete a random character of the string
|
|
196
|
+
# and return it as a single-character string.
|
|
197
|
+
# s = "Ruby rules"
|
|
198
|
+
# s.pick_char! #=> "y"
|
|
199
|
+
# s #=> "Rub rules"
|
|
200
|
+
def pick_char!
|
|
201
|
+
i = pick_index
|
|
202
|
+
rv = self[i,1]
|
|
203
|
+
self[i,1] = ""
|
|
204
|
+
rv
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
# Destructive pick_byte. Delete a random byte of _self_ and return it.
|
|
208
|
+
# s = "Ruby rules"
|
|
209
|
+
# s.pick_byte! #=> 121
|
|
210
|
+
# s #=> "Rub rules"
|
|
211
|
+
def pick_byte!
|
|
212
|
+
pick_char![0]
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
# Return a random byte index of _self_.
|
|
216
|
+
# "Ruby rules".pick_index #=> 3
|
|
217
|
+
def pick_index
|
|
218
|
+
rand(size)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# Destructive pick_index. Delete a random byte of _self_ and
|
|
222
|
+
# return it's index.
|
|
223
|
+
# s = "Ruby rules"
|
|
224
|
+
# s.pick_index #=> 3
|
|
225
|
+
# s #=> "Rub rules"
|
|
226
|
+
def pick_index!
|
|
227
|
+
i = pick_index
|
|
228
|
+
self[i,1] = ""
|
|
229
|
+
i
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
if __FILE__ == $0
|
|
235
|
+
|
|
236
|
+
require 'test/unit'
|
|
237
|
+
|
|
238
|
+
module RandTestHelpers # :nodoc:
|
|
239
|
+
def picker(enum, enum_check, method, n=50)
|
|
240
|
+
(1..n).all?{ enum_check.include? enum.send(method) }
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def try_shuffling(enum, enum_c, method)
|
|
244
|
+
rv = nil
|
|
245
|
+
10.times{
|
|
246
|
+
rv = enum.send method
|
|
247
|
+
break if rv != enum_c
|
|
248
|
+
}
|
|
249
|
+
rv
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
class RandArrayTest < Test::Unit::TestCase # :nodoc:
|
|
255
|
+
include RandTestHelpers
|
|
256
|
+
|
|
257
|
+
def ar
|
|
258
|
+
(0..99).to_a
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def test_pick
|
|
262
|
+
a = ar
|
|
263
|
+
results = (0...a.size).map{ a.pick }
|
|
264
|
+
assert true, results.all? {|r| a.include? r }
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def test_pick!
|
|
268
|
+
a = ar
|
|
269
|
+
results = (0...a.size).map{ a.pick! }
|
|
270
|
+
assert true, results.sort == (0..99).to_a and a.empty?
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
def test_pick_index
|
|
274
|
+
a = ar
|
|
275
|
+
results = (0...a.size).map{ a.pick_index }
|
|
276
|
+
assert true, results.all? {|r| r.between?(0, a.size-1) }
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def test_pick_index!
|
|
280
|
+
a = ar
|
|
281
|
+
# side-effect-relying block; a.size = a.size-1 after pick_index!,
|
|
282
|
+
# so the picked index max value is the new a.size
|
|
283
|
+
assert true, (0...a.size).all?{ a.pick_index!.between?(0, a.size) } and a.empty?
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
def test_shuffle
|
|
287
|
+
a = ar
|
|
288
|
+
shuffled = try_shuffling(a, a, :shuffle)
|
|
289
|
+
assert true, shuffled.sort == a and shuffled != a
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
def test_shuffle!
|
|
293
|
+
a = ar
|
|
294
|
+
try_shuffling(a, ar, :shuffle!)
|
|
295
|
+
assert true, a != ar and a.sort == ar
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
class RandHashTest < Test::Unit::TestCase # :nodoc:
|
|
301
|
+
include RandTestHelpers
|
|
302
|
+
|
|
303
|
+
def ha
|
|
304
|
+
Hash[*(1..100).to_a]
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def test_pick
|
|
308
|
+
assert true, picker(ha, ha.entries, :pick)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def test_pick!
|
|
312
|
+
h = ha
|
|
313
|
+
assert true, picker(h, ha.entries, :pick!) and h.empty?
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
def test_pick_key
|
|
317
|
+
assert true, picker(ha, ha.keys, :pick_key)
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def test_pick_key!
|
|
321
|
+
h = ha
|
|
322
|
+
assert true, picker(h, ha.keys, :pick_key!) and h.empty?
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def test_pick_value
|
|
326
|
+
assert true, picker(ha, ha.values, :pick_value)
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def test_pick_value!
|
|
330
|
+
h = ha
|
|
331
|
+
assert true, picker(h, ha.values, :pick_value!) and h.empty?
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
def test_shuffle_hash
|
|
335
|
+
h = ha
|
|
336
|
+
hs = try_shuffling(ha, h, :shuffle_hash)
|
|
337
|
+
assert true, hs != h and (hs.keys + hs.values).sort == (h.keys + h.values).sort
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def test_shuffle_hash!
|
|
341
|
+
h = ha
|
|
342
|
+
hs = ha
|
|
343
|
+
try_shuffling(hs, h, :shuffle_hash!)
|
|
344
|
+
assert true, hs != h and (hs.keys + hs.values).sort == (h.keys + h.values).sort
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
def test_shuffle
|
|
348
|
+
h = ha
|
|
349
|
+
hs = try_shuffling(ha, h, :shuffle)
|
|
350
|
+
assert true, hs != h and hs.entries.sort == h.entries.sort
|
|
351
|
+
end
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
class RandStringTest < Test::Unit::TestCase # :nodoc:
|
|
356
|
+
include RandTestHelpers
|
|
357
|
+
|
|
358
|
+
def self.pick_tests(endings)
|
|
359
|
+
endings.each{|ending, compare_str_f|
|
|
360
|
+
define_method("test_pick#{ending}"){
|
|
361
|
+
s = str
|
|
362
|
+
assert true, picker(s, instance_eval(&compare_str_f), "pick#{ending}", s.size)
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
def self.pick_tests!(endings)
|
|
368
|
+
endings.each{|ending, compare_str_f|
|
|
369
|
+
define_method("test_pick#{ending}!"){
|
|
370
|
+
s = str
|
|
371
|
+
assert true, picker(s, instance_eval(&compare_str_f), "pick#{ending}!", s.size) and s.empty?
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
def str
|
|
377
|
+
(("a".."z").to_s + "\n") * 10
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
def test_shuffle
|
|
381
|
+
s = str
|
|
382
|
+
ss = try_shuffling(s, s.to_a, :shuffle)
|
|
383
|
+
assert true, ss != s.to_a and ss.sort == s.to_a.sort
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
def test_shuffle_chars
|
|
387
|
+
s = str
|
|
388
|
+
ss = try_shuffling(s, s.split(//), :shuffle_chars)
|
|
389
|
+
assert true, ss != s and ss.split(//).sort == s.split(//).sort
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
def test_shuffle_chars!
|
|
393
|
+
s = str
|
|
394
|
+
ss = str
|
|
395
|
+
try_shuffling(ss, s.split(//), :shuffle_chars!)
|
|
396
|
+
assert true, ss != s and ss.split(//).sort == s.split(//).sort
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
pick_tests({ "" => lambda{str.to_a},
|
|
400
|
+
:_char => lambda{str.split(//)},
|
|
401
|
+
:_byte => lambda{str.split(//).map{|c| c[0]}},
|
|
402
|
+
:_index => lambda{(0...str.size).to_a}
|
|
403
|
+
})
|
|
404
|
+
|
|
405
|
+
pick_tests!({ :_char => lambda{str.split(//)},
|
|
406
|
+
:_byte => lambda{str.split(//).map{|c| c[0]}},
|
|
407
|
+
:_index => lambda{(0...str.size).to_a}
|
|
408
|
+
})
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
end #if
|