A tool to deserialize data from an input encoding, transform it and serialize it back into an output encoding.

Overview

dts

Build Status MIT License

A simple tool to deserialize data from an input encoding, transform it and serialize it back into an output encoding.

Requires rust >= 1.56.0.

Installation from source

This is the only install option available right now.

Clone the repository and run:

cargo install --path .

Usage

dts [<source>...] [-t <transform-options>] [-O <sink>...]

For a full list of available flags and transform options consult the help:

dts --help

Examples

Convert YAML to TOML and remove empty values:

dts input.yaml -t remove-empty-values -o toml

Load all YAML files from sub directories, flatten nested arrays and merge them into one:

dts . --glob '**/*.yaml' -t flatten-arrays output.yaml

Run a JSONPath filter on the input data:

dts tests/fixtures/example.json -t jsonpath='$.users[?(@.age < 30)]'

Combine multiple transformation options (multiple usages of the same option possible):

# This uses the single char forms of the transformation options
dts tests/fixtures/example.json -t d='some_key',m,j='[*]',f,j='[*].id'

Read data from stdin:

echo '{"foo": {"bar": "baz"}}' | dts -i json -tF,r -o yaml

Supported Encodings

Right now dts supports the following encodings:

  • JSON
  • YAML
  • TOML
  • JSON5 (deserialize only)
  • CSV
  • QueryString
  • XML
  • Text
  • Gron
  • HCL (deserialize only)

License

The source code of dts is released under the MIT License. See the bundled LICENSE file for details.

