# Changelog ## [0.8.3](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.8.2...hcl-edit-v0.8.3) - 2024-10-04 ### Other - update Cargo.lock dependencies ## [0.8.2](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.8.1...hcl-edit-v0.8.2) - 2024-09-25 ### Fixed - *(parser)* allow newlines in function calls and arrays ([#368](https://github.com/martinohmann/hcl-rs/pull/368)) ### Other - address linting issues ## [0.8.1](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.8.0...hcl-edit-v0.8.1) - 2024-05-24 ### Fixed - *(parser)* calculate correct error column in presence of unicode ([#353](https://github.com/martinohmann/hcl-rs/pull/353)) - *(parser)* switch from `&[u8]` to `&str` based stream ([#351](https://github.com/martinohmann/hcl-rs/pull/351)) ## [0.8.0](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.7.7...hcl-edit-v0.8.0) - 2024-05-16 ### Added - [**breaking**] add support for namespaced functions ([#343](https://github.com/martinohmann/hcl-rs/pull/343)) ## [0.7.7](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.7.6...hcl-edit-v0.7.7) - 2024-04-13 ### Other - expose hcl-edit parser error message ([#334](https://github.com/martinohmann/hcl-rs/pull/334)) - update notice in README ## [0.7.6](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.7.5...hcl-edit-v0.7.6) - 2024-04-08 ### Fixed - *(parser)* allow newlines in parenthesis expressions ([#330](https://github.com/martinohmann/hcl-rs/pull/330)) ### Other - update winnow to 0.6+ and vecmap-rs to 0.2+ ([#324](https://github.com/martinohmann/hcl-rs/pull/324)) ## [0.7.4](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.7.3...hcl-edit-v0.7.4) (2023-09-27) ### Bug Fixes * **parser:** attach missing span information to identifiers ([#295](https://github.com/martinohmann/hcl-rs/issues/295)) ([81bbc0d](https://github.com/martinohmann/hcl-rs/commit/81bbc0d82af49d1620e6af92875b25a7545d0f9b)), closes [#294](https://github.com/martinohmann/hcl-rs/issues/294) ## [0.7.3](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.7.2...hcl-edit-v0.7.3) (2023-08-24) ### Bug Fixes * **parser:** prevent panic in object item parser ([#285](https://github.com/martinohmann/hcl-rs/issues/285)) ([8502d2f](https://github.com/martinohmann/hcl-rs/commit/8502d2fe4c455ebd3ebfb982912389588b132a5f)), closes [#284](https://github.com/martinohmann/hcl-rs/issues/284) ## [0.7.2](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.7.1...hcl-edit-v0.7.2) (2023-07-14) ### Bug Fixes * **structure:** handle absence of trailing newline in body ([#273](https://github.com/martinohmann/hcl-rs/issues/273)) ([2f54cb1](https://github.com/martinohmann/hcl-rs/commit/2f54cb188b87678de10975cc4f3bb399e093234a)), closes [#270](https://github.com/martinohmann/hcl-rs/issues/270) ## [0.7.1](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.7.0...hcl-edit-v0.7.1) (2023-07-14) ### Performance Improvements * **parser:** use `winnow::error::ContextError` internally ([b829c21](https://github.com/martinohmann/hcl-rs/commit/b829c212904c0ae0005370788bf1ea20aaee36e7)) ## [0.7.0](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.7...hcl-edit-v0.7.0) (2023-07-08) ### ⚠ BREAKING CHANGES * **template:** make `StringTemplate` deref to `Template` ([#260](https://github.com/martinohmann/hcl-rs/issues/260)) * **expr:** `Expression::Template` was renamed to `Expression::StringTemplate`. Furthermore, the `Expression` type's methods `is_template` and `as_template` were renamed to `is_string_template` and `as_string_template` respectively. ### Features * **expr:** add back `Expression::{is_template,as_template}` ([#261](https://github.com/martinohmann/hcl-rs/issues/261)) ([2ac21c2](https://github.com/martinohmann/hcl-rs/commit/2ac21c2995df3bae04bd4aaed6fc13463fd762a0)) ### Bug Fixes * **expr:** rename string template enum variant ([119be53](https://github.com/martinohmann/hcl-rs/commit/119be534972d2e50d586f4d671c5316fa7cdcb5d)) * **template:** ensure heredoc dedenting works correctly ([4c7baa3](https://github.com/martinohmann/hcl-rs/commit/4c7baa3c7ddad0624ea6640a6c01580fe9c6a1c2)) ### Code Refactoring * **template:** make `StringTemplate` deref to `Template` ([#260](https://github.com/martinohmann/hcl-rs/issues/260)) ([9b57e5b](https://github.com/martinohmann/hcl-rs/commit/9b57e5bd95283de10b7266a8f52a9520c80e3f1a)) ## [0.6.7](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.6...hcl-edit-v0.6.7) (2023-07-08) ### Bug Fixes * **parser:** correctly handle escaped markers in templates ([#257](https://github.com/martinohmann/hcl-rs/issues/257)) ([92ec924](https://github.com/martinohmann/hcl-rs/commit/92ec924159d6f48a1604c7d60faa6d4ca74b3586)), closes [#256](https://github.com/martinohmann/hcl-rs/issues/256) ## [0.6.6](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.5...hcl-edit-v0.6.6) (2023-07-07) ### Features * **expr:** add `Expression::null` ([fac00fd](https://github.com/martinohmann/hcl-rs/commit/fac00fd5abbde5dc9db8f97f6fb9fedc2cabbfc3)) * **expr:** add more `From` impls to for `Expression` ([07b5417](https://github.com/martinohmann/hcl-rs/commit/07b5417cbf9422745e2475b77467b84e5cddda64)) * **repr:** add `{Spanned,Decorated,Formatted}::value_into` ([683f548](https://github.com/martinohmann/hcl-rs/commit/683f5487b5e07de481935e07d3ab2cb305126518)) ## [0.6.5](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.4...hcl-edit-v0.6.5) (2023-06-18) ### Bug Fixes * **string:** properly handle escaping of interpolation/directive marker ([#249](https://github.com/martinohmann/hcl-rs/issues/249)) ([e0c86f1](https://github.com/martinohmann/hcl-rs/commit/e0c86f16e88b1ca71672b938d15b21b99ee911f9)) ### Performance Improvements * **parser:** handle unescaping of escaped markers in parser code directly ([#251](https://github.com/martinohmann/hcl-rs/issues/251)) ([45036c5](https://github.com/martinohmann/hcl-rs/commit/45036c5199e3949ef7e5304f5104cb80e898b243)) ## [0.6.4](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.3...hcl-edit-v0.6.4) (2023-06-15) ### Bug Fixes * **template:** properly handle escaping of interpolation/directive markers ([#247](https://github.com/martinohmann/hcl-rs/issues/247)) ([69ad800](https://github.com/martinohmann/hcl-rs/commit/69ad8007e6d331b8f915b6e98de3fe4b8ef16239)) ### Dependencies * The following workspace dependencies were updated * dependencies * hcl-primitives bumped from 0.1.0 to 0.1.1 ## [0.6.3](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.2...hcl-edit-v0.6.3) (2023-06-13) ### Features * impl `Decorate` and `Span` for `Box<T>` ([d1ae8c0](https://github.com/martinohmann/hcl-rs/commit/d1ae8c057111cb8f1521f460936dfcb2355220a3)) * **repr:** re-export types from crate root ([#241](https://github.com/martinohmann/hcl-rs/issues/241)) ([2c5927b](https://github.com/martinohmann/hcl-rs/commit/2c5927b64d30eff25111ef812d2b7fd104f3eccc)) ## [0.6.2](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.1...hcl-edit-v0.6.2) (2023-06-12) ### Features * add prelude module ([844f13a](https://github.com/martinohmann/hcl-rs/commit/844f13af808b7323aa98f8aba9e32cfbf77c5a37)) ## [0.6.1](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.6.0...hcl-edit-v0.6.1) (2023-06-05) ### Features * **structure:** add `Block::has_labels` and `Block::has_exact_labels` ([#237](https://github.com/martinohmann/hcl-rs/issues/237)) ([a2ed25f](https://github.com/martinohmann/hcl-rs/commit/a2ed25f08e5673e18051c43bf4e920145dfa764f)) ## [0.6.0](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.5.4...hcl-edit-v0.6.0) (2023-06-03) ### ⚠ BREAKING CHANGES * **structure:** Various `Body` methods were changed to return `AttributeMut<'a>`/`StructureMut<'a>` instead of `&'a mut Attribute`/`&'a mut Structure` to prevent mutable access to attribute keys. The `VisitMut` trait was updated to reflect these changes as well. * **visit:** remove `'ast` lifetime parameter from `Visit` and `VisitMut` * **structure:** make `Structure::into_*` return a `Result` ### Features * **structure:** prevent duplicate attribute keys in `Body` ([#236](https://github.com/martinohmann/hcl-rs/issues/236)) ([f11bc22](https://github.com/martinohmann/hcl-rs/commit/f11bc22175184145db4ae8ab088ec332b936e5c4)) ### Bug Fixes * **structure:** make `Structure::into_*` return a `Result` ([f0792ef](https://github.com/martinohmann/hcl-rs/commit/f0792efce26d9f0899ad52f7db68b283a9532e54)) * **visit:** remove `'ast` lifetime parameter from `Visit` and `VisitMut` ([8f3a83e](https://github.com/martinohmann/hcl-rs/commit/8f3a83efef9b1bc7846a1f4ab0d8a2b5fe278dbf)) ## [0.5.4](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.5.3...hcl-edit-v0.5.4) (2023-05-15) ### Features * **structure:** add `Attribute::has_key` ([930a511](https://github.com/martinohmann/hcl-rs/commit/930a5112eab39363abc84d6a6bf0c5b246917641)) * **structure:** add `Block::has_ident` ([9799e4e](https://github.com/martinohmann/hcl-rs/commit/9799e4eba19fe114507926a64a1833f5de0997df)) * **structure:** add `Block::is_labeled` ([58f4cf6](https://github.com/martinohmann/hcl-rs/commit/58f4cf6e45af7f1b1d61c34ecbda289ef5a68e96)) * **structure:** add `Body::has_{attribute,blocks}` ([8af4b19](https://github.com/martinohmann/hcl-rs/commit/8af4b193ff11aa80f2b065ab5a1cea5f3946bf1a)) ## [0.5.3](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.5.2...hcl-edit-v0.5.3) (2023-05-11) ### Bug Fixes * **deps:** unpin winnow version ([ba4051a](https://github.com/martinohmann/hcl-rs/commit/ba4051aff419c19a2b7506ec823ff0f26ed291ad)) ## [0.5.2](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.5.1...hcl-edit-v0.5.2) (2023-05-06) ### Features * **structure:** add `BlockBuilder` and `BodyBuilder` ([#227](https://github.com/martinohmann/hcl-rs/issues/227)) ([33462d0](https://github.com/martinohmann/hcl-rs/commit/33462d09a7c632a281a3d0988fa68f246f012f94)) * **structure:** add `remove_*` methods to `Body` ([#228](https://github.com/martinohmann/hcl-rs/issues/228)) ([7b37763](https://github.com/martinohmann/hcl-rs/commit/7b37763c084f65a90e38ac2b98a8f9fff007a47b)) * **structure:** add getters for body structures ([#226](https://github.com/martinohmann/hcl-rs/issues/226)) ([2d08db1](https://github.com/martinohmann/hcl-rs/commit/2d08db11d82ef81e32b0890f0302a511c48f791c)) * **structure:** add iterator methods for attributes and blocks to `Body` ([#224](https://github.com/martinohmann/hcl-rs/issues/224)) ([c968d78](https://github.com/martinohmann/hcl-rs/commit/c968d78e16853cc7ff9eea9c3d86b22f79e12f93)) ### Bug Fixes * **structure:** use correct position in removal operations ([44b096b](https://github.com/martinohmann/hcl-rs/commit/44b096bd0c8193bdd5f02f1c75d42f19a5beb4fa)) ## [0.5.1](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.5.0...hcl-edit-v0.5.1) (2023-05-06) ### Bug Fixes * **parser:** error on duplicate attributes ([#222](https://github.com/martinohmann/hcl-rs/issues/222)) ([b4e36af](https://github.com/martinohmann/hcl-rs/commit/b4e36afd00aa75d99c6d29b8e7f601d6d548fde4)) ## [0.5.0](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.8...hcl-edit-v0.5.0) (2023-05-04) ### ⚠ BREAKING CHANGES * **structure:** `Block::new` now only accepts a single `ident` argument. Set the block body, by updating `body` field of `Block`. * **structure:** The `BlockBody` and `OnelineBody` types were removed. `Block` now directly uses `Body`. One-line blocks can still be constructed by calling `body.set_prefer_oneline(true)`. ### Code Refactoring * **structure:** remove `BlockBody` and `OnelineBody` ([#218](https://github.com/martinohmann/hcl-rs/issues/218)) ([1267054](https://github.com/martinohmann/hcl-rs/commit/126705402ce7c95c10160cf64349e13f41b09f3f)) * **structure:** remove `body` argument from `Block::new` ([#220](https://github.com/martinohmann/hcl-rs/issues/220)) ([04c78f8](https://github.com/martinohmann/hcl-rs/commit/04c78f81d1e13561167872d3d6a2b4dd835f3d9f)) ## [0.4.8](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.7...hcl-edit-v0.4.8) (2023-05-03) ### Features * make constructors generic ([#216](https://github.com/martinohmann/hcl-rs/issues/216)) ([711fd74](https://github.com/martinohmann/hcl-rs/commit/711fd74b41c6b114f80d28d69e0d1a62654408fa)) ## [0.4.7](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.6...hcl-edit-v0.4.7) (2023-05-02) ### Features * **ident:** add `Ident::try_new` ([#210](https://github.com/martinohmann/hcl-rs/issues/210)) ([4c15e1e](https://github.com/martinohmann/hcl-rs/commit/4c15e1e5b6eb7aedadef75da6a7fb11d5c9e8ec3)) * **template:** add methods to ease `Element` access ([#214](https://github.com/martinohmann/hcl-rs/issues/214)) ([d4687b2](https://github.com/martinohmann/hcl-rs/commit/d4687b2bb6008040ae4f530de9dfd0c0efc4711f)) * **template:** implement `From` for `Template` and `StringTemplate` ([c569ccf](https://github.com/martinohmann/hcl-rs/commit/c569ccf39241b8e48c3554b36c8b91a46cc026c2)) ### Bug Fixes * **template:** dereference `StringTemplate` to `Template` ([#213](https://github.com/martinohmann/hcl-rs/issues/213)) ([906b3a0](https://github.com/martinohmann/hcl-rs/commit/906b3a0ef7ae9299ebda820e0570788688ea9814)) ### Reverts * **template:** dereference `StringTemplate` to `Template` ([#215](https://github.com/martinohmann/hcl-rs/issues/215)) ([bc20933](https://github.com/martinohmann/hcl-rs/commit/bc20933a6180cc1f832443d01af5fe758087c5bc)) ### Dependencies * The following workspace dependencies were updated * dependencies * hcl-primitives bumped from 0.0.3 to 0.1.0 ## [0.4.6](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.5...hcl-edit-v0.4.6) (2023-04-30) ### Features * **structure:** add conversion methods to `BlockBody` ([e5001eb](https://github.com/martinohmann/hcl-rs/commit/e5001ebd9d98b804167df1650e6bc89a437bf6c0)) * **structure:** implement `IntoIterator` for `OnelineBody` ([cc69ba1](https://github.com/martinohmann/hcl-rs/commit/cc69ba1acb069fc4354b87ef335ce572b1d6ce20)) ## [0.4.5](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.4...hcl-edit-v0.4.5) (2023-04-28) ### Performance Improvements * **parser:** avoid `alt` in `array` and `object` parsers ([#205](https://github.com/martinohmann/hcl-rs/issues/205)) ([1c2ee01](https://github.com/martinohmann/hcl-rs/commit/1c2ee0185b9fb80bdd27d1735c1b53bbd168e6f6)) ## [0.4.4](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.3...hcl-edit-v0.4.4) (2023-04-22) ### Features * **expr:** add conversion methods to `Expression` ([679ad12](https://github.com/martinohmann/hcl-rs/commit/679ad124b978cfeb7eff88a41cdb9c22bc1d6c0f)) * **expr:** add conversion methods to `ObjectKey` ([e268c71](https://github.com/martinohmann/hcl-rs/commit/e268c71213e3d2ad3df4ebe8caa1e6b80d42d68d)) ## [0.4.3](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.2...hcl-edit-v0.4.3) (2023-04-22) ### Features * **expr:** add missing `From` impl for `Expression` ([bf235bc](https://github.com/martinohmann/hcl-rs/commit/bf235bc65b00bc0163fdadde82883294666f3b87)) * **structure:** add impl for `BlockLabel` ([22cc910](https://github.com/martinohmann/hcl-rs/commit/22cc9107459661b42a173076514ca2df4fda008f)) * **structure:** add missing `From` impls ([035b71e](https://github.com/martinohmann/hcl-rs/commit/035b71eb461c5a325b85633568175b812508e1a6)) * **template:** add missing `From` impls ([a558193](https://github.com/martinohmann/hcl-rs/commit/a558193ce2754c6d7a35239c2220bdb2ff73038c)) ## [0.4.2](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.1...hcl-edit-v0.4.2) (2023-04-21) ### Features * implement `From` for `Cow<str>` <-> `InternalString` ([e352a5a](https://github.com/martinohmann/hcl-rs/commit/e352a5ac0f0eb915b0d29cc44ec2c36f5d2d9c59)) ### Dependencies * The following workspace dependencies were updated * dependencies * hcl-primitives bumped from 0.0.2 to 0.0.3 ## [0.4.1](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.4.0...hcl-edit-v0.4.1) (2023-04-21) ### Features * implement `Deref` for `RawString` ([fdce941](https://github.com/martinohmann/hcl-rs/commit/fdce941df3f58f3b8ecfc667bbf6f5c013bec191)) * implement `From` for `Cow<str>` <-> `RawString` ([de49aa4](https://github.com/martinohmann/hcl-rs/commit/de49aa4efbf3a5f985977a1cf905348683a8edee)) ### Bug Fixes * preserve body comments during encode ([316c16b](https://github.com/martinohmann/hcl-rs/commit/316c16b7e0b55cb007b4e26d84c509889650a564)) ## [0.4.0](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.3.2...hcl-edit-v0.4.0) (2023-04-18) ### ⚠ BREAKING CHANGES * `FuncArgs::new` does not take any arguments anymore to align with constructors of other collection types. Use ### Features * add useful collection methods ([#197](https://github.com/martinohmann/hcl-rs/issues/197)) ([54f318d](https://github.com/martinohmann/hcl-rs/commit/54f318dfb793bf41272c9a1cc60148cfedcf3b23)) ## [0.3.2](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.3.1...hcl-edit-v0.3.2) (2023-04-12) ### Features * implement iterator traits for collections ([18ba590](https://github.com/martinohmann/hcl-rs/commit/18ba59001739c4a3b8b8781aac5118f53c03e101)) ## [0.3.1](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.3.0...hcl-edit-v0.3.1) (2023-03-31) ### Bug Fixes * **parser:** add missing `despan` call ([34897d6](https://github.com/martinohmann/hcl-rs/commit/34897d655f2e57eb97d3e7e0cdf3e0d68286ac15)) * **parser:** remove misplaced negation ([0af4f4e](https://github.com/martinohmann/hcl-rs/commit/0af4f4e878f920853ada1a7dd6d2714a08037681)) ## [0.3.0](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.2.1...hcl-edit-v0.3.0) (2023-03-30) ### ⚠ BREAKING CHANGES * **expr:** replace `&ObjectKey` with `ObjectKeyMut` in `ObjectIterMut` ([#191](https://github.com/martinohmann/hcl-rs/issues/191)) ### Features * add `visit` and `visit_mut` modules ([#187](https://github.com/martinohmann/hcl-rs/issues/187)) ([ec4914d](https://github.com/martinohmann/hcl-rs/commit/ec4914dfca4f05e5ff5d55c9897d06bea9de488e)) ### Bug Fixes * **expr:** replace `&ObjectKey` with `ObjectKeyMut` in `ObjectIterMut` ([#191](https://github.com/martinohmann/hcl-rs/issues/191)) ([c74c9f6](https://github.com/martinohmann/hcl-rs/commit/c74c9f69a501eac410571fee7e72ccbb7fb111aa)) ## [0.2.1](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.2.0...hcl-edit-v0.2.1) (2023-03-30) ### Bug Fixes * **parser:** handle `/` ambiguity in expression parser ([#189](https://github.com/martinohmann/hcl-rs/issues/189)) ([f4c3547](https://github.com/martinohmann/hcl-rs/commit/f4c35470f40871ae1060164ee8879a17c7a127cb)), closes [#188](https://github.com/martinohmann/hcl-rs/issues/188) ## [0.2.0](https://github.com/martinohmann/hcl-rs/compare/hcl-edit-v0.1.0...hcl-edit-v0.2.0) (2023-03-29) ### ⚠ BREAKING CHANGES * rename `Oneline` to `OnelineBody` * make fields without invariants public ([#185](https://github.com/martinohmann/hcl-rs/issues/185)) ### Bug Fixes * make fields without invariants public ([#185](https://github.com/martinohmann/hcl-rs/issues/185)) ([2f5c9ad](https://github.com/martinohmann/hcl-rs/commit/2f5c9ad0e3f62edd59ac434ffd7942f4f252edb8)) * rename `Oneline` to `OnelineBody` ([ed2f784](https://github.com/martinohmann/hcl-rs/commit/ed2f784c99dce981624d1c99465457b1a19a2da9))