need_for_type 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (724) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -5
  3. data/assets/texts/text-1.txt +1 -0
  4. data/assets/texts/text-10.txt +1 -0
  5. data/assets/texts/text-100.txt +1 -0
  6. data/assets/texts/text-101.txt +1 -0
  7. data/assets/texts/text-102.txt +1 -0
  8. data/assets/texts/text-103.txt +1 -0
  9. data/assets/texts/text-104.txt +1 -0
  10. data/assets/texts/text-105.txt +1 -0
  11. data/assets/texts/text-106.txt +1 -0
  12. data/assets/texts/text-107.txt +1 -0
  13. data/assets/texts/text-108.txt +1 -0
  14. data/assets/texts/text-109.txt +1 -0
  15. data/assets/texts/text-11.txt +1 -0
  16. data/assets/texts/text-110.txt +1 -0
  17. data/assets/texts/text-111.txt +1 -0
  18. data/assets/texts/text-112.txt +1 -0
  19. data/assets/texts/text-113.txt +1 -0
  20. data/assets/texts/text-114.txt +1 -0
  21. data/assets/texts/text-115.txt +1 -0
  22. data/assets/texts/text-116.txt +1 -0
  23. data/assets/texts/text-117.txt +6 -0
  24. data/assets/texts/text-118.txt +1 -0
  25. data/assets/texts/text-119.txt +1 -0
  26. data/assets/texts/text-12.txt +1 -0
  27. data/assets/texts/text-120.txt +1 -0
  28. data/assets/texts/text-121.txt +1 -0
  29. data/assets/texts/text-122.txt +1 -0
  30. data/assets/texts/text-123.txt +1 -0
  31. data/assets/texts/text-124.txt +7 -0
  32. data/assets/texts/text-125.txt +1 -0
  33. data/assets/texts/text-126.txt +1 -0
  34. data/assets/texts/text-127.txt +1 -0
  35. data/assets/texts/text-128.txt +1 -0
  36. data/assets/texts/text-129.txt +1 -0
  37. data/assets/texts/text-13.txt +1 -0
  38. data/assets/texts/text-130.txt +1 -0
  39. data/assets/texts/text-131.txt +1 -0
  40. data/assets/texts/text-132.txt +1 -0
  41. data/assets/texts/text-133.txt +7 -0
  42. data/assets/texts/text-134.txt +1 -0
  43. data/assets/texts/text-135.txt +1 -0
  44. data/assets/texts/text-136.txt +1 -0
  45. data/assets/texts/text-137.txt +1 -0
  46. data/assets/texts/text-138.txt +1 -0
  47. data/assets/texts/text-139.txt +1 -0
  48. data/assets/texts/text-14.txt +1 -0
  49. data/assets/texts/text-140.txt +1 -0
  50. data/assets/texts/text-141.txt +1 -0
  51. data/assets/texts/text-142.txt +1 -0
  52. data/assets/texts/text-143.txt +1 -0
  53. data/assets/texts/text-144.txt +1 -0
  54. data/assets/texts/text-145.txt +1 -0
  55. data/assets/texts/text-146.txt +1 -0
  56. data/assets/texts/text-147.txt +1 -0
  57. data/assets/texts/text-148.txt +1 -0
  58. data/assets/texts/text-149.txt +1 -0
  59. data/assets/texts/text-15.txt +1 -0
  60. data/assets/texts/text-150.txt +1 -0
  61. data/assets/texts/text-151.txt +6 -0
  62. data/assets/texts/text-152.txt +1 -0
  63. data/assets/texts/text-153.txt +1 -0
  64. data/assets/texts/text-154.txt +1 -0
  65. data/assets/texts/text-155.txt +1 -0
  66. data/assets/texts/text-156.txt +1 -0
  67. data/assets/texts/text-157.txt +1 -0
  68. data/assets/texts/text-158.txt +1 -0
  69. data/assets/texts/text-159.txt +1 -0
  70. data/assets/texts/text-16.txt +1 -0
  71. data/assets/texts/text-160.txt +1 -0
  72. data/assets/texts/text-161.txt +1 -0
  73. data/assets/texts/text-162.txt +1 -0
  74. data/assets/texts/text-163.txt +5 -0
  75. data/assets/texts/text-164.txt +1 -0
  76. data/assets/texts/text-165.txt +1 -0
  77. data/assets/texts/text-166.txt +1 -0
  78. data/assets/texts/text-167.txt +1 -0
  79. data/assets/texts/text-168.txt +1 -0
  80. data/assets/texts/text-169.txt +1 -0
  81. data/assets/texts/text-17.txt +6 -0
  82. data/assets/texts/text-170.txt +1 -0
  83. data/assets/texts/text-171.txt +1 -0
  84. data/assets/texts/text-172.txt +1 -0
  85. data/assets/texts/text-173.txt +1 -0
  86. data/assets/texts/text-174.txt +1 -0
  87. data/assets/texts/text-175.txt +1 -0
  88. data/assets/texts/text-176.txt +1 -0
  89. data/assets/texts/text-177.txt +1 -0
  90. data/assets/texts/text-178.txt +1 -0
  91. data/assets/texts/text-179.txt +1 -0
  92. data/assets/texts/text-18.txt +1 -0
  93. data/assets/texts/text-180.txt +1 -0
  94. data/assets/texts/text-181.txt +1 -0
  95. data/assets/texts/text-182.txt +1 -0
  96. data/assets/texts/text-183.txt +1 -0
  97. data/assets/texts/text-184.txt +1 -0
  98. data/assets/texts/text-185.txt +1 -0
  99. data/assets/texts/text-186.txt +1 -0
  100. data/assets/texts/text-187.txt +1 -0
  101. data/assets/texts/text-188.txt +1 -0
  102. data/assets/texts/text-189.txt +1 -0
  103. data/assets/texts/text-19.txt +1 -0
  104. data/assets/texts/text-190.txt +5 -0
  105. data/assets/texts/text-191.txt +1 -0
  106. data/assets/texts/text-192.txt +1 -0
  107. data/assets/texts/text-193.txt +1 -0
  108. data/assets/texts/text-194.txt +1 -0
  109. data/assets/texts/text-195.txt +1 -0
  110. data/assets/texts/text-196.txt +1 -0
  111. data/assets/texts/text-197.txt +1 -0
  112. data/assets/texts/text-198.txt +1 -0
  113. data/assets/texts/text-199.txt +1 -0
  114. data/assets/texts/text-2.txt +1 -0
  115. data/assets/texts/text-20.txt +6 -0
  116. data/assets/texts/text-200.txt +1 -0
  117. data/assets/texts/text-201.txt +1 -0
  118. data/assets/texts/text-202.txt +1 -0
  119. data/assets/texts/text-203.txt +1 -0
  120. data/assets/texts/text-204.txt +1 -0
  121. data/assets/texts/text-205.txt +1 -0
  122. data/assets/texts/text-206.txt +1 -0
  123. data/assets/texts/text-207.txt +5 -0
  124. data/assets/texts/text-208.txt +1 -0
  125. data/assets/texts/text-209.txt +1 -0
  126. data/assets/texts/text-21.txt +1 -0
  127. data/assets/texts/text-210.txt +1 -0
  128. data/assets/texts/text-211.txt +1 -0
  129. data/assets/texts/text-212.txt +1 -0
  130. data/assets/texts/text-213.txt +1 -0
  131. data/assets/texts/text-214.txt +1 -0
  132. data/assets/texts/text-215.txt +6 -0
  133. data/assets/texts/text-216.txt +1 -0
  134. data/assets/texts/text-217.txt +1 -0
  135. data/assets/texts/text-218.txt +1 -0
  136. data/assets/texts/text-219.txt +1 -0
  137. data/assets/texts/text-22.txt +1 -0
  138. data/assets/texts/text-220.txt +1 -0
  139. data/assets/texts/text-221.txt +1 -0
  140. data/assets/texts/text-222.txt +1 -0
  141. data/assets/texts/text-223.txt +1 -0
  142. data/assets/texts/text-224.txt +1 -0
  143. data/assets/texts/text-225.txt +1 -0
  144. data/assets/texts/text-226.txt +1 -0
  145. data/assets/texts/text-227.txt +1 -0
  146. data/assets/texts/text-228.txt +5 -0
  147. data/assets/texts/text-229.txt +5 -0
  148. data/assets/texts/text-23.txt +1 -0
  149. data/assets/texts/text-230.txt +1 -0
  150. data/assets/texts/text-231.txt +1 -0
  151. data/assets/texts/text-232.txt +1 -0
  152. data/assets/texts/text-233.txt +1 -0
  153. data/assets/texts/text-234.txt +1 -0
  154. data/assets/texts/text-235.txt +1 -0
  155. data/assets/texts/text-236.txt +1 -0
  156. data/assets/texts/text-237.txt +1 -0
  157. data/assets/texts/text-238.txt +1 -0
  158. data/assets/texts/text-239.txt +1 -0
  159. data/assets/texts/text-24.txt +5 -0
  160. data/assets/texts/text-240.txt +1 -0
  161. data/assets/texts/text-241.txt +5 -0
  162. data/assets/texts/text-242.txt +1 -0
  163. data/assets/texts/text-243.txt +1 -0
  164. data/assets/texts/text-244.txt +1 -0
  165. data/assets/texts/text-245.txt +1 -0
  166. data/assets/texts/text-246.txt +1 -0
  167. data/assets/texts/text-247.txt +1 -0
  168. data/assets/texts/text-248.txt +1 -0
  169. data/assets/texts/text-249.txt +1 -0
  170. data/assets/texts/text-25.txt +1 -0
  171. data/assets/texts/text-250.txt +1 -0
  172. data/assets/texts/text-251.txt +1 -0
  173. data/assets/texts/text-252.txt +1 -0
  174. data/assets/texts/text-253.txt +1 -0
  175. data/assets/texts/text-254.txt +1 -0
  176. data/assets/texts/text-255.txt +1 -0
  177. data/assets/texts/text-256.txt +1 -0
  178. data/assets/texts/text-257.txt +1 -0
  179. data/assets/texts/text-258.txt +1 -0
  180. data/assets/texts/text-259.txt +1 -0
  181. data/assets/texts/text-26.txt +6 -0
  182. data/assets/texts/text-260.txt +1 -0
  183. data/assets/texts/text-261.txt +1 -0
  184. data/assets/texts/text-262.txt +1 -0
  185. data/assets/texts/text-263.txt +1 -0
  186. data/assets/texts/text-264.txt +1 -0
  187. data/assets/texts/text-265.txt +1 -0
  188. data/assets/texts/text-266.txt +4 -0
  189. data/assets/texts/text-267.txt +1 -0
  190. data/assets/texts/text-268.txt +1 -0
  191. data/assets/texts/text-269.txt +1 -0
  192. data/assets/texts/text-27.txt +1 -0
  193. data/assets/texts/text-270.txt +1 -0
  194. data/assets/texts/text-271.txt +1 -0
  195. data/assets/texts/text-272.txt +1 -0
  196. data/assets/texts/text-273.txt +1 -0
  197. data/assets/texts/text-274.txt +1 -0
  198. data/assets/texts/text-275.txt +1 -0
  199. data/assets/texts/text-276.txt +1 -0
  200. data/assets/texts/text-277.txt +1 -0
  201. data/assets/texts/text-278.txt +1 -0
  202. data/assets/texts/text-279.txt +1 -0
  203. data/assets/texts/text-28.txt +1 -0
  204. data/assets/texts/text-280.txt +1 -0
  205. data/assets/texts/text-281.txt +1 -0
  206. data/assets/texts/text-282.txt +1 -0
  207. data/assets/texts/text-283.txt +1 -0
  208. data/assets/texts/text-284.txt +1 -0
  209. data/assets/texts/text-285.txt +4 -0
  210. data/assets/texts/text-286.txt +1 -0
  211. data/assets/texts/text-287.txt +1 -0
  212. data/assets/texts/text-288.txt +1 -0
  213. data/assets/texts/text-289.txt +1 -0
  214. data/assets/texts/text-29.txt +1 -0
  215. data/assets/texts/text-290.txt +6 -0
  216. data/assets/texts/text-291.txt +1 -0
  217. data/assets/texts/text-292.txt +1 -0
  218. data/assets/texts/text-293.txt +1 -0
  219. data/assets/texts/text-294.txt +1 -0
  220. data/assets/texts/text-295.txt +3 -0
  221. data/assets/texts/text-296.txt +1 -0
  222. data/assets/texts/text-297.txt +1 -0
  223. data/assets/texts/text-298.txt +1 -0
  224. data/assets/texts/text-299.txt +1 -0
  225. data/assets/texts/text-3.txt +1 -0
  226. data/assets/texts/text-30.txt +1 -0
  227. data/assets/texts/text-300.txt +1 -0
  228. data/assets/texts/text-301.txt +1 -0
  229. data/assets/texts/text-302.txt +1 -0
  230. data/assets/texts/text-303.txt +1 -0
  231. data/assets/texts/text-304.txt +1 -0
  232. data/assets/texts/text-305.txt +1 -0
  233. data/assets/texts/text-306.txt +1 -0
  234. data/assets/texts/text-307.txt +3 -0
  235. data/assets/texts/text-308.txt +1 -0
  236. data/assets/texts/text-309.txt +1 -0
  237. data/assets/texts/text-31.txt +4 -0
  238. data/assets/texts/text-310.txt +1 -0
  239. data/assets/texts/text-311.txt +1 -0
  240. data/assets/texts/text-312.txt +1 -0
  241. data/assets/texts/text-313.txt +1 -0
  242. data/assets/texts/text-314.txt +1 -0
  243. data/assets/texts/text-315.txt +1 -0
  244. data/assets/texts/text-316.txt +5 -0
  245. data/assets/texts/text-317.txt +1 -0
  246. data/assets/texts/text-318.txt +1 -0
  247. data/assets/texts/text-319.txt +1 -0
  248. data/assets/texts/text-32.txt +5 -0
  249. data/assets/texts/text-320.txt +1 -0
  250. data/assets/texts/text-321.txt +1 -0
  251. data/assets/texts/text-322.txt +1 -0
  252. data/assets/texts/text-323.txt +1 -0
  253. data/assets/texts/text-324.txt +1 -0
  254. data/assets/texts/text-325.txt +1 -0
  255. data/assets/texts/text-326.txt +1 -0
  256. data/assets/texts/text-327.txt +1 -0
  257. data/assets/texts/text-328.txt +1 -0
  258. data/assets/texts/text-329.txt +1 -0
  259. data/assets/texts/text-33.txt +1 -0
  260. data/assets/texts/text-330.txt +1 -0
  261. data/assets/texts/text-331.txt +1 -0
  262. data/assets/texts/text-332.txt +1 -0
  263. data/assets/texts/text-333.txt +4 -0
  264. data/assets/texts/text-334.txt +1 -0
  265. data/assets/texts/text-335.txt +1 -0
  266. data/assets/texts/text-336.txt +1 -0
  267. data/assets/texts/text-337.txt +1 -0
  268. data/assets/texts/text-338.txt +1 -0
  269. data/assets/texts/text-339.txt +1 -0
  270. data/assets/texts/text-34.txt +1 -0
  271. data/assets/texts/text-340.txt +1 -0
  272. data/assets/texts/text-341.txt +1 -0
  273. data/assets/texts/text-342.txt +1 -0
  274. data/assets/texts/text-343.txt +1 -0
  275. data/assets/texts/text-344.txt +1 -0
  276. data/assets/texts/text-345.txt +1 -0
  277. data/assets/texts/text-346.txt +5 -0
  278. data/assets/texts/text-347.txt +1 -0
  279. data/assets/texts/text-348.txt +1 -0
  280. data/assets/texts/text-349.txt +1 -0
  281. data/assets/texts/text-35.txt +1 -0
  282. data/assets/texts/text-350.txt +1 -0
  283. data/assets/texts/text-351.txt +6 -0
  284. data/assets/texts/text-352.txt +1 -0
  285. data/assets/texts/text-353.txt +1 -0
  286. data/assets/texts/text-354.txt +1 -0
  287. data/assets/texts/text-355.txt +1 -0
  288. data/assets/texts/text-356.txt +1 -0
  289. data/assets/texts/text-357.txt +1 -0
  290. data/assets/texts/text-358.txt +1 -0
  291. data/assets/texts/text-359.txt +1 -0
  292. data/assets/texts/text-36.txt +1 -0
  293. data/assets/texts/text-360.txt +1 -0
  294. data/assets/texts/text-361.txt +1 -0
  295. data/assets/texts/text-362.txt +6 -0
  296. data/assets/texts/text-363.txt +1 -0
  297. data/assets/texts/text-364.txt +1 -0
  298. data/assets/texts/text-365.txt +1 -0
  299. data/assets/texts/text-366.txt +1 -0
  300. data/assets/texts/text-367.txt +1 -0
  301. data/assets/texts/text-368.txt +5 -0
  302. data/assets/texts/text-369.txt +1 -0
  303. data/assets/texts/text-37.txt +1 -0
  304. data/assets/texts/text-370.txt +1 -0
  305. data/assets/texts/text-371.txt +1 -0
  306. data/assets/texts/text-372.txt +1 -0
  307. data/assets/texts/text-373.txt +1 -0
  308. data/assets/texts/text-374.txt +7 -0
  309. data/assets/texts/text-375.txt +1 -0
  310. data/assets/texts/text-376.txt +1 -0
  311. data/assets/texts/text-377.txt +1 -0
  312. data/assets/texts/text-378.txt +1 -0
  313. data/assets/texts/text-379.txt +1 -0
  314. data/assets/texts/text-38.txt +1 -0
  315. data/assets/texts/text-380.txt +1 -0
  316. data/assets/texts/text-381.txt +1 -0
  317. data/assets/texts/text-382.txt +1 -0
  318. data/assets/texts/text-383.txt +1 -0
  319. data/assets/texts/text-384.txt +1 -0
  320. data/assets/texts/text-385.txt +1 -0
  321. data/assets/texts/text-386.txt +1 -0
  322. data/assets/texts/text-387.txt +1 -0
  323. data/assets/texts/text-388.txt +1 -0
  324. data/assets/texts/text-389.txt +1 -0
  325. data/assets/texts/text-39.txt +1 -0
  326. data/assets/texts/text-390.txt +1 -0
  327. data/assets/texts/text-391.txt +1 -0
  328. data/assets/texts/text-392.txt +1 -0
  329. data/assets/texts/text-393.txt +1 -0
  330. data/assets/texts/text-394.txt +1 -0
  331. data/assets/texts/text-395.txt +1 -0
  332. data/assets/texts/text-396.txt +1 -0
  333. data/assets/texts/text-397.txt +1 -0
  334. data/assets/texts/text-398.txt +1 -0
  335. data/assets/texts/text-399.txt +1 -0
  336. data/assets/texts/text-4.txt +1 -0
  337. data/assets/texts/text-40.txt +1 -0
  338. data/assets/texts/text-400.txt +1 -0
  339. data/assets/texts/text-401.txt +1 -0
  340. data/assets/texts/text-402.txt +1 -0
  341. data/assets/texts/text-403.txt +1 -0
  342. data/assets/texts/text-404.txt +1 -0
  343. data/assets/texts/text-405.txt +1 -0
  344. data/assets/texts/text-406.txt +1 -0
  345. data/assets/texts/text-407.txt +1 -0
  346. data/assets/texts/text-408.txt +1 -0
  347. data/assets/texts/text-409.txt +1 -0
  348. data/assets/texts/text-41.txt +1 -0
  349. data/assets/texts/text-410.txt +1 -0
  350. data/assets/texts/text-411.txt +1 -0
  351. data/assets/texts/text-412.txt +1 -0
  352. data/assets/texts/text-413.txt +1 -0
  353. data/assets/texts/text-414.txt +1 -0
  354. data/assets/texts/text-415.txt +1 -0
  355. data/assets/texts/text-416.txt +1 -0
  356. data/assets/texts/text-417.txt +1 -0
  357. data/assets/texts/text-418.txt +1 -0
  358. data/assets/texts/text-419.txt +1 -0
  359. data/assets/texts/text-42.txt +1 -0
  360. data/assets/texts/text-420.txt +4 -0
  361. data/assets/texts/text-421.txt +1 -0
  362. data/assets/texts/text-422.txt +1 -0
  363. data/assets/texts/text-423.txt +1 -0
  364. data/assets/texts/text-424.txt +1 -0
  365. data/assets/texts/text-425.txt +1 -0
  366. data/assets/texts/text-426.txt +1 -0
  367. data/assets/texts/text-427.txt +1 -0
  368. data/assets/texts/text-428.txt +1 -0
  369. data/assets/texts/text-429.txt +1 -0
  370. data/assets/texts/text-43.txt +1 -0
  371. data/assets/texts/text-430.txt +1 -0
  372. data/assets/texts/text-431.txt +1 -0
  373. data/assets/texts/text-432.txt +1 -0
  374. data/assets/texts/text-433.txt +1 -0
  375. data/assets/texts/text-434.txt +1 -0
  376. data/assets/texts/text-435.txt +1 -0
  377. data/assets/texts/text-436.txt +1 -0
  378. data/assets/texts/text-437.txt +1 -0
  379. data/assets/texts/text-438.txt +1 -0
  380. data/assets/texts/text-439.txt +1 -0
  381. data/assets/texts/text-44.txt +1 -0
  382. data/assets/texts/text-440.txt +1 -0
  383. data/assets/texts/text-441.txt +1 -0
  384. data/assets/texts/text-442.txt +6 -0
  385. data/assets/texts/text-443.txt +1 -0
  386. data/assets/texts/text-444.txt +1 -0
  387. data/assets/texts/text-445.txt +1 -0
  388. data/assets/texts/text-446.txt +1 -0
  389. data/assets/texts/text-447.txt +1 -0
  390. data/assets/texts/text-448.txt +1 -0
  391. data/assets/texts/text-449.txt +1 -0
  392. data/assets/texts/text-45.txt +1 -0
  393. data/assets/texts/text-450.txt +1 -0
  394. data/assets/texts/text-451.txt +1 -0
  395. data/assets/texts/text-452.txt +1 -0
  396. data/assets/texts/text-453.txt +1 -0
  397. data/assets/texts/text-454.txt +1 -0
  398. data/assets/texts/text-455.txt +1 -0
  399. data/assets/texts/text-456.txt +1 -0
  400. data/assets/texts/text-457.txt +1 -0
  401. data/assets/texts/text-458.txt +1 -0
  402. data/assets/texts/text-459.txt +1 -0
  403. data/assets/texts/text-46.txt +1 -0
  404. data/assets/texts/text-460.txt +1 -0
  405. data/assets/texts/text-461.txt +1 -0
  406. data/assets/texts/text-462.txt +1 -0
  407. data/assets/texts/text-463.txt +1 -0
  408. data/assets/texts/text-464.txt +1 -0
  409. data/assets/texts/text-465.txt +1 -0
  410. data/assets/texts/text-466.txt +4 -0
  411. data/assets/texts/text-467.txt +1 -0
  412. data/assets/texts/text-468.txt +1 -0
  413. data/assets/texts/text-469.txt +1 -0
  414. data/assets/texts/text-47.txt +1 -0
  415. data/assets/texts/text-470.txt +1 -0
  416. data/assets/texts/text-471.txt +1 -0
  417. data/assets/texts/text-472.txt +1 -0
  418. data/assets/texts/text-473.txt +1 -0
  419. data/assets/texts/text-474.txt +1 -0
  420. data/assets/texts/text-475.txt +1 -0
  421. data/assets/texts/text-476.txt +1 -0
  422. data/assets/texts/text-477.txt +1 -0
  423. data/assets/texts/text-478.txt +1 -0
  424. data/assets/texts/text-479.txt +1 -0
  425. data/assets/texts/text-48.txt +4 -0
  426. data/assets/texts/text-480.txt +1 -0
  427. data/assets/texts/text-481.txt +1 -0
  428. data/assets/texts/text-482.txt +1 -0
  429. data/assets/texts/text-483.txt +1 -0
  430. data/assets/texts/text-484.txt +1 -0
  431. data/assets/texts/text-485.txt +1 -0
  432. data/assets/texts/text-486.txt +1 -0
  433. data/assets/texts/text-487.txt +1 -0
  434. data/assets/texts/text-488.txt +4 -0
  435. data/assets/texts/text-489.txt +1 -0
  436. data/assets/texts/text-49.txt +1 -0
  437. data/assets/texts/text-490.txt +1 -0
  438. data/assets/texts/text-491.txt +1 -0
  439. data/assets/texts/text-492.txt +1 -0
  440. data/assets/texts/text-493.txt +1 -0
  441. data/assets/texts/text-494.txt +1 -0
  442. data/assets/texts/text-495.txt +1 -0
  443. data/assets/texts/text-496.txt +1 -0
  444. data/assets/texts/text-497.txt +1 -0
  445. data/assets/texts/text-498.txt +1 -0
  446. data/assets/texts/text-499.txt +1 -0
  447. data/assets/texts/text-5.txt +1 -0
  448. data/assets/texts/text-50.txt +1 -0
  449. data/assets/texts/text-500.txt +1 -0
  450. data/assets/texts/text-501.txt +1 -0
  451. data/assets/texts/text-502.txt +1 -0
  452. data/assets/texts/text-503.txt +1 -0
  453. data/assets/texts/text-504.txt +1 -0
  454. data/assets/texts/text-505.txt +1 -0
  455. data/assets/texts/text-506.txt +1 -0
  456. data/assets/texts/text-507.txt +1 -0
  457. data/assets/texts/text-508.txt +1 -0
  458. data/assets/texts/text-509.txt +1 -0
  459. data/assets/texts/text-51.txt +1 -0
  460. data/assets/texts/text-510.txt +1 -0
  461. data/assets/texts/text-511.txt +1 -0
  462. data/assets/texts/text-512.txt +1 -0
  463. data/assets/texts/text-513.txt +1 -0
  464. data/assets/texts/text-514.txt +1 -0
  465. data/assets/texts/text-515.txt +1 -0
  466. data/assets/texts/text-516.txt +1 -0
  467. data/assets/texts/text-517.txt +1 -0
  468. data/assets/texts/text-518.txt +1 -0
  469. data/assets/texts/text-519.txt +1 -0
  470. data/assets/texts/text-52.txt +1 -0
  471. data/assets/texts/text-520.txt +1 -0
  472. data/assets/texts/text-521.txt +1 -0
  473. data/assets/texts/text-522.txt +1 -0
  474. data/assets/texts/text-523.txt +1 -0
  475. data/assets/texts/text-524.txt +1 -0
  476. data/assets/texts/text-525.txt +1 -0
  477. data/assets/texts/text-526.txt +1 -0
  478. data/assets/texts/text-527.txt +1 -0
  479. data/assets/texts/text-528.txt +1 -0
  480. data/assets/texts/text-529.txt +1 -0
  481. data/assets/texts/text-53.txt +1 -0
  482. data/assets/texts/text-530.txt +1 -0
  483. data/assets/texts/text-531.txt +1 -0
  484. data/assets/texts/text-532.txt +1 -0
  485. data/assets/texts/text-533.txt +1 -0
  486. data/assets/texts/text-534.txt +1 -0
  487. data/assets/texts/text-535.txt +1 -0
  488. data/assets/texts/text-536.txt +1 -0
  489. data/assets/texts/text-537.txt +1 -0
  490. data/assets/texts/text-538.txt +1 -0
  491. data/assets/texts/text-539.txt +1 -0
  492. data/assets/texts/text-54.txt +6 -0
  493. data/assets/texts/text-540.txt +1 -0
  494. data/assets/texts/text-541.txt +1 -0
  495. data/assets/texts/text-542.txt +1 -0
  496. data/assets/texts/text-543.txt +1 -0
  497. data/assets/texts/text-544.txt +1 -0
  498. data/assets/texts/text-545.txt +1 -0
  499. data/assets/texts/text-546.txt +4 -0
  500. data/assets/texts/text-547.txt +1 -0
  501. data/assets/texts/text-548.txt +1 -0
  502. data/assets/texts/text-549.txt +1 -0
  503. data/assets/texts/text-55.txt +1 -0
  504. data/assets/texts/text-550.txt +1 -0
  505. data/assets/texts/text-551.txt +1 -0
  506. data/assets/texts/text-552.txt +1 -0
  507. data/assets/texts/text-553.txt +1 -0
  508. data/assets/texts/text-554.txt +1 -0
  509. data/assets/texts/text-555.txt +1 -0
  510. data/assets/texts/text-556.txt +1 -0
  511. data/assets/texts/text-557.txt +1 -0
  512. data/assets/texts/text-558.txt +1 -0
  513. data/assets/texts/text-559.txt +1 -0
  514. data/assets/texts/text-56.txt +1 -0
  515. data/assets/texts/text-560.txt +1 -0
  516. data/assets/texts/text-561.txt +1 -0
  517. data/assets/texts/text-562.txt +1 -0
  518. data/assets/texts/text-563.txt +1 -0
  519. data/assets/texts/text-564.txt +1 -0
  520. data/assets/texts/text-565.txt +1 -0
  521. data/assets/texts/text-566.txt +1 -0
  522. data/assets/texts/text-567.txt +1 -0
  523. data/assets/texts/text-568.txt +1 -0
  524. data/assets/texts/text-569.txt +1 -0
  525. data/assets/texts/text-57.txt +1 -0
  526. data/assets/texts/text-570.txt +1 -0
  527. data/assets/texts/text-571.txt +1 -0
  528. data/assets/texts/text-572.txt +1 -0
  529. data/assets/texts/text-573.txt +1 -0
  530. data/assets/texts/text-574.txt +1 -0
  531. data/assets/texts/text-575.txt +1 -0
  532. data/assets/texts/text-576.txt +1 -0
  533. data/assets/texts/text-577.txt +1 -0
  534. data/assets/texts/text-578.txt +1 -0
  535. data/assets/texts/text-579.txt +1 -0
  536. data/assets/texts/text-58.txt +1 -0
  537. data/assets/texts/text-580.txt +1 -0
  538. data/assets/texts/text-581.txt +1 -0
  539. data/assets/texts/text-582.txt +1 -0
  540. data/assets/texts/text-583.txt +1 -0
  541. data/assets/texts/text-584.txt +1 -0
  542. data/assets/texts/text-585.txt +1 -0
  543. data/assets/texts/text-586.txt +1 -0
  544. data/assets/texts/text-587.txt +1 -0
  545. data/assets/texts/text-588.txt +1 -0
  546. data/assets/texts/text-589.txt +1 -0
  547. data/assets/texts/text-59.txt +1 -0
  548. data/assets/texts/text-590.txt +1 -0
  549. data/assets/texts/text-591.txt +1 -0
  550. data/assets/texts/text-592.txt +1 -0
  551. data/assets/texts/text-593.txt +1 -0
  552. data/assets/texts/text-594.txt +1 -0
  553. data/assets/texts/text-595.txt +1 -0
  554. data/assets/texts/text-596.txt +1 -0
  555. data/assets/texts/text-597.txt +1 -0
  556. data/assets/texts/text-598.txt +1 -0
  557. data/assets/texts/text-599.txt +1 -0
  558. data/assets/texts/text-6.txt +1 -0
  559. data/assets/texts/text-60.txt +1 -0
  560. data/assets/texts/text-600.txt +1 -0
  561. data/assets/texts/text-601.txt +6 -0
  562. data/assets/texts/text-602.txt +1 -0
  563. data/assets/texts/text-603.txt +1 -0
  564. data/assets/texts/text-604.txt +1 -0
  565. data/assets/texts/text-605.txt +1 -0
  566. data/assets/texts/text-606.txt +1 -0
  567. data/assets/texts/text-607.txt +1 -0
  568. data/assets/texts/text-608.txt +1 -0
  569. data/assets/texts/text-609.txt +1 -0
  570. data/assets/texts/text-61.txt +4 -0
  571. data/assets/texts/text-610.txt +1 -0
  572. data/assets/texts/text-611.txt +1 -0
  573. data/assets/texts/text-612.txt +1 -0
  574. data/assets/texts/text-613.txt +1 -0
  575. data/assets/texts/text-614.txt +1 -0
  576. data/assets/texts/text-615.txt +1 -0
  577. data/assets/texts/text-616.txt +1 -0
  578. data/assets/texts/text-617.txt +1 -0
  579. data/assets/texts/text-618.txt +1 -0
  580. data/assets/texts/text-619.txt +1 -0
  581. data/assets/texts/text-62.txt +1 -0
  582. data/assets/texts/text-620.txt +1 -0
  583. data/assets/texts/text-621.txt +1 -0
  584. data/assets/texts/text-622.txt +1 -0
  585. data/assets/texts/text-623.txt +1 -0
  586. data/assets/texts/text-624.txt +1 -0
  587. data/assets/texts/text-625.txt +1 -0
  588. data/assets/texts/text-626.txt +1 -0
  589. data/assets/texts/text-627.txt +1 -0
  590. data/assets/texts/text-628.txt +1 -0
  591. data/assets/texts/text-629.txt +1 -0
  592. data/assets/texts/text-63.txt +1 -0
  593. data/assets/texts/text-630.txt +7 -0
  594. data/assets/texts/text-631.txt +1 -0
  595. data/assets/texts/text-632.txt +1 -0
  596. data/assets/texts/text-633.txt +1 -0
  597. data/assets/texts/text-634.txt +1 -0
  598. data/assets/texts/text-635.txt +1 -0
  599. data/assets/texts/text-636.txt +1 -0
  600. data/assets/texts/text-637.txt +1 -0
  601. data/assets/texts/text-638.txt +1 -0
  602. data/assets/texts/text-639.txt +1 -0
  603. data/assets/texts/text-64.txt +1 -0
  604. data/assets/texts/text-640.txt +1 -0
  605. data/assets/texts/text-641.txt +1 -0
  606. data/assets/texts/text-642.txt +1 -0
  607. data/assets/texts/text-643.txt +1 -0
  608. data/assets/texts/text-644.txt +1 -0
  609. data/assets/texts/text-645.txt +1 -0
  610. data/assets/texts/text-646.txt +1 -0
  611. data/assets/texts/text-647.txt +1 -0
  612. data/assets/texts/text-648.txt +1 -0
  613. data/assets/texts/text-649.txt +1 -0
  614. data/assets/texts/text-65.txt +1 -0
  615. data/assets/texts/text-650.txt +1 -0
  616. data/assets/texts/text-651.txt +1 -0
  617. data/assets/texts/text-652.txt +1 -0
  618. data/assets/texts/text-653.txt +1 -0
  619. data/assets/texts/text-654.txt +1 -0
  620. data/assets/texts/text-655.txt +1 -0
  621. data/assets/texts/text-656.txt +1 -0
  622. data/assets/texts/text-657.txt +1 -0
  623. data/assets/texts/text-658.txt +1 -0
  624. data/assets/texts/text-659.txt +1 -0
  625. data/assets/texts/text-66.txt +1 -0
  626. data/assets/texts/text-660.txt +1 -0
  627. data/assets/texts/text-661.txt +1 -0
  628. data/assets/texts/text-662.txt +1 -0
  629. data/assets/texts/text-663.txt +1 -0
  630. data/assets/texts/text-664.txt +1 -0
  631. data/assets/texts/text-665.txt +1 -0
  632. data/assets/texts/text-666.txt +1 -0
  633. data/assets/texts/text-667.txt +1 -0
  634. data/assets/texts/text-668.txt +1 -0
  635. data/assets/texts/text-669.txt +1 -0
  636. data/assets/texts/text-67.txt +6 -0
  637. data/assets/texts/text-670.txt +1 -0
  638. data/assets/texts/text-671.txt +1 -0
  639. data/assets/texts/text-672.txt +1 -0
  640. data/assets/texts/text-673.txt +1 -0
  641. data/assets/texts/text-674.txt +1 -0
  642. data/assets/texts/text-675.txt +1 -0
  643. data/assets/texts/text-676.txt +1 -0
  644. data/assets/texts/text-677.txt +1 -0
  645. data/assets/texts/text-678.txt +1 -0
  646. data/assets/texts/text-679.txt +1 -0
  647. data/assets/texts/text-68.txt +1 -0
  648. data/assets/texts/text-680.txt +1 -0
  649. data/assets/texts/text-681.txt +1 -0
  650. data/assets/texts/text-682.txt +1 -0
  651. data/assets/texts/text-683.txt +1 -0
  652. data/assets/texts/text-684.txt +1 -0
  653. data/assets/texts/text-685.txt +1 -0
  654. data/assets/texts/text-686.txt +1 -0
  655. data/assets/texts/text-687.txt +1 -0
  656. data/assets/texts/text-688.txt +1 -0
  657. data/assets/texts/text-689.txt +1 -0
  658. data/assets/texts/text-69.txt +1 -0
  659. data/assets/texts/text-690.txt +1 -0
  660. data/assets/texts/text-691.txt +1 -0
  661. data/assets/texts/text-692.txt +1 -0
  662. data/assets/texts/text-693.txt +1 -0
  663. data/assets/texts/text-694.txt +1 -0
  664. data/assets/texts/text-695.txt +1 -0
  665. data/assets/texts/text-696.txt +1 -0
  666. data/assets/texts/text-697.txt +1 -0
  667. data/assets/texts/text-698.txt +1 -0
  668. data/assets/texts/text-699.txt +1 -0
  669. data/assets/texts/text-7.txt +1 -0
  670. data/assets/texts/text-70.txt +1 -0
  671. data/assets/texts/text-700.txt +1 -0
  672. data/assets/texts/text-701.txt +1 -0
  673. data/assets/texts/text-702.txt +1 -0
  674. data/assets/texts/text-703.txt +1 -0
  675. data/assets/texts/text-704.txt +1 -0
  676. data/assets/texts/text-705.txt +1 -0
  677. data/assets/texts/text-706.txt +1 -0
  678. data/assets/texts/text-707.txt +1 -0
  679. data/assets/texts/text-71.txt +1 -0
  680. data/assets/texts/text-72.txt +1 -0
  681. data/assets/texts/text-73.txt +1 -0
  682. data/assets/texts/text-74.txt +1 -0
  683. data/assets/texts/text-75.txt +4 -0
  684. data/assets/texts/text-76.txt +1 -0
  685. data/assets/texts/text-77.txt +1 -0
  686. data/assets/texts/text-78.txt +1 -0
  687. data/assets/texts/text-79.txt +1 -0
  688. data/assets/texts/text-8.txt +1 -0
  689. data/assets/texts/text-80.txt +1 -0
  690. data/assets/texts/text-81.txt +1 -0
  691. data/assets/texts/text-82.txt +1 -0
  692. data/assets/texts/text-83.txt +1 -0
  693. data/assets/texts/text-84.txt +1 -0
  694. data/assets/texts/text-85.txt +7 -0
  695. data/assets/texts/text-86.txt +1 -0
  696. data/assets/texts/text-87.txt +1 -0
  697. data/assets/texts/text-88.txt +1 -0
  698. data/assets/texts/text-89.txt +1 -0
  699. data/assets/texts/text-9.txt +1 -0
  700. data/assets/texts/text-90.txt +1 -0
  701. data/assets/texts/text-91.txt +1 -0
  702. data/assets/texts/text-92.txt +1 -0
  703. data/assets/texts/text-93.txt +1 -0
  704. data/assets/texts/text-94.txt +1 -0
  705. data/assets/texts/text-95.txt +1 -0
  706. data/assets/texts/text-96.txt +1 -0
  707. data/assets/texts/text-97.txt +4 -0
  708. data/assets/texts/text-98.txt +5 -0
  709. data/assets/texts/text-99.txt +1 -0
  710. data/lib/need_for_type/display_window.rb +76 -49
  711. data/lib/need_for_type/file_manager.rb +5 -19
  712. data/lib/need_for_type/states.rb +2 -1
  713. data/lib/need_for_type/states/end.rb +30 -0
  714. data/lib/need_for_type/states/game.rb +32 -25
  715. data/lib/need_for_type/states/menu.rb +5 -14
  716. data/lib/need_for_type/states/{score.rb → start.rb} +4 -7
  717. data/lib/need_for_type/states/state.rb +0 -1
  718. data/lib/need_for_type/typer.rb +1 -1
  719. data/lib/need_for_type/version.rb +1 -1
  720. data/lib/need_for_type/window.rb +34 -7
  721. metadata +712 -7
  722. data/assets/easy/1.txt +0 -1
  723. data/assets/hard/1.txt +0 -1
  724. data/assets/medium/1.txt +0 -1
