Skip to main content

CstObject

Struct CstObject 

Source
pub struct CstObject(/* private fields */);
Expand description

Object literal that may contain properties (ex. {}, { "prop": 4 }).

Implementations§

Source§

impl CstObject

Source

pub fn parent(&self) -> Option<CstContainerNode>

Parent of the node.

Returns None if this node has become disconnected from the tree by being removed.

Source

pub fn ancestors(&self) -> impl Iterator<Item = CstContainerNode>

An iterator of ancestors of this node.

Source

pub fn child_index(&self) -> usize

Current child index of the node within the children of the parent node.

Source

pub fn previous_sibling(&self) -> Option<CstNode>

Node that comes before this one that shares the same parent.

Source

pub fn previous_siblings(&self) -> impl Iterator<Item = CstNode>

Siblings coming before this node. This does not include cousins.

Source

pub fn next_sibling(&self) -> Option<CstNode>

Node that comes after this one that shares the same parent.

Source

pub fn next_siblings(&self) -> impl Iterator<Item = CstNode>

Siblings coming after this node. This does not include cousins.

Source

pub fn indent_text(&self) -> Option<String>

Returns the indentation text if it can be determined.

Source

pub fn has_blank_line_before(&self) -> bool

Whether a blank line separates this node, and the comments written above it, from whatever came before them.

Source

pub fn trailing_comma(&self) -> Option<CstToken>

Gets the trailing comma token of the node, if it exists.

Source

pub fn uses_trailing_commas(&self) -> bool

Infers if the node or appropriate ancestor uses trailing commas.

Source

pub fn children(&self) -> Vec<CstNode>

Children of the current node.

Source

pub fn children_exclude_trivia_and_tokens(&self) -> Vec<CstNode>

Children of the current node excluding comments, whitespace, newlines, and tokens.

Source

pub fn child_at_index(&self, index: usize) -> Option<CstNode>

Gets the child at the specified index.

Source§

impl CstObject

Source

pub fn root_node(&self) -> Option<CstRootNode>

Gets the root node.

Returns None if this node has become disconnected from the tree by being removed.

Source

pub fn array_value(&self, name: &str) -> Option<CstArray>

Array property by name.

Returns None if the property doesn’t exist or is not an array.

Source

pub fn array_value_or_create(&self, name: &str) -> Option<CstArray>

Ensures a property exists with an array value returning the array.

Returns None if the property value exists, but is not an array.

Note: Use .array_value_or_set(..) to overwrite an existing non-array property value.

Source

pub fn array_value_or_set(&self, name: &str) -> CstArray

Ensures a property exists with an array value returning the array.

Note: Use .array_value_or_create(..) to not overwrite an existing non-array property value.

Source

pub fn object_value(&self, name: &str) -> Option<CstObject>

Object property by name.

Returns None if the property doesn’t exist or is not an object.

Source

pub fn object_value_or_create(&self, name: &str) -> Option<CstObject>

Ensures a property exists with an object value returning the object.

Returns None if the property value exists, but is not an object.

Note: Use .object_value_or_set(..) to overwrite an existing non-array property value.

Source

pub fn object_value_or_set(&self, name: &str) -> CstObject

Ensures a property exists with an object value returning the object.

Note: Use .object_value_or_create(..) to not overwrite an existing non-object property value.

Source

pub fn get(&self, name: &str) -> Option<CstObjectProp>

Property by name.

Returns None if the property doesn’t exist.

Source

pub fn properties(&self) -> Vec<CstObjectProp>

Properties of the object.

Source

pub fn append(&self, prop_name: &str, value: CstInputValue) -> CstObjectProp

Appends a property to the object.

Returns the inserted object property.

Source

pub fn insert( &self, index: usize, prop_name: &str, value: CstInputValue, ) -> CstObjectProp

Inserts a property at the specified index.

Returns the inserted object property.

Source

pub fn sort_properties(&self) -> PropertySort<'_>

Sorts the properties of the object.

What was written with a property travels with it: the comments and blank lines above it, and a comment written after it on the same line. Whatever precedes the close brace, and whatever shares the open brace’s line, belongs to no property and stays where it is. Each property gains or loses a comma to suit its new position, and whether the object ends with a trailing comma is preserved.

A blank line under the open brace travels with the property it was written above, and one that would end up there instead is dropped, since a gap there reads as belonging to the object. A line comment that would otherwise comment out what now follows it gains a line break, which can make a single line object span several.

Nothing moves until PropertySort::by or PropertySort::by_key says how to order them.

§Example
use jsonc_parser::ParseOptions;
use jsonc_parser::cst::CstRootNode;

let json_text = r#"{
  "b": 2, // written about b
  // written about a
  "a": 1
}"#;

let root = CstRootNode::parse(json_text, &ParseOptions::default()).unwrap();
let root_obj = root.object_value().unwrap();
root_obj.sort_properties().by_key(|prop| prop.decoded_name());

assert_eq!(root.to_string(), r#"{
  // written about a
  "a": 1,
  "b": 2 // written about b
}"#);
Source

pub fn replace_with(self, replacement: CstInputValue) -> Option<CstNode>

Replaces this node with a new value.

Source

pub fn set_trailing_commas(&self, mode: TrailingCommaMode)

Ensures this object and all its descendants use trailing commas.

Source

pub fn ensure_multiline(&self)

Ensures the object spans multiple lines.

Source

pub fn remove(self)

Removes the node from the JSON.

Source

pub fn to_serde_value(&self) -> Option<Value>

Converts a CST object to a serde_json::Value.

Trait Implementations§

Source§

impl Clone for CstObject

Source§

fn clone(&self) -> CstObject

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CstObject

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for CstObject

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<CstObject> for CstNode

Source§

fn from(value: CstObject) -> Self

Converts to this type from the input type.
Source§

impl From<CstObject> for CstContainerNode

Source§

fn from(value: CstObject) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.