alf 0.12.2 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +186 -80
- data/Gemfile +16 -32
- data/Gemfile.lock +35 -34
- data/LICENCE.md +1 -1
- data/Manifest.txt +7 -9
- data/README.md +139 -809
- data/alf.gemspec +6 -15
- data/alf.noespec +16 -34
- data/lib/alf.rb +3 -73
- data/lib/alf/loader.rb +3 -3
- data/lib/alf/version.rb +2 -2
- data/spec/spec_helper.rb +3 -18
- data/spec/test_alf.rb +8 -0
- data/tasks/test.rake +6 -0
- data/test/migrations/test_folder_migration.rb +18 -0
- data/test/migrations/test_sequel_migration.rb +34 -0
- data/test/seeding/test_seeding.rb +49 -0
- data/test/test_alf.rb +8 -0
- data/test/test_helpers.rb +24 -0
- metadata +54 -952
- data/TODO.md +0 -21
- data/bin/alf +0 -27
- data/doc/commands/exec.md +0 -16
- data/doc/commands/help.md +0 -11
- data/doc/commands/main.md +0 -33
- data/doc/commands/show.md +0 -19
- data/doc/operators/non_relational/autonum.md +0 -23
- data/doc/operators/non_relational/clip.md +0 -31
- data/doc/operators/non_relational/coerce.md +0 -15
- data/doc/operators/non_relational/compact.md +0 -20
- data/doc/operators/non_relational/defaults.md +0 -32
- data/doc/operators/non_relational/generator.md +0 -20
- data/doc/operators/non_relational/sort.md +0 -24
- data/doc/operators/relational/extend.md +0 -18
- data/doc/operators/relational/group.md +0 -27
- data/doc/operators/relational/heading.md +0 -20
- data/doc/operators/relational/intersect.md +0 -13
- data/doc/operators/relational/join.md +0 -28
- data/doc/operators/relational/matching.md +0 -24
- data/doc/operators/relational/minus.md +0 -12
- data/doc/operators/relational/not-matching.md +0 -20
- data/doc/operators/relational/project.md +0 -28
- data/doc/operators/relational/quota.md +0 -21
- data/doc/operators/relational/rank.md +0 -27
- data/doc/operators/relational/rename.md +0 -17
- data/doc/operators/relational/restrict.md +0 -25
- data/doc/operators/relational/summarize.md +0 -25
- data/doc/operators/relational/ungroup.md +0 -20
- data/doc/operators/relational/union.md +0 -14
- data/doc/operators/relational/unwrap.md +0 -20
- data/doc/operators/relational/wrap.md +0 -24
- data/examples/csv/suppliers.csv +0 -6
- data/examples/logs/access.log +0 -1000
- data/examples/logs/combined.alf +0 -2
- data/examples/logs/hits.alf +0 -14
- data/examples/logs/not_found.alf +0 -7
- data/examples/logs/robots-cheating.alf +0 -11
- data/examples/logs/robots.alf +0 -8
- data/examples/operators/autonum.alf +0 -6
- data/examples/operators/cities.rash +0 -4
- data/examples/operators/clip.alf +0 -3
- data/examples/operators/compact.alf +0 -2
- data/examples/operators/database.alf +0 -5
- data/examples/operators/defaults.alf +0 -3
- data/examples/operators/extend.alf +0 -3
- data/examples/operators/group.alf +0 -3
- data/examples/operators/intersect.alf +0 -4
- data/examples/operators/join.alf +0 -2
- data/examples/operators/matching.alf +0 -2
- data/examples/operators/minus.alf +0 -8
- data/examples/operators/not_matching.alf +0 -2
- data/examples/operators/nulls.rash +0 -3
- data/examples/operators/parts.rash +0 -6
- data/examples/operators/project.alf +0 -3
- data/examples/operators/pseudo-with.alf +0 -7
- data/examples/operators/quota.alf +0 -4
- data/examples/operators/rank.alf +0 -4
- data/examples/operators/rename.alf +0 -3
- data/examples/operators/restrict.alf +0 -2
- data/examples/operators/schema.yaml +0 -28
- data/examples/operators/sort.alf +0 -4
- data/examples/operators/summarize.alf +0 -16
- data/examples/operators/suppliers.rash +0 -5
- data/examples/operators/supplies.rash +0 -12
- data/examples/operators/ungroup.alf +0 -4
- data/examples/operators/union.alf +0 -3
- data/examples/operators/unwrap.alf +0 -4
- data/examples/operators/wrap.alf +0 -2
- data/lib/alf-csv/alf/csv.rb +0 -3
- data/lib/alf-csv/alf/csv/commons.rb +0 -36
- data/lib/alf-csv/alf/csv/reader.rb +0 -33
- data/lib/alf-csv/alf/csv/renderer.rb +0 -38
- data/lib/alf-engine/alf/engine.rb +0 -25
- data/lib/alf-engine/alf/engine/aggregate.rb +0 -44
- data/lib/alf-engine/alf/engine/autonum.rb +0 -45
- data/lib/alf-engine/alf/engine/cesure.rb +0 -45
- data/lib/alf-engine/alf/engine/clip.rb +0 -53
- data/lib/alf-engine/alf/engine/coerce.rb +0 -46
- data/lib/alf-engine/alf/engine/cog.rb +0 -7
- data/lib/alf-engine/alf/engine/compact.rb +0 -26
- data/lib/alf-engine/alf/engine/compact/set.rb +0 -23
- data/lib/alf-engine/alf/engine/compact/uniq.rb +0 -23
- data/lib/alf-engine/alf/engine/concat.rb +0 -25
- data/lib/alf-engine/alf/engine/defaults.rb +0 -43
- data/lib/alf-engine/alf/engine/filter.rb +0 -41
- data/lib/alf-engine/alf/engine/generator.rb +0 -50
- data/lib/alf-engine/alf/engine/group.rb +0 -7
- data/lib/alf-engine/alf/engine/group/hash.rb +0 -40
- data/lib/alf-engine/alf/engine/join.rb +0 -7
- data/lib/alf-engine/alf/engine/join/hash.rb +0 -35
- data/lib/alf-engine/alf/engine/materialize.rb +0 -8
- data/lib/alf-engine/alf/engine/materialize/array.rb +0 -78
- data/lib/alf-engine/alf/engine/materialize/hash.rb +0 -122
- data/lib/alf-engine/alf/engine/quota.rb +0 -7
- data/lib/alf-engine/alf/engine/quota/cesure.rb +0 -46
- data/lib/alf-engine/alf/engine/rank.rb +0 -7
- data/lib/alf-engine/alf/engine/rank/cesure.rb +0 -48
- data/lib/alf-engine/alf/engine/rename.rb +0 -39
- data/lib/alf-engine/alf/engine/semi.rb +0 -7
- data/lib/alf-engine/alf/engine/semi/hash.rb +0 -39
- data/lib/alf-engine/alf/engine/set_attr.rb +0 -46
- data/lib/alf-engine/alf/engine/sort.rb +0 -28
- data/lib/alf-engine/alf/engine/sort/in_memory.rb +0 -39
- data/lib/alf-engine/alf/engine/summarize.rb +0 -8
- data/lib/alf-engine/alf/engine/summarize/cesure.rb +0 -51
- data/lib/alf-engine/alf/engine/summarize/hash.rb +0 -35
- data/lib/alf-engine/alf/engine/ungroup.rb +0 -29
- data/lib/alf-engine/alf/engine/unwrap.rb +0 -31
- data/lib/alf-engine/alf/engine/wrap.rb +0 -39
- data/lib/alf-logs/alf/logs.rb +0 -1
- data/lib/alf-logs/alf/logs/reader.rb +0 -98
- data/lib/alf-sequel/alf/sequel.rb +0 -2
- data/lib/alf-sequel/alf/sequel/environment.rb +0 -61
- data/lib/alf-sequel/alf/sequel/iterator.rb +0 -21
- data/lib/alf-shell/alf/shell.rb +0 -40
- data/lib/alf-shell/alf/shell/command.rb +0 -26
- data/lib/alf-shell/alf/shell/command/exec.rb +0 -11
- data/lib/alf-shell/alf/shell/command/help.rb +0 -30
- data/lib/alf-shell/alf/shell/command/main.rb +0 -136
- data/lib/alf-shell/alf/shell/command/main/class_methods.rb +0 -46
- data/lib/alf-shell/alf/shell/command/show.rb +0 -63
- data/lib/alf-shell/alf/shell/doc_manager.rb +0 -72
- data/lib/alf-shell/alf/shell/operator.rb +0 -86
- data/lib/alf-yaml/alf/yaml.rb +0 -1
- data/lib/alf-yaml/alf/yaml/renderer.rb +0 -22
- data/lib/alf/aggregator.rb +0 -51
- data/lib/alf/aggregator/avg.rb +0 -39
- data/lib/alf/aggregator/class_methods.rb +0 -77
- data/lib/alf/aggregator/collect.rb +0 -32
- data/lib/alf/aggregator/concat.rb +0 -47
- data/lib/alf/aggregator/count.rb +0 -32
- data/lib/alf/aggregator/instance_methods.rb +0 -119
- data/lib/alf/aggregator/max.rb +0 -32
- data/lib/alf/aggregator/min.rb +0 -32
- data/lib/alf/aggregator/stddev.rb +0 -25
- data/lib/alf/aggregator/sum.rb +0 -32
- data/lib/alf/aggregator/variance.rb +0 -45
- data/lib/alf/environment.rb +0 -34
- data/lib/alf/environment/class_methods.rb +0 -95
- data/lib/alf/environment/folder.rb +0 -60
- data/lib/alf/environment/instance_methods.rb +0 -26
- data/lib/alf/errors.rb +0 -5
- data/lib/alf/ext.rb +0 -4
- data/lib/alf/ext/relation.rb +0 -4
- data/lib/alf/iterator.rb +0 -28
- data/lib/alf/iterator/class_methods.rb +0 -20
- data/lib/alf/iterator/proxy.rb +0 -27
- data/lib/alf/lispy.rb +0 -24
- data/lib/alf/lispy/instance_methods.rb +0 -157
- data/lib/alf/operator.rb +0 -68
- data/lib/alf/operator/binary.rb +0 -21
- data/lib/alf/operator/class_methods.rb +0 -82
- data/lib/alf/operator/experimental.rb +0 -9
- data/lib/alf/operator/instance_methods.rb +0 -29
- data/lib/alf/operator/non_relational/autonum.rb +0 -19
- data/lib/alf/operator/non_relational/clip.rb +0 -20
- data/lib/alf/operator/non_relational/coerce.rb +0 -19
- data/lib/alf/operator/non_relational/compact.rb +0 -18
- data/lib/alf/operator/non_relational/defaults.rb +0 -22
- data/lib/alf/operator/non_relational/generator.rb +0 -20
- data/lib/alf/operator/non_relational/sort.rb +0 -19
- data/lib/alf/operator/nullary.rb +0 -11
- data/lib/alf/operator/relational/extend.rb +0 -19
- data/lib/alf/operator/relational/group.rb +0 -21
- data/lib/alf/operator/relational/heading.rb +0 -20
- data/lib/alf/operator/relational/intersect.rb +0 -18
- data/lib/alf/operator/relational/join.rb +0 -18
- data/lib/alf/operator/relational/matching.rb +0 -18
- data/lib/alf/operator/relational/minus.rb +0 -18
- data/lib/alf/operator/relational/not_matching.rb +0 -18
- data/lib/alf/operator/relational/project.rb +0 -22
- data/lib/alf/operator/relational/quota.rb +0 -23
- data/lib/alf/operator/relational/rank.rb +0 -22
- data/lib/alf/operator/relational/rename.rb +0 -18
- data/lib/alf/operator/relational/restrict.rb +0 -18
- data/lib/alf/operator/relational/summarize.rb +0 -27
- data/lib/alf/operator/relational/ungroup.rb +0 -19
- data/lib/alf/operator/relational/union.rb +0 -20
- data/lib/alf/operator/relational/unwrap.rb +0 -19
- data/lib/alf/operator/relational/wrap.rb +0 -20
- data/lib/alf/operator/signature.rb +0 -233
- data/lib/alf/operator/unary.rb +0 -16
- data/lib/alf/reader.rb +0 -37
- data/lib/alf/reader/alf_file.rb +0 -24
- data/lib/alf/reader/class_methods.rb +0 -91
- data/lib/alf/reader/instance_methods.rb +0 -97
- data/lib/alf/reader/rash.rb +0 -28
- data/lib/alf/relation.rb +0 -28
- data/lib/alf/relation/class_methods.rb +0 -28
- data/lib/alf/relation/instance_methods.rb +0 -119
- data/lib/alf/renderer.rb +0 -32
- data/lib/alf/renderer/class_methods.rb +0 -58
- data/lib/alf/renderer/instance_methods.rb +0 -55
- data/lib/alf/renderer/rash.rb +0 -33
- data/lib/alf/renderer/text.rb +0 -198
- data/lib/alf/tools.rb +0 -15
- data/lib/alf/tools/coerce.rb +0 -25
- data/lib/alf/tools/miscellaneous.rb +0 -111
- data/lib/alf/tools/to_lispy.rb +0 -96
- data/lib/alf/tools/to_relation.rb +0 -54
- data/lib/alf/tools/to_ruby_literal.rb +0 -31
- data/lib/alf/tools/tuple_handle.rb +0 -60
- data/lib/alf/types.rb +0 -49
- data/lib/alf/types/attr_list.rb +0 -160
- data/lib/alf/types/attr_name.rb +0 -66
- data/lib/alf/types/boolean.rb +0 -25
- data/lib/alf/types/heading.rb +0 -135
- data/lib/alf/types/ordering.rb +0 -146
- data/lib/alf/types/renaming.rb +0 -97
- data/lib/alf/types/size.rb +0 -57
- data/lib/alf/types/summarization.rb +0 -138
- data/lib/alf/types/tuple_computation.rb +0 -136
- data/lib/alf/types/tuple_expression.rb +0 -152
- data/lib/alf/types/tuple_predicate.rb +0 -73
- data/spec/integration/__database__/group.alf +0 -3
- data/spec/integration/__database__/parts.rash +0 -6
- data/spec/integration/__database__/suppliers.rash +0 -5
- data/spec/integration/__database__/suppliers_csv.csv +0 -6
- data/spec/integration/__database__/supplies.rash +0 -12
- data/spec/integration/alf/example.rash +0 -1
- data/spec/integration/alf/test_Relation.rb +0 -32
- data/spec/integration/ext/test_relation.rb +0 -16
- data/spec/integration/lispy/test_relation.rb +0 -37
- data/spec/integration/lispy/test_run.rb +0 -40
- data/spec/integration/lispy/test_tuple.rb +0 -36
- data/spec/integration/semantics/test_join.alf +0 -9
- data/spec/integration/semantics/test_minus.alf +0 -5
- data/spec/integration/semantics/test_project.alf +0 -8
- data/spec/integration/semantics/test_rank.alf +0 -34
- data/spec/integration/shell/alf/alf.db +0 -0
- data/spec/integration/shell/alf/alf_e.cmd +0 -1
- data/spec/integration/shell/alf/alf_e.stdout +0 -4
- data/spec/integration/shell/alf/alf_env.cmd +0 -1
- data/spec/integration/shell/alf/alf_env.stdout +0 -5
- data/spec/integration/shell/alf/alf_env_sqlite.cmd +0 -1
- data/spec/integration/shell/alf/alf_env_sqlite.stdout +0 -9
- data/spec/integration/shell/alf/alf_help.cmd +0 -1
- data/spec/integration/shell/alf/alf_help.stdout +0 -69
- data/spec/integration/shell/alf/alf_implicit.alf +0 -1
- data/spec/integration/shell/alf/alf_implicit_exec.cmd +0 -1
- data/spec/integration/shell/alf/alf_implicit_exec.stdout +0 -4
- data/spec/integration/shell/alf/alf_r.cmd +0 -1
- data/spec/integration/shell/alf/alf_r.stdout +0 -5
- data/spec/integration/shell/alf/alf_version.cmd +0 -1
- data/spec/integration/shell/alf/alf_version.stdout +0 -2
- data/spec/integration/shell/alf/alf_yaml.cmd +0 -1
- data/spec/integration/shell/alf/alf_yaml.stdout +0 -22
- data/spec/integration/shell/alf/rel.rash +0 -1
- data/spec/integration/shell/autonum/autonum_0.cmd +0 -1
- data/spec/integration/shell/autonum/autonum_0.stdout +0 -9
- data/spec/integration/shell/autonum/autonum_1.cmd +0 -1
- data/spec/integration/shell/autonum/autonum_1.stdout +0 -9
- data/spec/integration/shell/clip/clip_0.cmd +0 -1
- data/spec/integration/shell/clip/clip_0.stdout +0 -9
- data/spec/integration/shell/clip/clip_1.cmd +0 -1
- data/spec/integration/shell/clip/clip_1.stdout +0 -9
- data/spec/integration/shell/coerce/coerce_1.cmd +0 -1
- data/spec/integration/shell/coerce/coerce_1.stdout +0 -5
- data/spec/integration/shell/compact/compact_0.cmd +0 -1
- data/spec/integration/shell/compact/compact_0.stdout +0 -9
- data/spec/integration/shell/defaults/defaults_0.cmd +0 -1
- data/spec/integration/shell/defaults/defaults_0.stdout +0 -9
- data/spec/integration/shell/defaults/defaults_1.cmd +0 -1
- data/spec/integration/shell/defaults/defaults_1.stdout +0 -9
- data/spec/integration/shell/defaults/defaults_2.cmd +0 -1
- data/spec/integration/shell/defaults/defaults_2.stdout +0 -9
- data/spec/integration/shell/extend/extend_0.cmd +0 -1
- data/spec/integration/shell/extend/extend_0.stdout +0 -16
- data/spec/integration/shell/generator/generator_1.cmd +0 -1
- data/spec/integration/shell/generator/generator_1.stdout +0 -10
- data/spec/integration/shell/generator/generator_2.cmd +0 -1
- data/spec/integration/shell/generator/generator_2.stdout +0 -5
- data/spec/integration/shell/generator/generator_3.cmd +0 -1
- data/spec/integration/shell/generator/generator_3.stdout +0 -5
- data/spec/integration/shell/group/group_0.cmd +0 -1
- data/spec/integration/shell/group/group_0.stdout +0 -32
- data/spec/integration/shell/group/group_1.cmd +0 -1
- data/spec/integration/shell/group/group_1.stdout +0 -32
- data/spec/integration/shell/help/help_1.cmd +0 -1
- data/spec/integration/shell/help/help_1.stdout +0 -24
- data/spec/integration/shell/intersect/intersect_0.cmd +0 -1
- data/spec/integration/shell/intersect/intersect_0.stdout +0 -9
- data/spec/integration/shell/join/join_0.cmd +0 -1
- data/spec/integration/shell/join/join_0.stdout +0 -16
- data/spec/integration/shell/matching/matching_0.cmd +0 -1
- data/spec/integration/shell/matching/matching_0.stdout +0 -8
- data/spec/integration/shell/minus/minus_0.cmd +0 -1
- data/spec/integration/shell/minus/minus_0.stdout +0 -4
- data/spec/integration/shell/not-matching/not-matching_0.cmd +0 -1
- data/spec/integration/shell/not-matching/not-matching_0.stdout +0 -5
- data/spec/integration/shell/project/project_0.cmd +0 -1
- data/spec/integration/shell/project/project_0.stdout +0 -9
- data/spec/integration/shell/project/project_1.cmd +0 -1
- data/spec/integration/shell/project/project_1.stdout +0 -9
- data/spec/integration/shell/quota/quota_0.cmd +0 -1
- data/spec/integration/shell/quota/quota_0.stdout +0 -16
- data/spec/integration/shell/rank/rank_1.cmd +0 -1
- data/spec/integration/shell/rank/rank_1.stdout +0 -10
- data/spec/integration/shell/rank/rank_2.cmd +0 -1
- data/spec/integration/shell/rank/rank_2.stdout +0 -10
- data/spec/integration/shell/rank/rank_3.cmd +0 -1
- data/spec/integration/shell/rank/rank_3.stdout +0 -10
- data/spec/integration/shell/rank/rank_4.cmd +0 -1
- data/spec/integration/shell/rank/rank_4.stdout +0 -6
- data/spec/integration/shell/rank/rank_5.cmd +0 -1
- data/spec/integration/shell/rank/rank_5.stdout +0 -6
- data/spec/integration/shell/rename/rename_0.cmd +0 -1
- data/spec/integration/shell/rename/rename_0.stdout +0 -9
- data/spec/integration/shell/restrict/restrict_0.cmd +0 -1
- data/spec/integration/shell/restrict/restrict_0.stdout +0 -6
- data/spec/integration/shell/restrict/restrict_1.cmd +0 -1
- data/spec/integration/shell/restrict/restrict_1.stdout +0 -6
- data/spec/integration/shell/show/show_base.cmd +0 -1
- data/spec/integration/shell/show/show_base.stdout +0 -9
- data/spec/integration/shell/show/show_base_sort_1.cmd +0 -1
- data/spec/integration/shell/show/show_base_sort_1.stdout +0 -9
- data/spec/integration/shell/show/show_base_sort_2.cmd +0 -1
- data/spec/integration/shell/show/show_base_sort_2.stdout +0 -9
- data/spec/integration/shell/show/show_conflictual.cmd +0 -1
- data/spec/integration/shell/show/show_conflictual.stdout +0 -5
- data/spec/integration/shell/show/show_csv.cmd +0 -1
- data/spec/integration/shell/show/show_csv.stdout +0 -6
- data/spec/integration/shell/show/show_ff.cmd +0 -1
- data/spec/integration/shell/show/show_ff.stdout +0 -10
- data/spec/integration/shell/show/show_rash.cmd +0 -1
- data/spec/integration/shell/show/show_rash.stdout +0 -5
- data/spec/integration/shell/show/show_rash_pretty.cmd +0 -1
- data/spec/integration/shell/show/show_rash_pretty.stdout +0 -30
- data/spec/integration/shell/show/show_yaml.cmd +0 -1
- data/spec/integration/shell/show/show_yaml.stdout +0 -22
- data/spec/integration/shell/sort/sort_0.cmd +0 -1
- data/spec/integration/shell/sort/sort_0.stdout +0 -9
- data/spec/integration/shell/sort/sort_1.cmd +0 -1
- data/spec/integration/shell/sort/sort_1.stdout +0 -9
- data/spec/integration/shell/sort/sort_2.cmd +0 -1
- data/spec/integration/shell/sort/sort_2.stdout +0 -9
- data/spec/integration/shell/sort/sort_3.cmd +0 -1
- data/spec/integration/shell/sort/sort_3.stdout +0 -9
- data/spec/integration/shell/summarize/summarize_0.cmd +0 -1
- data/spec/integration/shell/summarize/summarize_0.stdout +0 -8
- data/spec/integration/shell/ungroup/ungroup_0.cmd +0 -1
- data/spec/integration/shell/ungroup/ungroup_0.stdout +0 -16
- data/spec/integration/shell/union/union_0.cmd +0 -1
- data/spec/integration/shell/union/union_0.stdout +0 -9
- data/spec/integration/shell/unwrap/unwrap_0.cmd +0 -1
- data/spec/integration/shell/unwrap/unwrap_0.stdout +0 -9
- data/spec/integration/shell/wrap/wrap_0.cmd +0 -1
- data/spec/integration/shell/wrap/wrap_0.stdout +0 -9
- data/spec/integration/test_alf.rb +0 -34
- data/spec/integration/test_examples.rb +0 -15
- data/spec/integration/test_lispy.rb +0 -31
- data/spec/integration/test_semantics.rb +0 -40
- data/spec/integration/test_shell.rb +0 -47
- data/spec/regression/alf_file/__FILE__.alf +0 -2
- data/spec/regression/alf_file/suppliers.rash +0 -5
- data/spec/regression/alf_file/test___FILE__.rb +0 -17
- data/spec/regression/heading/test_heading_with_date.rb +0 -12
- data/spec/regression/lispy/test_compile.rb +0 -14
- data/spec/regression/logs/apache_combined.log +0 -5
- data/spec/regression/logs/test_path_attribute.rb +0 -25
- data/spec/regression/relation/test_relation_allbut_all.rb +0 -14
- data/spec/regression/relation/test_relation_with_date.rb +0 -12
- data/spec/regression/restrict/test_restrict_with_keywords.rb +0 -17
- data/spec/shared/a_valid_type_implementation.rb +0 -47
- data/spec/shared/a_value.rb +0 -12
- data/spec/shared/an_operator_class.rb +0 -36
- data/spec/unit/alf-core/aggregator/test_avg.rb +0 -22
- data/spec/unit/alf-core/aggregator/test_collect.rb +0 -25
- data/spec/unit/alf-core/aggregator/test_concat.rb +0 -31
- data/spec/unit/alf-core/aggregator/test_count.rb +0 -17
- data/spec/unit/alf-core/aggregator/test_max.rb +0 -23
- data/spec/unit/alf-core/aggregator/test_min.rb +0 -23
- data/spec/unit/alf-core/aggregator/test_stddev.rb +0 -27
- data/spec/unit/alf-core/aggregator/test_sum.rb +0 -23
- data/spec/unit/alf-core/aggregator/test_variance.rb +0 -29
- data/spec/unit/alf-core/assumptions/test_file.rb +0 -17
- data/spec/unit/alf-core/assumptions/test_instance_eval.rb +0 -15
- data/spec/unit/alf-core/assumptions/test_scoping.rb +0 -29
- data/spec/unit/alf-core/assumptions/test_set.rb +0 -64
- data/spec/unit/alf-core/environment/examples/suppliers.rash +0 -5
- data/spec/unit/alf-core/environment/test_folder.rb +0 -53
- data/spec/unit/alf-core/operator/non_relational/test_autonum.rb +0 -48
- data/spec/unit/alf-core/operator/non_relational/test_clip.rb +0 -35
- data/spec/unit/alf-core/operator/non_relational/test_coerce.rb +0 -29
- data/spec/unit/alf-core/operator/non_relational/test_compact.rb +0 -32
- data/spec/unit/alf-core/operator/non_relational/test_defaults.rb +0 -53
- data/spec/unit/alf-core/operator/non_relational/test_generator.rb +0 -60
- data/spec/unit/alf-core/operator/non_relational/test_sort.rb +0 -60
- data/spec/unit/alf-core/operator/relational/test_extend.rb +0 -28
- data/spec/unit/alf-core/operator/relational/test_group.rb +0 -39
- data/spec/unit/alf-core/operator/relational/test_heading.rb +0 -27
- data/spec/unit/alf-core/operator/relational/test_intersect.rb +0 -58
- data/spec/unit/alf-core/operator/relational/test_join.rb +0 -36
- data/spec/unit/alf-core/operator/relational/test_minus.rb +0 -56
- data/spec/unit/alf-core/operator/relational/test_project.rb +0 -62
- data/spec/unit/alf-core/operator/relational/test_quota.rb +0 -36
- data/spec/unit/alf-core/operator/relational/test_rank.rb +0 -48
- data/spec/unit/alf-core/operator/relational/test_rename.rb +0 -26
- data/spec/unit/alf-core/operator/relational/test_restrict.rb +0 -45
- data/spec/unit/alf-core/operator/relational/test_summarize.rb +0 -44
- data/spec/unit/alf-core/operator/relational/test_ungroup.rb +0 -29
- data/spec/unit/alf-core/operator/relational/test_union.rb +0 -35
- data/spec/unit/alf-core/operator/relational/test_unwrap.rb +0 -26
- data/spec/unit/alf-core/operator/relational/test_wrap.rb +0 -26
- data/spec/unit/alf-core/operator/signature/test_argv2args.rb +0 -82
- data/spec/unit/alf-core/operator/signature/test_collect_on.rb +0 -38
- data/spec/unit/alf-core/operator/signature/test_initialize.rb +0 -17
- data/spec/unit/alf-core/operator/signature/test_install.rb +0 -56
- data/spec/unit/alf-core/operator/signature/test_option_parser.rb +0 -36
- data/spec/unit/alf-core/operator/signature/test_parse_args.rb +0 -90
- data/spec/unit/alf-core/operator/signature/test_to_lispy.rb +0 -102
- data/spec/unit/alf-core/operator/signature/test_to_shell.rb +0 -103
- data/spec/unit/alf-core/operator/test_non_relational.rb +0 -20
- data/spec/unit/alf-core/operator/test_relational.rb +0 -31
- data/spec/unit/alf-core/reader/input.rb +0 -2
- data/spec/unit/alf-core/reader/test_alf_file.rb +0 -30
- data/spec/unit/alf-core/reader/test_initialize.rb +0 -60
- data/spec/unit/alf-core/reader/test_looks_a_path.rb +0 -20
- data/spec/unit/alf-core/reader/test_rash.rb +0 -31
- data/spec/unit/alf-core/relation/test_coerce.rb +0 -53
- data/spec/unit/alf-core/relation/test_inspect.rb +0 -20
- data/spec/unit/alf-core/relation/test_relops.rb +0 -55
- data/spec/unit/alf-core/relation/test_to_a.rb +0 -41
- data/spec/unit/alf-core/renderer/test_initialize.rb +0 -60
- data/spec/unit/alf-core/test_aggregator.rb +0 -58
- data/spec/unit/alf-core/test_environment.rb +0 -30
- data/spec/unit/alf-core/test_operator.rb +0 -16
- data/spec/unit/alf-core/test_reader.rb +0 -40
- data/spec/unit/alf-core/test_relation.rb +0 -75
- data/spec/unit/alf-core/test_renderer.rb +0 -53
- data/spec/unit/alf-core/text/test_cell.rb +0 -35
- data/spec/unit/alf-core/text/test_row.rb +0 -30
- data/spec/unit/alf-core/text/test_table.rb +0 -39
- data/spec/unit/alf-core/tools/test_class_name.rb +0 -16
- data/spec/unit/alf-core/tools/test_coalesce.rb +0 -19
- data/spec/unit/alf-core/tools/test_coerce.rb +0 -16
- data/spec/unit/alf-core/tools/test_ruby_case.rb +0 -16
- data/spec/unit/alf-core/tools/test_to_lispy.rb +0 -145
- data/spec/unit/alf-core/tools/test_to_relation.rb +0 -39
- data/spec/unit/alf-core/tools/test_to_ruby_literal.rb +0 -10
- data/spec/unit/alf-core/tools/test_tuple_handle.rb +0 -52
- data/spec/unit/alf-core/tools/test_tuple_heading.rb +0 -15
- data/spec/unit/alf-core/tools/test_varargs.rb +0 -19
- data/spec/unit/alf-core/types/test_attr_list.rb +0 -188
- data/spec/unit/alf-core/types/test_attr_name.rb +0 -78
- data/spec/unit/alf-core/types/test_boolean.rb +0 -42
- data/spec/unit/alf-core/types/test_class_methods.rb +0 -24
- data/spec/unit/alf-core/types/test_heading.rb +0 -146
- data/spec/unit/alf-core/types/test_ordering.rb +0 -185
- data/spec/unit/alf-core/types/test_renaming.rb +0 -72
- data/spec/unit/alf-core/types/test_size.rb +0 -74
- data/spec/unit/alf-core/types/test_summarization.rb +0 -95
- data/spec/unit/alf-core/types/test_tuple_computation.rb +0 -96
- data/spec/unit/alf-core/types/test_tuple_expression.rb +0 -122
- data/spec/unit/alf-core/types/test_tuple_predicate.rb +0 -108
- data/spec/unit/alf-csv/input.csv +0 -3
- data/spec/unit/alf-csv/test_reader.rb +0 -66
- data/spec/unit/alf-csv/test_renderer.rb +0 -73
- data/spec/unit/alf-engine/compact/test_set.rb +0 -33
- data/spec/unit/alf-engine/compact/test_uniq.rb +0 -33
- data/spec/unit/alf-engine/group/test_hash.rb +0 -34
- data/spec/unit/alf-engine/join/test_hash.rb +0 -55
- data/spec/unit/alf-engine/materialize/test_array.rb +0 -28
- data/spec/unit/alf-engine/materialize/test_hash.rb +0 -76
- data/spec/unit/alf-engine/quota/test_cesure.rb +0 -34
- data/spec/unit/alf-engine/rank/test_cesure.rb +0 -47
- data/spec/unit/alf-engine/semi/test_hash.rb +0 -58
- data/spec/unit/alf-engine/sort/test_in_memory.rb +0 -32
- data/spec/unit/alf-engine/summarize/test_cesure.rb +0 -36
- data/spec/unit/alf-engine/summarize/test_hash.rb +0 -36
- data/spec/unit/alf-engine/test_aggregate.rb +0 -26
- data/spec/unit/alf-engine/test_autonum.rb +0 -24
- data/spec/unit/alf-engine/test_clip.rb +0 -34
- data/spec/unit/alf-engine/test_coerce.rb +0 -35
- data/spec/unit/alf-engine/test_compact.rb +0 -33
- data/spec/unit/alf-engine/test_concat.rb +0 -38
- data/spec/unit/alf-engine/test_defaults.rb +0 -37
- data/spec/unit/alf-engine/test_filter.rb +0 -23
- data/spec/unit/alf-engine/test_generator.rb +0 -25
- data/spec/unit/alf-engine/test_rename.rb +0 -24
- data/spec/unit/alf-engine/test_set_attr.rb +0 -38
- data/spec/unit/alf-engine/test_sort.rb +0 -32
- data/spec/unit/alf-engine/test_ungroup.rb +0 -28
- data/spec/unit/alf-engine/test_unwrap.rb +0 -20
- data/spec/unit/alf-engine/test_wrap.rb +0 -26
- data/spec/unit/alf-logs/apache_combined.log +0 -5
- data/spec/unit/alf-logs/postgresql.log +0 -29
- data/spec/unit/alf-logs/test_reader.rb +0 -57
- data/spec/unit/alf-sequel/alf.db +0 -0
- data/spec/unit/alf-sequel/test_environment.rb +0 -74
- data/spec/unit/alf-shell/doc_manager/dynamic.md +0 -1
- data/spec/unit/alf-shell/doc_manager/example.md +0 -1
- data/spec/unit/alf-shell/doc_manager/example_1.txt +0 -11
- data/spec/unit/alf-shell/doc_manager/static.md +0 -1
- data/spec/unit/alf-shell/doc_manager/test_call.rb +0 -48
- data/spec/unit/alf-shell/main/test_class_methods.rb +0 -44
- data/spec/unit/alf-shell/operator/test_autonum.rb +0 -28
- data/spec/unit/alf-shell/operator/test_clip.rb +0 -29
- data/spec/unit/alf-shell/operator/test_coerce.rb +0 -21
- data/spec/unit/alf-shell/operator/test_compact.rb +0 -16
- data/spec/unit/alf-shell/operator/test_defaults.rb +0 -29
- data/spec/unit/alf-shell/operator/test_extend.rb +0 -21
- data/spec/unit/alf-shell/operator/test_generator.rb +0 -37
- data/spec/unit/alf-shell/operator/test_group.rb +0 -32
- data/spec/unit/alf-shell/operator/test_heading.rb +0 -16
- data/spec/unit/alf-shell/operator/test_intersect.rb +0 -18
- data/spec/unit/alf-shell/operator/test_join.rb +0 -18
- data/spec/unit/alf-shell/operator/test_matching.rb +0 -18
- data/spec/unit/alf-shell/operator/test_minus.rb +0 -18
- data/spec/unit/alf-shell/operator/test_not_matching.rb +0 -18
- data/spec/unit/alf-shell/operator/test_project.rb +0 -38
- data/spec/unit/alf-shell/operator/test_quota.rb +0 -23
- data/spec/unit/alf-shell/operator/test_rank.rb +0 -30
- data/spec/unit/alf-shell/operator/test_rename.rb +0 -21
- data/spec/unit/alf-shell/operator/test_restrict.rb +0 -35
- data/spec/unit/alf-shell/operator/test_sort.rb +0 -49
- data/spec/unit/alf-shell/operator/test_summarize.rb +0 -30
- data/spec/unit/alf-shell/operator/test_ungroup.rb +0 -28
- data/spec/unit/alf-shell/operator/test_union.rb +0 -18
- data/spec/unit/alf-shell/operator/test_unwrap.rb +0 -28
- data/spec/unit/alf-shell/operator/test_wrap.rb +0 -30
- data/tasks/clean.rake +0 -3
- data/tasks/debug_mail.rake +0 -75
- data/tasks/debug_mail.txt +0 -18
- data/tasks/gh-pages.rake +0 -68
- data/tasks/integration_test.rake +0 -43
- data/tasks/regression_test.rake +0 -44
- data/tasks/unit_test.rake +0 -44
- data/tasks/yard.rake +0 -51
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
class Environment
|
|
3
|
-
#
|
|
4
|
-
# This methods provides base methods for implementing the Environment
|
|
5
|
-
# contract. The Environment class already includes it and should be used
|
|
6
|
-
# as a superclass of specific implementations.
|
|
7
|
-
#
|
|
8
|
-
module InstanceMethods
|
|
9
|
-
|
|
10
|
-
# Returns a dataset whose name is provided.
|
|
11
|
-
#
|
|
12
|
-
# This method resolves named datasets to tuple enumerables. When the
|
|
13
|
-
# dataset exists, this method must return an Iterator, typically a
|
|
14
|
-
# Reader instance. Otherwise, it must throw a NoSuchDatasetError.
|
|
15
|
-
#
|
|
16
|
-
# @param [Symbol] name the name of a dataset
|
|
17
|
-
# @return [Iterator] an iterator, typically a Reader instance
|
|
18
|
-
# @raise [NoSuchDatasetError] when the dataset does not exists
|
|
19
|
-
def dataset(name)
|
|
20
|
-
end
|
|
21
|
-
undef :dataset
|
|
22
|
-
|
|
23
|
-
end # module InstanceMethods
|
|
24
|
-
include(InstanceMethods)
|
|
25
|
-
end # class Environment
|
|
26
|
-
end # module Alf
|
data/lib/alf/errors.rb
DELETED
data/lib/alf/ext.rb
DELETED
data/lib/alf/ext/relation.rb
DELETED
data/lib/alf/iterator.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
#
|
|
3
|
-
# Marker module for all elements implementing tuple iterators.
|
|
4
|
-
#
|
|
5
|
-
# At first glance, an iterator is nothing else than an Enumerable that serves
|
|
6
|
-
# tuples (represented by ruby hashes). However, this module helps Alf's
|
|
7
|
-
# internal classes to recognize enumerables that may safely be considered as
|
|
8
|
-
# tuple iterators from other enumerables. For this reason, all elements that
|
|
9
|
-
# would like to participate to an iteration chain (that is, an logical
|
|
10
|
-
# operator implementation) should be marked with this module. This is the case
|
|
11
|
-
# for all Readers and Operators defined in Alf.
|
|
12
|
-
#
|
|
13
|
-
module Iterator
|
|
14
|
-
include Enumerable
|
|
15
|
-
|
|
16
|
-
# Converts this iterator to an in-memory Relation.
|
|
17
|
-
#
|
|
18
|
-
# @return [Relation] a relation instance, as the set of tuples that would be yield by
|
|
19
|
-
# this iterator.
|
|
20
|
-
def to_relation
|
|
21
|
-
Relation::new(self.to_set)
|
|
22
|
-
end
|
|
23
|
-
alias :to_rel :to_relation
|
|
24
|
-
|
|
25
|
-
require 'alf/iterator/class_methods'
|
|
26
|
-
require 'alf/iterator/proxy'
|
|
27
|
-
end # module Iterator
|
|
28
|
-
end # module Alf
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
module Iterator
|
|
3
|
-
module ClassMethods
|
|
4
|
-
|
|
5
|
-
# Coerces something to an iterator
|
|
6
|
-
def coerce(arg, environment = nil)
|
|
7
|
-
case arg
|
|
8
|
-
when Iterator, Array
|
|
9
|
-
arg
|
|
10
|
-
when String, Symbol
|
|
11
|
-
Proxy.new(environment, arg.to_sym)
|
|
12
|
-
else
|
|
13
|
-
Reader.coerce(arg, environment)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end # module ClassMethods
|
|
18
|
-
extend(ClassMethods)
|
|
19
|
-
end # module Iterator
|
|
20
|
-
end # module Alf
|
data/lib/alf/iterator/proxy.rb
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
module Iterator
|
|
3
|
-
class Proxy
|
|
4
|
-
include Iterator
|
|
5
|
-
|
|
6
|
-
# @return [Symbol] name of the dataset to request to environment
|
|
7
|
-
attr_reader :name
|
|
8
|
-
|
|
9
|
-
# Creates a proxy instance.
|
|
10
|
-
#
|
|
11
|
-
# @param [Environment] env the environment serving iterator instances
|
|
12
|
-
# @param [Symbol] dataset named dataset to rely on
|
|
13
|
-
def initialize(env, name)
|
|
14
|
-
unless env.respond_to?(:dataset)
|
|
15
|
-
raise ArgumentError, "Invalid environment #{env.inspect}"
|
|
16
|
-
end
|
|
17
|
-
@environment, @name = env, name
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# (see Iterator#each)
|
|
21
|
-
def each(&block)
|
|
22
|
-
@environment.dataset(@name).each(&block)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end # class Proxy
|
|
26
|
-
end # module Iterator
|
|
27
|
-
end # module Alf
|
data/lib/alf/lispy.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
#
|
|
3
|
-
# Implements a small LISP-like DSL on top of Alf.
|
|
4
|
-
#
|
|
5
|
-
# The lispy dialect is the functional one used in .alf files and in compiled
|
|
6
|
-
# expressions as below:
|
|
7
|
-
#
|
|
8
|
-
# Alf.lispy.compile do
|
|
9
|
-
# (restrict :suppliers, lambda{ city == 'London' })
|
|
10
|
-
# end
|
|
11
|
-
#
|
|
12
|
-
# The DSL this module provides is part of Alf's public API and won't be broken
|
|
13
|
-
# without a major version change. The module itself and its inclusion pre-
|
|
14
|
-
# conditions are not part of the DSL itself, thus not considered as part of
|
|
15
|
-
# the API, and may therefore evolve at any time. In other words, this module
|
|
16
|
-
# is not intended to be directly included by third-party classes.
|
|
17
|
-
#
|
|
18
|
-
module Lispy
|
|
19
|
-
require 'alf/lispy/instance_methods'
|
|
20
|
-
|
|
21
|
-
DUM = Relation::DUM
|
|
22
|
-
DEE = Relation::DEE
|
|
23
|
-
end # module Lispy
|
|
24
|
-
end # module Alf
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
module Lispy
|
|
3
|
-
|
|
4
|
-
alias :ruby_extend :extend
|
|
5
|
-
|
|
6
|
-
# The environment
|
|
7
|
-
attr_accessor :environment
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
# Compiles a query expression given by a String or a block and returns
|
|
11
|
-
# the result (typically a tuple iterator)
|
|
12
|
-
#
|
|
13
|
-
# Example
|
|
14
|
-
#
|
|
15
|
-
# # with a string
|
|
16
|
-
# op = compile "(restrict :suppliers, lambda{ city == 'London' })"
|
|
17
|
-
#
|
|
18
|
-
# # or with a block
|
|
19
|
-
# op = compile {
|
|
20
|
-
# (restrict :suppliers, lambda{ city == 'London' })
|
|
21
|
-
# }
|
|
22
|
-
#
|
|
23
|
-
# @param [String] expr a Lispy expression to compile
|
|
24
|
-
# @return [Iterator] the iterator resulting from compilation
|
|
25
|
-
#
|
|
26
|
-
def compile(expr = nil, path = nil, &block)
|
|
27
|
-
if expr.nil?
|
|
28
|
-
instance_eval(&block)
|
|
29
|
-
else
|
|
30
|
-
b = _clean_binding
|
|
31
|
-
(path ? Kernel.eval(expr, b, path) : Kernel.eval(expr, b))
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
# Evaluates a query expression given by a String or a block and returns
|
|
37
|
-
# the result as an in-memory relation (Alf::Relation)
|
|
38
|
-
#
|
|
39
|
-
# Example:
|
|
40
|
-
#
|
|
41
|
-
# # with a string
|
|
42
|
-
# rel = evaluate "(restrict :suppliers, lambda{ city == 'London' })"
|
|
43
|
-
#
|
|
44
|
-
# # or with a block
|
|
45
|
-
# rel = evaluate {
|
|
46
|
-
# (restrict :suppliers, lambda{ city == 'London' })
|
|
47
|
-
# }
|
|
48
|
-
#
|
|
49
|
-
def evaluate(expr = nil, path = nil, &block)
|
|
50
|
-
compiled = compile(expr, path, &block)
|
|
51
|
-
case compiled
|
|
52
|
-
when Iterator
|
|
53
|
-
compiled.to_rel
|
|
54
|
-
else
|
|
55
|
-
compiled
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
#
|
|
60
|
-
# Coerces `h` to a valid tuple.
|
|
61
|
-
#
|
|
62
|
-
# @param [Hash] h, a hash mapping symbols to values
|
|
63
|
-
#
|
|
64
|
-
def Tuple(h)
|
|
65
|
-
unless h.keys.all?{|k| k.is_a?(Symbol)} &&
|
|
66
|
-
h.values.all?{|v| !v.nil?}
|
|
67
|
-
raise ArgumentError, "Invalid tuple literal #{h.inspect}"
|
|
68
|
-
end
|
|
69
|
-
h
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
#
|
|
73
|
-
# Coerces `args` to a valid relation.
|
|
74
|
-
#
|
|
75
|
-
def Relation(first, *args)
|
|
76
|
-
if args.empty?
|
|
77
|
-
if first.is_a?(Symbol)
|
|
78
|
-
environment.dataset(first).to_rel
|
|
79
|
-
elsif first.is_a?(Hash)
|
|
80
|
-
Alf::Relation[first]
|
|
81
|
-
else
|
|
82
|
-
raise ArgumentError, "Unable to coerce `#{first.inspect}` to a relation"
|
|
83
|
-
end
|
|
84
|
-
else
|
|
85
|
-
Alf::Relation[*args.unshift(first)]
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
#
|
|
90
|
-
# Install the DSL through iteration over defined operators
|
|
91
|
-
#
|
|
92
|
-
Operator.each do |op_class|
|
|
93
|
-
meth_name = Tools.ruby_case(Tools.class_name(op_class)).to_sym
|
|
94
|
-
if op_class.unary?
|
|
95
|
-
define_method(meth_name) do |child, *args|
|
|
96
|
-
child = Iterator.coerce(child, environment)
|
|
97
|
-
op_class.new([child], *args)
|
|
98
|
-
end
|
|
99
|
-
elsif op_class.binary?
|
|
100
|
-
define_method(meth_name) do |left, right, *args|
|
|
101
|
-
operands = [left, right].map{|x| Iterator.coerce(x, environment)}
|
|
102
|
-
op_class.new(operands, *args)
|
|
103
|
-
end
|
|
104
|
-
elsif op_class.nullary?
|
|
105
|
-
define_method(meth_name) do |*args|
|
|
106
|
-
op_class.new([], *args)
|
|
107
|
-
end
|
|
108
|
-
else
|
|
109
|
-
raise "Unexpected operator #{op_class}"
|
|
110
|
-
end
|
|
111
|
-
end # Operators::each
|
|
112
|
-
|
|
113
|
-
#
|
|
114
|
-
# Install the DSL through iteration over defined aggregators
|
|
115
|
-
#
|
|
116
|
-
Aggregator.each do |agg_class|
|
|
117
|
-
agg_name = Tools.ruby_case(Tools.class_name(agg_class)).to_sym
|
|
118
|
-
if method_defined?(agg_name)
|
|
119
|
-
raise "Unexpected method clash on Lispy: #{agg_name}"
|
|
120
|
-
else
|
|
121
|
-
define_method(agg_name) do |*args, &block|
|
|
122
|
-
agg_class.new(*args, &block)
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
def allbut(child, attributes)
|
|
128
|
-
(project child, attributes, :allbut => true)
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
#
|
|
132
|
-
# Runs a command as in shell.
|
|
133
|
-
#
|
|
134
|
-
# Example:
|
|
135
|
-
#
|
|
136
|
-
# lispy = Alf.lispy(Alf::Environment.examples)
|
|
137
|
-
# op = lispy.run(['restrict', 'suppliers', '--', "city == 'Paris'"])
|
|
138
|
-
#
|
|
139
|
-
def run(argv, requester = nil)
|
|
140
|
-
argv = Quickl.parse_commandline_args(argv) if argv.is_a?(String)
|
|
141
|
-
argv = Quickl.split_commandline_args(argv, '|')
|
|
142
|
-
argv.inject(nil) do |cmd,arr|
|
|
143
|
-
arr.shift if arr.first == "alf"
|
|
144
|
-
main = Alf::Shell::Main.new(environment)
|
|
145
|
-
main.stdin_reader = cmd unless cmd.nil?
|
|
146
|
-
main.run(arr, requester)
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
private
|
|
151
|
-
|
|
152
|
-
def _clean_binding
|
|
153
|
-
binding
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
end # module Lispy
|
|
157
|
-
end # module Alf
|
data/lib/alf/operator.rb
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
#
|
|
3
|
-
# Namespace for all operators, relational and non-relational ones.
|
|
4
|
-
#
|
|
5
|
-
module Operator
|
|
6
|
-
include Iterator, Tools
|
|
7
|
-
|
|
8
|
-
require 'alf/operator/class_methods'
|
|
9
|
-
require 'alf/operator/signature'
|
|
10
|
-
require 'alf/operator/instance_methods'
|
|
11
|
-
require 'alf/operator/nullary'
|
|
12
|
-
require 'alf/operator/unary'
|
|
13
|
-
require 'alf/operator/binary'
|
|
14
|
-
require 'alf/operator/experimental'
|
|
15
|
-
|
|
16
|
-
# Namespace for non relational operators
|
|
17
|
-
module NonRelational
|
|
18
|
-
require 'alf/operator/non_relational/autonum'
|
|
19
|
-
require 'alf/operator/non_relational/defaults'
|
|
20
|
-
require 'alf/operator/non_relational/compact'
|
|
21
|
-
require 'alf/operator/non_relational/sort'
|
|
22
|
-
require 'alf/operator/non_relational/clip'
|
|
23
|
-
require 'alf/operator/non_relational/coerce'
|
|
24
|
-
require 'alf/operator/non_relational/generator'
|
|
25
|
-
|
|
26
|
-
# Yields the block with each operator module in turn
|
|
27
|
-
def self.each
|
|
28
|
-
constants.each do |c|
|
|
29
|
-
val = const_get(c)
|
|
30
|
-
yield(val) if val.ancestors.include?(Operator::NonRelational)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end # NonRelational
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
# Marker module and namespace for relational operators
|
|
37
|
-
#
|
|
38
|
-
module Relational
|
|
39
|
-
require 'alf/operator/relational/extend'
|
|
40
|
-
require 'alf/operator/relational/project'
|
|
41
|
-
require 'alf/operator/relational/restrict'
|
|
42
|
-
require 'alf/operator/relational/rename'
|
|
43
|
-
require 'alf/operator/relational/union'
|
|
44
|
-
require 'alf/operator/relational/minus'
|
|
45
|
-
require 'alf/operator/relational/intersect'
|
|
46
|
-
require 'alf/operator/relational/join'
|
|
47
|
-
require 'alf/operator/relational/matching'
|
|
48
|
-
require 'alf/operator/relational/not_matching'
|
|
49
|
-
require 'alf/operator/relational/wrap'
|
|
50
|
-
require 'alf/operator/relational/unwrap'
|
|
51
|
-
require 'alf/operator/relational/group'
|
|
52
|
-
require 'alf/operator/relational/ungroup'
|
|
53
|
-
require 'alf/operator/relational/summarize'
|
|
54
|
-
require 'alf/operator/relational/rank'
|
|
55
|
-
require 'alf/operator/relational/quota'
|
|
56
|
-
require 'alf/operator/relational/heading'
|
|
57
|
-
|
|
58
|
-
# Yields the block with each operator module in turn
|
|
59
|
-
def self.each
|
|
60
|
-
constants.each do |c|
|
|
61
|
-
val = const_get(c)
|
|
62
|
-
yield(val) if val.ancestors.include?(Operator::Relational)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end # module Relational
|
|
66
|
-
|
|
67
|
-
end # module Operator
|
|
68
|
-
end # module Alf
|
data/lib/alf/operator/binary.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
module Operator
|
|
3
|
-
#
|
|
4
|
-
# Specialization of Operator for operators that work on a binary input
|
|
5
|
-
#
|
|
6
|
-
module Binary
|
|
7
|
-
include Operator
|
|
8
|
-
|
|
9
|
-
# Returns the left operand
|
|
10
|
-
def left
|
|
11
|
-
operands.first
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Returns the right operand
|
|
15
|
-
def right
|
|
16
|
-
operands.last
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
end # module Binary
|
|
20
|
-
end # module Operator
|
|
21
|
-
end # module Alf
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
module Alf
|
|
2
|
-
module Operator
|
|
3
|
-
#
|
|
4
|
-
# Encapsulates method that allows making operator introspection, that is,
|
|
5
|
-
# knowing operator cardinality and similar stuff.
|
|
6
|
-
#
|
|
7
|
-
module ClassMethods
|
|
8
|
-
|
|
9
|
-
# Returns the ruby case name of this operator
|
|
10
|
-
def rubycase_name
|
|
11
|
-
Tools.ruby_case(Tools.class_name(self))
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
########################################################### Query methods
|
|
15
|
-
|
|
16
|
-
# @return true if this is a relational operator, false otherwise
|
|
17
|
-
def relational?
|
|
18
|
-
ancestors.include?(Relational)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# @return true if this is an experimental operator, false otherwise
|
|
22
|
-
def experimental?
|
|
23
|
-
ancestors.include?(Experimental)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# @return true if this is a non relational operator, false otherwise
|
|
27
|
-
def non_relational?
|
|
28
|
-
ancestors.include?(NonRelational)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# @return true if this operator is a zero-ary operator, false otherwise
|
|
32
|
-
def nullary?
|
|
33
|
-
ancestors.include?(Operator::Nullary)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# @return true if this operator is an unary operator, false otherwise
|
|
37
|
-
def unary?
|
|
38
|
-
ancestors.include?(Operator::Unary)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# @return true if this operator is a binary operator, false otherwise
|
|
42
|
-
def binary?
|
|
43
|
-
ancestors.include?(Operator::Binary)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
################################################################# Factory
|
|
47
|
-
|
|
48
|
-
# Installs or set the operator signature
|
|
49
|
-
def signature
|
|
50
|
-
if block_given?
|
|
51
|
-
@signature = Signature.new(self, &Proc.new)
|
|
52
|
-
@signature.install
|
|
53
|
-
else
|
|
54
|
-
@signature ||= Signature.new(self)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end # module ClassMethods
|
|
59
|
-
|
|
60
|
-
# Yields non-relational then relational operators, in turn.
|
|
61
|
-
def self.each
|
|
62
|
-
Operator::NonRelational.each{|x| yield(x)}
|
|
63
|
-
Operator::Relational.each{|x| yield(x)}
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Let submodules and classes have required methods
|
|
67
|
-
module Installer
|
|
68
|
-
|
|
69
|
-
# Ensures that the Introspection module is set on real operators
|
|
70
|
-
def included(mod)
|
|
71
|
-
if mod.is_a?(Class)
|
|
72
|
-
mod.extend(ClassMethods)
|
|
73
|
-
else
|
|
74
|
-
mod.extend(Installer)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
end # module Installer
|
|
79
|
-
extend(Installer)
|
|
80
|
-
|
|
81
|
-
end # module Operator
|
|
82
|
-
end # module Alf
|