@@ -0,0 +1 @@
1
+ When the mind is brought to rest and not allowed to wander, a deep calm pervades body and mind, a state of tranquility which must be experienced to be understood.
@@ -0,0 +1 @@
1
+ A few light taps upon the pane made him turn to the window. It had begun to snow again. He watched sleepily the flakes, silver and dark, falling obliquely against the lamplight. The time had come for him to set out on his journey westward.
@@ -0,0 +1 @@
1
+ A few light taps upon the pane made him turn to the window. It had begun to snow again. He watched sleepily the flakes, silver and dark, falling obliquely against the lamplight.
@@ -0,0 +1 @@
1
+ A few light taps upon the pane made him turn to the window. It had begun to snow again.
@@ -0,0 +1 @@
1
+ We don't need no education. We don't need no thought control. No dark sarcasm in the classroom - teachers leave them kids alone! All in all it's just another brick in the wall. "If you don't eat yer meat, you can't have any pudding. How can you have any pudding if you don't eat yer meat?"
@@ -0,0 +1 @@
1
+ Ticking away the moments that make up a dull day, you fritter and waste the hours in an off-hand way. Kicking around on a piece of ground in your home town, waiting for someone or something to show you the way.
@@ -0,0 +1 @@
1
+ Ticking away the moments that make up a dull day, you fritter and waste the hours in an off-hand way. Kicking around on a piece of ground in your home town, waiting for someone or something to show you the way. Tired of lying in the sunshine, staying home to watch the rain. You are young and life is long, and there is time to kill today. And then, one day you find, ten years have got behind you, no one told you when to run, you missed the starting gun.
@@ -0,0 +1 @@
1
+ Trudging slowly over wet sand, back to the bench where your clothes were stolen. This is the coastal town that they forgot to close down. Armageddon - come Armageddon, come.
@@ -0,0 +1,4 @@
1
+ A little boy went out to play. When
2
+ he opened his door, he saw the world. As he passed through the
3
+ doorway, he caused a reflection. Evil was born, and followed the
4
+ boy.
@@ -0,0 +1 @@
1
+ There's sometimes a buggy. How many drivers does a buggy have? So, let's just say I'm driving this buggy, and if you fix your attitude, you can ride along with me. Now you will see me one more time, if you do good. You will see me, two more times, if you do bad.
@@ -0,0 +1 @@
1
+ Now did you answer cause you thought that's what I wanted to hear, or did you think about what I said and answer cause you truly believe that to be right?
@@ -0,0 +1 @@
1
+ Now I want you to think and stop being a smart aleck. A man's attitude goes some ways - the way his life will be. Is that something you agree with? So since you agree, you must be someone who does not care about the good life.
@@ -0,0 +1 @@
1
+ My dog barks some. Mentally you picture my dog, but I have not told you the type of dog which I have. Perhaps you even picture Toto, from "The Wizard of Oz." But I warn you, my dog is always with me. Woof!
@@ -0,0 +1 @@
1
+ The streets were cleared by a Critical Mass bike ride and were flooded by activists dressed in second-hand suits with slogans painted on their backs. They danced in the doorsteps of office towers, formed a human chain around the Treasury and held peaceful sit-ins at several banks.
@@ -0,0 +1 @@
1
+ It's a sunny, woodsy day in Lumberton, so get those chainsaws out. This is the mighty WOOD - the musical voice of Lumberton. At the sound of the falling tree, it's 9:30. There's a whole lotta wood waiting out there, so let's get going.
@@ -0,0 +1 @@
1
+ I had a dream. There was our world, and the world was dark because there weren't any robins, and the robins represented love. And for the longest time, there was this darkness. Then all of a sudden, thousands of robins were set free and they flew down and brought this blinding light of love. I guess it means that there is trouble until the robins come.
@@ -0,0 +1 @@
1
+ Now you might ask yourself, if by yourself you mean me, "Stephen, if you don't like books, why did you write one?" You just asked yourself a trick question. I didn't write it. I dictated it. I shouted it into a tape recorder over the Columbus Day weekend, then handed it to my agent and said, "Sell this."
@@ -0,0 +1 @@
1
+ I'm telling it like it is. Get used to it or put this book down. Because this book is for America's Heroes. And who are the Heroes? The people who bought this book. People who borrow this book are not Heroes. They are no better than welfare queens mooching off the system like card-carrying library card-carriers. For the record, we're not offering this book to libraries. No free rides.
@@ -0,0 +1 @@
1
+ And today, Lady Liberty is under attack from the cable channels, the internet blogs, and the Hollywood celebritocracy, out there spewing "facts" like so many locusts descending on America's crop of ripe, tender values. And as any farmer or biblical scholar will tell you, locusts are damn hard to get rid of.
@@ -0,0 +1,7 @@
1
+ In May 1980, Fidel Castro opened the
2
+ harbor at Mariel, Cuba with the apparent intention of letting some of
3
+ his people join their relatives in the United States. Within
4
+ seventy-two hours, 3,000 U.S. boats were headed for Cuba. It soon
5
+ became evident that Castro was forcing the boat owners to carry back
6
+ with them not only their relatives, but the dregs of his
7
+ jails.
@@ -0,0 +1 @@
1
+ In the casino, the cardinal rule is to keep them playing and to keep them coming back. The longer they play, the more they lose, and in the end, we get it all. Running a casino is like robbing a bank with no cops around.
@@ -0,0 +1 @@
1
+ What? A swallow carrying a coconut? It's not a question of where he grips it! It's a simple question of weight ratios! A five ounce bird could not carry a one pound coconut. Listen - in order to maintain air-speed velocity, a swallow needs to beat its wings forty-three times every second, right?
@@ -0,0 +1 @@
1
+ Listen, strange women lyin' in ponds distributin' swords is no basis for a system of government. Supreme executive power derives from a mandate from the masses, not from some farcical aquatic ceremony.
@@ -0,0 +1 @@
1
+ Everyone said I was daft to build a castle on a swamp, but I built it all the same, just to show them. It sank into the swamp. So I built a second one. That sank into the swamp. So I built a third. That burned down, fell over, then sank into the swamp. But the fourth one stayed up. And that's what you're going to get, Lad, the strongest castle in all of England.
@@ -0,0 +1 @@
1
+ But the two men were not lonely at all. At home they were content to eat and drink, and Singer would talk with his hands eagerly to his friend about all that was in his mind. So the years passed in this quiet way until Singer reached the age of thirty-two.
@@ -0,0 +1 @@
1
+ Everyone said I was daft to build a castle on a swamp, but I built it all the same, just to show them. It sank into the swamp. So I built a second one. That sank into the swamp. So I built a third. That burned down, fell over, then sank into the swamp. But the fourth one stayed up!
@@ -0,0 +1 @@
1
+ King, eh? Very nice. And how'd you get that, eh? By exploiting the workers. By hanging on to outdated imperialist dogma which perpetuates the economic and social differences in our society.
@@ -0,0 +1 @@
1
+ Make sure to secure the door when I am gone. There are many dangerous people who wanna take things from Americans, and also kidnap them. Good night!
@@ -0,0 +1 @@
1
+ An essential characteristic of the superhero mythology is, there's the superhero, and there's the alter ego. Batman is actually Bruce Wayne, Spider-Man is actually Peter Parker. When he wakes up in the morning, he's Peter Parker. He has to put on a costume to become Spider-Man. And it is in that characteristic that Superman stands alone. Superman did not become Superman, Superman was born Superman.
@@ -0,0 +1 @@
1
+ Well, it just so happens, this hacienda comes with its very own private beach. And this private beach just so happens to look particularly beautiful bathed in moonlight. And there just so happens to be a full moon out tonight.
@@ -0,0 +1 @@
1
+ My entire life had been on a predictable trajectory dominated by a couple of university degrees and thirteen years of white-collar employment. My identity was defined by my career. I now planned a radical shift, a big leap into the unknown: from corporate executive to unemployed guy setting up libraries in the Himalayas.
@@ -0,0 +1 @@
1
+ Look, you should admit to yourself that Microsoft will miss you for a month or two. Someone will quickly fill the void. It will be like you never worked there. Ask yourself, "Are there thousands lining up to help poor villages build schools and libraries?"
@@ -0,0 +1,4 @@
1
+ Space is big. Really big. You just
2
+ won't believe how vastly hugely mindbogglingly big it is. I mean you
3
+ may think it's a long way down the road to the chemist, but that's
4
+ just peanuts to space.
@@ -0,0 +1,5 @@
1
+ Is it really necessary to send that
2
+ email? The more emails you send, the more work others will have to do
3
+ to prioritize your requests. How many of the things you're mentioning
4
+ are important? If you have 10 issues to discuss, break them into two
5
+ groups and focus on the most important group.
@@ -0,0 +1 @@
1
+ As if that blind rage had washed me clean, rid me of hope; for the first time, in that night alive with signs and stars, I opened myself to the gentle indifference of the world.
@@ -3,78 +3,105 @@ require 'need_for_type/window'
3
3
 
