diff --git a/lib/plotrb/base.rb b/lib/plotrb/base.rb index cc6e90d..be9a77f 100644 --- a/lib/plotrb/base.rb +++ b/lib/plotrb/base.rb @@ -141,6 +141,7 @@ def define_multi_val_attributes(*methods) end def classify(name, format=nil) + return unless name klass = name.to_s.split('_').collect(&:capitalize).join if format == :json klass[0].downcase + klass[1..-1] @@ -178,6 +179,7 @@ def collect_attributes end def classify(name, format=nil) + return unless name klass = name.to_s.split('_').collect(&:capitalize).join if format == :json klass[0].downcase + klass[1..-1] diff --git a/lib/plotrb/marks.rb b/lib/plotrb/marks.rb index 7c39d76..a8aa72d 100644 --- a/lib/plotrb/marks.rb +++ b/lib/plotrb/marks.rb @@ -446,7 +446,7 @@ def get_full_field_ref(field) elsif extra_fields.include?(field.to_s.split('.')[0].to_sym) classify(field, :json) else - "data.#{field}" + "data.#{classify(field, :json)}" end end diff --git a/lib/plotrb/scales.rb b/lib/plotrb/scales.rb index 5ef79a9..d3955d0 100644 --- a/lib/plotrb/scales.rb +++ b/lib/plotrb/scales.rb @@ -258,6 +258,7 @@ def process_domain_max def get_data_ref_from_string(ref) source, field = ref.split('.', 2) + field = classify(field, :json) data = ::Plotrb::Kernel.find_data(source) if field.nil? if data && data.values.is_a?(Array) @@ -278,9 +279,9 @@ def get_data_ref_from_string(ref) def get_data_ref_from_data(data) if data.values.is_a?(Array) - ::Plotrb::Scale::DataRef.new.data(data.name).field('data') + ::Plotrb::Scale::DataRef.new.data(classify(data.name)).field('data') else - ::Plotrb::Scale::DataRef.new.data(data.name).field('index') + ::Plotrb::Scale::DataRef.new.data(classify(data.name)).field('index') end end diff --git a/spec/plotrb/base_spec.rb b/spec/plotrb/base_spec.rb index acaf63b..6ec9e61 100644 --- a/spec/plotrb/base_spec.rb +++ b/spec/plotrb/base_spec.rb @@ -282,6 +282,11 @@ class BazClass foo.classify('foo_bar_baz', :json).should == 'fooBarBaz' end + it 'classifies zero-length and nil string correctly' do + foo.classify('').should == '' + foo.classify(nil).should == nil + end + end describe 'Hash' do diff --git a/spec/plotrb/scales_spec.rb b/spec/plotrb/scales_spec.rb index e28a424..d1e8695 100644 --- a/spec/plotrb/scales_spec.rb +++ b/spec/plotrb/scales_spec.rb @@ -40,7 +40,7 @@ ::Plotrb::Data.any_instance.stub(:extra_fields).and_return([]) subject.send(:process_domain) subject.domain.data.should == 'some_data' - subject.domain.field.should == 'data.some_field' + subject.domain.field.should == 'data.someField' end it 'defaults field to index if not provided' do