{
"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
},
}