Class: SocialFramework::RouteHelper::RouteUtils
- Inherits:
-
Object
- Object
- SocialFramework::RouteHelper::RouteUtils
- Defined in:
- app/helpers/social_framework/route_helper.rb
Overview
Contains the methods to match routes
Instance Method Summary collapse
-
#compare_routes(principal_route, secondary_route, principal_deviation = SocialFramework.principal_deviation, secondary_deviation = SocialFramework.secondary_deviation) ⇒ Object
- Compare the routes to verify if are compatible ====== Params:
principal_route Routewho gives a liftsecondary_routeRoutewho hitchhikeprincipal_deviationHashwith maximum deviation and mode of travel to principal routesecondary_deviation-
Hashwith maximum deviation and mode of travel to secondary route Returns Hash with information of compatibility and necessary distances.
- Compare the routes to verify if are compatible ====== Params:
Instance Method Details
#compare_routes(principal_route, secondary_route, principal_deviation = SocialFramework.principal_deviation, secondary_deviation = SocialFramework.secondary_deviation) ⇒ Object
Compare the routes to verify if are compatible
Params:
principal_route-
Routewho gives a lift secondary_route-
Routewho hitchhike principal_deviation-
Hashwith maximum deviation and mode of travel to principal route secondary_deviation-
Hashwith maximum deviation and mode of travel to secondary route
Returns Hash with information of compatibility and necessary distances
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 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 'app/helpers/social_framework/route_helper.rb', line 14 def compare_routes(principal_route, secondary_route, principal_deviation = SocialFramework.principal_deviation, secondary_deviation = SocialFramework.secondary_deviation) principal_accepted_deviation = principal_accepted_deviation(principal_route, secondary_route, principal_deviation[:deviation], principal_deviation[:mode]) result = {compatible: false, principal_route: {deviation: :none, distance: 0}, secondary_route: {deviation: :none, distance: 0}} if(principal_accepted_deviation[:accept] == :both) result[:compatible] = true result[:principal_route][:deviation] = :both result[:principal_route][:distance] = principal_accepted_deviation[:distance] else secondary_accepted_deviation = secondary_accepted_deviation(principal_route, secondary_route, secondary_deviation[:deviation], secondary_deviation[:mode]) principal_destiny = (principal_accepted_deviation[:accept] == :any or principal_accepted_deviation[:accept] == :destiny) principal_origin = (principal_accepted_deviation[:accept] == :any or principal_accepted_deviation[:accept] == :origin) secondary_any = (secondary_accepted_deviation[:accept] == :both or secondary_accepted_deviation[:accept] == :any) origin_lower_than_destiny = (secondary_any and (secondary_accepted_deviation[:distance_origin] < secondary_accepted_deviation[:distance_destiny])) secondary_origin = ((principal_destiny and secondary_accepted_deviation[:accept] == :origin) or (secondary_any and principal_destiny)) secondary_destiny = ((principal_origin and secondary_accepted_deviation[:accept] == :destiny) or (secondary_any and principal_origin)) if secondary_origin and secondary_destiny secondary_origin = origin_lower_than_destiny secondary_destiny = (not origin_lower_than_destiny) end if(secondary_origin) result[:compatible] = true result[:principal_route][:deviation] = :destiny result[:principal_route][:distance] = principal_accepted_deviation[:distance_destiny] result[:secondary_route][:deviation] = :origin result[:secondary_route][:distance] = secondary_accepted_deviation[:distance_origin] elsif(secondary_destiny) result[:compatible] = true result[:principal_route][:deviation] = :origin result[:principal_route][:distance] = principal_accepted_deviation[:distance_origin] result[:secondary_route][:deviation] = :destiny result[:secondary_route][:distance] = secondary_accepted_deviation[:distance_destiny] end end return result end |