Class: ActiveExport::Base

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

Direct Known Subclasses

Csv

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source_name, namespace, options = {}) ⇒ Base

Returns a new instance of Base.



10
11
12
13
14
15
16
17
18
# File 'lib/active_export/base.rb', line 10

def initialize(source_name, namespace, options = {})
  @source_name = source_name.to_sym
  @namespace = namespace.to_sym
  @config = ::ActiveExport.configuration
  @label_keys = options.has_key?(:label_keys) ? options.delete(:label_keys) : nil
  @eval_methods = options.has_key?(:eval_methods) ? options.delete(:eval_methods) : nil
  @label_prefix = options.has_key?(:label_prefix) ? options.delete(:label_prefix) : nil
  @options = options
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



9
10
11
# File 'lib/active_export/base.rb', line 9

def config
  @config
end

#eval_methodsObject

Returns the value of attribute eval_methods.



8
9
10
# File 'lib/active_export/base.rb', line 8

def eval_methods
  @eval_methods
end

#label_keysObject

Returns the value of attribute label_keys.



8
9
10
# File 'lib/active_export/base.rb', line 8

def label_keys
  @label_keys
end

#label_prefixObject

Returns the value of attribute label_prefix.



8
9
10
# File 'lib/active_export/base.rb', line 8

def label_prefix
  @label_prefix
end

#namespaceObject

Returns the value of attribute namespace.



8
9
10
# File 'lib/active_export/base.rb', line 8

def namespace
  @namespace
end

#optionsObject

Returns the value of attribute options.



8
9
10
# File 'lib/active_export/base.rb', line 8

def options
  @options
end

#sourceObject

Returns the value of attribute source.



8
9
10
# File 'lib/active_export/base.rb', line 8

def source
  @source
end

#source_nameObject

Returns the value of attribute source_name.



8
9
10
# File 'lib/active_export/base.rb', line 8

def source_name
  @source_name
end

Class Method Details

.build_label_keys_and_eval_methods(methods) ⇒ Array

Parameters:

Returns:



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/active_export/base.rb', line 33

def build_label_keys_and_eval_methods(methods)
  label_keys = []
  eval_methods = []
  methods.each do |f|
    if f.is_a?(Hash)
      label_keys << f.keys.first
      eval_methods << f.values.first
    else
      label_keys << f
      eval_methods << f
    end
  end
  return label_keys, eval_methods
end

.translate(key, scope = []) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/active_export/base.rb', line 21

def translate(key, scope = [])
  defaults = [
    :"active_export.#{scope.join('.')}.#{key.to_s.gsub('.', '_')}",
    :"activerecord.attributes.#{key}",
    :"activemodel.attributes.#{key}",
    key.to_s.gsub('.', '_').humanize
  ]
  I18n.translate(defaults.shift, default: defaults)
end

Instance Method Details

#build_label_keys_and_eval_methods!Object



87
88
89
# File 'lib/active_export/base.rb', line 87

def build_label_keys_and_eval_methods!
  @label_keys, @eval_methods = self.class.build_label_keys_and_eval_methods(source[:methods])
end

#convert(value) ⇒ Object

TODO:

refactor me

Convert value for export string



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/active_export/base.rb', line 51

def convert(value)
  if value.nil?
    translate(:nil, config.default_value_label_scope)
  elsif value == ''
    translate(:blank, config.default_value_label_scope)
  elsif value == true
    translate(:true, config.default_value_label_scope)
  elsif value == false
    translate(:false, config.default_value_label_scope)
  else
    value.to_s
  end
end

#default_scopeObject



79
80
81
# File 'lib/active_export/base.rb', line 79

def default_scope
  [self.source_name, self.namespace]
end

#key_name(key) ⇒ Object



83
84
85
# File 'lib/active_export/base.rb', line 83

def key_name(key)
  key.to_s.include?(".") ? key.to_s : "#{label_prefix}.#{key}"
end

#translate(key, scope = nil) ⇒ Object



98
99
100
# File 'lib/active_export/base.rb', line 98

def translate(key, scope = nil)
  self.class.translate(key, scope || default_scope)
end