Class: React::Generators::ComponentGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/react/component_generator.rb

Constant Summary collapse

REACT_PROP_TYPES =
{
  "node" =>        'React.PropTypes.node',
  "bool" =>        'React.PropTypes.bool',
  "boolean" =>     'React.PropTypes.bool',
  "string" =>      'React.PropTypes.string',
  "number" =>      'React.PropTypes.number',
  "object" =>      'React.PropTypes.object',
  "array" =>       'React.PropTypes.array',
  "shape" =>       'React.PropTypes.shape({})',
  "element" =>     'React.PropTypes.element',
  "func" =>        'React.PropTypes.func',
  "function" =>    'React.PropTypes.func',
  "any" =>         'React.PropTypes.any',

  "instanceOf" => ->(type) {
    'React.PropTypes.instanceOf(%s)' % type.to_s.camelize
  },

  "oneOf" => ->(*options) {
    enums = options.map{|k| "'#{k.to_s}'"}.join(',')
    'React.PropTypes.oneOf([%s])' % enums
  },

  "oneOfType" => ->(*options) {
    types = options.map{|k| "#{lookup(k.to_s, k.to_s)}" }.join(',')
    'React.PropTypes.oneOfType([%s])' % types
  },
}

Instance Method Summary collapse

Instance Method Details

#create_component_fileObject



82
83
84
85
86
# File 'lib/generators/react/component_generator.rb', line 82

def create_component_file
  extension = "js.jsx"
  file_path = File.join('app/assets/javascripts/components', "#{file_name}.#{extension}")
  template("component.#{extension}", file_path)
end