4
4
  module NeedForType
5
5
  class DisplayWindow < Window
6
+ OFFSET = 35
7
+ @@need_for_type_ascii_art =
8
+ " _ __ __ ____ ______
9
+ / | / /__ ___ ____/ / / __/___ _____ /_ __/_ ______ ___
10
+ / |/ / _ \\/ _ \\/ __ / / /_/ __ \\/ ___/ / / / / / / __ \\/ _ \\
11
+ / /| / __/ __/ /_/ / / __/ /_/ / / / / / /_/ / /_/ / __/
12
+ /_/ |_/\\___/\\___/\\__,_/ /_/ \\____/_/ /_/ \\__, / .___/\\___/
13
+ /____/_/
14
+ "
6
15
 
7
16
  def initialize
8
17
  super(Curses.lines, Curses.cols, 0, 0)
9
18
  Curses.curs_set(CURSOR_INVISIBLE)
10
19
  end
11
20
 
12
- def render_menu(selected_option)
13
- self.render do
14
- self.setpos(2, 4)
15
- self.render_text("Need For Type", GREEN, NORMAL)
21
+ def render_start
22
+ self.render_box do
23
+ y_ascii = (Curses.lines / 2) - 8
24
+ x_ascii = (Curses.cols / 2) - OFFSET
25
+ self.render_need_for_type_ascii_art(y_ascii, x_ascii)
16
26
 
