Class: RubyAMF::MappingSet
- Inherits:
-
RocketAMF::MappingSet
- Object
- RocketAMF::MappingSet
- RubyAMF::MappingSet
- Defined in:
- lib/rubyamf/class_mapping.rb
Overview
Advanced mapping container to support various serialization customization settings. Used by RubyAMF class mapper to store advanced mappings.
Defined Under Namespace
Classes: Mapping
Constant Summary collapse
- SERIALIZATION_PROPS =
[:except, :only, :methods, :include, :ignore_fields]
Instance Method Summary collapse
-
#get_as_class_name(ruby_class_name) ⇒ Object
Returns the actionscript class name mapped to the given ruby class name.
-
#get_ruby_class_name(as_class_name) ⇒ Object
Returns the ruby class name mapped to the given actionscript class name.
-
#initialize ⇒ MappingSet
constructor
A new instance of MappingSet.
-
#map(params) ⇒ Object
Map a given actionscript class to a ruby class.
-
#serialization_config(ruby_class_name, scope = nil) ⇒ Object
Returns the property serialization config for the given ruby class name and scope.
Constructor Details
#initialize ⇒ MappingSet
Returns a new instance of MappingSet.
16 17 18 19 20 |
# File 'lib/rubyamf/class_mapping.rb', line 16 def initialize @as_mappings = {} @ruby_mappings = {} map_defaults end |
Instance Method Details
#get_as_class_name(ruby_class_name) ⇒ Object
Returns the actionscript class name mapped to the given ruby class name. Returns nil if not found.
69 70 71 72 |
# File 'lib/rubyamf/class_mapping.rb', line 69 def get_as_class_name ruby_class_name mapping = @ruby_mappings[ruby_class_name] return mapping.nil? ? nil : mapping.as end |
#get_ruby_class_name(as_class_name) ⇒ Object
Returns the ruby class name mapped to the given actionscript class name. Returns nil if not found.
76 77 78 79 |
# File 'lib/rubyamf/class_mapping.rb', line 76 def get_ruby_class_name as_class_name mapping = @as_mappings[as_class_name] return mapping.nil? ? nil : mapping.ruby end |
#map(params) ⇒ Object
Map a given actionscript class to a ruby class. You can also control which properties are serialized using :except, :only, :methods, :include for relations, and :ignore_fields for skipping certain fields during deserialization.
Use fully qualified names for both.
Examples:
m.map :as => 'com.example.Date', :ruby => 'Example::Date'
m.map :flash => 'User', :ruby => 'User', :only => 'username'
m.map :flash => 'User', :ruby => 'User', :scope => :other, :include => [:courses, :teacher]
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rubyamf/class_mapping.rb', line 34 def map params # Extract and validate ruby and AS class names ruby_class = params[:ruby] as_class = params[:as] || params[:flash] || params[:actionscript] raise "Must pass ruby class name under :ruby key" unless ruby_class raise "Must pass as class name under :flash, :as, or :actionscript key" unless as_class # Get mapping if it already exists mapping = @as_mappings[as_class] || @ruby_mappings[ruby_class] || Mapping.new mapping.ruby = ruby_class mapping.as = as_class @as_mappings[as_class] = mapping @ruby_mappings[ruby_class] = mapping # If they tried to configure the serialization props, store that too under the proper scope serialization_config = {} params.each {|k,v| serialization_config[k] = v if SERIALIZATION_PROPS.include?(k)} if serialization_config.length > 0 # Determine scope scope = nil if params[:default_scope] scope = mapping.default_scope = params[:default_scope] elsif params[:scope] scope = params[:scope] else scope = mapping.default_scope end # Add config to scope hash mapping.scopes[scope.to_sym] = serialization_config end end |
#serialization_config(ruby_class_name, scope = nil) ⇒ Object
Returns the property serialization config for the given ruby class name and scope. If scope is nil, it uses the default scope.
83 84 85 86 87 88 89 90 91 |
# File 'lib/rubyamf/class_mapping.rb', line 83 def serialization_config ruby_class_name, scope = nil mapping = @ruby_mappings[ruby_class_name] if mapping.nil? nil else scope ||= mapping.default_scope mapping.scopes[scope.to_sym] end end |