alf 0.12.2 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (549) hide show
  1. data/CHANGELOG.md +186 -80
  2. data/Gemfile +16 -32
  3. data/Gemfile.lock +35 -34
  4. data/LICENCE.md +1 -1
  5. data/Manifest.txt +7 -9
  6. data/README.md +139 -809
  7. data/alf.gemspec +6 -15
  8. data/alf.noespec +16 -34
  9. data/lib/alf.rb +3 -73
  10. data/lib/alf/loader.rb +3 -3
  11. data/lib/alf/version.rb +2 -2
  12. data/spec/spec_helper.rb +3 -18
  13. data/spec/test_alf.rb +8 -0
  14. data/tasks/test.rake +6 -0
  15. data/test/migrations/test_folder_migration.rb +18 -0
  16. data/test/migrations/test_sequel_migration.rb +34 -0
  17. data/test/seeding/test_seeding.rb +49 -0
  18. data/test/test_alf.rb +8 -0
  19. data/test/test_helpers.rb +24 -0
  20. metadata +54 -952
  21. data/TODO.md +0 -21
  22. data/bin/alf +0 -27
  23. data/doc/commands/exec.md +0 -16
  24. data/doc/commands/help.md +0 -11
  25. data/doc/commands/main.md +0 -33
  26. data/doc/commands/show.md +0 -19
  27. data/doc/operators/non_relational/autonum.md +0 -23
  28. data/doc/operators/non_relational/clip.md +0 -31
  29. data/doc/operators/non_relational/coerce.md +0 -15
  30. data/doc/operators/non_relational/compact.md +0 -20
  31. data/doc/operators/non_relational/defaults.md +0 -32
  32. data/doc/operators/non_relational/generator.md +0 -20
  33. data/doc/operators/non_relational/sort.md +0 -24
  34. data/doc/operators/relational/extend.md +0 -18
  35. data/doc/operators/relational/group.md +0 -27
  36. data/doc/operators/relational/heading.md +0 -20
  37. data/doc/operators/relational/intersect.md +0 -13
  38. data/doc/operators/relational/join.md +0 -28
  39. data/doc/operators/relational/matching.md +0 -24
  40. data/doc/operators/relational/minus.md +0 -12
  41. data/doc/operators/relational/not-matching.md +0 -20
  42. data/doc/operators/relational/project.md +0 -28
  43. data/doc/operators/relational/quota.md +0 -21
  44. data/doc/operators/relational/rank.md +0 -27
  45. data/doc/operators/relational/rename.md +0 -17
  46. data/doc/operators/relational/restrict.md +0 -25
  47. data/doc/operators/relational/summarize.md +0 -25
  48. data/doc/operators/relational/ungroup.md +0 -20
  49. data/doc/operators/relational/union.md +0 -14
  50. data/doc/operators/relational/unwrap.md +0 -20
  51. data/doc/operators/relational/wrap.md +0 -24
  52. data/examples/csv/suppliers.csv +0 -6
  53. data/examples/logs/access.log +0 -1000
  54. data/examples/logs/combined.alf +0 -2
  55. data/examples/logs/hits.alf +0 -14
  56. data/examples/logs/not_found.alf +0 -7
  57. data/examples/logs/robots-cheating.alf +0 -11
  58. data/examples/logs/robots.alf +0 -8
  59. data/examples/operators/autonum.alf +0 -6
  60. data/examples/operators/cities.rash +0 -4
  61. data/examples/operators/clip.alf +0 -3
  62. data/examples/operators/compact.alf +0 -2
  63. data/examples/operators/database.alf +0 -5
  64. data/examples/operators/defaults.alf +0 -3
  65. data/examples/operators/extend.alf +0 -3
  66. data/examples/operators/group.alf +0 -3
  67. data/examples/operators/intersect.alf +0 -4
  68. data/examples/operators/join.alf +0 -2
  69. data/examples/operators/matching.alf +0 -2
  70. data/examples/operators/minus.alf +0 -8
  71. data/examples/operators/not_matching.alf +0 -2
  72. data/examples/operators/nulls.rash +0 -3
  73. data/examples/operators/parts.rash +0 -6
  74. data/examples/operators/project.alf +0 -3
  75. data/examples/operators/pseudo-with.alf +0 -7
  76. data/examples/operators/quota.alf +0 -4
  77. data/examples/operators/rank.alf +0 -4
  78. data/examples/operators/rename.alf +0 -3
  79. data/examples/operators/restrict.alf +0 -2
  80. data/examples/operators/schema.yaml +0 -28
  81. data/examples/operators/sort.alf +0 -4
  82. data/examples/operators/summarize.alf +0 -16
  83. data/examples/operators/suppliers.rash +0 -5
  84. data/examples/operators/supplies.rash +0 -12
  85. data/examples/operators/ungroup.alf +0 -4
  86. data/examples/operators/union.alf +0 -3
  87. data/examples/operators/unwrap.alf +0 -4
  88. data/examples/operators/wrap.alf +0 -2
  89. data/lib/alf-csv/alf/csv.rb +0 -3
  90. data/lib/alf-csv/alf/csv/commons.rb +0 -36
  91. data/lib/alf-csv/alf/csv/reader.rb +0 -33
  92. data/lib/alf-csv/alf/csv/renderer.rb +0 -38
  93. data/lib/alf-engine/alf/engine.rb +0 -25
  94. data/lib/alf-engine/alf/engine/aggregate.rb +0 -44
  95. data/lib/alf-engine/alf/engine/autonum.rb +0 -45
  96. data/lib/alf-engine/alf/engine/cesure.rb +0 -45
  97. data/lib/alf-engine/alf/engine/clip.rb +0 -53
  98. data/lib/alf-engine/alf/engine/coerce.rb +0 -46
  99. data/lib/alf-engine/alf/engine/cog.rb +0 -7
  100. data/lib/alf-engine/alf/engine/compact.rb +0 -26
  101. data/lib/alf-engine/alf/engine/compact/set.rb +0 -23
  102. data/lib/alf-engine/alf/engine/compact/uniq.rb +0 -23
  103. data/lib/alf-engine/alf/engine/concat.rb +0 -25
  104. data/lib/alf-engine/alf/engine/defaults.rb +0 -43
  105. data/lib/alf-engine/alf/engine/filter.rb +0 -41
  106. data/lib/alf-engine/alf/engine/generator.rb +0 -50
  107. data/lib/alf-engine/alf/engine/group.rb +0 -7
  108. data/lib/alf-engine/alf/engine/group/hash.rb +0 -40
  109. data/lib/alf-engine/alf/engine/join.rb +0 -7
  110. data/lib/alf-engine/alf/engine/join/hash.rb +0 -35
  111. data/lib/alf-engine/alf/engine/materialize.rb +0 -8
  112. data/lib/alf-engine/alf/engine/materialize/array.rb +0 -78
  113. data/lib/alf-engine/alf/engine/materialize/hash.rb +0 -122
  114. data/lib/alf-engine/alf/engine/quota.rb +0 -7
  115. data/lib/alf-engine/alf/engine/quota/cesure.rb +0 -46
  116. data/lib/alf-engine/alf/engine/rank.rb +0 -7
  117. data/lib/alf-engine/alf/engine/rank/cesure.rb +0 -48
  118. data/lib/alf-engine/alf/engine/rename.rb +0 -39
  119. data/lib/alf-engine/alf/engine/semi.rb +0 -7
  120. data/lib/alf-engine/alf/engine/semi/hash.rb +0 -39
  121. data/lib/alf-engine/alf/engine/set_attr.rb +0 -46
  122. data/lib/alf-engine/alf/engine/sort.rb +0 -28
  123. data/lib/alf-engine/alf/engine/sort/in_memory.rb +0 -39
  124. data/lib/alf-engine/alf/engine/summarize.rb +0 -8
  125. data/lib/alf-engine/alf/engine/summarize/cesure.rb +0 -51
  126. data/lib/alf-engine/alf/engine/summarize/hash.rb +0 -35
  127. data/lib/alf-engine/alf/engine/ungroup.rb +0 -29
  128. data/lib/alf-engine/alf/engine/unwrap.rb +0 -31
  129. data/lib/alf-engine/alf/engine/wrap.rb +0 -39
  130. data/lib/alf-logs/alf/logs.rb +0 -1
  131. data/lib/alf-logs/alf/logs/reader.rb +0 -98
  132. data/lib/alf-sequel/alf/sequel.rb +0 -2
  133. data/lib/alf-sequel/alf/sequel/environment.rb +0 -61
  134. data/lib/alf-sequel/alf/sequel/iterator.rb +0 -21
  135. data/lib/alf-shell/alf/shell.rb +0 -40
  136. data/lib/alf-shell/alf/shell/command.rb +0 -26
  137. data/lib/alf-shell/alf/shell/command/exec.rb +0 -11
  138. data/lib/alf-shell/alf/shell/command/help.rb +0 -30
  139. data/lib/alf-shell/alf/shell/command/main.rb +0 -136
  140. data/lib/alf-shell/alf/shell/command/main/class_methods.rb +0 -46
  141. data/lib/alf-shell/alf/shell/command/show.rb +0 -63
  142. data/lib/alf-shell/alf/shell/doc_manager.rb +0 -72
  143. data/lib/alf-shell/alf/shell/operator.rb +0 -86
  144. data/lib/alf-yaml/alf/yaml.rb +0 -1
  145. data/lib/alf-yaml/alf/yaml/renderer.rb +0 -22
  146. data/lib/alf/aggregator.rb +0 -51
  147. data/lib/alf/aggregator/avg.rb +0 -39
  148. data/lib/alf/aggregator/class_methods.rb +0 -77
  149. data/lib/alf/aggregator/collect.rb +0 -32
  150. data/lib/alf/aggregator/concat.rb +0 -47
  151. data/lib/alf/aggregator/count.rb +0 -32
  152. data/lib/alf/aggregator/instance_methods.rb +0 -119
  153. data/lib/alf/aggregator/max.rb +0 -32
  154. data/lib/alf/aggregator/min.rb +0 -32
  155. data/lib/alf/aggregator/stddev.rb +0 -25
  156. data/lib/alf/aggregator/sum.rb +0 -32
  157. data/lib/alf/aggregator/variance.rb +0 -45
  158. data/lib/alf/environment.rb +0 -34
  159. data/lib/alf/environment/class_methods.rb +0 -95
  160. data/lib/alf/environment/folder.rb +0 -60
  161. data/lib/alf/environment/instance_methods.rb +0 -26
  162. data/lib/alf/errors.rb +0 -5
  163. data/lib/alf/ext.rb +0 -4
  164. data/lib/alf/ext/relation.rb +0 -4
  165. data/lib/alf/iterator.rb +0 -28
  166. data/lib/alf/iterator/class_methods.rb +0 -20
  167. data/lib/alf/iterator/proxy.rb +0 -27
  168. data/lib/alf/lispy.rb +0 -24
  169. data/lib/alf/lispy/instance_methods.rb +0 -157
  170. data/lib/alf/operator.rb +0 -68
  171. data/lib/alf/operator/binary.rb +0 -21
  172. data/lib/alf/operator/class_methods.rb +0 -82
  173. data/lib/alf/operator/experimental.rb +0 -9
  174. data/lib/alf/operator/instance_methods.rb +0 -29
  175. data/lib/alf/operator/non_relational/autonum.rb +0 -19
  176. data/lib/alf/operator/non_relational/clip.rb +0 -20
  177. data/lib/alf/operator/non_relational/coerce.rb +0 -19
  178. data/lib/alf/operator/non_relational/compact.rb +0 -18
  179. data/lib/alf/operator/non_relational/defaults.rb +0 -22
  180. data/lib/alf/operator/non_relational/generator.rb +0 -20
  181. data/lib/alf/operator/non_relational/sort.rb +0 -19
  182. data/lib/alf/operator/nullary.rb +0 -11
  183. data/lib/alf/operator/relational/extend.rb +0 -19
  184. data/lib/alf/operator/relational/group.rb +0 -21
  185. data/lib/alf/operator/relational/heading.rb +0 -20
  186. data/lib/alf/operator/relational/intersect.rb +0 -18
  187. data/lib/alf/operator/relational/join.rb +0 -18
  188. data/lib/alf/operator/relational/matching.rb +0 -18
  189. data/lib/alf/operator/relational/minus.rb +0 -18
  190. data/lib/alf/operator/relational/not_matching.rb +0 -18
  191. data/lib/alf/operator/relational/project.rb +0 -22
  192. data/lib/alf/operator/relational/quota.rb +0 -23
  193. data/lib/alf/operator/relational/rank.rb +0 -22
  194. data/lib/alf/operator/relational/rename.rb +0 -18
  195. data/lib/alf/operator/relational/restrict.rb +0 -18
  196. data/lib/alf/operator/relational/summarize.rb +0 -27
  197. data/lib/alf/operator/relational/ungroup.rb +0 -19
  198. data/lib/alf/operator/relational/union.rb +0 -20
  199. data/lib/alf/operator/relational/unwrap.rb +0 -19
  200. data/lib/alf/operator/relational/wrap.rb +0 -20
  201. data/lib/alf/operator/signature.rb +0 -233
  202. data/lib/alf/operator/unary.rb +0 -16
  203. data/lib/alf/reader.rb +0 -37
  204. data/lib/alf/reader/alf_file.rb +0 -24
  205. data/lib/alf/reader/class_methods.rb +0 -91
  206. data/lib/alf/reader/instance_methods.rb +0 -97
  207. data/lib/alf/reader/rash.rb +0 -28
  208. data/lib/alf/relation.rb +0 -28
  209. data/lib/alf/relation/class_methods.rb +0 -28
  210. data/lib/alf/relation/instance_methods.rb +0 -119
  211. data/lib/alf/renderer.rb +0 -32
  212. data/lib/alf/renderer/class_methods.rb +0 -58
  213. data/lib/alf/renderer/instance_methods.rb +0 -55
  214. data/lib/alf/renderer/rash.rb +0 -33
  215. data/lib/alf/renderer/text.rb +0 -198
  216. data/lib/alf/tools.rb +0 -15
  217. data/lib/alf/tools/coerce.rb +0 -25
  218. data/lib/alf/tools/miscellaneous.rb +0 -111
  219. data/lib/alf/tools/to_lispy.rb +0 -96
  220. data/lib/alf/tools/to_relation.rb +0 -54
  221. data/lib/alf/tools/to_ruby_literal.rb +0 -31
  222. data/lib/alf/tools/tuple_handle.rb +0 -60
  223. data/lib/alf/types.rb +0 -49
  224. data/lib/alf/types/attr_list.rb +0 -160
  225. data/lib/alf/types/attr_name.rb +0 -66
  226. data/lib/alf/types/boolean.rb +0 -25
  227. data/lib/alf/types/heading.rb +0 -135
  228. data/lib/alf/types/ordering.rb +0 -146
  229. data/lib/alf/types/renaming.rb +0 -97
  230. data/lib/alf/types/size.rb +0 -57
  231. data/lib/alf/types/summarization.rb +0 -138
  232. data/lib/alf/types/tuple_computation.rb +0 -136
  233. data/lib/alf/types/tuple_expression.rb +0 -152
  234. data/lib/alf/types/tuple_predicate.rb +0 -73
  235. data/spec/integration/__database__/group.alf +0 -3
  236. data/spec/integration/__database__/parts.rash +0 -6
  237. data/spec/integration/__database__/suppliers.rash +0 -5
  238. data/spec/integration/__database__/suppliers_csv.csv +0 -6
  239. data/spec/integration/__database__/supplies.rash +0 -12
  240. data/spec/integration/alf/example.rash +0 -1
  241. data/spec/integration/alf/test_Relation.rb +0 -32
  242. data/spec/integration/ext/test_relation.rb +0 -16
  243. data/spec/integration/lispy/test_relation.rb +0 -37
  244. data/spec/integration/lispy/test_run.rb +0 -40
  245. data/spec/integration/lispy/test_tuple.rb +0 -36
  246. data/spec/integration/semantics/test_join.alf +0 -9
  247. data/spec/integration/semantics/test_minus.alf +0 -5
  248. data/spec/integration/semantics/test_project.alf +0 -8
  249. data/spec/integration/semantics/test_rank.alf +0 -34
  250. data/spec/integration/shell/alf/alf.db +0 -0
  251. data/spec/integration/shell/alf/alf_e.cmd +0 -1
  252. data/spec/integration/shell/alf/alf_e.stdout +0 -4
  253. data/spec/integration/shell/alf/alf_env.cmd +0 -1
  254. data/spec/integration/shell/alf/alf_env.stdout +0 -5
  255. data/spec/integration/shell/alf/alf_env_sqlite.cmd +0 -1
  256. data/spec/integration/shell/alf/alf_env_sqlite.stdout +0 -9
  257. data/spec/integration/shell/alf/alf_help.cmd +0 -1
  258. data/spec/integration/shell/alf/alf_help.stdout +0 -69
  259. data/spec/integration/shell/alf/alf_implicit.alf +0 -1
  260. data/spec/integration/shell/alf/alf_implicit_exec.cmd +0 -1
  261. data/spec/integration/shell/alf/alf_implicit_exec.stdout +0 -4
  262. data/spec/integration/shell/alf/alf_r.cmd +0 -1
  263. data/spec/integration/shell/alf/alf_r.stdout +0 -5
  264. data/spec/integration/shell/alf/alf_version.cmd +0 -1
  265. data/spec/integration/shell/alf/alf_version.stdout +0 -2
  266. data/spec/integration/shell/alf/alf_yaml.cmd +0 -1
  267. data/spec/integration/shell/alf/alf_yaml.stdout +0 -22
  268. data/spec/integration/shell/alf/rel.rash +0 -1
  269. data/spec/integration/shell/autonum/autonum_0.cmd +0 -1
  270. data/spec/integration/shell/autonum/autonum_0.stdout +0 -9
  271. data/spec/integration/shell/autonum/autonum_1.cmd +0 -1
  272. data/spec/integration/shell/autonum/autonum_1.stdout +0 -9
  273. data/spec/integration/shell/clip/clip_0.cmd +0 -1
  274. data/spec/integration/shell/clip/clip_0.stdout +0 -9
  275. data/spec/integration/shell/clip/clip_1.cmd +0 -1
  276. data/spec/integration/shell/clip/clip_1.stdout +0 -9
  277. data/spec/integration/shell/coerce/coerce_1.cmd +0 -1
  278. data/spec/integration/shell/coerce/coerce_1.stdout +0 -5
  279. data/spec/integration/shell/compact/compact_0.cmd +0 -1
  280. data/spec/integration/shell/compact/compact_0.stdout +0 -9
  281. data/spec/integration/shell/defaults/defaults_0.cmd +0 -1
  282. data/spec/integration/shell/defaults/defaults_0.stdout +0 -9
  283. data/spec/integration/shell/defaults/defaults_1.cmd +0 -1
  284. data/spec/integration/shell/defaults/defaults_1.stdout +0 -9
  285. data/spec/integration/shell/defaults/defaults_2.cmd +0 -1
  286. data/spec/integration/shell/defaults/defaults_2.stdout +0 -9
  287. data/spec/integration/shell/extend/extend_0.cmd +0 -1
  288. data/spec/integration/shell/extend/extend_0.stdout +0 -16
  289. data/spec/integration/shell/generator/generator_1.cmd +0 -1
  290. data/spec/integration/shell/generator/generator_1.stdout +0 -10
  291. data/spec/integration/shell/generator/generator_2.cmd +0 -1
  292. data/spec/integration/shell/generator/generator_2.stdout +0 -5
  293. data/spec/integration/shell/generator/generator_3.cmd +0 -1
  294. data/spec/integration/shell/generator/generator_3.stdout +0 -5
  295. data/spec/integration/shell/group/group_0.cmd +0 -1
  296. data/spec/integration/shell/group/group_0.stdout +0 -32
  297. data/spec/integration/shell/group/group_1.cmd +0 -1
  298. data/spec/integration/shell/group/group_1.stdout +0 -32
  299. data/spec/integration/shell/help/help_1.cmd +0 -1
  300. data/spec/integration/shell/help/help_1.stdout +0 -24
  301. data/spec/integration/shell/intersect/intersect_0.cmd +0 -1
  302. data/spec/integration/shell/intersect/intersect_0.stdout +0 -9
  303. data/spec/integration/shell/join/join_0.cmd +0 -1
  304. data/spec/integration/shell/join/join_0.stdout +0 -16
  305. data/spec/integration/shell/matching/matching_0.cmd +0 -1
  306. data/spec/integration/shell/matching/matching_0.stdout +0 -8
  307. data/spec/integration/shell/minus/minus_0.cmd +0 -1
  308. data/spec/integration/shell/minus/minus_0.stdout +0 -4
  309. data/spec/integration/shell/not-matching/not-matching_0.cmd +0 -1
  310. data/spec/integration/shell/not-matching/not-matching_0.stdout +0 -5
  311. data/spec/integration/shell/project/project_0.cmd +0 -1
  312. data/spec/integration/shell/project/project_0.stdout +0 -9
  313. data/spec/integration/shell/project/project_1.cmd +0 -1
  314. data/spec/integration/shell/project/project_1.stdout +0 -9
  315. data/spec/integration/shell/quota/quota_0.cmd +0 -1
  316. data/spec/integration/shell/quota/quota_0.stdout +0 -16
  317. data/spec/integration/shell/rank/rank_1.cmd +0 -1
  318. data/spec/integration/shell/rank/rank_1.stdout +0 -10
  319. data/spec/integration/shell/rank/rank_2.cmd +0 -1
  320. data/spec/integration/shell/rank/rank_2.stdout +0 -10
  321. data/spec/integration/shell/rank/rank_3.cmd +0 -1
  322. data/spec/integration/shell/rank/rank_3.stdout +0 -10
  323. data/spec/integration/shell/rank/rank_4.cmd +0 -1
  324. data/spec/integration/shell/rank/rank_4.stdout +0 -6
  325. data/spec/integration/shell/rank/rank_5.cmd +0 -1
  326. data/spec/integration/shell/rank/rank_5.stdout +0 -6
  327. data/spec/integration/shell/rename/rename_0.cmd +0 -1
  328. data/spec/integration/shell/rename/rename_0.stdout +0 -9
  329. data/spec/integration/shell/restrict/restrict_0.cmd +0 -1
  330. data/spec/integration/shell/restrict/restrict_0.stdout +0 -6
  331. data/spec/integration/shell/restrict/restrict_1.cmd +0 -1
  332. data/spec/integration/shell/restrict/restrict_1.stdout +0 -6
  333. data/spec/integration/shell/show/show_base.cmd +0 -1
  334. data/spec/integration/shell/show/show_base.stdout +0 -9
  335. data/spec/integration/shell/show/show_base_sort_1.cmd +0 -1
  336. data/spec/integration/shell/show/show_base_sort_1.stdout +0 -9
  337. data/spec/integration/shell/show/show_base_sort_2.cmd +0 -1
  338. data/spec/integration/shell/show/show_base_sort_2.stdout +0 -9
  339. data/spec/integration/shell/show/show_conflictual.cmd +0 -1
  340. data/spec/integration/shell/show/show_conflictual.stdout +0 -5
  341. data/spec/integration/shell/show/show_csv.cmd +0 -1
  342. data/spec/integration/shell/show/show_csv.stdout +0 -6
  343. data/spec/integration/shell/show/show_ff.cmd +0 -1
  344. data/spec/integration/shell/show/show_ff.stdout +0 -10
  345. data/spec/integration/shell/show/show_rash.cmd +0 -1
  346. data/spec/integration/shell/show/show_rash.stdout +0 -5
  347. data/spec/integration/shell/show/show_rash_pretty.cmd +0 -1
  348. data/spec/integration/shell/show/show_rash_pretty.stdout +0 -30
  349. data/spec/integration/shell/show/show_yaml.cmd +0 -1
  350. data/spec/integration/shell/show/show_yaml.stdout +0 -22
  351. data/spec/integration/shell/sort/sort_0.cmd +0 -1
  352. data/spec/integration/shell/sort/sort_0.stdout +0 -9
  353. data/spec/integration/shell/sort/sort_1.cmd +0 -1
  354. data/spec/integration/shell/sort/sort_1.stdout +0 -9
  355. data/spec/integration/shell/sort/sort_2.cmd +0 -1
  356. data/spec/integration/shell/sort/sort_2.stdout +0 -9
  357. data/spec/integration/shell/sort/sort_3.cmd +0 -1
  358. data/spec/integration/shell/sort/sort_3.stdout +0 -9
  359. data/spec/integration/shell/summarize/summarize_0.cmd +0 -1
  360. data/spec/integration/shell/summarize/summarize_0.stdout +0 -8
  361. data/spec/integration/shell/ungroup/ungroup_0.cmd +0 -1
  362. data/spec/integration/shell/ungroup/ungroup_0.stdout +0 -16
  363. data/spec/integration/shell/union/union_0.cmd +0 -1
  364. data/spec/integration/shell/union/union_0.stdout +0 -9
  365. data/spec/integration/shell/unwrap/unwrap_0.cmd +0 -1
  366. data/spec/integration/shell/unwrap/unwrap_0.stdout +0 -9
  367. data/spec/integration/shell/wrap/wrap_0.cmd +0 -1
  368. data/spec/integration/shell/wrap/wrap_0.stdout +0 -9
  369. data/spec/integration/test_alf.rb +0 -34
  370. data/spec/integration/test_examples.rb +0 -15
  371. data/spec/integration/test_lispy.rb +0 -31
  372. data/spec/integration/test_semantics.rb +0 -40
  373. data/spec/integration/test_shell.rb +0 -47
  374. data/spec/regression/alf_file/__FILE__.alf +0 -2
  375. data/spec/regression/alf_file/suppliers.rash +0 -5
  376. data/spec/regression/alf_file/test___FILE__.rb +0 -17
  377. data/spec/regression/heading/test_heading_with_date.rb +0 -12
  378. data/spec/regression/lispy/test_compile.rb +0 -14
  379. data/spec/regression/logs/apache_combined.log +0 -5
  380. data/spec/regression/logs/test_path_attribute.rb +0 -25
  381. data/spec/regression/relation/test_relation_allbut_all.rb +0 -14
  382. data/spec/regression/relation/test_relation_with_date.rb +0 -12
  383. data/spec/regression/restrict/test_restrict_with_keywords.rb +0 -17
  384. data/spec/shared/a_valid_type_implementation.rb +0 -47
  385. data/spec/shared/a_value.rb +0 -12
  386. data/spec/shared/an_operator_class.rb +0 -36
  387. data/spec/unit/alf-core/aggregator/test_avg.rb +0 -22
  388. data/spec/unit/alf-core/aggregator/test_collect.rb +0 -25
  389. data/spec/unit/alf-core/aggregator/test_concat.rb +0 -31
  390. data/spec/unit/alf-core/aggregator/test_count.rb +0 -17
  391. data/spec/unit/alf-core/aggregator/test_max.rb +0 -23
  392. data/spec/unit/alf-core/aggregator/test_min.rb +0 -23
  393. data/spec/unit/alf-core/aggregator/test_stddev.rb +0 -27
  394. data/spec/unit/alf-core/aggregator/test_sum.rb +0 -23
  395. data/spec/unit/alf-core/aggregator/test_variance.rb +0 -29
  396. data/spec/unit/alf-core/assumptions/test_file.rb +0 -17
  397. data/spec/unit/alf-core/assumptions/test_instance_eval.rb +0 -15
  398. data/spec/unit/alf-core/assumptions/test_scoping.rb +0 -29
  399. data/spec/unit/alf-core/assumptions/test_set.rb +0 -64
  400. data/spec/unit/alf-core/environment/examples/suppliers.rash +0 -5
  401. data/spec/unit/alf-core/environment/test_folder.rb +0 -53
  402. data/spec/unit/alf-core/operator/non_relational/test_autonum.rb +0 -48
  403. data/spec/unit/alf-core/operator/non_relational/test_clip.rb +0 -35
  404. data/spec/unit/alf-core/operator/non_relational/test_coerce.rb +0 -29
  405. data/spec/unit/alf-core/operator/non_relational/test_compact.rb +0 -32
  406. data/spec/unit/alf-core/operator/non_relational/test_defaults.rb +0 -53
  407. data/spec/unit/alf-core/operator/non_relational/test_generator.rb +0 -60
  408. data/spec/unit/alf-core/operator/non_relational/test_sort.rb +0 -60
  409. data/spec/unit/alf-core/operator/relational/test_extend.rb +0 -28
  410. data/spec/unit/alf-core/operator/relational/test_group.rb +0 -39
  411. data/spec/unit/alf-core/operator/relational/test_heading.rb +0 -27
  412. data/spec/unit/alf-core/operator/relational/test_intersect.rb +0 -58
  413. data/spec/unit/alf-core/operator/relational/test_join.rb +0 -36
  414. data/spec/unit/alf-core/operator/relational/test_minus.rb +0 -56
  415. data/spec/unit/alf-core/operator/relational/test_project.rb +0 -62
  416. data/spec/unit/alf-core/operator/relational/test_quota.rb +0 -36
  417. data/spec/unit/alf-core/operator/relational/test_rank.rb +0 -48
  418. data/spec/unit/alf-core/operator/relational/test_rename.rb +0 -26
  419. data/spec/unit/alf-core/operator/relational/test_restrict.rb +0 -45
  420. data/spec/unit/alf-core/operator/relational/test_summarize.rb +0 -44
  421. data/spec/unit/alf-core/operator/relational/test_ungroup.rb +0 -29
  422. data/spec/unit/alf-core/operator/relational/test_union.rb +0 -35
  423. data/spec/unit/alf-core/operator/relational/test_unwrap.rb +0 -26
  424. data/spec/unit/alf-core/operator/relational/test_wrap.rb +0 -26
  425. data/spec/unit/alf-core/operator/signature/test_argv2args.rb +0 -82
  426. data/spec/unit/alf-core/operator/signature/test_collect_on.rb +0 -38
  427. data/spec/unit/alf-core/operator/signature/test_initialize.rb +0 -17
  428. data/spec/unit/alf-core/operator/signature/test_install.rb +0 -56
  429. data/spec/unit/alf-core/operator/signature/test_option_parser.rb +0 -36
  430. data/spec/unit/alf-core/operator/signature/test_parse_args.rb +0 -90
  431. data/spec/unit/alf-core/operator/signature/test_to_lispy.rb +0 -102
  432. data/spec/unit/alf-core/operator/signature/test_to_shell.rb +0 -103
  433. data/spec/unit/alf-core/operator/test_non_relational.rb +0 -20
  434. data/spec/unit/alf-core/operator/test_relational.rb +0 -31
  435. data/spec/unit/alf-core/reader/input.rb +0 -2
  436. data/spec/unit/alf-core/reader/test_alf_file.rb +0 -30
  437. data/spec/unit/alf-core/reader/test_initialize.rb +0 -60
  438. data/spec/unit/alf-core/reader/test_looks_a_path.rb +0 -20
  439. data/spec/unit/alf-core/reader/test_rash.rb +0 -31
  440. data/spec/unit/alf-core/relation/test_coerce.rb +0 -53
  441. data/spec/unit/alf-core/relation/test_inspect.rb +0 -20
  442. data/spec/unit/alf-core/relation/test_relops.rb +0 -55
  443. data/spec/unit/alf-core/relation/test_to_a.rb +0 -41
  444. data/spec/unit/alf-core/renderer/test_initialize.rb +0 -60
  445. data/spec/unit/alf-core/test_aggregator.rb +0 -58
  446. data/spec/unit/alf-core/test_environment.rb +0 -30
  447. data/spec/unit/alf-core/test_operator.rb +0 -16
  448. data/spec/unit/alf-core/test_reader.rb +0 -40
  449. data/spec/unit/alf-core/test_relation.rb +0 -75
  450. data/spec/unit/alf-core/test_renderer.rb +0 -53
  451. data/spec/unit/alf-core/text/test_cell.rb +0 -35
  452. data/spec/unit/alf-core/text/test_row.rb +0 -30
  453. data/spec/unit/alf-core/text/test_table.rb +0 -39
  454. data/spec/unit/alf-core/tools/test_class_name.rb +0 -16
  455. data/spec/unit/alf-core/tools/test_coalesce.rb +0 -19
  456. data/spec/unit/alf-core/tools/test_coerce.rb +0 -16
  457. data/spec/unit/alf-core/tools/test_ruby_case.rb +0 -16
  458. data/spec/unit/alf-core/tools/test_to_lispy.rb +0 -145
  459. data/spec/unit/alf-core/tools/test_to_relation.rb +0 -39
  460. data/spec/unit/alf-core/tools/test_to_ruby_literal.rb +0 -10
  461. data/spec/unit/alf-core/tools/test_tuple_handle.rb +0 -52
  462. data/spec/unit/alf-core/tools/test_tuple_heading.rb +0 -15
  463. data/spec/unit/alf-core/tools/test_varargs.rb +0 -19
  464. data/spec/unit/alf-core/types/test_attr_list.rb +0 -188
  465. data/spec/unit/alf-core/types/test_attr_name.rb +0 -78
  466. data/spec/unit/alf-core/types/test_boolean.rb +0 -42
  467. data/spec/unit/alf-core/types/test_class_methods.rb +0 -24
  468. data/spec/unit/alf-core/types/test_heading.rb +0 -146
  469. data/spec/unit/alf-core/types/test_ordering.rb +0 -185
  470. data/spec/unit/alf-core/types/test_renaming.rb +0 -72
  471. data/spec/unit/alf-core/types/test_size.rb +0 -74
  472. data/spec/unit/alf-core/types/test_summarization.rb +0 -95
  473. data/spec/unit/alf-core/types/test_tuple_computation.rb +0 -96
  474. data/spec/unit/alf-core/types/test_tuple_expression.rb +0 -122
  475. data/spec/unit/alf-core/types/test_tuple_predicate.rb +0 -108
  476. data/spec/unit/alf-csv/input.csv +0 -3
  477. data/spec/unit/alf-csv/test_reader.rb +0 -66
  478. data/spec/unit/alf-csv/test_renderer.rb +0 -73
  479. data/spec/unit/alf-engine/compact/test_set.rb +0 -33
  480. data/spec/unit/alf-engine/compact/test_uniq.rb +0 -33
  481. data/spec/unit/alf-engine/group/test_hash.rb +0 -34
  482. data/spec/unit/alf-engine/join/test_hash.rb +0 -55
  483. data/spec/unit/alf-engine/materialize/test_array.rb +0 -28
  484. data/spec/unit/alf-engine/materialize/test_hash.rb +0 -76
  485. data/spec/unit/alf-engine/quota/test_cesure.rb +0 -34
  486. data/spec/unit/alf-engine/rank/test_cesure.rb +0 -47
  487. data/spec/unit/alf-engine/semi/test_hash.rb +0 -58
  488. data/spec/unit/alf-engine/sort/test_in_memory.rb +0 -32
  489. data/spec/unit/alf-engine/summarize/test_cesure.rb +0 -36
  490. data/spec/unit/alf-engine/summarize/test_hash.rb +0 -36
  491. data/spec/unit/alf-engine/test_aggregate.rb +0 -26
  492. data/spec/unit/alf-engine/test_autonum.rb +0 -24
  493. data/spec/unit/alf-engine/test_clip.rb +0 -34
  494. data/spec/unit/alf-engine/test_coerce.rb +0 -35
  495. data/spec/unit/alf-engine/test_compact.rb +0 -33
  496. data/spec/unit/alf-engine/test_concat.rb +0 -38
  497. data/spec/unit/alf-engine/test_defaults.rb +0 -37
  498. data/spec/unit/alf-engine/test_filter.rb +0 -23
  499. data/spec/unit/alf-engine/test_generator.rb +0 -25
  500. data/spec/unit/alf-engine/test_rename.rb +0 -24
  501. data/spec/unit/alf-engine/test_set_attr.rb +0 -38
  502. data/spec/unit/alf-engine/test_sort.rb +0 -32
  503. data/spec/unit/alf-engine/test_ungroup.rb +0 -28
  504. data/spec/unit/alf-engine/test_unwrap.rb +0 -20
  505. data/spec/unit/alf-engine/test_wrap.rb +0 -26
  506. data/spec/unit/alf-logs/apache_combined.log +0 -5
  507. data/spec/unit/alf-logs/postgresql.log +0 -29
  508. data/spec/unit/alf-logs/test_reader.rb +0 -57
  509. data/spec/unit/alf-sequel/alf.db +0 -0
  510. data/spec/unit/alf-sequel/test_environment.rb +0 -74
  511. data/spec/unit/alf-shell/doc_manager/dynamic.md +0 -1
  512. data/spec/unit/alf-shell/doc_manager/example.md +0 -1
  513. data/spec/unit/alf-shell/doc_manager/example_1.txt +0 -11
  514. data/spec/unit/alf-shell/doc_manager/static.md +0 -1
  515. data/spec/unit/alf-shell/doc_manager/test_call.rb +0 -48
  516. data/spec/unit/alf-shell/main/test_class_methods.rb +0 -44
  517. data/spec/unit/alf-shell/operator/test_autonum.rb +0 -28
  518. data/spec/unit/alf-shell/operator/test_clip.rb +0 -29
  519. data/spec/unit/alf-shell/operator/test_coerce.rb +0 -21
  520. data/spec/unit/alf-shell/operator/test_compact.rb +0 -16
  521. data/spec/unit/alf-shell/operator/test_defaults.rb +0 -29
  522. data/spec/unit/alf-shell/operator/test_extend.rb +0 -21
  523. data/spec/unit/alf-shell/operator/test_generator.rb +0 -37
  524. data/spec/unit/alf-shell/operator/test_group.rb +0 -32
  525. data/spec/unit/alf-shell/operator/test_heading.rb +0 -16
  526. data/spec/unit/alf-shell/operator/test_intersect.rb +0 -18
  527. data/spec/unit/alf-shell/operator/test_join.rb +0 -18
  528. data/spec/unit/alf-shell/operator/test_matching.rb +0 -18
  529. data/spec/unit/alf-shell/operator/test_minus.rb +0 -18
  530. data/spec/unit/alf-shell/operator/test_not_matching.rb +0 -18
  531. data/spec/unit/alf-shell/operator/test_project.rb +0 -38
  532. data/spec/unit/alf-shell/operator/test_quota.rb +0 -23
  533. data/spec/unit/alf-shell/operator/test_rank.rb +0 -30
  534. data/spec/unit/alf-shell/operator/test_rename.rb +0 -21
  535. data/spec/unit/alf-shell/operator/test_restrict.rb +0 -35
  536. data/spec/unit/alf-shell/operator/test_sort.rb +0 -49
  537. data/spec/unit/alf-shell/operator/test_summarize.rb +0 -30
  538. data/spec/unit/alf-shell/operator/test_ungroup.rb +0 -28
  539. data/spec/unit/alf-shell/operator/test_union.rb +0 -18
  540. data/spec/unit/alf-shell/operator/test_unwrap.rb +0 -28
  541. data/spec/unit/alf-shell/operator/test_wrap.rb +0 -30
  542. data/tasks/clean.rake +0 -3
  543. data/tasks/debug_mail.rake +0 -75
  544. data/tasks/debug_mail.txt +0 -18
  545. data/tasks/gh-pages.rake +0 -68
  546. data/tasks/integration_test.rake +0 -43
  547. data/tasks/regression_test.rake +0 -44
  548. data/tasks/unit_test.rake +0 -44
  549. data/tasks/yard.rake +0 -51
