alf 0.10.1 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +25 -0
- data/Gemfile +8 -8
- data/Gemfile.lock +22 -20
- data/Rakefile +1 -1
- data/alf.gemspec +31 -30
- data/alf.noespec +11 -9
- data/bin/alf +1 -1
- data/lib/alf/aggregator/avg.rb +39 -0
- data/lib/alf/aggregator/class_methods.rb +32 -14
- data/lib/alf/aggregator/collect.rb +32 -0
- data/lib/alf/aggregator/concat.rb +47 -0
- data/lib/alf/aggregator/count.rb +32 -0
- data/lib/alf/aggregator/{base.rb → instance_methods.rb} +54 -30
- data/lib/alf/aggregator/max.rb +32 -0
- data/lib/alf/aggregator/min.rb +32 -0
- data/lib/alf/aggregator/stddev.rb +25 -0
- data/lib/alf/aggregator/sum.rb +32 -0
- data/lib/alf/aggregator/variance.rb +45 -0
- data/lib/alf/aggregator.rb +51 -0
- data/lib/alf/environment/class_methods.rb +37 -35
- data/lib/alf/environment/folder.rb +26 -28
- data/lib/alf/environment/{base.rb → instance_methods.rb} +8 -19
- data/lib/alf/environment.rb +34 -0
- data/lib/alf/errors.rb +1 -0
- data/lib/alf/iterator/class_methods.rb +0 -2
- data/lib/alf/iterator/proxy.rb +7 -13
- data/lib/alf/iterator.rb +27 -0
- data/lib/alf/lispy/instance_methods.rb +14 -14
- data/lib/alf/lispy.rb +24 -0
- data/lib/alf/loader.rb +1 -1
- data/lib/alf/operator/binary.rb +4 -15
- data/lib/alf/operator/class_methods.rb +33 -83
- data/lib/alf/operator/instance_methods.rb +29 -0
- data/lib/alf/operator/non_relational/autonum.rb +17 -22
- data/lib/alf/operator/non_relational/clip.rb +18 -18
- data/lib/alf/operator/non_relational/coerce.rb +17 -19
- data/lib/alf/operator/non_relational/compact.rb +13 -57
- data/lib/alf/operator/non_relational/defaults.rb +20 -23
- data/lib/alf/operator/non_relational/generator.rb +14 -32
- data/lib/alf/operator/non_relational/sort.rb +16 -20
- data/lib/alf/operator/nullary.rb +0 -9
- data/lib/alf/operator/relational/extend.rb +17 -22
- data/lib/alf/operator/relational/group.rb +16 -27
- data/lib/alf/operator/relational/heading.rb +15 -25
- data/lib/alf/operator/relational/intersect.rb +14 -33
- data/lib/alf/operator/relational/join.rb +15 -103
- data/lib/alf/operator/relational/matching.rb +15 -42
- data/lib/alf/operator/relational/minus.rb +14 -33
- data/lib/alf/operator/relational/not_matching.rb +15 -42
- data/lib/alf/operator/relational/project.rb +20 -20
- data/lib/alf/operator/relational/quota.rb +19 -47
- data/lib/alf/operator/relational/rank.rb +19 -52
- data/lib/alf/operator/relational/rename.rb +16 -17
- data/lib/alf/operator/relational/restrict.rb +16 -18
- data/lib/alf/operator/relational/summarize.rb +19 -75
- data/lib/alf/operator/relational/ungroup.rb +16 -22
- data/lib/alf/operator/relational/union.rb +17 -29
- data/lib/alf/operator/relational/unwrap.rb +17 -19
- data/lib/alf/operator/relational/wrap.rb +18 -20
- data/lib/alf/operator/signature.rb +67 -96
- data/lib/alf/operator/unary.rb +4 -26
- data/lib/alf/operator.rb +68 -0
- data/lib/alf/reader/alf_file.rb +5 -5
- data/lib/alf/reader/class_methods.rb +47 -38
- data/lib/alf/reader/{base.rb → instance_methods.rb} +18 -40
- data/lib/alf/reader/rash.rb +3 -3
- data/lib/alf/reader.rb +37 -0
- data/lib/alf/relation/instance_methods.rb +17 -37
- data/lib/alf/relation.rb +28 -0
- data/lib/alf/renderer/{base.rb → instance_methods.rb} +13 -30
- data/lib/alf/renderer.rb +32 -0
- data/lib/alf/tools/coerce.rb +18 -7
- data/lib/alf/tools/miscellaneous.rb +56 -29
- data/lib/alf/tools/to_lispy.rb +37 -40
- data/lib/alf/tools/to_ruby_literal.rb +24 -7
- data/lib/alf/tools/tuple_handle.rb +27 -17
- data/lib/alf/tools.rb +14 -0
- data/lib/alf/types/attr_list.rb +135 -31
- data/lib/alf/types/attr_name.rb +56 -18
- data/lib/alf/types/boolean.rb +18 -5
- data/lib/alf/types/heading.rb +83 -59
- data/lib/alf/types/ordering.rb +117 -64
- data/lib/alf/types/renaming.rb +73 -33
- data/lib/alf/types/size.rb +57 -0
- data/lib/alf/types/summarization.rb +105 -43
- data/lib/alf/types/tuple_computation.rb +113 -38
- data/lib/alf/types/tuple_expression.rb +122 -31
- data/lib/alf/types/tuple_predicate.rb +64 -40
- data/lib/alf/types.rb +49 -0
- data/lib/alf/version.rb +6 -6
- data/lib/alf-csv/alf/csv/commons.rb +36 -0
- data/lib/alf-csv/alf/csv/reader.rb +33 -0
- data/lib/alf-csv/alf/csv/renderer.rb +38 -0
- data/lib/alf-csv/alf/csv.rb +3 -0
- data/lib/alf-engine/alf/engine/aggregate.rb +44 -0
- data/lib/alf-engine/alf/engine/autonum.rb +45 -0
- data/lib/{alf/operator → alf-engine/alf/engine}/cesure.rb +13 -13
- data/lib/alf-engine/alf/engine/clip.rb +53 -0
- data/lib/alf-engine/alf/engine/coerce.rb +46 -0
- data/lib/alf-engine/alf/engine/cog.rb +7 -0
- data/lib/alf-engine/alf/engine/compact/set.rb +23 -0
- data/lib/alf-engine/alf/engine/compact/uniq.rb +23 -0
- data/lib/alf-engine/alf/engine/compact.rb +26 -0
- data/lib/alf-engine/alf/engine/concat.rb +25 -0
- data/lib/alf-engine/alf/engine/defaults.rb +43 -0
- data/lib/alf-engine/alf/engine/filter.rb +41 -0
- data/lib/alf-engine/alf/engine/generator.rb +50 -0
- data/lib/alf-engine/alf/engine/group/hash.rb +40 -0
- data/lib/alf-engine/alf/engine/group.rb +7 -0
- data/lib/alf-engine/alf/engine/join/hash.rb +35 -0
- data/lib/alf-engine/alf/engine/join.rb +7 -0
- data/lib/alf-engine/alf/engine/materialize/array.rb +78 -0
- data/lib/alf-engine/alf/engine/materialize/hash.rb +122 -0
- data/lib/alf-engine/alf/engine/materialize.rb +8 -0
- data/lib/alf-engine/alf/engine/quota/cesure.rb +46 -0
- data/lib/alf-engine/alf/engine/quota.rb +7 -0
- data/lib/alf-engine/alf/engine/rank/cesure.rb +48 -0
- data/lib/alf-engine/alf/engine/rank.rb +7 -0
- data/lib/alf-engine/alf/engine/rename.rb +39 -0
- data/lib/alf-engine/alf/engine/semi/hash.rb +39 -0
- data/lib/alf-engine/alf/engine/semi.rb +7 -0
- data/lib/alf-engine/alf/engine/set_attr.rb +46 -0
- data/lib/alf-engine/alf/engine/sort/in_memory.rb +39 -0
- data/lib/alf-engine/alf/engine/sort.rb +28 -0
- data/lib/alf-engine/alf/engine/summarize/cesure.rb +51 -0
- data/lib/alf-engine/alf/engine/summarize/hash.rb +35 -0
- data/lib/alf-engine/alf/engine/summarize.rb +8 -0
- data/lib/alf-engine/alf/engine/ungroup.rb +29 -0
- data/lib/alf-engine/alf/engine/unwrap.rb +31 -0
- data/lib/alf-engine/alf/engine/wrap.rb +39 -0
- data/lib/alf-engine/alf/engine.rb +25 -0
- data/lib/{alf/extra/logs.rb → alf-logs/alf/logs/reader.rb} +14 -16
- data/lib/alf-logs/alf/logs.rb +1 -0
- data/lib/alf-sequel/alf/sequel/environment.rb +57 -0
- data/lib/alf-sequel/alf/sequel/iterator.rb +21 -0
- data/lib/alf-sequel/alf/sequel.rb +2 -0
- data/lib/{alf → alf-shell/alf/shell}/command/exec.rb +3 -4
- data/lib/{alf → alf-shell/alf/shell}/command/help.rb +3 -4
- data/lib/alf-shell/alf/shell/command/main/class_methods.rb +46 -0
- data/lib/{alf → alf-shell/alf/shell}/command/main.rb +9 -51
- data/lib/{alf → alf-shell/alf/shell}/command/show.rb +5 -7
- data/lib/alf-shell/alf/shell/command.rb +26 -0
- data/lib/{alf/command → alf-shell/alf/shell}/doc_manager.rb +3 -3
- data/lib/alf-shell/alf/shell/operator.rb +86 -0
- data/lib/alf-shell/alf/shell.rb +40 -0
- data/lib/{alf/extra/yaml.rb → alf-yaml/alf/yaml/renderer.rb} +5 -7
- data/lib/alf-yaml/alf/yaml.rb +1 -0
- data/lib/alf.rb +17 -358
- data/spec/{unit → integration}/lispy/test_relation.rb +0 -0
- data/spec/{unit → integration}/lispy/test_run.rb +0 -0
- data/spec/{unit → integration}/lispy/test_tuple.rb +0 -0
- data/spec/integration/{command → shell}/alf/alf.db +0 -0
- data/spec/integration/{command → shell}/alf/alf_e.cmd +0 -0
- data/spec/integration/{command → shell}/alf/alf_e.stdout +0 -0
- data/spec/integration/shell/alf/alf_env.cmd +1 -0
- data/spec/integration/{command → shell}/alf/alf_env.stdout +0 -0
- data/spec/integration/shell/alf/alf_env_sqlite.cmd +1 -0
- data/spec/integration/{command → shell}/alf/alf_env_sqlite.stdout +0 -0
- data/spec/integration/{command → shell}/alf/alf_help.cmd +0 -0
- data/spec/integration/{command → shell}/alf/alf_help.stdout +0 -0
- data/spec/integration/{command → shell}/alf/alf_implicit.alf +0 -0
- data/spec/integration/shell/alf/alf_implicit_exec.cmd +1 -0
- data/spec/integration/{command → shell}/alf/alf_implicit_exec.stdout +0 -0
- data/spec/integration/{command → shell}/alf/alf_r.cmd +0 -0
- data/spec/integration/{command → shell}/alf/alf_r.stdout +0 -0
- data/spec/integration/{command → shell}/alf/alf_version.cmd +0 -0
- data/spec/integration/{command → shell}/alf/alf_version.stdout +0 -0
- data/spec/integration/{command → shell}/alf/alf_yaml.cmd +0 -0
- data/spec/integration/{command → shell}/alf/alf_yaml.stdout +0 -0
- data/spec/integration/{command → shell}/alf/rel.rash +0 -0
- data/spec/integration/{command → shell}/autonum/autonum_0.cmd +0 -0
- data/spec/integration/{command → shell}/autonum/autonum_0.stdout +0 -0
- data/spec/integration/shell/autonum/autonum_1.cmd +1 -0
- data/spec/integration/{command → shell}/autonum/autonum_1.stdout +0 -0
- data/spec/integration/shell/clip/clip_0.cmd +1 -0
- data/spec/integration/{command → shell}/clip/clip_0.stdout +0 -0
- data/spec/integration/shell/clip/clip_1.cmd +1 -0
- data/spec/integration/{command → shell}/clip/clip_1.stdout +0 -0
- data/spec/integration/{command → shell}/coerce/coerce_1.cmd +0 -0
- data/spec/integration/{command → shell}/coerce/coerce_1.stdout +0 -0
- data/spec/integration/{command → shell}/compact/compact_0.cmd +0 -0
- data/spec/integration/{command → shell}/compact/compact_0.stdout +0 -0
- data/spec/integration/{command → shell}/defaults/defaults_0.cmd +0 -0
- data/spec/integration/{command → shell}/defaults/defaults_0.stdout +0 -0
- data/spec/integration/{command → shell}/defaults/defaults_1.cmd +0 -0
- data/spec/integration/{command → shell}/defaults/defaults_1.stdout +0 -0
- data/spec/integration/{command → shell}/defaults/defaults_2.cmd +0 -0
- data/spec/integration/{command → shell}/defaults/defaults_2.stdout +0 -0
- data/spec/integration/{command → shell}/extend/extend_0.cmd +0 -0
- data/spec/integration/{command → shell}/extend/extend_0.stdout +0 -0
- data/spec/integration/{command → shell}/generator/generator_1.cmd +0 -0
- data/spec/integration/{command → shell}/generator/generator_1.stdout +0 -0
- data/spec/integration/{command → shell}/generator/generator_2.cmd +0 -0
- data/spec/integration/{command → shell}/generator/generator_2.stdout +0 -0
- data/spec/integration/{command → shell}/generator/generator_3.cmd +0 -0
- data/spec/integration/{command → shell}/generator/generator_3.stdout +0 -0
- data/spec/integration/{command → shell}/group/group_0.cmd +0 -0
- data/spec/integration/{command → shell}/group/group_0.stdout +0 -0
- data/spec/integration/{command → shell}/group/group_1.cmd +0 -0
- data/spec/integration/{command → shell}/group/group_1.stdout +0 -0
- data/spec/integration/{command → shell}/help/help_1.cmd +0 -0
- data/spec/integration/{command → shell}/help/help_1.stdout +0 -0
- data/spec/integration/{command → shell}/intersect/intersect_0.cmd +0 -0
- data/spec/integration/{command → shell}/intersect/intersect_0.stdout +0 -0
- data/spec/integration/{command → shell}/join/join_0.cmd +0 -0
- data/spec/integration/{command → shell}/join/join_0.stdout +0 -0
- data/spec/integration/{command → shell}/matching/matching_0.cmd +0 -0
- data/spec/integration/{command → shell}/matching/matching_0.stdout +0 -0
- data/spec/integration/{command → shell}/minus/minus_0.cmd +0 -0
- data/spec/integration/{command → shell}/minus/minus_0.stdout +0 -0
- data/spec/integration/{command → shell}/not-matching/not-matching_0.cmd +0 -0
- data/spec/integration/{command → shell}/not-matching/not-matching_0.stdout +0 -0
- data/spec/integration/{command → shell}/project/project_0.cmd +0 -0
- data/spec/integration/{command → shell}/project/project_0.stdout +0 -0
- data/spec/integration/{command → shell}/project/project_1.cmd +0 -0
- data/spec/integration/{command → shell}/project/project_1.stdout +0 -0
- data/spec/integration/{command → shell}/quota/quota_0.cmd +0 -0
- data/spec/integration/{command → shell}/quota/quota_0.stdout +0 -0
- data/spec/integration/{command → shell}/rank/rank_1.cmd +0 -0
- data/spec/integration/{command → shell}/rank/rank_1.stdout +1 -1
- data/spec/integration/{command → shell}/rank/rank_2.cmd +0 -0
- data/spec/integration/{command → shell}/rank/rank_2.stdout +1 -1
- data/spec/integration/{command → shell}/rank/rank_3.cmd +0 -0
- data/spec/integration/{command → shell}/rank/rank_3.stdout +0 -0
- data/spec/integration/{command → shell}/rank/rank_4.cmd +0 -0
- data/spec/integration/{command → shell}/rank/rank_4.stdout +0 -0
- data/spec/integration/{command → shell}/rank/rank_5.cmd +0 -0
- data/spec/integration/{command → shell}/rank/rank_5.stdout +0 -0
- data/spec/integration/{command → shell}/rename/rename_0.cmd +0 -0
- data/spec/integration/{command → shell}/rename/rename_0.stdout +0 -0
- data/spec/integration/{command → shell}/restrict/restrict_0.cmd +0 -0
- data/spec/integration/{command → shell}/restrict/restrict_0.stdout +0 -0
- data/spec/integration/{command → shell}/restrict/restrict_1.cmd +0 -0
- data/spec/integration/{command → shell}/restrict/restrict_1.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_base.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_base.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_base_sort_1.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_base_sort_1.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_base_sort_2.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_base_sort_2.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_conflictual.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_conflictual.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_csv.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_csv.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_ff.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_ff.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_rash.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_rash.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_rash_pretty.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_rash_pretty.stdout +0 -0
- data/spec/integration/{command → shell}/show/show_yaml.cmd +0 -0
- data/spec/integration/{command → shell}/show/show_yaml.stdout +0 -0
- data/spec/integration/{command → shell}/sort/sort_0.cmd +0 -0
- data/spec/integration/{command → shell}/sort/sort_0.stdout +0 -0
- data/spec/integration/{command → shell}/sort/sort_1.cmd +0 -0
- data/spec/integration/{command → shell}/sort/sort_1.stdout +0 -0
- data/spec/integration/{command → shell}/sort/sort_2.cmd +0 -0
- data/spec/integration/{command → shell}/sort/sort_2.stdout +0 -0
- data/spec/integration/{command → shell}/sort/sort_3.cmd +0 -0
- data/spec/integration/{command → shell}/sort/sort_3.stdout +0 -0
- data/spec/integration/{command → shell}/summarize/summarize_0.cmd +0 -0
- data/spec/integration/{command → shell}/summarize/summarize_0.stdout +0 -0
- data/spec/integration/{command → shell}/ungroup/ungroup_0.cmd +0 -0
- data/spec/integration/{command → shell}/ungroup/ungroup_0.stdout +0 -0
- data/spec/integration/{command → shell}/union/union_0.cmd +0 -0
- data/spec/integration/{command → shell}/union/union_0.stdout +0 -0
- data/spec/integration/{command → shell}/unwrap/unwrap_0.cmd +0 -0
- data/spec/integration/{command → shell}/unwrap/unwrap_0.stdout +0 -0
- data/spec/integration/{command → shell}/wrap/wrap_0.cmd +0 -0
- data/spec/integration/{command → shell}/wrap/wrap_0.stdout +0 -0
- data/spec/{unit → integration}/test_lispy.rb +0 -0
- data/spec/integration/{test_command.rb → test_shell.rb} +3 -3
- data/spec/regression/heading/test_heading_with_date.rb +1 -1
- data/spec/shared/a_valid_type_implementation.rb +47 -0
- data/spec/shared/an_operator_class.rb +2 -6
- data/spec/spec_helper.rb +9 -1
- data/spec/unit/alf-core/aggregator/test_avg.rb +22 -0
- data/spec/unit/alf-core/aggregator/test_collect.rb +25 -0
- data/spec/unit/alf-core/aggregator/test_concat.rb +31 -0
- data/spec/unit/alf-core/aggregator/test_count.rb +17 -0
- data/spec/unit/alf-core/aggregator/test_max.rb +23 -0
- data/spec/unit/alf-core/aggregator/test_min.rb +23 -0
- data/spec/unit/alf-core/aggregator/test_stddev.rb +27 -0
- data/spec/unit/alf-core/aggregator/test_sum.rb +23 -0
- data/spec/unit/alf-core/aggregator/test_variance.rb +29 -0
- data/spec/unit/{assumptions → alf-core/assumptions}/test_file.rb +0 -0
- data/spec/unit/{assumptions → alf-core/assumptions}/test_instance_eval.rb +0 -0
- data/spec/unit/{assumptions → alf-core/assumptions}/test_scoping.rb +0 -0
- data/spec/unit/{assumptions → alf-core/assumptions}/test_set.rb +0 -0
- data/spec/unit/{environment → alf-core/environment}/examples/suppliers.rash +0 -0
- data/spec/unit/alf-core/environment/test_folder.rb +53 -0
- data/spec/unit/{operator → alf-core/operator}/non_relational/test_autonum.rb +18 -31
- data/spec/unit/alf-core/operator/non_relational/test_clip.rb +35 -0
- data/spec/unit/{operator → alf-core/operator}/non_relational/test_coerce.rb +11 -17
- data/spec/unit/{operator/non_relational/compact/test_sort_based.rb → alf-core/operator/non_relational/test_compact.rb} +16 -14
- data/spec/unit/{operator → alf-core/operator}/non_relational/test_defaults.rb +17 -32
- data/spec/unit/{operator → alf-core/operator}/non_relational/test_generator.rb +21 -39
- data/spec/unit/{operator → alf-core/operator}/non_relational/test_sort.rb +20 -26
- data/spec/unit/{operator → alf-core/operator}/relational/test_extend.rb +8 -14
- data/spec/unit/{operator → alf-core/operator}/relational/test_group.rb +12 -28
- data/spec/unit/alf-core/operator/relational/test_heading.rb +27 -0
- data/spec/unit/{operator → alf-core/operator}/relational/test_intersect.rb +22 -22
- data/spec/unit/{operator → alf-core/operator}/relational/test_join.rb +7 -7
- data/spec/unit/{operator → alf-core/operator}/relational/test_minus.rb +23 -23
- data/spec/unit/alf-core/operator/relational/test_project.rb +62 -0
- data/spec/unit/{operator → alf-core/operator}/relational/test_quota.rb +8 -15
- data/spec/unit/alf-core/operator/relational/test_rank.rb +48 -0
- data/spec/unit/{operator → alf-core/operator}/relational/test_rename.rb +8 -14
- data/spec/unit/alf-core/operator/relational/test_restrict.rb +45 -0
- data/spec/unit/{operator → alf-core/operator}/relational/test_summarize.rb +13 -31
- data/spec/unit/{operator → alf-core/operator}/relational/test_ungroup.rb +9 -15
- data/spec/unit/{operator → alf-core/operator}/relational/test_union.rb +11 -11
- data/spec/unit/{operator → alf-core/operator}/relational/test_unwrap.rb +10 -16
- data/spec/unit/{operator → alf-core/operator}/relational/test_wrap.rb +10 -16
- data/spec/unit/alf-core/operator/signature/test_argv2args.rb +82 -0
- data/spec/unit/alf-core/operator/signature/test_collect_on.rb +38 -0
- data/spec/unit/{operator → alf-core/operator}/signature/test_initialize.rb +0 -0
- data/spec/unit/{operator → alf-core/operator}/signature/test_install.rb +0 -0
- data/spec/unit/{operator → alf-core/operator}/signature/test_option_parser.rb +0 -0
- data/spec/unit/alf-core/operator/signature/test_parse_args.rb +90 -0
- data/spec/unit/{operator → alf-core/operator}/signature/test_to_lispy.rb +0 -0
- data/spec/unit/{operator → alf-core/operator}/signature/test_to_shell.rb +0 -0
- data/spec/unit/{operator → alf-core/operator}/test_non_relational.rb +0 -0
- data/spec/unit/{operator → alf-core/operator}/test_relational.rb +0 -0
- data/spec/unit/{reader → alf-core/reader}/input.rb +0 -0
- data/spec/unit/{reader → alf-core/reader}/test_alf_file.rb +0 -0
- data/spec/unit/{reader → alf-core/reader}/test_initialize.rb +0 -0
- data/spec/unit/alf-core/reader/test_looks_a_path.rb +20 -0
- data/spec/unit/{reader → alf-core/reader}/test_rash.rb +0 -0
- data/spec/unit/{relation → alf-core/relation}/test_coerce.rb +0 -0
- data/spec/unit/{relation → alf-core/relation}/test_inspect.rb +0 -0
- data/spec/unit/{relation → alf-core/relation}/test_relops.rb +0 -0
- data/spec/unit/{relation → alf-core/relation}/test_to_a.rb +0 -0
- data/spec/unit/{renderer → alf-core/renderer}/test_initialize.rb +0 -0
- data/spec/unit/alf-core/test_aggregator.rb +58 -0
- data/spec/unit/{test_environment.rb → alf-core/test_environment.rb} +8 -21
- data/spec/unit/{test_operator.rb → alf-core/test_operator.rb} +0 -0
- data/spec/unit/{test_reader.rb → alf-core/test_reader.rb} +0 -0
- data/spec/unit/{test_relation.rb → alf-core/test_relation.rb} +0 -0
- data/spec/unit/{test_renderer.rb → alf-core/test_renderer.rb} +0 -0
- data/spec/unit/{text → alf-core/text}/test_cell.rb +0 -0
- data/spec/unit/{text → alf-core/text}/test_row.rb +0 -0
- data/spec/unit/{text → alf-core/text}/test_table.rb +0 -0
- data/spec/unit/alf-core/tools/test_class_name.rb +16 -0
- data/spec/unit/{tools → alf-core/tools}/test_coalesce.rb +6 -2
- data/spec/unit/alf-core/tools/test_coerce.rb +16 -0
- data/spec/unit/alf-core/tools/test_ruby_case.rb +16 -0
- data/spec/unit/{tools → alf-core/tools}/test_to_lispy.rb +14 -7
- data/spec/unit/{tools → alf-core/tools}/test_to_ruby_literal.rb +5 -5
- data/spec/unit/{tools → alf-core/tools}/test_tuple_handle.rb +14 -14
- data/spec/unit/alf-core/tools/test_tuple_heading.rb +15 -0
- data/spec/unit/{tools → alf-core/tools}/test_varargs.rb +9 -6
- data/spec/unit/alf-core/types/test_attr_list.rb +188 -0
- data/spec/unit/alf-core/types/test_attr_name.rb +78 -0
- data/spec/unit/{types/test_attr_name.rb → alf-core/types/test_boolean.rb} +18 -28
- data/spec/unit/alf-core/types/test_class_methods.rb +24 -0
- data/spec/unit/alf-core/types/test_heading.rb +146 -0
- data/spec/unit/alf-core/types/test_ordering.rb +185 -0
- data/spec/unit/alf-core/types/test_renaming.rb +72 -0
- data/spec/unit/alf-core/types/test_size.rb +74 -0
- data/spec/unit/{types → alf-core/types}/test_summarization.rb +46 -14
- data/spec/unit/{types → alf-core/types}/test_tuple_computation.rb +46 -10
- data/spec/unit/alf-core/types/test_tuple_expression.rb +122 -0
- data/spec/unit/{types → alf-core/types}/test_tuple_predicate.rb +51 -22
- data/spec/unit/{csv → alf-csv}/input.csv +0 -0
- data/spec/unit/{csv → alf-csv}/test_reader.rb +0 -0
- data/spec/unit/{csv → alf-csv}/test_renderer.rb +1 -1
- data/spec/unit/alf-engine/compact/test_set.rb +33 -0
- data/spec/unit/alf-engine/compact/test_uniq.rb +33 -0
- data/spec/unit/alf-engine/group/test_hash.rb +34 -0
- data/spec/unit/{operator/relational/join/test_hash_based.rb → alf-engine/join/test_hash.rb} +21 -29
- data/spec/unit/alf-engine/materialize/test_array.rb +28 -0
- data/spec/unit/alf-engine/materialize/test_hash.rb +76 -0
- data/spec/unit/alf-engine/quota/test_cesure.rb +34 -0
- data/spec/unit/{operator/relational/test_rank.rb → alf-engine/rank/test_cesure.rb} +21 -24
- data/spec/unit/alf-engine/semi/test_hash.rb +58 -0
- data/spec/unit/alf-engine/sort/test_in_memory.rb +32 -0
- data/spec/unit/{operator/relational/summarize/test_hash_based.rb → alf-engine/summarize/test_cesure.rb} +15 -21
- data/spec/unit/{operator/relational/summarize/test_sort_based.rb → alf-engine/summarize/test_hash.rb} +15 -21
- data/spec/unit/alf-engine/test_aggregate.rb +26 -0
- data/spec/unit/alf-engine/test_autonum.rb +24 -0
- data/spec/unit/alf-engine/test_clip.rb +34 -0
- data/spec/unit/alf-engine/test_coerce.rb +35 -0
- data/spec/unit/alf-engine/test_compact.rb +33 -0
- data/spec/unit/alf-engine/test_concat.rb +38 -0
- data/spec/unit/alf-engine/test_defaults.rb +37 -0
- data/spec/unit/alf-engine/test_filter.rb +23 -0
- data/spec/unit/alf-engine/test_generator.rb +25 -0
- data/spec/unit/alf-engine/test_rename.rb +24 -0
- data/spec/unit/alf-engine/test_set_attr.rb +38 -0
- data/spec/unit/alf-engine/test_sort.rb +32 -0
- data/spec/unit/alf-engine/test_ungroup.rb +28 -0
- data/spec/unit/alf-engine/test_unwrap.rb +20 -0
- data/spec/unit/alf-engine/test_wrap.rb +26 -0
- data/spec/unit/{logs → alf-logs}/apache_combined.log +0 -0
- data/spec/unit/{logs → alf-logs}/postgresql.log +0 -0
- data/spec/unit/{logs → alf-logs}/test_reader.rb +15 -16
- data/spec/unit/{sequel → alf-sequel}/alf.db +0 -0
- data/spec/unit/alf-sequel/test_environment.rb +69 -0
- data/spec/unit/{command → alf-shell}/doc_manager/dynamic.md +0 -0
- data/spec/unit/{command → alf-shell}/doc_manager/example.md +0 -0
- data/spec/unit/{command → alf-shell}/doc_manager/example_1.txt +0 -0
- data/spec/unit/{command → alf-shell}/doc_manager/static.md +0 -0
- data/spec/unit/{command → alf-shell}/doc_manager/test_call.rb +2 -3
- data/spec/unit/alf-shell/main/test_class_methods.rb +44 -0
- data/spec/unit/alf-shell/operator/test_autonum.rb +28 -0
- data/spec/unit/alf-shell/operator/test_clip.rb +29 -0
- data/spec/unit/alf-shell/operator/test_coerce.rb +21 -0
- data/spec/unit/alf-shell/operator/test_compact.rb +16 -0
- data/spec/unit/alf-shell/operator/test_defaults.rb +29 -0
- data/spec/unit/alf-shell/operator/test_extend.rb +21 -0
- data/spec/unit/alf-shell/operator/test_generator.rb +37 -0
- data/spec/unit/alf-shell/operator/test_group.rb +32 -0
- data/spec/unit/alf-shell/operator/test_heading.rb +16 -0
- data/spec/unit/alf-shell/operator/test_intersect.rb +18 -0
- data/spec/unit/alf-shell/operator/test_join.rb +18 -0
- data/spec/unit/alf-shell/operator/test_matching.rb +18 -0
- data/spec/unit/alf-shell/operator/test_minus.rb +18 -0
- data/spec/unit/alf-shell/operator/test_not_matching.rb +18 -0
- data/spec/unit/alf-shell/operator/test_project.rb +38 -0
- data/spec/unit/alf-shell/operator/test_quota.rb +23 -0
- data/spec/unit/alf-shell/operator/test_rank.rb +30 -0
- data/spec/unit/alf-shell/operator/test_rename.rb +21 -0
- data/spec/unit/alf-shell/operator/test_restrict.rb +35 -0
- data/spec/unit/alf-shell/operator/test_sort.rb +49 -0
- data/spec/unit/alf-shell/operator/test_summarize.rb +30 -0
- data/spec/unit/alf-shell/operator/test_ungroup.rb +28 -0
- data/spec/unit/alf-shell/operator/test_union.rb +18 -0
- data/spec/unit/alf-shell/operator/test_unwrap.rb +28 -0
- data/spec/unit/alf-shell/operator/test_wrap.rb +30 -0
- data/tasks/debug_mail.rake +42 -45
- data/tasks/gem.rake +13 -13
- data/tasks/gh-pages.rake +11 -6
- data/tasks/integration_test.rake +0 -8
- data/tasks/regression_test.rake +0 -8
- data/tasks/unit_test.rake +0 -8
- data/tasks/yard.rake +13 -13
- metadata +909 -1107
- data/examples/hitradio/compact.rb +0 -48
- data/examples/hitradio/compare1.rb +0 -28
- data/examples/hitradio/gz_reader.rb +0 -23
- data/examples/hitradio/hitradio-1.alf +0 -1
- data/examples/hitradio/hitradio.log +0 -25080
- data/examples/hitradio/hitradio.mar +0 -25081
- data/examples/hitradio/hitradio.mar.gz +0 -0
- data/examples/hitradio/hitradio.rash +0 -25080
- data/examples/hitradio/mar_reader.rb +0 -18
- data/examples/northwind/customers.csv +0 -92
- data/examples/northwind/northwind.db +0 -0
- data/examples/northwind/orders.csv +0 -831
- data/lib/alf/aggregator/aggregators.rb +0 -105
- data/lib/alf/aggregator/aggregators.rbc +0 -2640
- data/lib/alf/aggregator/base.rbc +0 -1055
- data/lib/alf/aggregator/class_methods.rbc +0 -830
- data/lib/alf/buffer/sorted.rb +0 -48
- data/lib/alf/buffer/sorted.rbc +0 -715
- data/lib/alf/command/class_methods.rb +0 -27
- data/lib/alf/command/class_methods.rbc +0 -453
- data/lib/alf/command/doc_manager.rbc +0 -1604
- data/lib/alf/command/exec.rbc +0 -408
- data/lib/alf/command/help.rbc +0 -764
- data/lib/alf/command/main.rbc +0 -3612
- data/lib/alf/command/show.rbc +0 -1327
- data/lib/alf/environment/base.rbc +0 -459
- data/lib/alf/environment/class_methods.rbc +0 -1110
- data/lib/alf/environment/explicit.rb +0 -38
- data/lib/alf/environment/explicit.rbc +0 -601
- data/lib/alf/environment/folder.rbc +0 -942
- data/lib/alf/errors.rbc +0 -155
- data/lib/alf/extra/csv.rb +0 -107
- data/lib/alf/extra/csv.rbc +0 -2021
- data/lib/alf/extra/logs.rbc +0 -1957
- data/lib/alf/extra/sequel.rb +0 -77
- data/lib/alf/extra/sequel.rbc +0 -1417
- data/lib/alf/extra/yaml.rbc +0 -435
- data/lib/alf/extra.rb +0 -5
- data/lib/alf/extra.rbc +0 -101
- data/lib/alf/iterator/base.rb +0 -38
- data/lib/alf/iterator/base.rbc +0 -437
- data/lib/alf/iterator/class_methods.rbc +0 -518
- data/lib/alf/iterator/proxy.rbc +0 -599
- data/lib/alf/lispy/instance_methods.rbc +0 -2535
- data/lib/alf/loader.rbc +0 -85
- data/lib/alf/operator/base.rb +0 -74
- data/lib/alf/operator/base.rbc +0 -860
- data/lib/alf/operator/binary.rbc +0 -595
- data/lib/alf/operator/cesure.rbc +0 -883
- data/lib/alf/operator/class_methods.rbc +0 -1915
- data/lib/alf/operator/experimental.rbc +0 -200
- data/lib/alf/operator/non_relational/autonum.rbc +0 -587
- data/lib/alf/operator/non_relational/clip.rbc +0 -522
- data/lib/alf/operator/non_relational/coerce.rbc +0 -596
- data/lib/alf/operator/non_relational/compact.rbc +0 -1283
- data/lib/alf/operator/non_relational/defaults.rbc +0 -733
- data/lib/alf/operator/non_relational/generator.rbc +0 -1015
- data/lib/alf/operator/non_relational/sort.rbc +0 -665
- data/lib/alf/operator/nullary.rbc +0 -404
- data/lib/alf/operator/relational/extend.rbc +0 -616
- data/lib/alf/operator/relational/group.rbc +0 -968
- data/lib/alf/operator/relational/heading.rbc +0 -657
- data/lib/alf/operator/relational/intersect.rbc +0 -969
- data/lib/alf/operator/relational/join.rbc +0 -1708
- data/lib/alf/operator/relational/matching.rbc +0 -1047
- data/lib/alf/operator/relational/minus.rbc +0 -965
- data/lib/alf/operator/relational/not_matching.rbc +0 -1047
- data/lib/alf/operator/relational/project.rbc +0 -669
- data/lib/alf/operator/relational/quota.rbc +0 -1193
- data/lib/alf/operator/relational/rank.rbc +0 -1217
- data/lib/alf/operator/relational/rename.rbc +0 -496
- data/lib/alf/operator/relational/restrict.rbc +0 -611
- data/lib/alf/operator/relational/summarize.rbc +0 -1922
- data/lib/alf/operator/relational/ungroup.rbc +0 -643
- data/lib/alf/operator/relational/union.rbc +0 -846
- data/lib/alf/operator/relational/unwrap.rbc +0 -540
- data/lib/alf/operator/relational/wrap.rbc +0 -560
- data/lib/alf/operator/shortcut.rb +0 -53
- data/lib/alf/operator/shortcut.rbc +0 -809
- data/lib/alf/operator/signature.rbc +0 -4640
- data/lib/alf/operator/transform.rb +0 -27
- data/lib/alf/operator/transform.rbc +0 -484
- data/lib/alf/operator/unary.rbc +0 -629
- data/lib/alf/reader/alf_file.rbc +0 -464
- data/lib/alf/reader/base.rbc +0 -1613
- data/lib/alf/reader/class_methods.rbc +0 -1099
- data/lib/alf/reader/rash.rbc +0 -583
- data/lib/alf/relation/class_methods.rbc +0 -674
- data/lib/alf/relation/instance_methods.rbc +0 -2107
- data/lib/alf/renderer/base.rbc +0 -936
- data/lib/alf/renderer/class_methods.rbc +0 -875
- data/lib/alf/renderer/rash.rbc +0 -802
- data/lib/alf/renderer/text.rbc +0 -5530
- data/lib/alf/tools/coerce.rbc +0 -352
- data/lib/alf/tools/miscellaneous.rbc +0 -1497
- data/lib/alf/tools/to_lispy.rbc +0 -2618
- data/lib/alf/tools/to_ruby_literal.rbc +0 -344
- data/lib/alf/tools/tuple_handle.rbc +0 -738
- data/lib/alf/types/attr_list.rbc +0 -1535
- data/lib/alf/types/attr_name.rbc +0 -781
- data/lib/alf/types/boolean.rbc +0 -365
- data/lib/alf/types/heading.rbc +0 -1778
- data/lib/alf/types/ordering.rbc +0 -2228
- data/lib/alf/types/renaming.rbc +0 -1064
- data/lib/alf/types/summarization.rbc +0 -1394
- data/lib/alf/types/tuple_computation.rbc +0 -1061
- data/lib/alf/types/tuple_expression.rbc +0 -1016
- data/lib/alf/types/tuple_predicate.rbc +0 -1349
- data/lib/alf/version.rbc +0 -350
- data/lib/alf.rbc +0 -3884
- data/spec/integration/command/alf/alf_env.cmd +0 -1
- data/spec/integration/command/alf/alf_env_sqlite.cmd +0 -1
- data/spec/integration/command/alf/alf_implicit_exec.cmd +0 -1
- data/spec/integration/command/autonum/autonum_1.cmd +0 -1
- data/spec/integration/command/clip/clip_0.cmd +0 -1
- data/spec/integration/command/clip/clip_1.cmd +0 -1
- data/spec/integration/command/show/show_rash_2.cmd +0 -1
- data/spec/integration/command/show/show_rash_2.stdout +0 -5
- data/spec/integration/test_alf.rbc +0 -1098
- data/spec/integration/test_command.rbc +0 -1832
- data/spec/integration/test_examples.rbc +0 -559
- data/spec/integration/test_semantics.rbc +0 -991
- data/spec/regression/alf_file/test___FILE__.rbc +0 -524
- data/spec/regression/heading/test_heading_with_date.rbc +0 -381
- data/spec/regression/lispy/test_compile.rbc +0 -404
- data/spec/regression/logs/test_path_attribute.rbc +0 -687
- data/spec/regression/relation/test_relation_allbut_all.rbc +0 -468
- data/spec/regression/relation/test_relation_with_date.rbc +0 -381
- data/spec/regression/restrict/test_restrict_with_keywords.rbc +0 -628
- data/spec/shared/a_value.rbc +0 -337
- data/spec/shared/an_operator_class.rbc +0 -908
- data/spec/spec_helper.rbc +0 -453
- data/spec/unit/assumptions/test_file.rbc +0 -668
- data/spec/unit/assumptions/test_instance_eval.rbc +0 -654
- data/spec/unit/assumptions/test_scoping.rbc +0 -755
- data/spec/unit/assumptions/test_set.rbc +0 -1928
- data/spec/unit/command/doc_manager/test_call.rbc +0 -1537
- data/spec/unit/csv/test_reader.rbc +0 -2228
- data/spec/unit/csv/test_renderer.rbc +0 -2426
- data/spec/unit/environment/test_explicit.rb +0 -15
- data/spec/unit/environment/test_explicit.rbc +0 -464
- data/spec/unit/environment/test_folder.rb +0 -35
- data/spec/unit/environment/test_folder.rbc +0 -1304
- data/spec/unit/lispy/test_relation.rbc +0 -1477
- data/spec/unit/lispy/test_run.rbc +0 -1735
- data/spec/unit/lispy/test_tuple.rbc +0 -1686
- data/spec/unit/logs/test_reader.rbc +0 -1807
- data/spec/unit/operator/non_relational/compact/test_buffer_based.rb +0 -30
- data/spec/unit/operator/non_relational/compact/test_buffer_based.rbc +0 -1127
- data/spec/unit/operator/non_relational/compact/test_sort_based.rbc +0 -1127
- data/spec/unit/operator/non_relational/test_autonum.rbc +0 -1969
- data/spec/unit/operator/non_relational/test_clip.rb +0 -49
- data/spec/unit/operator/non_relational/test_clip.rbc +0 -1850
- data/spec/unit/operator/non_relational/test_coerce.rbc +0 -1290
- data/spec/unit/operator/non_relational/test_compact.rb +0 -38
- data/spec/unit/operator/non_relational/test_compact.rbc +0 -1382
- data/spec/unit/operator/non_relational/test_defaults.rbc +0 -2319
- data/spec/unit/operator/non_relational/test_generator.rbc +0 -2361
- data/spec/unit/operator/non_relational/test_sort.rbc +0 -2583
- data/spec/unit/operator/relational/join/test_hash_based.rbc +0 -2481
- data/spec/unit/operator/relational/matching/test_hash_based.rb +0 -60
- data/spec/unit/operator/relational/matching/test_hash_based.rbc +0 -2458
- data/spec/unit/operator/relational/not_matching/test_hash_based.rb +0 -37
- data/spec/unit/operator/relational/not_matching/test_hash_based.rbc +0 -1632
- data/spec/unit/operator/relational/summarize/test_hash_based.rbc +0 -1990
- data/spec/unit/operator/relational/summarize/test_sort_based.rbc +0 -1990
- data/spec/unit/operator/relational/test_extend.rbc +0 -1300
- data/spec/unit/operator/relational/test_group.rbc +0 -2142
- data/spec/unit/operator/relational/test_intersect.rbc +0 -2069
- data/spec/unit/operator/relational/test_join.rbc +0 -1282
- data/spec/unit/operator/relational/test_minus.rbc +0 -1995
- data/spec/unit/operator/relational/test_project.rb +0 -75
- data/spec/unit/operator/relational/test_project.rbc +0 -2870
- data/spec/unit/operator/relational/test_quota.rbc +0 -1788
- data/spec/unit/operator/relational/test_rank.rbc +0 -2079
- data/spec/unit/operator/relational/test_rename.rbc +0 -1158
- data/spec/unit/operator/relational/test_restrict.rb +0 -56
- data/spec/unit/operator/relational/test_restrict.rbc +0 -2305
- data/spec/unit/operator/relational/test_summarize.rbc +0 -2570
- data/spec/unit/operator/relational/test_ungroup.rbc +0 -1425
- data/spec/unit/operator/relational/test_union.rbc +0 -1089
- data/spec/unit/operator/relational/test_unwrap.rbc +0 -1176
- data/spec/unit/operator/relational/test_wrap.rbc +0 -1203
- data/spec/unit/operator/signature/test_collect_on.rb +0 -45
- data/spec/unit/operator/signature/test_collect_on.rbc +0 -1989
- data/spec/unit/operator/signature/test_initialize.rbc +0 -544
- data/spec/unit/operator/signature/test_install.rbc +0 -1671
- data/spec/unit/operator/signature/test_option_parser.rbc +0 -1348
- data/spec/unit/operator/signature/test_parse_args.rb +0 -60
- data/spec/unit/operator/signature/test_parse_args.rbc +0 -1908
- data/spec/unit/operator/signature/test_parse_argv.rb +0 -87
- data/spec/unit/operator/signature/test_parse_argv.rbc +0 -2878
- data/spec/unit/operator/signature/test_to_lispy.rbc +0 -3305
- data/spec/unit/operator/signature/test_to_shell.rbc +0 -3327
- data/spec/unit/operator/test_non_relational.rbc +0 -571
- data/spec/unit/operator/test_relational.rbc +0 -758
- data/spec/unit/reader/test_alf_file.rbc +0 -1107
- data/spec/unit/reader/test_initialize.rbc +0 -1774
- data/spec/unit/reader/test_rash.rbc +0 -1127
- data/spec/unit/relation/test_coerce.rbc +0 -2320
- data/spec/unit/relation/test_inspect.rbc +0 -502
- data/spec/unit/relation/test_relops.rbc +0 -1585
- data/spec/unit/relation/test_to_a.rbc +0 -1112
- data/spec/unit/renderer/test_initialize.rbc +0 -1766
- data/spec/unit/sequel/test_environment.rb +0 -54
- data/spec/unit/sequel/test_environment.rbc +0 -1723
- data/spec/unit/test_aggregator.rb +0 -109
- data/spec/unit/test_aggregator.rbc +0 -4358
- data/spec/unit/test_environment.rbc +0 -1271
- data/spec/unit/test_lispy.rbc +0 -879
- data/spec/unit/test_operator.rbc +0 -531
- data/spec/unit/test_reader.rbc +0 -1249
- data/spec/unit/test_relation.rbc +0 -2588
- data/spec/unit/test_renderer.rbc +0 -2011
- data/spec/unit/text/test_cell.rbc +0 -1532
- data/spec/unit/text/test_row.rbc +0 -847
- data/spec/unit/text/test_table.rbc +0 -978
- data/spec/unit/tools/test_coalesce.rbc +0 -456
- data/spec/unit/tools/test_coerce.rb +0 -10
- data/spec/unit/tools/test_coerce.rbc +0 -279
- data/spec/unit/tools/test_to_lispy.rbc +0 -5711
- data/spec/unit/tools/test_to_ruby_literal.rbc +0 -272
- data/spec/unit/tools/test_tools.rb +0 -25
- data/spec/unit/tools/test_tools.rbc +0 -672
- data/spec/unit/tools/test_tuple_handle.rbc +0 -1591
- data/spec/unit/tools/test_tuple_heading.rb +0 -20
- data/spec/unit/tools/test_tuple_heading.rbc +0 -821
- data/spec/unit/tools/test_varargs.rbc +0 -495
- data/spec/unit/types/heading/test_union.rb +0 -21
- data/spec/unit/types/heading/test_union.rbc +0 -1043
- data/spec/unit/types/test_attr_list.rb +0 -106
- data/spec/unit/types/test_attr_list.rbc +0 -4481
- data/spec/unit/types/test_attr_name.rbc +0 -1872
- data/spec/unit/types/test_heading.rb +0 -48
- data/spec/unit/types/test_heading.rbc +0 -1735
- data/spec/unit/types/test_ordering.rb +0 -127
- data/spec/unit/types/test_ordering.rbc +0 -3695
- data/spec/unit/types/test_renaming.rb +0 -55
- data/spec/unit/types/test_renaming.rbc +0 -2426
- data/spec/unit/types/test_summarization.rbc +0 -2538
- data/spec/unit/types/test_tuple_computation.rbc +0 -2340
- data/spec/unit/types/test_tuple_expression.rb +0 -64
- data/spec/unit/types/test_tuple_expression.rbc +0 -2285
- data/spec/unit/types/test_tuple_predicate.rbc +0 -3168
@@ -0,0 +1,40 @@
|
|
1
|
+
require_relative 'shell/doc_manager'
|
2
|
+
module Alf
|
3
|
+
module Shell
|
4
|
+
|
5
|
+
# This is the main documentation extractor
|
6
|
+
DOC_EXTRACTOR = DocManager.new
|
7
|
+
|
8
|
+
# Delegator command factory
|
9
|
+
def self.Delegator()
|
10
|
+
Quickl::Delegator(){|builder|
|
11
|
+
builder.doc_extractor = DOC_EXTRACTOR
|
12
|
+
builder.class_module Command::ClassMethods
|
13
|
+
yield(builder) if block_given?
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
# Command factory
|
18
|
+
def self.Command()
|
19
|
+
Quickl::Command(){|builder|
|
20
|
+
builder.command_parent = Alf::Shell::Main
|
21
|
+
builder.doc_extractor = DOC_EXTRACTOR
|
22
|
+
builder.class_module Command::ClassMethods
|
23
|
+
yield(builder) if block_given?
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
# Operator factory
|
28
|
+
def self.Operator()
|
29
|
+
Quickl::Command(){|builder|
|
30
|
+
builder.command_parent = Alf::Shell::Main
|
31
|
+
builder.doc_extractor = DOC_EXTRACTOR
|
32
|
+
builder.class_module Operator::ClassMethods
|
33
|
+
yield(builder) if block_given?
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
end # module Shell
|
38
|
+
end # module Alf
|
39
|
+
require_relative 'shell/command'
|
40
|
+
require_relative 'shell/operator'
|
@@ -1,13 +1,12 @@
|
|
1
1
|
module Alf
|
2
2
|
module YAML
|
3
|
-
|
4
3
|
#
|
5
4
|
# Implements Alf::Renderer contract for outputing YAML files.
|
6
5
|
#
|
7
6
|
class Renderer < ::Alf::Renderer
|
8
|
-
|
7
|
+
|
9
8
|
protected
|
10
|
-
|
9
|
+
|
11
10
|
# (see Alf::Renderer#render)
|
12
11
|
def render(input, output)
|
13
12
|
require "yaml"
|
@@ -16,9 +15,8 @@ module Alf
|
|
16
15
|
output << input.to_a.to_yaml << "\n"
|
17
16
|
output
|
18
17
|
end
|
19
|
-
|
20
|
-
|
18
|
+
|
19
|
+
Alf::Renderer.register(:yaml, "as a yaml output", self)
|
21
20
|
end # class Renderer
|
22
|
-
|
23
21
|
end # module YAML
|
24
|
-
end # module Alf
|
22
|
+
end # module Alf
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'yaml/renderer'
|
data/lib/alf.rb
CHANGED
@@ -13,363 +13,17 @@ require 'myrrha/coerce'
|
|
13
13
|
# Classy data-manipulation dressed in a DSL (+ commandline)
|
14
14
|
#
|
15
15
|
module Alf
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
require 'alf/types/tuple_expression'
|
28
|
-
require 'alf/types/tuple_predicate'
|
29
|
-
require 'alf/types/summarization'
|
30
|
-
require 'alf/types/tuple_computation'
|
31
|
-
|
32
|
-
# Install all types on Alf now
|
33
|
-
constants.each do |s|
|
34
|
-
Alf.const_set(s, const_get(s))
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
#
|
39
|
-
# Provides tooling methods that are used here and there in Alf.
|
40
|
-
#
|
41
|
-
module Tools
|
42
|
-
require 'alf/tools/coerce'
|
43
|
-
require 'alf/tools/to_ruby_literal'
|
44
|
-
require 'alf/tools/to_lispy'
|
45
|
-
require 'alf/tools/tuple_handle'
|
46
|
-
require 'alf/tools/miscellaneous'
|
47
|
-
|
48
|
-
extend Tools
|
49
|
-
end # module Tools
|
50
|
-
|
51
|
-
#
|
52
|
-
# Encapsulates the interface with the outside world, providing base iterators
|
53
|
-
# for named datasets, among others.
|
54
|
-
#
|
55
|
-
# An environment is typically obtained through the factory defined by this
|
56
|
-
# class:
|
57
|
-
#
|
58
|
-
# # Returns the default environment (examples, for now)
|
59
|
-
# Alf::Environment.default
|
60
|
-
#
|
61
|
-
# # Returns an environment on Alf's examples
|
62
|
-
# Alf::Environment.examples
|
63
|
-
#
|
64
|
-
# # Returns an environment on a specific folder, automatically
|
65
|
-
# # resolving datasources via Readers' recognized file extensions
|
66
|
-
# Alf::Environment.folder('path/to/a/folder')
|
67
|
-
#
|
68
|
-
# You can implement your own environment by subclassing this class and
|
69
|
-
# implementing the {#dataset} method. As additional support is implemented
|
70
|
-
# in the base class, Environment should never be mimiced.
|
71
|
-
#
|
72
|
-
# This class provides an extension point allowing to participate to auto
|
73
|
-
# detection and resolving of the --env=... option when alf is used in shell.
|
74
|
-
# See Environment.register, Environment.autodetect and Environment.recognizes?
|
75
|
-
# for details.
|
76
|
-
#
|
77
|
-
class Environment
|
78
|
-
require 'alf/environment/class_methods'
|
79
|
-
require 'alf/environment/base'
|
80
|
-
require 'alf/environment/explicit'
|
81
|
-
require 'alf/environment/folder'
|
82
|
-
|
83
|
-
end # class Environment
|
84
|
-
|
85
|
-
#
|
86
|
-
# Marker module for all elements implementing tuple iterators.
|
87
|
-
#
|
88
|
-
# At first glance, an iterator is nothing else than an Enumerable that serves
|
89
|
-
# tuples (represented by ruby hashes). However, this module helps Alf's internal
|
90
|
-
# classes to recognize enumerables that may safely be considered as tuple
|
91
|
-
# iterators from other enumerables. For this reason, all elements that would
|
92
|
-
# like to participate to an iteration chain (that is, an logical operator
|
93
|
-
# implementation) should be marked with this module. This is the case for
|
94
|
-
# all Readers and Operators defined in Alf.
|
95
|
-
#
|
96
|
-
# Moreover, an Iterator should always define a {#pipe} method, which is the
|
97
|
-
# natural way to define the input and execution environment of operators and
|
98
|
-
# readers.
|
99
|
-
#
|
100
|
-
module Iterator
|
101
|
-
include Enumerable
|
102
|
-
|
103
|
-
require 'alf/iterator/class_methods'
|
104
|
-
require 'alf/iterator/base'
|
105
|
-
require 'alf/iterator/proxy'
|
106
|
-
end # module Iterator
|
107
|
-
|
108
|
-
#
|
109
|
-
# Implements an Iterator at the interface with the outside world.
|
110
|
-
#
|
111
|
-
# The contrat of a Reader is simply to be an Iterator. Unlike operators,
|
112
|
-
# however, readers are not expected to take other iterators as input, but IO
|
113
|
-
# objects, database tables, or something similar instead. This base class
|
114
|
-
# provides a default behavior for readers that works with IO objects. It can
|
115
|
-
# be safely extended, overriden, or even mimiced (provided that you include
|
116
|
-
# and implement the Iterator contract).
|
117
|
-
#
|
118
|
-
# This class also provides a registration mechanism to help getting Reader
|
119
|
-
# instances for specific file extensions. A typical scenario for using this
|
120
|
-
# registration mechanism is as follows:
|
121
|
-
#
|
122
|
-
# # Registers a reader kind named :foo, associated with ".foo" file
|
123
|
-
# # extensions and the FooFileDecoder class (typically a subclass of
|
124
|
-
# # Reader)
|
125
|
-
# Reader.register(:foo, [".foo"], FooFileDecoder)
|
126
|
-
#
|
127
|
-
# # Later on, you can request a reader instance for a .foo file, as
|
128
|
-
# # illustrated below.
|
129
|
-
# r = Reader.reader('/a/path/to/a/file.foo')
|
130
|
-
#
|
131
|
-
# # Also, a factory method is automatically installed on the Reader class
|
132
|
-
# # itself. This factory method can be used with a String, or an IO object.
|
133
|
-
# r = Reader.foo([a path or a IO object])
|
134
|
-
#
|
135
|
-
class Reader
|
136
|
-
include Iterator
|
137
|
-
|
138
|
-
require 'alf/reader/class_methods'
|
139
|
-
require 'alf/reader/base'
|
140
|
-
require 'alf/reader/rash'
|
141
|
-
require 'alf/reader/alf_file'
|
142
|
-
end # class Reader
|
143
|
-
|
144
|
-
#
|
145
|
-
# Renders a relation (given by any Iterator) in a specific format.
|
146
|
-
#
|
147
|
-
# A renderer takes an Iterator instance as input and renders it on an output
|
148
|
-
# stream. Renderers are **not** iterators themselves, even if they mimic the
|
149
|
-
# {#pipe} method. Their usage is made via the {#execute} method.
|
150
|
-
#
|
151
|
-
# Similarly to the {Reader} class, this one provides a registration mechanism
|
152
|
-
# for specific output formats. The common scenario is as follows:
|
153
|
-
#
|
154
|
-
# # Register a new renderer for :foo format (automatically provides the
|
155
|
-
# # '--foo Render output as a foo stream' option of 'alf show') and with
|
156
|
-
# # the FooRenderer class for handling rendering.
|
157
|
-
# Renderer.register(:foo, "as a foo stream", FooRenderer)
|
158
|
-
#
|
159
|
-
# # Later on, you can request a renderer instance for a specific format
|
160
|
-
# # as follows (wiring input is optional)
|
161
|
-
# r = Renderer.renderer(:foo, [an Iterator])
|
162
|
-
#
|
163
|
-
# # Also, a factory method is automatically installed on the Renderer class
|
164
|
-
# # itself.
|
165
|
-
# r = Renderer.foo([an Iterator])
|
166
|
-
#
|
167
|
-
class Renderer
|
168
|
-
require 'alf/renderer/class_methods'
|
169
|
-
require 'alf/renderer/base'
|
170
|
-
require 'alf/renderer/rash'
|
171
|
-
require 'alf/renderer/text'
|
172
|
-
|
173
|
-
end # class Renderer
|
174
|
-
|
175
|
-
#
|
176
|
-
# Marker module and namespace for Alf main commands, those that are **not**
|
177
|
-
# operators at all.
|
178
|
-
#
|
179
|
-
module Command
|
180
|
-
require 'alf/command/class_methods'
|
181
|
-
require 'alf/command/doc_manager'
|
182
|
-
|
183
|
-
# This is the main documentation extractor
|
184
|
-
DOC_EXTRACTOR = DocManager.new
|
185
|
-
|
186
|
-
#
|
187
|
-
# Delegator command factory
|
188
|
-
#
|
189
|
-
def Alf.Delegator()
|
190
|
-
Quickl::Delegator(){|builder|
|
191
|
-
builder.doc_extractor = DOC_EXTRACTOR
|
192
|
-
yield(builder) if block_given?
|
193
|
-
}
|
194
|
-
end
|
195
|
-
|
196
|
-
#
|
197
|
-
# Command factory
|
198
|
-
#
|
199
|
-
def Alf.Command()
|
200
|
-
Quickl::Command(){|builder|
|
201
|
-
builder.command_parent = Alf::Command::Main
|
202
|
-
builder.doc_extractor = DOC_EXTRACTOR
|
203
|
-
yield(builder) if block_given?
|
204
|
-
}
|
205
|
-
end
|
206
|
-
|
207
|
-
require 'alf/command/main'
|
208
|
-
require 'alf/command/exec'
|
209
|
-
require 'alf/command/help'
|
210
|
-
require 'alf/command/show'
|
211
|
-
end # module Command
|
212
|
-
|
213
|
-
#
|
214
|
-
# Marker for all operators, relational and non-relational ones.
|
215
|
-
#
|
216
|
-
module Operator
|
217
|
-
include Iterator, Tools
|
218
|
-
|
219
|
-
#
|
220
|
-
# Operator factory
|
221
|
-
#
|
222
|
-
def Alf.Operator()
|
223
|
-
Alf.Command() do |b|
|
224
|
-
b.instance_module Alf::Operator
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
require 'alf/operator/class_methods'
|
229
|
-
require 'alf/operator/signature'
|
230
|
-
require 'alf/operator/base'
|
231
|
-
require 'alf/operator/nullary'
|
232
|
-
require 'alf/operator/unary'
|
233
|
-
require 'alf/operator/binary'
|
234
|
-
require 'alf/operator/cesure'
|
235
|
-
require 'alf/operator/transform'
|
236
|
-
require 'alf/operator/shortcut'
|
237
|
-
require 'alf/operator/experimental'
|
238
|
-
|
239
|
-
|
240
|
-
#
|
241
|
-
# Marker module and namespace for non relational operators
|
242
|
-
#
|
243
|
-
module NonRelational
|
244
|
-
require 'alf/operator/non_relational/autonum'
|
245
|
-
require 'alf/operator/non_relational/defaults'
|
246
|
-
require 'alf/operator/non_relational/compact'
|
247
|
-
require 'alf/operator/non_relational/sort'
|
248
|
-
require 'alf/operator/non_relational/clip'
|
249
|
-
require 'alf/operator/non_relational/coerce'
|
250
|
-
require 'alf/operator/non_relational/generator'
|
251
|
-
|
252
|
-
#
|
253
|
-
# Yields the block with each operator module in turn
|
254
|
-
#
|
255
|
-
def self.each
|
256
|
-
constants.each do |c|
|
257
|
-
val = const_get(c)
|
258
|
-
yield(val) if val.ancestors.include?(Operator::NonRelational)
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
end # NonRelational
|
263
|
-
|
264
|
-
#
|
265
|
-
# Marker module and namespace for relational operators
|
266
|
-
#
|
267
|
-
module Relational
|
268
|
-
require 'alf/operator/relational/extend'
|
269
|
-
require 'alf/operator/relational/project'
|
270
|
-
require 'alf/operator/relational/restrict'
|
271
|
-
require 'alf/operator/relational/rename'
|
272
|
-
|
273
|
-
require 'alf/operator/relational/union'
|
274
|
-
require 'alf/operator/relational/minus'
|
275
|
-
require 'alf/operator/relational/intersect'
|
276
|
-
require 'alf/operator/relational/join'
|
277
|
-
|
278
|
-
require 'alf/operator/relational/matching'
|
279
|
-
require 'alf/operator/relational/not_matching'
|
280
|
-
|
281
|
-
require 'alf/operator/relational/wrap'
|
282
|
-
require 'alf/operator/relational/unwrap'
|
283
|
-
|
284
|
-
require 'alf/operator/relational/group'
|
285
|
-
require 'alf/operator/relational/ungroup'
|
286
|
-
|
287
|
-
require 'alf/operator/relational/summarize'
|
288
|
-
require 'alf/operator/relational/rank'
|
289
|
-
require 'alf/operator/relational/quota'
|
290
|
-
|
291
|
-
require 'alf/operator/relational/heading'
|
292
|
-
|
293
|
-
#
|
294
|
-
# Yields the block with each operator module in turn
|
295
|
-
#
|
296
|
-
def self.each
|
297
|
-
constants.each do |c|
|
298
|
-
val = const_get(c)
|
299
|
-
yield(val) if val.ancestors.include?(Operator::Relational)
|
300
|
-
end
|
301
|
-
end
|
302
|
-
|
303
|
-
end # module Relational
|
304
|
-
|
305
|
-
end # module Operator
|
306
|
-
|
307
|
-
#
|
308
|
-
# Aggregation operator.
|
309
|
-
#
|
310
|
-
class Aggregator
|
311
|
-
require 'alf/aggregator/class_methods'
|
312
|
-
require 'alf/aggregator/base'
|
313
|
-
require 'alf/aggregator/aggregators'
|
314
|
-
|
315
|
-
end # class Aggregator
|
316
|
-
|
317
|
-
#
|
318
|
-
# Base class for implementing buffers.
|
319
|
-
#
|
320
|
-
class Buffer
|
321
|
-
require 'alf/buffer/sorted'
|
322
|
-
|
323
|
-
end # class Buffer
|
324
|
-
|
325
|
-
#
|
326
|
-
# Defines an in-memory relation data structure.
|
327
|
-
#
|
328
|
-
# A relation is a set of tuples; a tuple is a set of attribute (name, value)
|
329
|
-
# pairs. The class implements such a data structure with full relational
|
330
|
-
# algebra installed as instance methods.
|
331
|
-
#
|
332
|
-
# Relation values can be obtained in various ways, for example by invoking
|
333
|
-
# a relational operator on an existing relation. Relation literals are simply
|
334
|
-
# constructed as follows:
|
335
|
-
#
|
336
|
-
# Alf::Relation[
|
337
|
-
# # ... a comma list of ruby hashes ...
|
338
|
-
# ]
|
339
|
-
#
|
340
|
-
# See main Alf documentation about relational operators.
|
341
|
-
#
|
342
|
-
class Relation
|
343
|
-
include Iterator
|
344
|
-
|
345
|
-
require "alf/relation/class_methods"
|
346
|
-
require "alf/relation/instance_methods"
|
347
|
-
|
348
|
-
DEE = Relation.coerce([{}])
|
349
|
-
DUM = Relation.coerce([])
|
350
|
-
end # class Relation
|
351
|
-
|
352
|
-
# Implements a small LISP-like DSL on top of Alf.
|
353
|
-
#
|
354
|
-
# The lispy dialect is the functional one used in .alf files and in compiled
|
355
|
-
# expressions as below:
|
356
|
-
#
|
357
|
-
# Alf.lispy.compile do
|
358
|
-
# (restrict :suppliers, lambda{ city == 'London' })
|
359
|
-
# end
|
360
|
-
#
|
361
|
-
# The DSL this module provides is part of Alf's public API and won't be broken
|
362
|
-
# without a major version change. The module itself and its inclusion pre-
|
363
|
-
# conditions are not part of the DSL itself, thus not considered as part of
|
364
|
-
# the API, and may therefore evolve at any time. In other words, this module
|
365
|
-
# is not intended to be directly included by third-party classes.
|
366
|
-
#
|
367
|
-
module Lispy
|
368
|
-
require 'alf/lispy/instance_methods'
|
369
|
-
|
370
|
-
DUM = Relation::DUM
|
371
|
-
DEE = Relation::DEE
|
372
|
-
end # module Lispy
|
16
|
+
require 'alf/types'
|
17
|
+
require 'alf/tools'
|
18
|
+
require 'alf/environment'
|
19
|
+
require 'alf/iterator'
|
20
|
+
require 'alf/reader'
|
21
|
+
require 'alf/renderer'
|
22
|
+
require 'alf/operator'
|
23
|
+
require 'alf-shell/alf/shell'
|
24
|
+
require 'alf/aggregator'
|
25
|
+
require 'alf/relation'
|
26
|
+
require 'alf/lispy'
|
373
27
|
|
374
28
|
#
|
375
29
|
# Builds and returns a lispy engine on a specific environment.
|
@@ -394,4 +48,9 @@ module Alf
|
|
394
48
|
end
|
395
49
|
|
396
50
|
end # module Alf
|
397
|
-
|
51
|
+
|
52
|
+
require_relative "alf-engine/alf/engine"
|
53
|
+
require_relative "alf-sequel/alf/sequel"
|
54
|
+
require_relative 'alf-yaml/alf/yaml'
|
55
|
+
require_relative 'alf-csv/alf/csv'
|
56
|
+
require_relative 'alf-logs/alf/logs'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
alf --env=$(_("shell/alf",__FILE__)) show rel
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
alf --env=$(_("shell/alf/alf.db",__FILE__)) show suppliers
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
alf $(_("shell/alf/alf_implicit.alf",__FILE__))
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
alf --text autonum suppliers -- unique_id
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
alf --text clip suppliers -- name city
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
alf --text clip suppliers --allbut -- name city
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -4,7 +4,7 @@
|
|
4
4
|
| P1 | Nut | Red | 12.000 | London | 0 |
|
5
5
|
| P5 | Cam | Blue | 12.000 | Paris | 0 |
|
6
6
|
| P4 | Screw | Red | 14.000 | London | 2 |
|
7
|
-
| P2 | Bolt | Green | 17.000 | Paris | 3 |
|
8
7
|
| P3 | Screw | Blue | 17.000 | Oslo | 3 |
|
8
|
+
| P2 | Bolt | Green | 17.000 | Paris | 3 |
|
9
9
|
| P6 | Cog | Red | 19.000 | London | 5 |
|
10
10
|
+------+-------+--------+---------+--------+-------+
|
File without changes
|