17
- self.setpos(4, 4)
18
- mode = standout_mode(0, selected_option)
19
- self.render_text("1. Easy", WHITE, mode)
27
+ text = "Click ENTER to start playing"
28
+ y_text = y_ascii + 8
29
+ x_text = (Curses.cols / 2) - (text.size / 2)
30
+ self.set_render_pos(y_text, x_text)
31
+ self.render_text(text, WHITE, NORMAL)
32
+ end
33
+ end
20
34
 
21
- self.setpos(5, 4)
22
- mode = standout_mode(1, selected_option)
23
- self.render_text("2. Medium", WHITE, mode)
35
+ def render_game_text(text, chars_completed, stats, failed = false)
36
+ color = failed ? RED : YELLOW
37
+ completed = text[0, chars_completed] || ''
38
+ remaining = text[chars_completed + 1, text.length] || ''
24
39
 
25
- self.setpos(6, 4)
26
- mode = standout_mode(2, selected_option)
27
- self.render_text("3. Hard", WHITE, mode)
40
+ self.render_box do
41
+ # Stats
42
+ self.render_with_color(GREEN) do
43
+ render_stats(stats, 2, 4, :horizontal)
44
+ end
28
45
 
29
- self.setpos(8, 4)
30
- mode = standout_mode(3, selected_option)
31
- self.render_text("Exit", WHITE, mode)
46
+ # Text
47
+ self.set_render_pos(4, 4)
48
+ self.render_text(completed, GREEN, NORMAL)
49
+ self.render_text(text[chars_completed], color, NORMAL)
50
+ self.render_text(remaining, WHITE, NORMAL)
32
51
  end