@@ -1,3 +1,109 @@
1
+ # 0.13.0 / FIX ME
2
+
3
+ * Ruby 1.8.x is no longer supported. Please upgrade.
4
+
5
+ ## Enhancements of the shell interface
6
+
7
+ * When used in shell, the default database is set to the current folder instead of the embedded suppliers and parts example database. This saves you from having to use 'alf --db=.' everytime you want to use .csv or .rash files as base relations. An --examples option allows easily setting the embedded database as default one.
8
+
9
+ * When used in shell, the default rendering format is set to --text if the standard output is detected to be a tty. This saves you from having to use 'alf ... | alf show' too many times. The behavior of alf in shell, 'alf show' in particular, might be broken for you (see below). Thanks go to @eregontp for this suggestion!
10
+
11
+ * Added --json output format.
12
+
13
+ ## Enhancements of the ruby interface
14
+
15
+ * Added Alf.connect for connecting to databases in the easiest possible way:
16
+
17
+ Alf.connect("somewhere/to/a/folder") do |conn| ... end
18
+ Alf.connect("database.sqlite3") do |conn| ... end
19
+ Alf.connect("postgres://user:password@host/database") ...
20
+ Alf.connect(adapter: "sqlite", database: "test.sqlite3") ...
21
+
22
+ * Evaluation of queries are now sent to a connection specifically:
23
+
24
+ Alf.connect(...) do |conn|
25
+ conn.query{ (restrict :suppliers, ->{ status > 10 } )}
26
+ end
27
+
28
+ * Alf::Relation now respond to aggregation functions with an object-oriented syntax:
29
+
30
+ Relation(...).sum{ qty }
31
+
32
+ * Alf::Relation(...) (aliased as Alf.relation) now recognize IO objects and Path.like instances and load them with available readers in the easiest possible way:
33
+
34
+ Alf::Relation("path/to/a/suppliers.csv")
35
+ # => Alf::Relation[...]
36
+
37
+ * Alf::Relation(...) ensures that attribute names are Symbols and symbolize them if needed.
38
+
39
+ * Added Relation#tuple_extract, aliased as Relation#tuple! that returns the only tuple of the relation, or raises a NoSuchTupleError if no tuple or more than one.
40
+
41
+ * Added Alf::Tuple(...) that behaves similarly to Alf::Relation(...) but for tuples.
42
+
43
+ * Added Alf.reader as a convenient shortcut for Alf::Reader.reader.
44
+
45
+ Alf.reader("path/to/a/suppliers.csv")
46
+ # => #<Alf::CSV::Reader:0x007fd554058440 ...>
47
+
48
+ * Added Alf::Reader#path that always returns a Path instance, unless the reader operates on an IO/StringIO. Use Alf::Reader#input to get the source passed at construction.
49
+
50
+ * All queries as well as tuple expressions (in restrictions, extensions, summarizations, etc.) are now evaluated in a cleaner and extended scope through a BasicObject extended with all database helpers. This has multiple advantages and one drawback:
51
+ * It allows you to have all database helpers available in those expressions.
52
+ * You no longer have to worry about name clashes with Kernel's methods.
53
+ * Kernel's functions are no longer accessible whithout prefixing with ::Kernel.
54
+
55
+ * In sync with the previous point, Relation (the class), DUM and DEE are now defined globally (unless you define `ALF_NO_CORE_EXTENSIONS` before loading Alf). Those constants can thus be safely used in query expressions without experiencing a NameError.
56
+
57
+ * Added a JSON renderer.
58
+
59
+ ## Bug fixes
60
+
61
+ * The Aggregator class, Summarization type and Summarize operator have been made thread-safe through #happens that now takes a TupleScope instead of a tuple.
62
+
63
+ * Sequel::Connection#relvar correctly raises a NoSuchRelvarError if no table can be found.
64
+
65
+ ## Broken stuff
66
+
67
+ * The `heading` operator has been renamed `infer-heading` (Heading -> InferHeading accordingly).
68
+
69
+ * `Alf.lispy` has been removed from the public API. Please use `connect` instead:
70
+
71
+ Alf.lipsy(db_params).query{ ... }
72
+
73
+ becomes:
74
+
75
+ Alf.connect(db_params) do |conn|
76
+ conn.query{ ... }
77
+ end
78
+
79
+ * The Environment concept as been removed and replaced by Connection. That also means that `environment` readers and writers here have been replaced according to cases. Also, the --env option has been renamed to --db in the shell command. This is a major incompatible change of Alf internals that might break existing code that extends Alf::Environment, Alf::Reader or any subclass.
80
+
81
+ * Connection#dataset has been replaced to Connection#relvar and now serves relation variables instead of pure iterators.
82
+
83
+ * You now have to explicitely use 'alf show --text > ...' or 'alf --text ... > ' if you don't want ruby hashes to be outputted to output files. This is a consequence of tty detection that ensures a better shell experience.
84
+
85
+ * Kernel's functions are no longer accessible in tuple expressions that are executed within a BasicObject's scope.
86
+
87
+ * The syntax (Relation :relvar_name) is no longer supported as it does not denote a relation literal at all.
88
+
89
+ * `Iterator#to_rel` has been removed. Use `Iterator#to_relation` instead.
90
+
91
+ * Renderers are no longer able to coerce their input from a Symbol.
92
+
93
+ * Renderer.renderers and Renderer.each_renderer have been removed. Use Renderer.all and Renderer.each instead, respectively.
94
+
95
+ * Reader.readers has been removed. Use Reader.all or Reader.each instead.
96
+
97
+ * Aggregator.aggregators has been removed. Use Aggregator.all or Aggregator.each instead.
98
+
99
+ * TupleExpression#call and TupleExpression#[] have been removed.
100
+
101
+ * TuplePredicate has been replaced by Predicate. The latter is no longer a subclass of TupleExpression.
102
+
103
+ ## Bug fixes
104
+
105
+ * The backports gem is no longer required on ruby =1.9
106
+
1
107
  # 0.12.2 / 2012-06-12
