lib/routes.js.coffee in js-routes-1.4.5 vs lib/routes.js.coffee in js-routes-1.4.6
- old
+ new
@@ -27,10 +27,11 @@
ParameterMissing.__proto__ = Error
NodeTypes = NODE_TYPES
DeprecatedGlobbingBehavior = DEPRECATED_GLOBBING_BEHAVIOR
SpecialOptionsKey = SPECIAL_OPTIONS_KEY
+UriEncoderSegmentRegex = /[^a-zA-Z0-9\-\._~!\$&'\(\)\*\+,;=:@]/g # this is ActionDispatch::Journey::Router::Utils::UriEncoder::SEGMENT
ReservedOptions = [
'anchor'
'trailing_slash'
'subdomain'
@@ -210,11 +211,11 @@
"#{left_part}#{right_part}"
when NodeTypes.SYMBOL
value = parameters[left]
delete parameters[left]
if value?
- return encodeURIComponent(@path_identifier(value))
+ return @encode_segment(@path_identifier(value))
if optional
"" # missing parameter
else
throw new ParameterMissing("Route parameter missing: #{left}")
#
@@ -223,10 +224,11 @@
#
# when NodeTypes.OR:
else
throw new Error("Unknown Rails node type")
+ encode_segment: (segment) -> segment.replace(UriEncoderSegmentRegex, (str) -> encodeURIComponent(str))
is_optional_node: (node) -> @indexOf([NodeTypes.STAR, NodeTypes.SYMBOL, NodeTypes.CAT], node) >= 0
#
# This method build spec for route
@@ -399,10 +401,10 @@
set: (value) ->
routes.default_serializer = (object, prefix) ->
Utils.default_serializer(object, prefix)
Utils.namespace(root, NAMESPACE, routes)
-
+
# Set up Routes appropriately for the environment.
if typeof define is "function" and define.amd
# AMD
define [], -> Utils.make()
else