33
52
  end
34
53
 
35
- def standout_mode(option, selected_option)
36
- selected_option == option ? STANDOUT : NORMAL
37
- end
54
+ def render_end(stats, selected_option)
55
+ self.render_box do
56
+ self.render_with_color(GREEN) do
57
+ self.set_render_pos(3, 4)
58
+ self.addstr("Congratulations you crossed the finish line!")
38
59
 
39
- def render_game_text(text, chars_completed, failed = false)
40
- current_color = failed ? RED : YELLOW
41
- completed = text[0, chars_completed - 1]
42
- tail = text[chars_completed + 1, text.length]
60
+ render_stats(stats, 5, 4, :vertical)
61
+ end
43
62
 
44
- self.render do
45
- self.setpos(2,4)
46
- self.render_multiple_text(GREEN, NORMAL) { completed.each { |c| self.addstr(c) } }
47
- self.render_text(c, color, NORMAL)
48
- self.render_multiple_text(WHITE, NORMAL) { tail.each { |c| self.addstr(c) } }
63
+ self.set_render_pos(9, 4)
64
+ mode = standout_mode(0, selected_option)
65
+ self.render_text("1. Restart", WHITE, mode)
66
+
67
+ self.set_render_pos(10, 4)
68
+ mode = standout_mode(1, selected_option)
69
+ self.render_text("2. Main Menu", WHITE, mode)
70
+
71
+ self.set_render_pos(11, 4)
72
+ mode = standout_mode(2, selected_option)
73
+ self.render_text("3. Exit", WHITE, mode)
49
74
  end
