Erick Tryzelaar
001cb7ab01
feat(codegen): Add #[serde(serialize_with="...")]
...
This allows a field to be serialized with an expression instead
of the default serializer. This simplifies serializing a struct
or enum that contains an external type that doesn't implement
`serde::Serialize`. This expression is passed a variable
`serializer` that needs to be used to serialize the expression.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
de89f95f31
feat(codegen): Add support for #![serde(skip_serialize_if="$expr")]
...
This allows end users to use an arbitrary expression to decide whether
or not to serialize some field. This expression has access to all the
fields in the struct, but none of the internal state of the Serialize
implementation. For structs, serde implements this by creating a
temporary trait and implementing the struct for it. For struct variants,
the fields are copied by reference into a temporary struct first
before implementing the temporary trait.
This also fixes a bug where the serde_codegen wasn't making calls to
Serializer::serialize_{tuple,struct}_variant{,_elt}.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
9812a4c9c6
feat(codegen): Allow #[serde(default="123")]
...
This feature adds support for the default to be specified to be
some expression (which unfortunately needs to be parsed from
a string) without needing this value to have an implementation
of `Default`, or for a new-type wrapper in order to provide an
alternative implementation. This expression is run in a function,
and therefore has no access to any of the internal state of
the deserializer.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
8ea6c66cf7
refactor(tests): Rename and move some structs and enums
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
17bf789708
Merge branch 'v0.6.x'
2016-02-18 09:46:46 -08:00
Erick Tryzelaar
f6a66a5537
feat(cargo): Rustup to latest nightly
2016-02-18 09:27:41 -08:00
Erick Tryzelaar
1236889664
Merge branch 'v0.6.x'
...
# Conflicts:
# serde_codegen/src/de.rs
2016-02-14 16:45:59 -08:00
Erick Tryzelaar
fd5ab8c5c8
feat(cargo): Version bump
2016-02-13 22:06:08 -08:00
Erick Tryzelaar
39fa78e2ec
Merge pull request #236 from debris/rustup3
...
Update serde_codegen for rustc 1.8.0-nightly (ce4b75f25 2016-02-12)
2016-02-13 21:56:07 -08:00
Erick Tryzelaar
561a373d19
Merge branch 'v0.6.x'
...
# Conflicts:
# serde/src/de/mod.rs
# serde_codegen/src/attr.rs
# serde_codegen/src/de.rs
# serde_codegen/src/lib.rs
2016-02-12 21:43:23 -08:00
Erick Tryzelaar
064241f03c
fix(serde): Rename visit_struct_key to visit_struct_field
...
This is more consistent with the rest of the serde naming patterns.
2016-02-12 21:22:42 -08:00
Erick Tryzelaar
32163cd53b
feat(cargo): Version bump
2016-02-12 21:06:47 -08:00
Erick Tryzelaar
3a5aa00262
fix(codegen): Fix clippy cfg_attr
2016-02-12 20:21:52 -08:00
Erick Tryzelaar
c3f15fd7f8
Merge pull request #234 from jwilm/fix-clippy-feature
...
plugin(clippy) now relies on feature = "clippy"
2016-02-10 11:44:51 -08:00
Erick Tryzelaar
46f88037db
Merge branch 'v0.6.x'
2016-02-08 14:17:26 -08:00
Erick Tryzelaar
7a3e3a61f4
chore(tests): Silence some warnings
2016-02-08 13:37:03 -08:00
Erick Tryzelaar
517c2f79b7
chore(cargo): Only depend on clippy when testing
2016-02-08 13:35:26 -08:00
Erick Tryzelaar
4de59494e6
Merge pull request #233 from erickt/remove-format2
...
Remove support for format-specific renames, replace with ser or de specific renames
2016-02-08 13:25:41 -08:00
Erick Tryzelaar
3cde6fa333
Merge pull request #228 from compressed/clippy
...
fix(clippy): make clippy optional
2016-02-08 11:20:54 -08:00
Erick Tryzelaar
0224e212f9
feat(codegen): Allow containers to be renamed
...
Closes #218
2016-02-08 11:11:36 -08:00
Erick Tryzelaar
5ad784f6c6
refactor(tests): Improve test names
2016-02-08 10:43:41 -08:00
Erick Tryzelaar
b842164fd8
feat(codegen): Support renames that are different when serializing and deserializing
...
According to #61 , if one uses serde to serialize requests that pass
url-encoded parameters to a server, it might get responses back
with a different capitalization scheme. This patch restores the
behavior implemented in #62 .
# Conflicts:
# serde_codegen/src/attr.rs
# serde_codegen/src/de.rs
# serde_tests/tests/test_annotations.rs
2016-02-08 10:43:41 -08:00
Erick Tryzelaar
365e5129af
refactor(codegen): Add VariantAttrs
2016-02-08 10:43:32 -08:00
Erick Tryzelaar
d0ee5b0b4b
feat(codegen): Remove {Ser,Deser}ializer::format
...
This feature has never been used, and it's complicating the
implementation of #207 . We could restore this functionality if there is
ever interest in it.
Closes #211 .
2016-02-08 10:10:00 -08:00
Erick Tryzelaar
5d4f9ce72b
refactor(codegen): Add FieldsAttr::from_{field,variant}
2016-02-08 10:09:30 -08:00
Erick Tryzelaar
807224d231
refactor(codegen): Add ContainerAttrs::from_items
2016-02-08 10:09:18 -08:00
Erick Tryzelaar
0bd380ee23
chore(cleanup): Minor reorganization of attr.rs
2016-02-08 08:30:29 -08:00
Erick Tryzelaar
a926cb62f0
chore(codegen): Clean up error handling
2016-02-07 20:36:24 -08:00
Erick Tryzelaar
8c8fcdbc54
Merge pull request #231 from erickt/rename-struct-key-to-field
...
Rename struct key to field
2016-02-07 20:35:38 -08:00
Erick Tryzelaar
f8b3990571
feat(de): Rename deserialize_struct_key to deserialize_struct_field
...
This makes it more consistent with the naming style used throughout
the rest of serde.
2016-02-05 17:27:18 -08:00
Erick Tryzelaar
9dffbcfedb
fix(whitespace): Fixed indentation
2016-02-05 17:27:18 -08:00
Erick Tryzelaar
50c73edd6a
Merge pull request #215 from TyOverby/deserialize_string-for-pathbuf
...
Use deserializer.deserialize_string for PathBuf
2016-02-05 07:57:28 -08:00
Erick Tryzelaar
1b1f95f372
Merge pull request #224 from erickt/path
...
feat(ser): Add ser::Error trait; avoid panic when serializing Paths
2016-02-05 07:56:48 -08:00
Erick Tryzelaar
9b349d08cc
Merge pull request #225 from jwilm/hint-ignored-any
...
feat(de): Support hinting for IgnoredAny
2016-02-05 07:56:30 -08:00
Erick Tryzelaar
718822449f
Merge pull request #227 from serde-rs/oli-obk-patch-1
...
add a build.rs file to the stable-only syntex example
2016-02-05 07:54:56 -08:00
Erick Tryzelaar
f1b20577d3
feat(ser): Add ser::Error trait; avoid panic when serializing Paths
...
The only way to safely serialize a `Path` is to use
`.to_string_lossy()`, which replaces invalid UTF-8 characters with
the U+FFFD replacement character. Unfortunately this would lose
information, so for our default implementations, it'd be better
to punt and report an error, and leave it up to the user to
decide if they want to use the lossy encoding.
Unfortunately, we had no way for `Serializer`s to require some methods
on `Serializer::Error`, so there was no way before this patch for
the `Path` implementation to generically report that it cannot encode
this value. This adds that implementation.
breaking-change
Closes #57 .
2016-01-28 10:41:21 -08:00
Erick Tryzelaar
9ae47a261e
Merge branch 'v0.6.x'
...
# Conflicts:
# serde/src/de/impls.rs
# serde_codegen/src/de.rs
2016-01-28 09:49:15 -08:00
Erick Tryzelaar
4507eaec5b
Use deserializer.visit_string for PathBuf
2016-01-28 09:45:38 -08:00
Erick Tryzelaar
b3212f4c2b
Merge pull request #223 from jwilm/hinting-for-struct-keys
...
feat(de): Support struct key hinting
2016-01-28 08:57:16 -08:00
Erick Tryzelaar
589187874a
Merge pull request #222 from jwilm/fix-readme
...
Fixes for README
2016-01-27 09:26:54 -08:00
Erick Tryzelaar
c072025982
Merge branch 'v0.6.x'
2016-01-26 14:06:43 -08:00
Erick Tryzelaar
0a32cea26e
feat(impls): Allow options to be deserialized from units
2016-01-23 16:07:50 -08:00
Erick Tryzelaar
b2acda333b
Merge branch 'v0.6.x'
2016-01-20 11:16:06 -08:00
Erick Tryzelaar
da4e37d3f5
docs(tradeoffs): Add section that describes tradeoffs for option types
2016-01-20 11:15:43 -08:00
Erick Tryzelaar
e0254fc312
Merge branch 'v0.6.x'
2016-01-18 13:19:18 -08:00
Erick Tryzelaar
3f9cbc157a
fix(cargo): serde_codegen shouldn't depend on '*' serde dependencies
2016-01-18 13:15:09 -08:00
Erick Tryzelaar
a51f930101
feat(cargo): Version bump
2016-01-18 13:11:16 -08:00
Erick Tryzelaar
d1e39db61e
Merge branch 'v0.6.x'
2016-01-18 13:09:31 -08:00
Erick Tryzelaar
77edd8e544
fix(clippy): Switch to using or_else when we get a str parse error
2016-01-18 13:07:30 -08:00
Erick Tryzelaar
8087b7cec6
fix(cargo): Bump clippy version
2016-01-18 13:00:21 -08:00
Erick Tryzelaar
42b8b6153e
Merge branch 'v0.6.x' into master
...
# Conflicts:
# serde/Cargo.toml
# serde/src/ser/impls.rs
# serde_codegen/src/attr.rs
# serde_codegen/src/de.rs
# serde_codegen/src/field.rs
# serde_codegen/src/ser.rs
2016-01-18 12:45:39 -08:00
Erick Tryzelaar
8df841f048
fix(errors): Report errors on unknown #[serde(...)] attributes
...
Closes #51 , #175 , and #187
2016-01-18 12:39:46 -08:00
Erick Tryzelaar
bfa2b69193
feat(clippy): Use clippy for it's extra lints
2016-01-18 12:24:03 -08:00
Erick Tryzelaar
939e1540d4
Merge pull request #205 from JohnHeitmann/default-typo
...
Remove extraneous flag
2016-01-18 09:11:14 -08:00
Erick Tryzelaar
835eb94275
Merge pull request #212 from debris/patch-1
...
fixed typo in readme
2016-01-18 09:10:45 -08:00
Erick Tryzelaar
1ced6db73e
Merge remote-tracking branch 'remotes/origin/v0.6.x'
2016-01-16 15:08:06 -08:00
Erick Tryzelaar
fbcf905c9f
Merge pull request #210 from erickt/v0.6.x
...
feat(errors): Don't panic if annotating a non-struct/enum
2016-01-16 15:06:07 -08:00
Erick Tryzelaar
979a4bcd88
feat(errors): Don't panic if annotating a non-struct/enum
...
This also improves the error spans when there's an internal
error.
Closes #206 .
2016-01-16 14:51:11 -08:00
Erick Tryzelaar
2aefa5bb1d
Merge pull request #204 from JohnHeitmann/master
...
Implemented disallow_unknown
2016-01-16 13:32:20 -08:00
Erick Tryzelaar
4c92b877d6
Merge branch 'v0.6.x'
2016-01-16 13:17:38 -08:00
Erick Tryzelaar
342ea25290
feat(cargo): Version bump
2016-01-13 07:05:32 -08:00
Erick Tryzelaar
8d8f17982a
feat(cargo): Version bump
2016-01-13 06:59:30 -08:00
Erick Tryzelaar
59285f627b
Merge branch 'v0.6.x'
...
# Conflicts:
# serde_codegen/Cargo.toml
2016-01-10 11:54:46 -08:00
Erick Tryzelaar
dd3233ac85
fix(cargo): Fix typos
2016-01-10 11:50:35 -08:00
Erick Tryzelaar
9b57f60c2a
fix(cargo): Version bump
2016-01-07 14:50:18 -08:00
Erick Tryzelaar
8038832a79
fix(cargo): Version bump
2016-01-07 14:48:40 -08:00
Erick Tryzelaar
4ce0dfc91d
Merge pull request #199 from Starefossen/patch-1
...
Use SVG version of Travis CI build status badge
2016-01-06 12:24:04 -08:00
Erick Tryzelaar
072ff149f5
fix(rustup): Update to latest rust; silence some warnings
2015-12-24 12:12:03 -05:00
Erick Tryzelaar
14802e9666
fix(value): Handle the new value::Error variants when implementing Display
2015-12-09 15:40:45 -05:00
Erick Tryzelaar
e1a44293c0
Merge pull request #162 from skade/std-error
...
Have serde::de::Error require std::error::Error
2015-12-08 14:10:45 -05:00
Erick Tryzelaar
8f08baf43a
feat(cargo): Version bump
2015-12-08 09:57:33 -05:00
Erick Tryzelaar
188425ffe5
Merge branch 'v0.6.x' into master
...
# Conflicts:
# serde_codegen/Cargo.toml
2015-12-08 09:50:10 -05:00
Erick Tryzelaar
daf015799b
Merge pull request #193 from killix/master
...
feat(cargo): Quasi version to 0.3.9
2015-12-08 09:42:37 -05:00
Erick Tryzelaar
b3b3b7d565
fix(rustup): Sync serde_macros with latest nightly, aster, and quasi
2015-12-08 09:41:57 -05:00
Erick Tryzelaar
1a8a11e924
feat(impls): Add impls for num::{BigInt,BigUint,Complex,Ratio}
2015-12-01 09:03:08 -08:00
Erick Tryzelaar
25bebe76b6
Merge pull request #190 from thorbenk/master
...
fix typo
2015-11-29 15:54:45 -08:00
Erick Tryzelaar
b858cd9e18
Merge remote-tracking branch 'remotes/origin/v0.6.x'
...
# Conflicts:
# serde_codegen/Cargo.toml
2015-11-28 21:16:51 -08:00
Erick Tryzelaar
f3f098e7f5
feat(cargo): Version bump
2015-11-28 20:30:36 -08:00
Erick Tryzelaar
09822c99cc
fix(rustup): Update serde_codegen to reflect Registry move
2015-11-28 20:17:21 -08:00
Erick Tryzelaar
966b104d48
fix(rustup): nightly rust moved Registry into rustc_plugin
2015-11-28 20:09:54 -08:00
Erick Tryzelaar
59e0d5e081
fix(warning): #[automatically_derived] was removed
2015-11-28 20:09:31 -08:00
Erick Tryzelaar
c687ee60ff
feat(example): Add an example
2015-11-28 20:09:03 -08:00
Erick Tryzelaar
2c0a4e7669
Merge pull request #189 from Ms2ger/typos
...
Fix typos.
2015-11-28 16:31:48 -08:00
Erick Tryzelaar
af6fbba9b8
feat(cargo): Bump syntex, aster, and quasi versions
2015-11-22 21:56:44 -08:00
Erick Tryzelaar
a577574cfe
feat(cargo): Bump syntex, aster, and quasi versions
2015-11-09 13:50:53 -08:00
Erick Tryzelaar
f474c57881
Merge branch 'v0.6.x'
2015-11-02 20:39:32 -08:00
Erick Tryzelaar
7521db7b0b
fix(crates): Bump aster and syntex_syntax
2015-11-01 13:24:26 -08:00
Erick Tryzelaar
4bdabea639
Merge pull request #170 from oli-obk/master
...
fix(#151 ): renaming Deserializer::visit_* to Deserializer::deserialize_*
2015-10-31 16:56:06 -07:00
Erick Tryzelaar
27c933a865
Merge pull request #174 from erickt/ignore
...
chore(git): Ignore swap files
2015-10-31 16:55:23 -07:00
Erick Tryzelaar
e96a213720
chore(git): Ignore swap files
...
Closes #172
2015-10-19 09:46:04 -07:00
Erick Tryzelaar
bf31feebc4
chore(cleanup): Fix some warnings
2015-10-19 08:37:22 -07:00
Erick Tryzelaar
55de7bd99b
fix(tests): Get tests to compile with new value deserializer scheme
2015-10-19 08:33:57 -07:00
Erick Tryzelaar
cc67c97224
Merge remote-tracking branch 'remotes/origin/master' into error-take-2
2015-10-18 19:43:32 -07:00
Erick Tryzelaar
bd87485251
Merge pull request #168 from pwoolcoc/num-no-default-features
...
Opt-out of `num`s `default-features`
2015-10-17 20:52:31 -07:00
Erick Tryzelaar
72de877ec3
Merge pull request #173 from erickt/update
...
Update aster, quasi, and syntex
2015-10-17 20:03:15 -07:00
Erick Tryzelaar
f872b3fb4b
fix(cargo): Update aster, quasi, and syntex
2015-10-17 19:44:07 -07:00
Erick Tryzelaar
ddc33ee747
cleanup(whitespace): Fix some whitespace issues
2015-10-14 08:52:25 -07:00
Erick Tryzelaar
612e384b03
Merge pull request #171 from oli-obk/fix_skip_empty_field_ser
...
$value_expr starting with a & took address of resulting bool
2015-10-12 13:41:23 -07:00
Erick Tryzelaar
534e6d1f4c
Merge pull request #167 from pwoolcoc/patch-1
...
Fix code block end marker
2015-10-06 11:50:54 -07:00
Erick Tryzelaar
00cd2900e7
Merge pull request #155 from erickt/skip
...
Add skip serializing fields if empty or none
2015-10-05 14:51:46 -07:00