2
108
 
3
109
  * Bumped and weakened backports dependency to '~> 2.6'
@@ -19,10 +125,10 @@
19
125
 
20
126
  * Add a Relation() toplevel method that mimics Array(), Integer(), and so on.
21
127
  That method uses Tools::ToRelation which is a set of Myrrha coercion rules.
22
- The Relation() method helps building relation "literals" (say) for common
128
+ The Relation() method helps building relation "literals" (say) for common
23
129
  cases, such as the following:
24
130
 
25
- Relation(:name => "Alf")
131
+ Relation(:name => "Alf")
26
132
  # => (Relation (Tuple :name => "Alf"))
27
133
 
28
134
  Relation([{:name => "Alf"}, {:name => "Myrrha"}])
@@ -66,31 +172,31 @@
66
172
 
67
173
  ## Miscellaneous enhancements
68
174
 
69
- * Added Variance and Stddev aggregation operators; they are available under
175
+ * Added Variance and Stddev aggregation operators; they are available under
70
176
  Aggregator.variance{} and Aggregator.stddev{}, respectively
71
- * Added a --pretty option to 'alf', whose semantics is delegated to the output
177
+ * Added a --pretty option to 'alf', whose semantics is delegated to the output
72
178
  renderer. Same option is available on 'alf show'.