50
75
  end
51
76
 
52
- def render_game_text(text, chars_completed, failed = false)
53
- self.render do
54
- self.setpos(2, 4)
55
- text.each_with_index do |c, i|
56
- if i < chars_completed
57
- self.render_text(c, GREEN, NORMAL)
58
- elsif i == chars_completed
59
- color = failed ? RED : YELLOW
60
- self.render_text(c, color, NORMAL)
61
- else
62
- self.render_text(c, WHITE, NORMAL)
63
- end
64
- end
77
+ def render_need_for_type_ascii_art(y = 4, x = 4)
78
+ @@need_for_type_ascii_art.split("\n").each_with_index do |line, i|
79
+ self.set_render_pos(y + i, x)
80
+ self.render_text(line, GREEN, GREEN)
65
81
  end
66
82
  end
67
83
 
68
- def render_score(time, wpm, accuracy)
69
- self.render do
70
- self.setpos(2, 4)
71
- self.render_text("Time: #{time.round(2)} sec", GREEN, NORMAL)
84
+ def standout_mode(option, selected_option)
85
+ selected_option == option ? STANDOUT : NORMAL
86
+ end
72
87
 
73
- self.setpos(3, 4)
74
- self.render_text("WPM: #{wpm.round}", GREEN, NORMAL)
88
+ def render_stats(stats, y, x, mode)
89
+ stats_text = [
90
+ "Time: #{stats[:total_time].round(2)} sec",
91
+ "WPM: #{stats[:wpm].round}",
92
+ "Accuracy: #{stats[:accuracy].round(2)} %"
93
+ ]
75
94
 