Comments
  • chore(deps): bump clap from 3.2.16 to 3.2.20

    chore(deps): bump clap from 3.2.16 to 3.2.20

    Bumps clap from 3.2.16 to 3.2.20.

    Release notes

    Sourced from clap's releases.

    v3.2.20

    [3.2.20] - 2022-09-02

    Features

    • ArgMatches::get_count help for ArgAction::Count
    • ArgMatches::get_flag help for ArgAction::SetTrue / ArgAction::SetFalse

    v3.2.19

    [3.2.19] - 2022-08-30

    Fixes

    • (help) Ensure required arguments for parent commands aren't shown in their subcommands when using args_conflicts_with_subcommand

    v3.2.18

    [3.2.18] - 2022-08-29

    Fixes

    • (help) Command::print_help now respects Command::colored_help
    • (derive) Improved error messages

    v3.2.17

    [3.2.17] - 2022-08-12

    Fixes

    • (derive) Expose #[clap(id = ...)] attribute to match Arg's latest API
    Changelog

    Sourced from clap's changelog.

    [3.2.20] - 2022-09-02

    Features

    • ArgMatches::get_count help for ArgAction::Count
    • ArgMatches::get_flag help for ArgAction::SetTrue / ArgAction::SetFalse

    [3.2.19] - 2022-08-30

    Fixes

    • (help) Ensure required arguments for parent commands aren't shown in their subcommands when using args_conflicts_with_subcommand

    [3.2.18] - 2022-08-29

    Fixes

    • (help) Command::print_help now respects Command::colored_help
    • (derive) Improved error messages

    [3.2.17] - 2022-08-12

    Fixes

    • (derive) Expose #[clap(id = ...)] attribute to match Arg's latest API
    Commits
    • ddcd13b chore: Release
    • 9d35abc docs: Update changelog
    • 39aba08 Merge pull request #4171 from epage/helper2
    • 2d5fea5 feat(parser): Provide convenience for SetTrue
    • d2a1f5a feat(parser): Provide convenience accessor for Counts
    • 3c91438 chore: Release
    • 75f17b6 docs: Update changelog
    • 19c9222 Merge pull request #4146 from Calder-Ty/bugfix/3861_backport
    • f7af765 fix: Add possible vals to man for positional args
    • cf7f1fa chore: Release
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • chore(deps): bump serde_json from 1.0.79 to 1.0.81

    chore(deps): bump serde_json from 1.0.79 to 1.0.81

    Bumps serde_json from 1.0.79 to 1.0.81.

    Release notes

    Sourced from serde_json's releases.

    v1.0.81

    • Work around indexmap/autocfg not always properly detecting whether a std sysroot crate is available (#885, thanks @​cuviper)

    v1.0.80

    • Documentation improvements
    Commits
    • a0ea937 Release 1.0.81
    • 6c3dfe9 Make it clearer that preserve_order implies a std dependency
    • f34ef95 Merge pull request #885 from cuviper/indexmap-std
    • 27939bb Explicitly enable indexmap/std
    • c0f9343 Ignore trait_duplication_in_bounds clippy false positives
    • 048a64c Resolve type_repetition_in_bounds clippy lint
    • 585e4c5 Release 1.0.80
    • 52a9c05 Pull miri from miri branch of dtolnay/rust-toolchain
    • aff685b Drop unneeded quoting from env variable in workflows yaml
    • 6995bbf Update workflows to actions/checkout@v3
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • chore(deps): bump bat from 0.18.3 to 0.20.0

    chore(deps): bump bat from 0.18.3 to 0.20.0

    Bumps bat from 0.18.3 to 0.20.0.

    Release notes

    Sourced from bat's releases.

    v0.20.0

    Features

    • New style component header-filesize to show size of the displayed file in the header. See #1988 (@​mdibaiee)
    • Use underline for line highlighting on ANSI, see #1730 (@​mdibaiee)

    Bugfixes

    Syntaxes

    • GraphQL: Add support for interfaces implementing interfaces and consider ampersand an operator. See #2000
    • Associate _vimrc and _gvimrc files with the VimL syntax. See #2002
    • Associate poetry.lock files with the TOML syntax. See #2049
    • Associate .mesh, .task, .rgen, .rint, .rahit, .rchit, .rmiss, and .rcall with the GLSL syntax. See #2050
    • Added support for JQ syntax, see #2072 (@​clarfonthey)
    • Properly associate global git config files rooted in $XDG_CONFIG_HOME/git/ or $HOME/.config/git/. See #2067 (@​cyqsimon)

    bat as a library

    • Exposed get_syntax_set and get_theme methods on HighlightingAssets. See #2030 (@​dandavison)
    • Added HeaderFilename and HeaderFilesize to StyleComponent enum, and mark it #[non_exhaustive]. See #1988 (@​mdibaiee)

    v0.19.0

    Performance

    • Reduce startup time in loop-through mode (e.g. when redirecting output) by 90%. See #1747 (@​Enselic)
    • Load themes lazily to make bat start 25% faster when disregarding syntax load time. See #1969 (@​Enselic)
    • Python syntax highlighting no longer suffers from abysmal performance in specific scenarios. See #1688 (@​keith-hall)
    • Fix for poor performance when ANSI escape sequences are piped to bat, see #1596 (@​eth-p)
    • Fix for incorrect handling of ANSI escape sequences when using --wrap=never, see #1596 (@​eth-p)
    • Load custom assets as fast as integrated assets, see #1753 (@​Enselic)

    Features

    • Support for x:-delta (minus) syntax in line ranges (e.g. 20:-10). See #1901 (@​bojan88)
    • Support for --ignored-suffix argument. See #1892 (@​bojan88)
    • $BAT_CONFIG_DIR is now a recognized environment variable. It has precedence over $XDG_CONFIG_HOME, see #1727 (@​billrisher)
    • Support for x:+delta syntax in line ranges (e.g. 20:+10). See #1810 (@​bojan88)
    • Add new --acknowledgements option that gives credit to theme and syntax definition authors. See #1971 (@​Enselic)
    • Include git hash in bat -V and bat --version output if present. See #1921 (@​Enselic)

    Bugfixes

    Other

    ... (truncated)

    Changelog

    Sourced from bat's changelog.

    v0.20.0

    Features

    • New style component header-filesize to show size of the displayed file in the header. See #1988 (@​mdibaiee)
    • Use underline for line highlighting on ANSI, see #1730 (@​mdibaiee)

    Bugfixes

    Syntaxes

    • GraphQL: Add support for interfaces implementing interfaces and consider ampersand an operator. See #2000
    • Associate _vimrc and _gvimrc files with the VimL syntax. See #2002
    • Associate poetry.lock files with the TOML syntax. See #2049
    • Associate .mesh, .task, .rgen, .rint, .rahit, .rchit, .rmiss, and .rcall with the GLSL syntax. See #2050
    • Added support for JQ syntax, see #2072
    • Properly associate global git config files rooted in $XDG_CONFIG_HOME/git/ or $HOME/.config/git/. See #2067 (@​cyqsimon)

    bat as a library

    • Exposed get_syntax_set and get_theme methods on HighlightingAssets. See #2030 (@​dandavison)
    • Added HeaderFilename and HeaderFilesize to StyleComponent enum, and mark it #[non_exhaustive]. See #1988 (@​mdibaiee)

    v0.19.0

    Performance

    • Reduce startup time in loop-through mode (e.g. when redirecting output) by 90%. See #1747 (@​Enselic)
    • Load themes lazily to make bat start 25% faster when disregarding syntax load time. See #1969 (@​Enselic)
    • Python syntax highlighting no longer suffers from abysmal performance in specific scenarios. See #1688 (@​keith-hall)
    • Fix for poor performance when ANSI escape sequences are piped to bat, see #1596 (@​eth-p)
    • Fix for incorrect handling of ANSI escape sequences when using --wrap=never, see #1596 (@​eth-p)
    • Load custom assets as fast as integrated assets, see #1753 (@​Enselic)

    Features

    • Support for x:-delta (minus) syntax in line ranges (e.g. 20:-10). See #1901 (@​bojan88)
    • Support for --ignored-suffix argument. See #1892 (@​bojan88)
    • $BAT_CONFIG_DIR is now a recognized environment variable. It has precedence over $XDG_CONFIG_HOME, see #1727 (@​billrisher)
    • Support for x:+delta syntax in line ranges (e.g. 20:+10). See #1810 (@​bojan88)
    • Add new --acknowledgements option that gives credit to theme and syntax definition authors. See #1971 (@​Enselic)
    • Include git hash in bat -V and bat --version output if present. See #1921 (@​Enselic)

    Bugfixes

    ... (truncated)

    Commits
    • 0655ecf Prepare for v0.20.0 release
    • 671fc95 release-checklist.md: Add tip on how to review the man page
    • 3c057aa Add header-filename and header-filesize where missing
    • 8e8c350 release-checklist.md: Remove '## Dependencies'
    • 1ee49b4 CONTRIBUTING.md: Encourage regression tests (#2089)
    • 14ddda0 Recognize files in $XDG_CONFIG_HOME/git/ and $HOME/.config/git/ better (#...
    • 36093dd Fix a repology badge in READMEs
    • ad6cae4 fix Bash completion on macOS (#2074)
    • e4f6fb2 Add JQ syntax highlighting
    • d21f1e8 Underline highlighted lines in ANSI theme (#1985)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • chore(deps): update serde_qs requirement from 0.8.5 to 0.9.1 in /crates/dts-core

    chore(deps): update serde_qs requirement from 0.8.5 to 0.9.1 in /crates/dts-core

    Updates the requirements on serde_qs to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • chore(deps): update clap requirement from = 3.0.0-rc.7 to = 3.1.6 in /crates/dts-core

    chore(deps): update clap requirement from = 3.0.0-rc.7 to = 3.1.6 in /crates/dts-core

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v3.1.6

    [3.1.6] - 2022-03-07

    Fixes

    • Don't panic when validating delimited defaults (#3541)
    • Make it clearer that cargo feature is needed
    • Documentation improvements
    Changelog

    Sourced from clap's changelog.

    [3.1.6] - 2022-03-07

    Fixes

    • Don't panic when validating delimited defaults (#3541)
    • Make it clearer that cargo feature is needed
    • Documentation improvements

    [3.1.5] - 2022-03-02

    Fixes

    • Dependency upgrade

    [3.1.4] - 2022-03-02

    Features

    • (help) Show PossibleValue::help in long help (--help) (gated behind unstable-v4) (#3312)

    [3.1.3] - 2022-02-28

    Fixes

    • Don't panic when validating delimited defaults (#3514)

    [3.1.2] - 2022-02-23

    Fixes

    • (derive) Allow other attribute with a subcommand that has subcommands

    Documentation

    • (examples) List example topics
    • (derive) Clarify syntax and relation to builder API

    [3.1.1] - 2022-02-21

    Fixes

    • Track caller for ArgMatches assertions so the user more easily sees where they need to fix the call

    [3.1.0] - 2022-02-16

    Compatibility

    Changes in behavior of note that are not guaranteed to be compatible across releases:

    • (help) help subcommand shows long help like --help, rather than short help (-h), deprecated clap::AppSettings::UseLongFormatForHelpSubcommand (#3440)

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • chore: release main

    chore: release main

    :robot: I have created a release beep boop

    dts: 0.2.2

    0.2.2 (2022-03-05)

    Bug Fixes

    • publish artifacts on any tag (affa8d4)

    Dependencies

    • The following workspace dependencies were updated
      • dependencies
        • dts-core bumped from 0.2.1 to 0.2.2
    dts-core: 0.2.2

    Dependencies


    This PR was generated with Release Please. See documentation.

    autorelease: tagged 
    opened by github-actions[bot] 2
  • chore: release main

    chore: release main

    :robot: I have created a release beep boop

    dts: 0.2.1

    0.2.1 (2022-03-05)

    Bug Fixes

    • do not remove empty segments from deserialized text (37af5b0)

    Dependencies

    • The following workspace dependencies were updated
      • dependencies
        • dts-core bumped from 0.2.0 to 0.2.1
    dts-core: 0.2.1

    0.2.1 (2022-03-05)

    Bug Fixes

    • do not remove empty segments from deserialized text (37af5b0)

    This PR was generated with Release Please. See documentation.

    autorelease: tagged 
    opened by github-actions[bot] 2
  • chore(main): release 0.5.2

    chore(main): release 0.5.2

    :robot: I have created a release beep boop

    0.5.2 (2022-12-01)

    Miscellaneous

    • deps: bump anyhow from 1.0.65 to 1.0.66 (#159) (728f5f6)
    • deps: bump crossbeam-utils from 0.8.12 to 0.8.14 (#157) (11395d9)

    This PR was generated with Release Please. See documentation.

    autorelease: tagged 
    opened by github-actions[bot] 1
  • chore(main): release 0.5.1

    chore(main): release 0.5.1

    :robot: I have created a release beep boop

    0.5.1 (2022-11-03)

    Miscellaneous

    • deps: bump hcl-rs from 0.8.5 to 0.9.0 (#151) (0654a37)
    • deps: bump once_cell from 1.15.0 to 1.16.0 (#154) (d43a1d9)
    • deps: bump serde from 1.0.145 to 1.0.147 (#150) (454ec1f)
    • deps: bump serde_json from 1.0.86 to 1.0.87 (#152) (05956e3)

    This PR was generated with Release Please. See documentation.

    autorelease: tagged 
    opened by github-actions[bot] 1
  • chore(main): release 0.5.0

    chore(main): release 0.5.0

    :robot: I have created a release beep boop

    0.5.0 (2022-10-14)

    Features

    Miscellaneous

    • clippy: address some new warnings (60614ec)
    • deps: bump jaq-core from 0.7.0 to 0.8.2 (9d7a36c)
    • deps: bump pest from 2.3.1 to 2.4.0 (#143) (da31810)
    • deps: bump serde_json from 1.0.85 to 1.0.86 (#147) (8b7e171)

    This PR was generated with Release Please. See documentation.

    autorelease: tagged 
    opened by github-actions[bot] 1
  • chore(deps): bump hcl-rs from 0.6.4 to 0.8.4

    chore(deps): bump hcl-rs from 0.6.4 to 0.8.4

    Bumps hcl-rs from 0.6.4 to 0.8.4.

    Release notes

    Sourced from hcl-rs's releases.

    v0.8.4

    0.8.4 (2022-10-07)

    Bug Fixes

    • parser: comma between list items is not optional (9d97a02)
    • parser: panic when parsing LegacyIndex traversal operator (#86) (f7e9f87)
    • traversal: deserialize splat operators as unit (#84) (9ff1894), closes #81

    v0.8.3

    0.8.3 (2022-10-01)

    Miscellaneous

    • deps: bump actions/cache from 3.0.8 to 3.0.9 (#78) (2abc271)
    • deps: update criterion requirement from 0.3 to 0.4 (#79) (ac023bd)

    v0.8.2

    0.8.2 (2022-09-30)

    Features

    • implement Display for {Unary,Binary}Operator (765ae4e)
    • implement From<Numbe> for Value (5bc621a)

    v0.8.1

    0.8.1 (2022-09-30)

    Features

    • implement Copy for some types (66fba96)
    • implement Display and Deref for Identifier (c06cec0)
    • implement Eq and Display for Value (cfb41fe)

    v0.8.0

    0.8.0 (2022-09-29)

    ⚠ BREAKING CHANGES

    • The Number type was changed from an enum to an opaque struct. Use Number::from to create a number from an integer. Furthermore, the From implementations for f32 and f64 were removed. Use the newly added Number::from_f64 instead.
    • The RawExpression and String variants of the ObjectKey enum were removed in favor of the newly added Expression variant. Furthermore the methods Object::raw_expression and ObjectKey::string were removed. Use ObjectKey::from instead.
    • The underlying map implementation for the Object<K, V> type changed from IndexMap<K, V> to VecMap<K, V>. For the most common operations this is a drop-in replacement, but VecMap lacks some of the more exotic APIs the IndexMap provides.
    • Heredocs and quoted strings containing template interpolations and/or template directives are not parsed as Expression::String anymore, but end up as Expression::TemplateExpr (which can be further parsed into the template elements via Template::from_expr) instead. Expressions of kind Expression::String are guaranteed to not include any templating anymore.

    Features

    ... (truncated)

    Changelog

    Sourced from hcl-rs's changelog.

    0.8.4 (2022-10-07)

    Bug Fixes

    • parser: comma between list items is not optional (9d97a02)
    • parser: panic when parsing LegacyIndex traversal operator (#86) (f7e9f87)
    • traversal: deserialize splat operators as unit (#84) (9ff1894), closes #81

    0.8.3 (2022-10-01)

    Miscellaneous

    • deps: bump actions/cache from 3.0.8 to 3.0.9 (#78) (2abc271)
    • deps: update criterion requirement from 0.3 to 0.4 (#79) (ac023bd)

    0.8.2 (2022-09-30)

    Features

    • implement Display for {Unary,Binary}Operator (765ae4e)
    • implement From<Numbe> for Value (5bc621a)

    0.8.1 (2022-09-30)

    Features

    • implement Copy for some types (66fba96)
    • implement Display and Deref for Identifier (c06cec0)
    • implement Eq and Display for Value (cfb41fe)

    0.8.0 (2022-09-29)

    ⚠ BREAKING CHANGES

    • The Number type was changed from an enum to an opaque struct. Use Number::from to create a number from an integer. Furthermore, the From implementations for f32 and f64 were removed. Use the newly added Number::from_f64 instead.
    • The RawExpression and String variants of the ObjectKey enum were removed in favor of the newly added Expression variant. Furthermore the methods Object::raw_expression and ObjectKey::string were removed. Use ObjectKey::from instead.
    • The underlying map implementation for the Object<K, V> type changed from IndexMap<K, V> to VecMap<K, V>. For the most common operations this is a drop-in replacement, but VecMap lacks some of the more exotic APIs the IndexMap provides.
    • Heredocs and quoted strings containing template interpolations and/or template directives are not parsed as Expression::String anymore, but end up as Expression::TemplateExpr (which can be further parsed into the template elements via Template::from_expr) instead. Expressions of kind Expression::String are guaranteed to not include any templating anymore.

    Features

    ... (truncated)

    Commits
    • 2a40b8f chore(main): release 0.8.4 (#85)
    • f7e9f87 fix(parser): panic when parsing LegacyIndex traversal operator (#86)
    • 9d97a02 fix(parser): comma between list items is not optional
    • 9ff1894 fix(traversal): deserialize splat operators as unit (#84)
    • 05408e5 chore(main): release 0.8.3 (#80)
    • ac023bd chore(deps): update criterion requirement from 0.3 to 0.4 (#79)
    • 2abc271 chore(deps): bump actions/cache from 3.0.8 to 3.0.9 (#78)
    • 2cc04d1 chore(main): release 0.8.2 (#77)
    • 5bc621a feat: implement From\<Numbe> for Value
    • 765ae4e feat: implement Display for {Unary,Binary}Operator
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • chore(deps): bump jaq-std from 0.8.1 to 0.9.0

    chore(deps): bump jaq-std from 0.8.1 to 0.9.0

    Bumps jaq-std from 0.8.1 to 0.9.0.

    Release notes

    Sourced from jaq-std's releases.

    0.9.0

    This release greatly improves performance of file reading by memory mapping. On one benchmark, for example, this change decreased runtime by about 27%. Pass input files as arguments to profit from this; i.e., use jaq 'filter' file.json instead of jaq 'filter' <file.json.

    Several filters now behave more like in jq, for example assignment (=) and arithmetic update-assignment (+=, -=, ...). Updates using f as $x | g or if f then g else h on the left-hand side are now evaluated correctly if f yields multiple values. recurse, reduce, and foreach are now evaluated more lazily.

    BREAKING CHANGE: foreach xs as $x(init; f) does now also output the outputs of init, and the syntax foreach xs as $x(init; f; proj) is not supported anymore. This makes the behaviour of foreach easier to describe and reason about, greatly simplifies the implementation and makes foreach behave more like reduce. See the README for details.

    Users of jaq-core (the library powering jaq) might be happy to know that Filters are now Send and Sync. That means that it is now possible to execute a filter on multiple threads, processing multiple values in parallel. The jaq application itself does not make use of this (yet).

    Full Changelog: https://github.com/01mf02/jaq/compare/v0.8.2...v0.9.0

    0.8.2

    This release adds the --raw-input / -R command-line option to jaq. This is particularly useful to try the newly included Brainfuck interpreter (based on @​itchyny's work) in examples/bf.jq. :)

    Under the hood, jaq tries to avoid more clones when destructuring or updating arrays or objects. For example, this makes [range(1000000) | [.] | .[]] | length about 6% faster.

    Furthermore, expressions such as f[], which consist of some filter directly followed by a path, are now evaluated differently. In particular, f is now evaluated lazily, whereas before, it was evaluated strictly. This makes it possible to write a Fibonacci sequence generator as

     [0,1] | recurse([.[1], add])[0]
    

    which previously would not have terminated.

    Full Changelog: https://github.com/01mf02/jaq/compare/v0.8.1...v0.8.2

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump jaq-core from 0.8.2 to 0.9.0

    chore(deps): bump jaq-core from 0.8.2 to 0.9.0

    Bumps jaq-core from 0.8.2 to 0.9.0.

    Release notes

    Sourced from jaq-core's releases.

    0.9.0

    This release greatly improves performance of file reading by memory mapping. On one benchmark, for example, this change decreased runtime by about 27%. Pass input files as arguments to profit from this; i.e., use jaq 'filter' file.json instead of jaq 'filter' <file.json.

    Several filters now behave more like in jq, for example assignment (=) and arithmetic update-assignment (+=, -=, ...). Updates using f as $x | g or if f then g else h on the left-hand side are now evaluated correctly if f yields multiple values. recurse, reduce, and foreach are now evaluated more lazily.

    BREAKING CHANGE: foreach xs as $x(init; f) does now also output the outputs of init, and the syntax foreach xs as $x(init; f; proj) is not supported anymore. This makes the behaviour of foreach easier to describe and reason about, greatly simplifies the implementation and makes foreach behave more like reduce. See the README for details.

    Users of jaq-core (the library powering jaq) might be happy to know that Filters are now Send and Sync. That means that it is now possible to execute a filter on multiple threads, processing multiple values in parallel. The jaq application itself does not make use of this (yet).

    Full Changelog: https://github.com/01mf02/jaq/compare/v0.8.2...v0.9.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump serde_yaml from 0.8.25 to 0.9.14

    chore(deps): bump serde_yaml from 0.8.25 to 0.9.14

    Bumps serde_yaml from 0.8.25 to 0.9.14.

    Release notes

    Sourced from serde_yaml's releases.

    0.9.14

    • Implement Deserializer for TaggedValue and &TaggedValue (#339)

    0.9.13

    • Recognize True, TRUE, False, FALSE as booleans, Null, NULL as null (#330)

    0.9.12

    • Support deserializing tagged literal scalar into primitive (#327)

      "foo": !!int |-
        7200
      

    0.9.11

    • Serialize strings on a single line when they do not already contain a newline character, regardless of string length (#321, #322)

    0.9.10

    • Make Display for Number produce the same representation as serializing (#316)

    0.9.9

    0.9.8

    • Fix serialization of TaggedValue when used with to_value (#313)

    0.9.7

    • Allow an empty plain scalar to deserialize as an empty map or seq (#304)

    0.9.6

    • Fix tag not getting serialized in certain map values (#302)

    0.9.5

    • Implement Display trait for serde_yaml::value::Tag (#307, thanks @​masinc)

    0.9.4

    • Add serde_yaml::with::singleton_map for serialization of enums as a 1-entry map (#300)
    • Reject duplicate keys when deserializing Mapping or Value (#301)

    0.9.3

    • Add categories to crates.io metadata
    • Add keywords to crates.io metadata

    0.9.2

    • Improve Debug representation of serde_yaml::Error

    0.9.1

    • Fix panic on some documents containing syntax error (#293)
    • Improve error messages that used to contain duplicative line/column information (#294)

    ... (truncated)

    Commits
    • 8948d36 Release 0.9.14
    • 8d95125 Merge pull request #339 from dtolnay/deserializertaggedvalue
    • 371f764 Implement Deserializer for TaggedValue and &TaggedValue
    • c5523fe Replace nonstandard SError name used only in Value Deserialize
    • 516fdff Ignore uninlined_format_args pedantic clippy lint
    • 31fa98e Pull in unsafe-libyaml 0.2.4
    • 186cc67 Release 0.9.13
    • 43615b1 Merge pull request #330 from dtolnay/tagresolution
    • 35037c5 Add some null and boolean representations
    • a7b9862 Add a core schema tag resolution test
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.5.2)
Owner
null
Grimsby is an Erlang Port written in Rust that can close its standard input while retaining standard output (and error)

Grimsby An Erlang Port provides the basic mechanism for communication from Erlang with the external world. From the Ports and Port Drivers: Erlang Ref

Peter Morgan 5 May 29, 2023
Macro for fast implementing serialize methods in serde::Serializer trait

impl_serialize! This library provides a simple procedural macro for fast implementing serialize methods in serde::Serializer trait. [dependencies] imp

Eduard Baturin 2 Sep 6, 2022
This is a lightweight audio-video player built in Rust using FFmpeg libraries. It demonstrates the usage of FFmpeg with Rust to play back video files.

FFmpeg Rust Video Player This is a lightweight audio-video player built in Rust using FFmpeg libraries. It demonstrates the usage of FFmpeg with Rust

Jenin Sutradhar 3 Apr 10, 2024
Parse and encoding of data using the SCTE-35 standard.

SCTE-35 lib and parser for Rust Work in progress! This library provide access to parse and encoding of data using the SCTE-35 standard. This standard

Rafael Carício 4 May 6, 2022
Toy language that output pseudocode, pascal and graphviz dot

pseudoc pseudoc is a project I made for school because we needed to write our programs in three different formats: Pascal, pseudocode (similar in stru

João Capucho 2 Apr 6, 2022
A fast, iterative, correct approach to Stackblur, resulting in a very smooth and high-quality output, with no edge bleeding

A fast, iterative, correct approach to Stackblur, resulting in a very smooth and high-quality output, with no edge bleeding. This crate implements a t

LoganDark 8 Nov 22, 2022
Zero-copy, no-std proquint encoding and decoding

proqnt A pronounceable quintuplet, or proquint, is a pronounceable 5-letter string encoding a unique 16-bit integer. Proquints may be used to encode b

Jad Ghalayini 11 May 9, 2023
An expression based data notation, aimed at transpiling itself to any cascaded data notation.

Lala An expression oriented data notation, aimed at transpiling itself to any cascaded data notation. Lala is separated into three components: Nana, L

null 37 Mar 9, 2022
A tool that helps you to turn in one command a Rust crate into a Haskell Cabal library!

cabal-pack A tool that helps you to turn in one command a Rust crate into a Haskell Cabal library! To generate bindings, you need to annotate the Rust

Yvan Sraka 18 Dec 31, 2022
Efficiently store Rust idiomatic bytes related types in Avro encoding.

Serde Avro Bytes Avro is a binary encoding format which provides a "bytes" type optimized to store &[u8] data like. Unfortunately the apache_avro enco

Akanoa 3 Mar 30, 2024
A comprehensive and FREE Online Rust hacking tutorial utilizing the x64, ARM64 and ARM32 architectures going step-by-step into the world of reverse engineering Rust from scratch.

FREE Reverse Engineering Self-Study Course HERE Hacking Rust A comprehensive and FREE Online Rust hacking tutorial utilizing the x64, ARM64 and ARM32

Kevin Thomas 98 Jun 21, 2023
An inquiry into nondogmatic software development. An experiment showing double performance of the code running on JVM comparing to equivalent native C code.

java-2-times-faster-than-c An experiment showing double performance of the code running on JVM comparing to equivalent native C code ⚠️ The title of t

xemantic 49 Aug 14, 2022
A translation of akaritakai/AdventOfCode2021 into Rust

Advent Of Code 2021 Solutions This repo contains my Advent Of Code 2021 solutions in Rust. This repo is a learning opportunity (a "my first Rust proje

Justin Kaufman 2 Feb 7, 2022
cargo-add command to make dependencies into dylibs

cargo add-dynamic This cargo command allows to wrap dependencies as dylibs. For why you might want this see Speeding up incremental Rust compilation w

Robert Krahn 62 Dec 27, 2022
Bitpack a boolean into a pointer using bit magic.

ptr-bool tl;dr: a pointer and boolean with the same size as a pointer. A convenience crate used to bitpack a boolean and pointer into the same eight b

Zack 2 Oct 24, 2022
Static-checked parsing of regexes into structs

Statically-checked regex parsing into structs. This avoids common regex pitfalls like Off by one capture indexes Trying to get nonexistent captures De

Andrew Baxter 4 Dec 18, 2022
Time to dive into Rust!

Lets-Learn-Rust Time to dive into Rust! Day 1 Installation Running a Simple Rust Program Managing Projects with Cargo Basic Programming - Comments and

null 6 Jun 10, 2023
Code accompanying the 1 Hour Dive into Async live stream.

1 Hour Async This is the code accompanying the 1 Hour Dive into Async live-stream. The slides are here You can watch the recorded event on YouTube Inc

Herbert 9 Aug 2, 2023
Conversion of .eopkg into .stone

a-piece-of-pisi Crazy time: We're building a tool to convert a selection of .eopkg packages into .stone packages to be consumed by moss-rs to vastly a

Serpent OS 6 Oct 17, 2023