Comments (10)
whoops, that's right.
It's because I don't actually add existing data to a given hash/array when tie
ing it.
I prepared a fix under:
https://github.com/perlpunk/YAML-PP-p5/tree/fix-preserve
from yaml-pp-p5.
Yes, that sounds like it makes sense and shouldn't be to difficult to implement.
Meanwhile, you can manually create ordered hashes with YAML:PP->preserved_hash
from yaml-pp-p5.
OTOH what do we do in arrays that are inside a preserved hash?
from yaml-pp-p5.
I implemented this in https://metacpan.org/release/TINITA/YAML-PP-0.027_002
maybe you want to test it?
from yaml-pp-p5.
Awesome! I will try to find some time to test it soon.
from yaml-pp-p5.
I actually had to add the behaviour to PUSH, SPLICE and UNSHIFT, too.
Uploaded https://metacpan.org/release/TINITA/YAML-PP-0.028
Please reopen if there are any problems :)
from yaml-pp-p5.
Thanks!
Unfortunately, I found a bug. Here is a small repro case:
#!/usr/bin/env perl
use strict;
use warnings;
use YAML::PP 0.029;
use YAML::PP::Common qw(PRESERVE_ORDER PRESERVE_FLOW_STYLE);
my $yaml = YAML::PP->new(
preserve => PRESERVE_ORDER | PRESERVE_FLOW_STYLE,
);
my $source = <<'YAML';
---
alpha: {}
YAML
my $data = $yaml->load_string($source);
$data->{alpha} = {};
$data->{alpha}{beta} = {};
$data->{alpha}{beta}{gamma}[0] = { name => 'value' };
print $yaml->dump_string($data);
__END__
got:
---
alpha:
beta:
gamma:
- {}
expecting:
---
alpha:
beta:
gamma:
- name: value
There is no bug if we start out with $data = {}
rather than using $source
from the loaded string.
from yaml-pp-p5.
Nice, that works a lot better! \o/
from yaml-pp-p5.
Great, thanks for testing =)
I will release it in the next couple of days
from yaml-pp-p5.
thanks again!
from yaml-pp-p5.
Related Issues (20)
- t/31.schema.t fails tests 238 and 3838 when nvtype is IBM DoubleDouble HOT 4
- Suggestion: shorter alias for YAML::PP::Highlight HOT 2
- Update yamlpp-* tools to support the Merge feature. HOT 3
- Merge breaks when merging a node with a sequence. HOT 7
- boolean.pm values cannot be emitted HOT 16
- quote special YAML keywords when dumping HOT 3
- t/54.glob.t fails on perl 5.8.8 or lower HOT 2
- Question: is it possible to force all one-line string scalars to be single-quoted? HOT 1
- Getting a "Bad indendation in FLOWMAP" error HOT 3
- Option to indent lists relative to mapping keys HOT 1
- Schema to support TO_JSON methods HOT 2
- Doc issue HOT 2
- Bug: Literal scalars with explicit indent seem to have a problem HOT 2
- ypp fails to parse !~ HOT 3
- Parse error on plain key ending with colon HOT 2
- YAML::PP::Load loops infinitely when given tainted string on perl < 5.14 HOT 1
- Recent released versions are prefixed with `v` HOT 1
- anchors don't survive when files are included using the Include Schema HOT 2
- Parser events have offset, but not line number HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yaml-pp-p5.