73
179
  * 'alf show' now accepts an optional ordering argument. This avoids explicitely
74
- including non-relational sort invocations in your pipe (sorting should be
180
+ including non-relational sort invocations in your pipe (sorting should be
75
181
  seen as a displaying issue)
76
182
  * Added an options hash to text renderer, :float_format among others
77
183
  * Added a --ff option to 'alf show', for float format in text rendering
78
184
 
79
185
  ## Bugfixes
80
186
 
81
- * Alf::Environment::(Folder/Explicit)#dataset now correctly raises a
187
+ * Alf::Environment::(Folder/Explicit)#dataset now correctly raises a
82
188
  NoSuchDatasetError when the dataset cannot be found, as required by the
83
189
  specification.
84
- * Alf::Reader.reader now correctly returns a Rash reader when invoked on a
190
+ * Alf::Reader.reader now correctly returns a Rash reader when invoked on a
85
191
  StringIO
86
192
 
87
193
  # 0.10.0 / 2011-08-15
88
194
 
89
195
  ## New recognized data sources
90
196
 
91
- * Alf now provides an Environment implementation on top of a SQL database.
92
- This means that SQL tables can now be used as data-sources. This feature
93
- relies on the sequel gem ('gem install sequel' is required), that drives
197
+ * Alf now provides an Environment implementation on top of a SQL database.
198
+ This means that SQL tables can now be used as data-sources. This feature
199
+ relies on the sequel gem ('gem install sequel' is required), that drives
94
200
  recognized SQL servers. Then (don't forget that ALF_OPTS also exists):
95
201
 
96
202
  % alf --env=postgres://user:password@host/database show table
@@ -101,12 +207,12 @@
101
207
 
102
208
  % alf restrict suppliers.csv -- "city == 'Paris'" (input)
103
209
  % alf show suppliers --csv (output)
104
-
210
+
105
211
  * Alf now recognizes and allows manipulating .log files as first-class data
106
212
  sources. This feature relies on request-log-analyzer gem that provides the
107
- parsers that Alf uses, and the log formats it recognizes
213
+ parsers that Alf uses, and the log formats it recognizes
108
214
  ('gem install request-log-analyzer' is required). See examples/logs.
109
-
215
+
110
216
  ## New operators and enhancements
111
217
 
112
218
  * A GENERATOR operator is introduced. It allows generating a relation with one
@@ -114,16 +220,16 @@
114
220
 
115
221
  * A COERCE operator is introduced. It provides a quick way to obtain type-safe
116
222
  relations from type-unsafe sources like .csv files. For example:
117
-
223
+
118
224
  % alf coerce mydirtyfile.csv -- name String price Float at Time
119
-
225
+
120
226
  The coerce operator is of course available in Ruby as well:
121
-
227
+
122
228
  (coerce "mydirtyfile.csv", :name => String, :price => Float, :at => Time)
123
-
229
+
124
230
  * The DEFAULTS (non-relational) operator now accepts default values as tuple
125
231
  expressions. When used in shell, provided default values are now evaluated
126
- that way. This allows specifying default values as being computed on the
232
+ that way. This allows specifying default values as being computed on the
127
233
  current tuple.
128
234
 
129
235
  * Aggregations in the Lispy DSL must not be prefixed by Agg:: anymore.
@@ -144,8 +250,8 @@
144
250
  Agg::sum{ qty } # !! error !!
145
251
  sum{ qty } # simply, and only!
146
252
 
147
- * The group aggregation operator has been removed. It will probably be replaced
148
- in a future version. In the meantime, the GROUP relational operator allows
253
+ * The group aggregation operator has been removed. It will probably be replaced
254
+ in a future version. In the meantime, the GROUP relational operator allows
149
255
  obtaining similar results.
150
256
 
151
257
  * Lispy syntax of CLIP has changed (when used with --allbut option)
@@ -187,8 +293,8 @@
187
293
 
188
294
  * Shell syntax of WRAP has changed (option separator before introduced name)
189
295
 
190
- % alf --text wrap suppliers -- city status loc_and_status (before)
191
- % alf --text wrap suppliers -- city status -- loc_and_status (after)
296
+ % alf --text wrap suppliers -- city status loc_and_status (before)
297
+ % alf --text wrap suppliers -- city status -- loc_and_status (after)
192
298
 
193
299
  * Shell syntax of QUOTA has changed (--by and --order become pure arguments)
194
300
 
@@ -205,33 +311,33 @@
205
311
  % alf summarize supplies --by=sid -- total_qty "sum{ qty }" (before)
206
312
  % alf summarize supplies -- sid -- total_qty "sum{ qty }" (after)
207
313
 
208
- ## Bug fixes
314
+ ## Bug fixes
209
315
 
210
- * [In shell] Options are now correctly parsed in presence of option separators.
211
- That is, every argument after a '--' separator is considered a non-option
212
- argument.
316
+ * [In shell] Options are now correctly parsed in presence of option separators.
317
+ That is, every argument after a '--' separator is considered a non-option
318
+ argument.
213
319
 
214
320
  # 0.9.3 / 2011-07-23
215
321
 
216
322
  ## New operators (available both in shell and in Lispy DSL)
217
323
 
218
- * Added MATCHING and NOT MATCHING operators. These operators are useful
324
+ * Added MATCHING and NOT MATCHING operators. These operators are useful
219
325
  shortcuts for the following expressions.
220
-
326
+
221
327
  (matching l, r) := (project (join l, r), [l's attributes])
222
328
  (not_matching l, r) := (minus l, (matching l, r))
223
-
224
- For example:
225
-
329
+
330
+ For example:
331
+
226
332
  # Give suppliers who supply at least one part
227
333
  (matching suppliers, supplies)
228
334
 
229
335
  # Give suppliers who don't supply any part
230
336
  (not_matching suppliers, supplies)
231
337
 
232
- * Added RANK operator, which is useful for for computing quota queries as
338
+ * Added RANK operator, which is useful for for computing quota queries as
233
339
  illustrated below. See 'alf help rank' for details.
234
-
340
+
235
341
  # Give the three heaviest parts
236
342
  (restrict (rank :parts, [[:weight, :desc]], :pos), lambda{ pos < 3 })
237
343
 
@@ -239,71 +345,71 @@
239
345
 
240
346
  * added 'alf -r', that mimics 'ruby -r' (require library before run)
241
347
 
242
- * When alf is invoked in shell (and only in this case), ALF_OPTS is used as
243
- global options to apply as if they were specified inline:
244
-
245
- % export ALF_OPTS="--env=. --yaml"
348
+ * When alf is invoked in shell (and only in this case), ALF_OPTS is used as
349
+ global options to apply as if they were specified inline:
350
+
351
+ % export ALF_OPTS="--env=. --yaml"
246
352
  % alf show suppliers
247
-
248
- is the same as
249
-
353
+
354
+ is the same as
355
+
250
356
  % alf --env=. --yaml show suppliers
251
-
252
- * 'alf --help' now distinguishes experimental operators (quota in particular)
253
- from those coming from the (much more stable) **Tutorial D** specification. The
254
- former should be used with care as their specification may change at any
255
- time.
256
357
 
257
- ## Enhancements when using Alf in Ruby
358
+ * 'alf --help' now distinguishes experimental operators (quota in particular)
359
+ from those coming from the (much more stable) **Tutorial D** specification. The
360
+ former should be used with care as their specification may change at any
361
+ time.
362
+
363
+ ## Enhancements when using Alf in Ruby
258
364
 
259
365
  * Alf.lispy now accepts any argument recognized by Environment.autodetect; it
260
366
  obtains its working Environment that way. Among others:
261
-
367
+
262
368
  Alf.lispy(Alf::Environment.folder("path/to/an/existing/folder"))
263
-
264
- is the same as:
265
-
369
+
370
+ is the same as:
371
+
266
372
  Alf.lispy("path/to/an/existing/folder")
267
373
 
268
374
  * Added Relation::DUM and Relation::DEE constants (relations of empty heading
269
- with no and one tuple, respectively). They are also available as DUM and DEE
375
+ with no and one tuple, respectively). They are also available as DUM and DEE
270
376
  in Lispy functional expressions.
271
377
 
272
378
  * Added a Heading abstraction, as a set of attribute (name, type) pairs.
273
379
 
274
380
  ## Internal enhancements (extension points)
275
381
 
276
- * The Reader and Renderer classes accept a Hash of options as third
277
- constructor argument. These options can be used by extension points.
278
-
382
+ * The Reader and Renderer classes accept a Hash of options as third
383
+ constructor argument. These options can be used by extension points.
384
+
279
385
  * The Environment class now provides a class-based registering mechanism 'ala'
280
386
  Reader and Renderer. This allows auto-detecting the target environment when
281
- --env=... is used in shell. See Environment.autodetect and
282
- Environment#recognizes? for contributing to this extension point.
283
-
284
- * Internals now rely on Myrrha for code generation. This means that all
387
+ --env=... is used in shell. See Environment.autodetect and
388
+ Environment#recognizes? for contributing to this extension point.
389
+
390
+ * Internals now rely on Myrrha for code generation. This means that all
285
391
  datatypes can now be safely used in relations and dumped to .rash files in
286
- particular.
392
+ particular.
287
393
 
288
394
  ## Bug fixes
289
395
 
290
- * Added Relation#allbut, forgotten in two previous releases
396
+ * Added Relation#allbut, forgotten in two previous releases
291
397
  * Fixed (join xxx, DEE) and (join xxx, DUM)
292
398
  * Fixed scoping bug when using attributes named :path, :expr or :block in
293
399
  Lispy compiled expressions (coming from .alf files)
294
400
  * Fixed 'alf --yaml show suppliers' that renderer a --text table instead of
295
401
  a yaml output
296
402
  * Fixed bugs when using Date and Time attributes with .rash files
297
- * Fixed bugs when using Date and Time attributes in restrict expressions
403
+ * Fixed bugs when using Date and Time attributes in restrict expressions
298
404
  compiled from the commandline
299
- * Fixed a few bugs when using attribute names that are ruby keywords
300
- (restrict & extend)
405
+ * Fixed a few bugs when using attribute names that are ruby keywords
406
+ (restrict & extend)
301
407
 
302
408
  # 0.9.2 / 2011.07.13
303
409
 
304
410
  # Bug fixes
305
411
 
306
- * Fixed the "alf show" command (undefined method `chain')
412
+ * Fixed the "alf show" command (undefined method `chain')
307
413
 
308
414
  # 0.9.1 / 2011.07.13
309
415
 
@@ -312,17 +418,17 @@
312
418
  * Added the in-memory Alf::Relation data structure and associated tooling.
313
419
  This allows using Alf in a object-oriented usual way, in addition to the
314
420
  functional DSL:
315
-
421
+
316
422
  Alf.lispy.evaluate {
317
423
  (join (restrict :suppliers, lambda{ status > 10 }), :cities)
318
424
  }
319
-
425
+
320
426
  is equivalent to
321
-
322
- suppliers, cities = [...], [...]
427
+
428
+ suppliers, cities = [...], [...]
323
429
  suppliers.restrict(lambda{ status > 10 }).join(cities)
324
-
325
- see README about how to obtain suppliers and cities relations in the first
430
+
431
+ see README about how to obtain suppliers and cities relations in the first
326
432
  place.
327
433
 
328
434
  * Summarize now accepts a --allbut option, to specify 'by' attributes from an
@@ -333,9 +439,9 @@
333
439
 
334
440
  ## Non backward-compatible changes to public APIs
335
441
 
336
- * Lispy#with has been removed because not being stable enough. The clean way
442
+ * Lispy#with has been removed because not being stable enough. The clean way
337
443
  of reusing sub-queries is as follows (non purely functional, so far)
338
-
444
+
339
445
  kept_suppliers = (restrict :suppliers, lambda{ status > 10 })
340
446
  with_countries = (join kept_suppliers, :cities)
341
447
  supplying = (join with_countries, :supplies)
@@ -343,26 +449,26 @@
343
449
  [:country],
344
450
  :which => Agg::group(:pid),
345
451
  :total => Agg::sum{ qty })
346
-
347
- * As a consequence, named data sources (Symbols, like :suppliers above) are
452
+
453
+ * As a consequence, named data sources (Symbols, like :suppliers above) are
348
454
  now resolved at compile time, which is less powerful, yet much simpler and
349
455
  sound.
350
456
 
351
457
  * Nest and Unnest have been renamed to Wrap and Unwrap respectively. This is
352
458
  to better conform to **Tutorial D**'s terminology.
353
-
354
- * Lispy#chain was kept public in 0.9.0 by error and has been entirely removed
459
+
460
+ * Lispy#chain was kept public in 0.9.0 by error and has been entirely removed
355
461
  from the DSL.
356
462
 
357
463
  ## Enhancements (internals)
358
464
 
359
- * Reader.reader delegates to Reader.coerce when its first argument is not
465
+ * Reader.reader delegates to Reader.coerce when its first argument is not
360
466
  a String. This allows calling Reader.reader(args.first || $stdin) in quickl
361
467
  commands for example.
362
-
363
- * Operator, Operator::Relational and Operator::NonRelational have a .each
468
+
469
+ * Operator, Operator::Relational and Operator::NonRelational have a .each
364
470
  class method that yields operator classes
365
-
471
+
366
472
  ## Bug fixes
367
473
 
368
474
  * Fixed a bug that led to an Nil error when using unary operators on $stdin
data/Gemfile CHANGED
@@ -1,42 +1,26 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  group :runtime do
4
- gem "quickl", "~> 0.4.2"
5
- gem "myrrha", "~> 1.2.1"
6
- gem "backports", "~> 2.6"
4
+ # gem "alf-core", path: "../alf-core"
5
+ # gem "alf-sequel", path: "../alf-sequel"
6
+ # gem "alf-shell", path: "../alf-shell"
7
+ # gem "alf-core", git: "git://github.com/alf-tool/alf-core.git"
8
+ # gem "alf-sequel", git: "git://github.com/alf-tool/alf-sequel.git"
9
+ # gem "alf-shell", git: "git://github.com/alf-tool/alf-shell.git"
10
+ gem "alf-core", "~> 0.13.0"
11
+ gem "alf-sequel", "~> 0.13.0"
12
+ gem "alf-shell", "~> 0.13.1"
7
13
  end
8
14
 
9
15
  group :test do
10
- gem "rake", "~> 0.9.2"
11
- gem "rspec", "~> 2.8.0"
16
+ gem "rake", "~> 10.1"
17
+ gem "rspec", "~> 2.14"
18
+ gem "sqlite3", "~> 1.3", :platforms => ['mri', 'rbx']
19
+ gem "jdbc-sqlite3", "~> 3.7", :platforms => ['jruby']
20
+ gem "pg", "~> 0.14", :platforms => ['mri', 'rbx']
12
21
  end
13
22
 
14
23
  group :release do
15
- gem "rake", "~> 0.9.2"
16
- gem "rspec", "~> 2.8.0"
17
- gem "wlang", "~> 0.10.2"
24
+ gem "rake", "~> 10.1"
25
+ gem "rspec", "~> 2.14"
18
26
  end
19
-
20
- group :doc do
21
- gem "yard", "~> 0.7.2"
22
- gem "bluecloth", "~> 2.2.0"
23
- gem "redcarpet", "~> 2.1.0"
24
- end
25
-
26
- group :extra do
27
- gem "fastercsv", "~> 1.5.4"
28
- gem "request-log-analyzer", "~> 1.11.0"
29
- gem "sequel", "~> 3.30"
30
- gem "highline", "~> 1.6.2"
31
- end
32
-
33
- platform 'jruby' do
34
- group :extra do
35
- gem "jdbc-sqlite3", "~> 3.7"
36
- end
37
- end
38
- platform 'mri' do
39
- group :extra do
40
- gem "sqlite3", "~> 1.3"
41
- end
42
- end