Module: Cascading::Operations
- Included in:
- Aggregations, Assembly
- Defined in:
- lib/cascading/operations.rb
Overview
The Cascading::Operations module is deprecated. The original idea from long ago is that it would be useful to mixin operator wrappers to places other than Cascading::Assembly, but this is not true. Instead, put Eaches in Cascading::Assembly, Everies in Cascading::Aggregations, and any more generally useful utility code directly in the Cascading module (cascading/cascading.rb).
Further, the entire *args pattern should be deprecated as it leads to functions that can only be understood by reading their code. Instead, idiomatic Ruby (positional required params and a params hash for optional args) should be used. See Cascading::Assembly#set_value for an example.
Instance Method Summary collapse
- #aggregator_function(args, aggregator_klass) ⇒ Object
- #coerce_to_java(v) ⇒ Object
- #date_formatter(fields, format, timezone = nil) ⇒ Object
- #date_parser(field, format) ⇒ Object
- #expression_filter(*args) ⇒ Object
- #expression_function(*args) ⇒ Object
- #field_joiner(*args) ⇒ Object
- #first_function(*args) ⇒ Object
- #identity ⇒ Object
- #insert_function(*args) ⇒ Object
- #last_function(*args) ⇒ Object
- #max_function(*args) ⇒ Object
- #min_function(*args) ⇒ Object
- #regex_filter(*args) ⇒ Object
- #regex_generator(*args) ⇒ Object
- #regex_parser(*args) ⇒ Object
- #regex_replace(*args) ⇒ Object
- #regex_split_generator(*args) ⇒ Object
- #regex_splitter(*args) ⇒ Object
- #to_java_comparable_array(arr) ⇒ Object
Instance Method Details
#aggregator_function(args, aggregator_klass) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/cascading/operations.rb', line 18 def aggregator_function(args, aggregator_klass) = args. ignore = [:ignore] parameters = [Cascading.fields(args), ignore].compact aggregator_klass.new(*parameters) end |
#coerce_to_java(v) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/cascading/operations.rb', line 121 def coerce_to_java(v) case v when Fixnum java.lang.Long.new(v) when Float java.lang.Double.new(v) when NilClass nil else java.lang.String.new(v.to_s) end end |
#date_formatter(fields, format, timezone = nil) ⇒ Object
163 164 165 166 167 168 |
# File 'lib/cascading/operations.rb', line 163 def date_formatter(fields, format, timezone=nil) fields = fields(fields) timezone = Java::JavaUtil::TimeZone.get_time_zone(timezone) if timezone arguments = [fields, format, timezone].compact Java::CascadingOperationText::DateFormatter.new(*arguments) end |
#date_parser(field, format) ⇒ Object
158 159 160 161 |
# File 'lib/cascading/operations.rb', line 158 def date_parser(field, format) fields = fields(field) Java::CascadingOperationText::DateParser.new(fields, format) end |
#expression_filter(*args) ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/cascading/operations.rb', line 134 def expression_filter(*args) = args. expression = (args[0] || [:expression]).to_s parameters = [:parameters] parameter_names = [] parameter_types = [] if parameters.is_a? ::Hash parameters.each do |name, type| parameter_names << name parameter_types << type end parameter_names = parameter_names.to_java(java.lang.String) parameter_types = parameter_types.to_java(java.lang.Class) arguments = [expression, parameter_names, parameter_types].compact elsif !parameters.nil? arguments = [expression, parameters.java_class].compact else arguments = [expression, java.lang.String.java_class].compact end Java::CascadingOperationExpression::ExpressionFilter.new(*arguments) end |
#expression_function(*args) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/cascading/operations.rb', line 80 def expression_function(*args) = args. fields = Cascading.fields(args) expression = [:expression].to_s parameters = [:parameters] parameter_names = [] parameter_types = [] if parameters.is_a? ::Hash parameters.each do |name, type| parameter_names << name parameter_types << type end parameter_names = parameter_names.to_java(java.lang.String) parameter_types = parameter_types.to_java(java.lang.Class) arguments = [fields, expression, parameter_names, parameter_types].compact elsif !parameters.nil? arguments = [fields, expression, parameters.java_class].compact else arguments = [fields, expression, java.lang.String.java_class].compact end Java::CascadingOperationExpression::ExpressionFunction.new(*arguments) end |
#field_joiner(*args) ⇒ Object
192 193 194 195 196 197 198 199 |
# File 'lib/cascading/operations.rb', line 192 def field_joiner(*args) = args. delimiter = [:delimiter] || ',' fields = fields([:into]) parameters = [fields, delimiter].compact Java::CascadingOperationText::FieldJoiner.new(*parameters) end |
#first_function(*args) ⇒ Object
26 27 28 |
# File 'lib/cascading/operations.rb', line 26 def first_function(*args) aggregator_function(args, Java::CascadingOperationAggregator::First) end |
#identity ⇒ Object
14 15 16 |
# File 'lib/cascading/operations.rb', line 14 def identity Java::CascadingOperation::Identity.new end |
#insert_function(*args) ⇒ Object
106 107 108 109 110 111 112 113 |
# File 'lib/cascading/operations.rb', line 106 def insert_function(*args) =args. fields = Cascading.fields(args) values = [:values] parameters = [fields, to_java_comparable_array(values)].compact Java::CascadingOperation::Insert.new(*parameters) end |
#last_function(*args) ⇒ Object
38 39 40 |
# File 'lib/cascading/operations.rb', line 38 def last_function(*args) aggregator_function(args, Java::CascadingOperationAggregator::Last) end |
#max_function(*args) ⇒ Object
34 35 36 |
# File 'lib/cascading/operations.rb', line 34 def max_function(*args) aggregator_function(args, Java::CascadingOperationAggregator::Max) end |
#min_function(*args) ⇒ Object
30 31 32 |
# File 'lib/cascading/operations.rb', line 30 def min_function(*args) aggregator_function(args, Java::CascadingOperationAggregator::Min) end |
#regex_filter(*args) ⇒ Object
170 171 172 173 174 175 176 177 178 |
# File 'lib/cascading/operations.rb', line 170 def regex_filter(*args) = args. pattern = args[0] remove_match = [:remove_match] match_each_element = [:match_each_element] parameters = [pattern.to_s, remove_match, match_each_element].compact Java::CascadingOperationRegex::RegexFilter.new(*parameters) end |
#regex_generator(*args) ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/cascading/operations.rb', line 71 def regex_generator(*args) = args. fields = Cascading.fields(args) pattern = [:pattern].to_s parameters = [fields, pattern].compact Java::CascadingOperationRegex::RegexGenerator.new(*parameters) end |
#regex_parser(*args) ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/cascading/operations.rb', line 42 def regex_parser(*args) = args. pattern = args[0].to_s fields = Cascading.fields([:fields]) groups = [:groups].to_java(:int) if [:groups] parameters = [fields, pattern, groups].compact Java::CascadingOperationRegex::RegexParser.new(*parameters) end |
#regex_replace(*args) ⇒ Object
180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/cascading/operations.rb', line 180 def regex_replace(*args) = args. fields = fields(args[0]) pattern = args[1] replacement = args[2] replace_all = [:replace_all] parameters = [fields, pattern.to_s, replacement.to_s, replace_all].compact Java::CascadingOperationRegex::RegexReplace.new(*parameters) end |
#regex_split_generator(*args) ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/cascading/operations.rb', line 62 def regex_split_generator(*args) = args. fields = Cascading.fields(args) pattern = [:pattern].to_s parameters = [fields, pattern].compact Java::CascadingOperationRegex::RegexSplitGenerator.new(*parameters) end |
#regex_splitter(*args) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/cascading/operations.rb', line 53 def regex_splitter(*args) = args. fields = Cascading.fields(args) pattern = [:pattern].to_s parameters = [fields, pattern].compact Java::CascadingOperationRegex::RegexSplitter.new(*parameters) end |
#to_java_comparable_array(arr) ⇒ Object
115 116 117 118 119 |
# File 'lib/cascading/operations.rb', line 115 def to_java_comparable_array(arr) (arr.map do |v| coerce_to_java(v) end).to_java(java.lang.Comparable) end |