76
- self.setpos(4, 4)
77
- self.render_text("Accuracy: #{accuracy.round(2)} %", GREEN, NORMAL)
95
+ stats_text.each do |t|
96
+ self.set_render_pos(y, x)
97
+ self.addstr(t)
98
+
99
+ case mode
100
+ when :vertical
101
+ y += 1
102
+ when :horizontal
103
+ x += t.size + 4
104
+ end
78
105
  end
79
106
  end
80
107
  end
@@ -2,30 +2,16 @@ module NeedForType
2
2
  class FileManager
3
3
  attr_accessor :content
4
4
 
5
- def initialize(difficulty)
6
- @path = "#{NeedForType::GEM_ROOT}/assets/#{difficulty_to_s(difficulty)}/"
5
+ def initialize()
6
+ @path = "#{NeedForType::GEM_ROOT}/assets/texts/"
7
7
  end
8
8
 
9
9
  # Reads random file from difficulty folder
10
10
  def get_random_text
11
- directory = Dir[@path]
12
- random_file = rand(1..directory.count)
11
+ directory_count = Dir[File.join(@path, '**', '*')].count
12
+ random_file = rand(1..directory_count)
13
13
 
14
- # TODO: apply markov's chain's to the text
15
- @content = File.read("#{@path}/#{random_file}.txt").strip
16
- end
17
-
18
- private
19
-
20
- def difficulty_to_s(difficulty)
21
- case difficulty
22
- when 0
23
- 'easy'
24
- when 1
25
- 'medium'
26
- when 2
27
- 'hard'
28
- end
14
+ @content = File.read("#{@path}/text-#{random_file}.txt").strip
29
15
  end
