Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
79941b52
Commit
79941b52
authored
Jan 29, 2013
by
Angie Byron
Browse files
Issue
#1894508
by linclark, damiankloip, scor: Update symfony/serializer.
parent
b261004a
Changes
41
Hide whitespace changes
Inline
Side-by-side
core/composer.json
View file @
79941b52
...
...
@@ -9,7 +9,7 @@
"symfony/http-foundation"
:
"<2.4"
,
"symfony/http-kernel"
:
"<2.4"
,
"symfony/routing"
:
"<2.4"
,
"symfony/serializer"
:
"
<2.4
"
,
"symfony/serializer"
:
"
2.2.0-BETA2
"
,
"symfony/validator"
:
"<2.4"
,
"symfony/yaml"
:
"<2.4"
,
"twig/twig"
:
"1.*@stable"
,
...
...
core/composer.lock
View file @
79941b52
{
"hash": "
fb8595c6fbaaa5bf51bf7efeb67d73bc
",
"hash": "
c087560024f328e26e2ed57c9b2aa703
",
"packages": [
{
"name": "doctrine/common",
...
...
@@ -25,7 +25,6 @@
"dev-master": "2.3.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Doctrine\\Common": "lib/"
...
...
@@ -98,7 +97,6 @@
},
"time": "2013-01-13 01:20:04",
"type": "library",
"installation-source": "source",
"autoload": {
"psr-0": {
"EasyRdf_": "lib/"
...
...
@@ -152,7 +150,6 @@
"dev-master": "3.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Guzzle\\Common": ""
...
...
@@ -200,7 +197,6 @@
"dev-master": "3.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Guzzle\\Http": ""
...
...
@@ -252,7 +248,6 @@
"dev-master": "3.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Guzzle\\Parser": ""
...
...
@@ -298,7 +293,6 @@
"dev-master": "3.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Guzzle\\Stream": ""
...
...
@@ -360,7 +354,6 @@
"dev-master": "1.1-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Assetic": "src/"
...
...
@@ -412,7 +405,6 @@
"dev-master": "1.0-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Cmf\\Component\\Routing": ""
...
...
@@ -463,7 +455,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\ClassLoader\\": ""
...
...
@@ -519,7 +510,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\DependencyInjection\\": ""
...
...
@@ -574,7 +564,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\EventDispatcher\\": ""
...
...
@@ -622,7 +611,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\HttpFoundation\\": ""
...
...
@@ -694,7 +682,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\HttpKernel\\": ""
...
...
@@ -737,7 +724,6 @@
},
"time": "2012-12-06 10:00:55",
"type": "library",
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Process": ""
...
...
@@ -796,7 +782,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Routing\\": ""
...
...
@@ -821,30 +806,29 @@
},
{
"name": "symfony/serializer",
"version": "
dev-master
",
"version": "
v2.2.0-BETA2
",
"target-dir": "Symfony/Component/Serializer",
"source": {
"type": "git",
"url": "https://github.com/symfony/Serializer",
"reference": "
ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0
"
"reference": "
v2.2.0-BETA2
"
},
"dist": {
"type": "zip",
"url": "https://github.com/symfony/Serializer/archive/
ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0
.zip",
"reference": "
ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0
",
"url": "https://github.com/symfony/Serializer/archive/
v2.2.0-BETA2
.zip",
"reference": "
v2.2.0-BETA2
",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "201
2-12
-19 07:
09:49
",
"time": "201
3-01
-19 07:
50:02
",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Serializer\\": ""
...
...
@@ -900,7 +884,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Translation\\": ""
...
...
@@ -961,7 +944,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Validator\\": ""
...
...
@@ -1009,7 +991,6 @@
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Yaml\\": ""
...
...
@@ -1056,7 +1037,6 @@
"dev-master": "1.11-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Twig_": "lib/"
...
...
@@ -1089,6 +1069,7 @@
],
"minimum-stability": "dev",
"stability-flags": {
"symfony/serializer": 10,
"twig/twig": 0,
"doctrine/common": 0,
"guzzle/http": 0,
...
...
core/lib/Drupal/Core/Serialization/ComplexDataNormalizer.php
View file @
79941b52
...
...
@@ -32,7 +32,7 @@ class ComplexDataNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public
function
normalize
(
$object
,
$format
=
NULL
)
{
public
function
normalize
(
$object
,
$format
=
NULL
,
array
$context
=
array
()
)
{
$attributes
=
array
();
foreach
(
$object
as
$name
=>
$field
)
{
$attributes
[
$name
]
=
$this
->
serializer
->
normalize
(
$field
,
$format
);
...
...
core/lib/Drupal/Core/Serialization/ListNormalizer.php
View file @
79941b52
...
...
@@ -31,7 +31,7 @@ class ListNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public
function
normalize
(
$object
,
$format
=
NULL
)
{
public
function
normalize
(
$object
,
$format
=
NULL
,
array
$context
=
array
()
)
{
$attributes
=
array
();
foreach
(
$object
as
$fieldItem
)
{
$attributes
[]
=
$this
->
serializer
->
normalize
(
$fieldItem
,
$format
);
...
...
core/lib/Drupal/Core/Serialization/TypedDataNormalizer.php
View file @
79941b52
...
...
@@ -25,7 +25,7 @@ class TypedDataNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public
function
normalize
(
$object
,
$format
=
NULL
)
{
public
function
normalize
(
$object
,
$format
=
NULL
,
array
$context
=
array
()
)
{
return
$object
->
getValue
();
}
...
...
core/lib/Drupal/Core/Serialization/XmlEncoder.php
View file @
79941b52
...
...
@@ -44,9 +44,9 @@ public function __construct() {
/**
* Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::encode().
*/
public
function
encode
(
$data
,
$format
){
$normalized
=
$this
->
serializer
->
normalize
(
$data
,
$format
);
return
$this
->
baseEncoder
->
encode
(
$normalized
,
$format
);
public
function
encode
(
$data
,
$format
,
array
$context
=
array
()
){
$normalized
=
$this
->
serializer
->
normalize
(
$data
,
$format
,
$context
);
return
$this
->
baseEncoder
->
encode
(
$normalized
,
$format
,
$context
);
}
/**
...
...
@@ -59,8 +59,8 @@ public function supportsEncoding($format) {
/**
* Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::decode().
*/
public
function
decode
(
$data
,
$format
){
return
$this
->
baseEncoder
->
decode
(
$data
,
$format
);
public
function
decode
(
$data
,
$format
,
array
$context
=
array
()
){
return
$this
->
baseEncoder
->
decode
(
$data
,
$format
,
$context
);
}
/**
...
...
core/modules/jsonld/lib/Drupal/jsonld/JsonldEntityNormalizer.php
View file @
79941b52
...
...
@@ -27,7 +27,7 @@ class JsonldEntityNormalizer extends JsonldNormalizerBase implements Denormalize
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public
function
normalize
(
$entity
,
$format
=
NULL
)
{
public
function
normalize
(
$entity
,
$format
=
NULL
,
array
$context
=
array
()
)
{
$entity_wrapper
=
new
JsonldEntityWrapper
(
$entity
,
$format
,
$this
->
serializer
,
$this
->
siteSchemaManager
);
$attributes
=
$entity_wrapper
->
getProperties
();
...
...
@@ -43,7 +43,7 @@ public function normalize($entity, $format = NULL) {
*
* @throws \Symfony\Component\Serializer\Exception\UnexpectedValueException
*/
public
function
denormalize
(
$data
,
$class
,
$format
=
null
)
{
public
function
denormalize
(
$data
,
$class
,
$format
=
null
,
array
$context
=
array
()
)
{
if
(
!
isset
(
$data
[
'@type'
]))
{
throw
new
UnexpectedValueException
(
'JSON-LD @type parameter must be included.'
);
}
...
...
core/modules/jsonld/lib/Drupal/jsonld/JsonldEntityReferenceNormalizer.php
View file @
79941b52
...
...
@@ -30,7 +30,7 @@ class JsonldEntityReferenceNormalizer extends JsonldNormalizerBase implements De
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public
function
normalize
(
$object
,
$format
=
NULL
)
{
public
function
normalize
(
$object
,
$format
=
NULL
,
array
$context
=
array
()
)
{
// @todo If an $options parameter is added to the serialize signature, as
// requested in https://github.com/symfony/symfony/pull/4938, then instead
// of creating the array of properties, we could simply call normalize and
...
...
@@ -45,7 +45,7 @@ public function normalize($object, $format = NULL) {
/**
* Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize()
*/
public
function
denormalize
(
$data
,
$class
,
$format
=
null
)
{
public
function
denormalize
(
$data
,
$class
,
$format
=
null
,
array
$context
=
array
()
)
{
// @todo Support denormalization for Entity Reference.
return
array
();
}
...
...
core/modules/jsonld/lib/Drupal/jsonld/JsonldFieldItemNormalizer.php
View file @
79941b52
...
...
@@ -27,14 +27,14 @@ class JsonldFieldItemNormalizer extends JsonldNormalizerBase implements Denormal
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public
function
normalize
(
$object
,
$format
=
NULL
)
{
public
function
normalize
(
$object
,
$format
=
NULL
,
array
$context
=
array
()
)
{
return
$object
->
getPropertyValues
();
}
/**
* Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize()
*/
public
function
denormalize
(
$data
,
$class
,
$format
=
null
)
{
public
function
denormalize
(
$data
,
$class
,
$format
=
null
,
array
$context
=
array
()
)
{
// For most fields, the field items array should simply be returned as is.
return
$data
;
}
...
...
core/modules/jsonld/lib/Drupal/jsonld/JsonldRdfSchemaNormalizer.php
View file @
79941b52
...
...
@@ -25,7 +25,7 @@ class JsonldRdfSchemaNormalizer extends JsonldNormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public
function
normalize
(
$data
,
$format
=
NULL
)
{
public
function
normalize
(
$data
,
$format
=
NULL
,
array
$context
=
array
()
)
{
$normalized
=
array
();
$graph
=
$data
->
getGraph
();
...
...
core/modules/system/tests/modules/serialization_test/lib/Drupal/serialization_test/SerializationTestEncoder.php
View file @
79941b52
...
...
@@ -29,7 +29,7 @@ class SerializationTestEncoder implements EncoderInterface {
* @return string
* A string representation of $data in the requested format.
*/
public
function
encode
(
$data
,
$format
)
{
public
function
encode
(
$data
,
$format
,
array
$context
=
array
()
)
{
// @see Drupal\serialization_test\SerializationTestNormalizer::normalize().
return
'Normalized by '
.
$data
[
'normalized_by'
]
.
', Encoded by SerializationTestEncoder'
;
}
...
...
core/modules/system/tests/modules/serialization_test/lib/Drupal/serialization_test/SerializationTestNormalizer.php
View file @
79941b52
...
...
@@ -30,7 +30,7 @@ class SerializationTestNormalizer implements NormalizerInterface {
* An array containing a normalized representation of $object, appropriate
* for encoding to the requested format.
*/
public
function
normalize
(
$object
,
$format
=
NULL
)
{
public
function
normalize
(
$object
,
$format
=
NULL
,
array
$context
=
array
()
)
{
$normalized
=
(
array
)
$object
;
// Add identifying value that can be used to verify that the expected
// normalizer was invoked.
...
...
core/vendor/autoload.php
View file @
79941b52
...
...
@@ -4,4 +4,4 @@
require_once
__DIR__
.
'/composer'
.
'/autoload_real.php'
;
return
ComposerAutoloaderInit
b72eabc903127a0c876d43163fd09a25
::
getLoader
();
return
ComposerAutoloaderInit
4166b4dc5e0c1c9d89ac8e8f9eefcd74
::
getLoader
();
core/vendor/composer/ClassLoader.php
View file @
79941b52
...
...
@@ -75,30 +75,63 @@ public function addClassMap(array $classMap)
}
/**
* Registers a set of classes
* Registers a set of classes
, merging with any others previously set.
*
* @param string $prefix The classes prefix
* @param array|string $paths The location(s) of the classes
* @param string $prefix The classes prefix
* @param array|string $paths The location(s) of the classes
* @param bool $prepend Prepend the location(s)
*/
public
function
add
(
$prefix
,
$paths
)
public
function
add
(
$prefix
,
$paths
,
$prepend
=
false
)
{
if
(
!
$prefix
)
{
foreach
((
array
)
$paths
as
$path
)
{
$this
->
fallbackDirs
[]
=
$path
;
if
(
$prepend
)
{
$this
->
fallbackDirs
=
array_merge
(
(
array
)
$paths
,
$this
->
fallbackDirs
);
}
else
{
$this
->
fallbackDirs
=
array_merge
(
$this
->
fallbackDirs
,
(
array
)
$paths
);
}
return
;
}
if
(
isset
(
$this
->
prefixes
[
$prefix
]))
{
if
(
!
isset
(
$this
->
prefixes
[
$prefix
]))
{
$this
->
prefixes
[
$prefix
]
=
(
array
)
$paths
;
return
;
}
if
(
$prepend
)
{
$this
->
prefixes
[
$prefix
]
=
array_merge
(
(
array
)
$paths
,
$this
->
prefixes
[
$prefix
]
);
}
else
{
$this
->
prefixes
[
$prefix
]
=
array_merge
(
$this
->
prefixes
[
$prefix
],
(
array
)
$paths
);
}
else
{
$this
->
prefixes
[
$prefix
]
=
(
array
)
$paths
;
}
}
/**
* Registers a set of classes, replacing any others previously set.
*
* @param string $prefix The classes prefix
* @param array|string $paths The location(s) of the classes
*/
public
function
set
(
$prefix
,
$paths
)
{
if
(
!
$prefix
)
{
$this
->
fallbackDirs
=
(
array
)
$paths
;
return
;
}
$this
->
prefixes
[
$prefix
]
=
(
array
)
$paths
;
}
/**
* Turns on searching the include path for class files.
*
...
...
core/vendor/composer/autoload_real.php
View file @
79941b52
...
...
@@ -2,7 +2,7 @@
// autoload_real.php generated by Composer
class
ComposerAutoloaderInit
b72eabc903127a0c876d43163fd09a25
class
ComposerAutoloaderInit
4166b4dc5e0c1c9d89ac8e8f9eefcd74
{
private
static
$loader
;
...
...
@@ -19,9 +19,9 @@ public static function getLoader()
return
self
::
$loader
;
}
spl_autoload_register
(
array
(
'ComposerAutoloaderInit
b72eabc903127a0c876d43163fd09a25
'
,
'loadClassLoader'
));
spl_autoload_register
(
array
(
'ComposerAutoloaderInit
4166b4dc5e0c1c9d89ac8e8f9eefcd74
'
,
'loadClassLoader'
));
self
::
$loader
=
$loader
=
new
\
Composer\Autoload\ClassLoader
();
spl_autoload_unregister
(
array
(
'ComposerAutoloaderInit
b72eabc903127a0c876d43163fd09a25
'
,
'loadClassLoader'
));
spl_autoload_unregister
(
array
(
'ComposerAutoloaderInit
4166b4dc5e0c1c9d89ac8e8f9eefcd74
'
,
'loadClassLoader'
));
$vendorDir
=
dirname
(
__DIR__
);
$baseDir
=
dirname
(
$vendorDir
);
...
...
@@ -36,7 +36,7 @@ public static function getLoader()
$loader
->
addClassMap
(
$classMap
);
}
$loader
->
register
();
$loader
->
register
(
true
);
return
$loader
;
}
...
...
core/vendor/composer/installed.json
View file @
79941b52
...
...
@@ -575,55 +575,6 @@
"description"
:
"Symfony Routing Component"
,
"homepage"
:
"http://symfony.com"
},
{
"name"
:
"symfony/serializer"
,
"version"
:
"dev-master"
,
"version_normalized"
:
"9999999-dev"
,
"target-dir"
:
"Symfony/Component/Serializer"
,
"source"
:
{
"type"
:
"git"
,
"url"
:
"https://github.com/symfony/Serializer"
,
"reference"
:
"ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0"
},
"dist"
:
{
"type"
:
"zip"
,
"url"
:
"https://github.com/symfony/Serializer/archive/ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0.zip"
,
"reference"
:
"ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0"
,
"shasum"
:
""
},
"require"
:
{
"php"
:
">=5.3.3"
},
"time"
:
"2012-12-19 07:09:49"
,
"type"
:
"library"
,
"extra"
:
{
"branch-alias"
:
{
"dev-master"
:
"2.2-dev"
}
},
"installation-source"
:
"source"
,
"autoload"
:
{
"psr-0"
:
{
"Symfony\\Component\\Serializer\\"
:
""
}
},
"notification-url"
:
"https://packagist.org/downloads/"
,
"license"
:
[
"MIT"
],
"authors"
:
[
{
"name"
:
"Fabien Potencier"
,
"email"
:
"fabien@symfony.com"
},
{
"name"
:
"Symfony Community"
,
"homepage"
:
"http://symfony.com/contributors"
}
],
"description"
:
"Symfony Serializer Component"
,
"homepage"
:
"http://symfony.com"
},
{
"name"
:
"symfony/yaml"
,
"version"
:
"dev-master"
,
...
...
@@ -1099,5 +1050,54 @@
],
"description"
:
"Symfony Validator Component"
,
"homepage"
:
"http://symfony.com"
},
{
"name"
:
"symfony/serializer"
,
"version"
:
"v2.2.0-BETA2"
,
"version_normalized"
:
"2.2.0.0-beta2"
,
"target-dir"
:
"Symfony/Component/Serializer"
,
"source"
:
{
"type"
:
"git"
,
"url"
:
"https://github.com/symfony/Serializer"
,
"reference"
:
"v2.2.0-BETA2"
},
"dist"
:
{
"type"
:
"zip"
,
"url"
:
"https://github.com/symfony/Serializer/archive/v2.2.0-BETA2.zip"
,
"reference"
:
"v2.2.0-BETA2"
,
"shasum"
:
""
},
"require"
:
{
"php"
:
">=5.3.3"
},
"time"
:
"2013-01-19 07:50:02"
,
"type"
:
"library"
,
"extra"
:
{
"branch-alias"
:
{
"dev-master"
:
"2.2-dev"
}
},
"installation-source"
:
"dist"
,
"autoload"
:
{
"psr-0"
:
{
"Symfony\\Component\\Serializer\\"
:
""
}
},
"notification-url"
:
"https://packagist.org/downloads/"
,
"license"
:
[
"MIT"
],
"authors"
:
[
{
"name"
:
"Fabien Potencier"
,
"email"
:
"fabien@symfony.com"
},
{
"name"
:
"Symfony Community"
,
"homepage"
:
"http://symfony.com/contributors"
}
],
"description"
:
"Symfony Serializer Component"
,
"homepage"
:
"http://symfony.com"
}
]
core/vendor/symfony/serializer/Symfony/Component/Serializer/.gitattributes
deleted
100644 → 0
View file @
b261004a
/Tests export-ignore
phpunit.xml.dist export-ignore
core/vendor/symfony/serializer/Symfony/Component/Serializer/CHANGELOG.md
View file @
79941b52
CHANGELOG
=========
2.
2.0
-----
*
[BC BREAK] All Serializer, Normalizer and Encoder interfaces have been
modified to include an optional
`$context`
array parameter.
*
The XML Root name can now be configured with the
`xml_root_name`
parameter in the context option to the
`XmlEncoder`
.
*
Options to
`json_encode`
and
`json_decode`
can be passed through
the context options of
`JsonEncode`
and
`JsonDecode`
encoder/decoders.
2.
1.0
-----
...
...
core/vendor/symfony/serializer/Symfony/Component/Serializer/Encoder/ChainDecoder.php
View file @
79941b52
...
...
@@ -34,9 +34,9 @@ public function __construct(array $decoders = array())
/**
* {@inheritdoc}
*/
final
public
function
decode
(
$data
,
$format
)
final
public
function
decode
(
$data
,
$format
,
array
$context
=
array
()
)
{
return
$this
->
getDecoder
(
$format
)
->
decode
(
$data
,
$format
);
return
$this
->
getDecoder
(
$format
)
->
decode
(
$data
,
$format
,
$context
);
}
/**
...
...
core/vendor/symfony/serializer/Symfony/Component/Serializer/Encoder/ChainEncoder.php
View file @
79941b52
...
...
@@ -35,9 +35,9 @@ public function __construct(array $encoders = array())
/**
* {@inheritdoc}
*/
final
public
function
encode
(
$data
,
$format
)
final
public
function
encode
(
$data
,
$format
,
array
$context
=
array
()
)
{
return
$this
->
getEncoder
(
$format
)
->
encode
(
$data
,
$format
);
return
$this
->
getEncoder
(
$format
)
->
encode
(
$data
,
$format
,
$context
);
}
/**
...
...
Prev
1
2
3
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!