Class: Jcsv::Dimensions

Inherits:
Object
  • Object
show all
Defined in:
lib/dimensions.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dimensions_names) ⇒ Dimensions


dimensions is an array of column names that will be used as dimensions




178
179
180
181
182
183
184
185
186
187
188
# File 'lib/dimensions.rb', line 178

def initialize(dimensions_names)

  @dimensions_names = dimensions_names
  @rank = @dimensions_names.size
  @dimensions = Hash.new
  
  @dimensions_names.each do |dim_name|
    @dimensions[dim_name] = Dimension.new(dim_name)
  end

end

Instance Attribute Details

#dimensionsObject (readonly)

Returns the value of attribute dimensions.



171
172
173
# File 'lib/dimensions.rb', line 171

def dimensions
  @dimensions
end

#dimensions_namesObject (readonly)

Returns the value of attribute dimensions_names.



170
171
172
# File 'lib/dimensions.rb', line 170

def dimensions_names
  @dimensions_names
end

#rankObject (readonly)

Returns the value of attribute rank.



172
173
174
# File 'lib/dimensions.rb', line 172

def rank
  @rank
end

Instance Method Details

#[](name) ⇒ Object





258
259
260
# File 'lib/dimensions.rb', line 258

def[](name)
  @dimensions[name]
end

#[]=(dim_name, label) ⇒ Object





242
243
244
# File 'lib/dimensions.rb', line 242

def[]=(dim_name, label)
  add_label(dim_name, label)
end

#add_label(dim_name, label) ⇒ Object





226
227
228
229
230
231
232
233
234
235
236
# File 'lib/dimensions.rb', line 226

def add_label(dim_name, label)

  should_reset = @dimensions[dim_name].add_label(label)
  @dimensions[dim_name].reset if should_reset
  
  (@dimensions_names.index(dim_name)...@dimensions_names.size).each do |i|
    name = @dimensions_names[i]
    @dimensions[name].reset
  end if should_reset

end

#dimension(name) ⇒ Object





250
251
252
# File 'lib/dimensions.rb', line 250

def dimension(name)
  @dimensions[name]
end

#eachObject





266
267
268
269
270
271
272
# File 'lib/dimensions.rb', line 266

def each
  
  @dimensions_names.each do |name|
    yield @dimensions[name]
  end
  
end

#labels(dim_name) ⇒ Object





204
205
206
# File 'lib/dimensions.rb', line 204

def labels(dim_name)
  @dimensions[dim_name].labels
end

#length(dim_name) ⇒ Object Also known as: size





194
195
196
# File 'lib/dimensions.rb', line 194

def length(dim_name)
  @dimensions[dim_name].labels.size
end

#shapeObject





212
213
214
215
216
217
218
219
220
# File 'lib/dimensions.rb', line 212

def shape
  
  sh = Array.new
  @dimensions_names.each do |dim_name|
    sh << length(dim_name)
  end
  sh
  
end