30
16
  end
31
17
  end
@@ -1,7 +1,8 @@
1
1
  require 'need_for_type/states/state'
2
2
  require 'need_for_type/states/menu'
3
3
  require 'need_for_type/states/game'
4
- require 'need_for_type/states/score'
4
+ require 'need_for_type/states/start'
5
+ require 'need_for_type/states/end'
5
6
 
6
7
  module NeedForType
7
8
  module States
@@ -0,0 +1,30 @@
1
+ require 'curses'
2
+
3
+ require 'need_for_type/states'
4
+
5
+ module NeedForType::States
6
+ class End < Menu
7
+
8
+ def initialize(display_window, stats, difficulty)
9
+ super(display_window)
10
+ @difficulty = difficulty
11
+ @stats = stats
12
+ @option = 0
13
+ end
14
+
15
+ def update
16
+ @display_window.render_end(@stats, @option)
17
+
18
+ input_worker(3) do
19
+ case @option
20
+ when 0
21
+ return NeedForType::States::Game.new(@display_window, @difficulty)
22
+ when 1
23
+ return NeedForType::States::Start.new(@display_window)
24
+ end
25
+ end
26
+
27
+ return self
28
+ end
29
+ end
30
+ end
@@ -10,15 +10,25 @@ module NeedForType::States
10
10
  super(display_window)
11
11
 
12
12
  @difficulty = difficulty
13
- @state = :init_game
13
+ @state = :start_game
14
14
  @text = ''
15
+ @word = ''
16
+
17
+ @chars_completed = 0
18
+ @total_taps = 0
19
+ @correct_taps = 0
20
+
21
+ # Stats
22
+ @stats = { total_time: 0,
23
+ wpm: 0,
24
+ accuracy: 100 }
15
25
  end
16
26
 
17
- # Takes action according to the current @state
27
+ # Takes action according to the current @state
18
28
  def update
19
29
  case @state
20
- when :init_game
21
- handle_init_game
30
+ when :start_game
31
+ handle_start_game
22
32
  when :in_game_get_input
23
33
  handle_in_game_get_input
24
34
  when :in_game_valid_input
@@ -32,18 +42,10 @@ module NeedForType::States
32
42
 
33
43
  private
34
44
 
35
- def handle_init_game
36
- @chars_completed = 0
37
- @word = ''
38
-
39
- @total_taps = 0
40
- @correct_taps = 0
41
-
42
- file_manager = NeedForType::FileManager.new(@difficulty)
45
+ def handle_start_game
46
+ file_manager = NeedForType::FileManager.new
43
47
  @text = file_manager.get_random_text
44
- @split_text = @text.split('')
45
- @display_window.render_game_text(@split_text, @chars_completed)
46
-
48
+ @display_window.render_game_text(@text, @chars_completed, @stats)
47
49
  @start_time = Time.now
48
50
 
49
51
  @state = :in_game_get_input
@@ -62,6 +64,8 @@ module NeedForType::States
62
64
  @state = :in_game_invalid_input
63
65
  end
64
66
 
67
+ calculate_stats
68
+
65
69
  return self
66
70
  end
67
71
 
@@ -81,19 +85,18 @@ module NeedForType::States
81
85
  @word += @text[@chars_completed]
82
86
  end
83
87
 
84
- # Render
85
- @display_window.render_game_text(@split_text, @chars_completed)
88
+ @display_window.render_game_text(@text, @chars_completed, @stats)
86
89
 
87
90
  @state = :in_game_get_input
88
91
 
89
92
  return self
90
93
  end
91
94
 
92
- # User input is wrong
95
+ # User input is wrong
93
96
  def handle_in_game_invalid_input
94
97
  Curses.beep
95
98
 
96
- @display_window.render_game_text(@split_text, @chars_completed, true)
99
+ @display_window.render_game_text(@text, @chars_completed, @stats, true)
97
100
 
98
101
  @state = :in_game_get_input
99
102
 
@@ -101,13 +104,17 @@ module NeedForType::States
101
104
  end
102
105
 
103
106
  def handle_end_game
104
- @end_time = Time.now
107
+ calculate_stats
108
+
109
+ return NeedForType::States::End.new(@display_window, @stats, @difficulty)
110
+ end
111
+
112
+ def calculate_stats
113
+ current_time = Time.now
105
114
 
106
- total_time = @end_time - @start_time
107
- wpm = (@text.split.size * 60) / total_time
108
- accuracy = (@correct_taps.to_f / @total_taps.to_f) * 100
109
-
110
- return NeedForType::States::Score.new(@display_window, total_time, wpm, accuracy)
115
+ @stats[:total_time] = current_time - @start_time
116
+ @stats[:wpm] = (@text.split.size * 60) / @stats[:total_time]
117
+ @stats[:accuracy] = (@correct_taps.to_f / @total_taps.to_f) * 100
111
118
  end
112
119
  end
113
120
  end