Skip to content

Wrap

Purpose

New Feature

Since 6.10.9

Provides utility methods for manipulating Array, String, Date, File and Numbers.

Note

A Wrapper is a class that wraps a value and provides utility methods for manipulating it.

Methods

Binding name: p6.wrap

of (String)

Provides a StringWrapper based on a String.

Syntax
StringWrapper p6.wrap.of(String source)

Example

final w = p6.wrap.of transactionInfo.sender
final String formattedDate = p6.wrap.of transactionInfo.creationDate asDate 'yyyy-MM-dd' format 'yyyy-MM-dd'T'HH:mm'
final String formattedDate = p6.wrap
    .of transactionInfo.keyValue.find{it.Key.text() == 'Total Amount'}.Value.text()
     asNumber() format'###,###,##0.00'
final String extension = p6.wrap
    .of '/opt/path/to' asFile() extension()

Since 6.10.15

final String extension = p6.wrap
    .of '<root><fee>Fee</fee></root>' asXml() xpath('/root/fee')

of (Date)

Provides a DateWrapper based on a Date.

Syntax
DateWrapper p6.wrap.of(Date source)

Example

final w = p6.wrap.of new Date()

of (Number)

Provides a NumberWrapper based on a Number.

Syntax
NumberWrapper p6.wrap.of(Number source)

Example

final w = p6.wrap.of transactionInfo.attachments.size()

of (Path)

Provides a FileWrapper based on a Path.

Syntax
FileWrapper p6.wrap.of(Path source)

Example

final w = p6.wrap.of Paths.get('/path/to')

of (File)

Provides a FileWrapper based on a File.

Syntax
FileWrapper p6.wrap.of(File source)

Example

final w = p6.wrap.of p6.uri.fileFromUrl('/path/to.ext')

of (Array)

Provides a ArrayWrapper based on a Object array.

Syntax
ArrayWrapper p6.wrap.of(Object[] source)

Example

final w = p6.wrap.of ['fee', 'foo']

of (GPathResult)

New Feature

Since 6.10.15

Provides a XmlWrapper based on an Element or GPathResult.

Syntax
XmlWrapper p6.wrap.of(GPathResult source)
XmlWrapper p6.wrap.of(org.w3c.dom.Element source)

Example

final xml = p6.xml.fromString('<root><fee>Fee</fee></root>') 
final w = p6.wrap.of xml

Wrappers

StringWrapper

Provides utility methods for manipulating a String. On the following methods, wrap is a StringWrapper.

toString

Retrieves the String representation of the wrapped value.

Syntax
String wrap.toString()

Example

final s = p6.wrap.of 'example' toString()
final String s = p6.wrap.of 'example'

get

Retrieves the wrapped String

Syntax
String wrap.get()

Example

final String value = p6.wrap.of 'example' get()
assert value == 'example'

asNumber

Converts the string to a number.

Syntax
NumberWrapper wrap.asNumber()

Example

final value = p6.wrap.of '123' asNumber() get()
assert value == 123

asDate

Converts the string to a date using the default format.

Default: Date format = yyyy-MM-dd'T'HH:mm:ss.SSSZ

Syntax
DateWrapper wrap.asDate()

Example

final String value = p6.wrap.of '2023-10-01T12:34:56.789+0100' asDate() get()
assert value == 'Sun Oct 01 11:34:56 UTC 2023'

asDate (with format)

Converts the string to a date using the specified format.

Syntax
DateWrapper wrap.asDate(String format)

Example

final String value = p6.wrap.of '01-10-2023' asDate 'dd-MM-yyyy' get()
assert value == 'Sun Oct 01 00:00:00 UTC 2023'

asFile

Converts the string to a file.

Note

The file path will be resolved using the file or p6file protocol. If the protocol is not present, the path will be resolved as a local file.

Syntax
FileWrapper wrap.asFile()

Example

final String value = p6.wrap.of 'file:///opt/path/to' asFile() get()
assert value == '/opt/path/to'

final String value = p6.wrap.of 'p6file:///${P6_DATA}/path/to' asFile() get()
assert value == '/opt/p6core.data/path/to'

final String value = p6.wrap.of '/opt/path/to' asFile() get()
assert value == '/opt/path/to'

asXml

New Feature

Since 6.10.15

Converts the string to a Xml.

Syntax
XmlWrapper wrap.asXml()

Example

final String value = p6.wrap.of '<root><fee>Fee</fee></root>' asXml() get()
assert value == 'Fee'

append

Appends the specified value to the string.

Syntax
StringWrapper wrap.append(String value)

Example

final String value = p6.wrap.of 'example' append '123'
assert value == 'example123'

prepend

Prepends the specified value to the string.

Syntax
StringWrapper wrap.prepend(String value)

Example

final String value = p6.wrap.of 'example' prepend '123'
assert value == '123example'

abbreviate

Abbreviates the string to a maximum width of maxWidth.

Syntax
StringWrapper wrap.abbreviate(int maxWidth).with(String ellipsis)

StringWrapper wrap.abbreviate(int maxWidth).get()
# Similar as ellipsis equals '...'

Example

final String value = p6.wrap.of 'example' abbreviate 5 with '...'
assert value == 'ex...'

final String value = p6.wrap.of 'example' abbreviate 5 with '.'
assert value == 'exam.'

final String value = p6.wrap.of 'example' abbreviate 5 get()
assert value == 'ex...'

capitalize

Capitalizes the first character of the string.

Syntax
StringWrapper wrap.capitalize()

Example

final String value = p6.wrap.of 'example' capitalize() 
assert value == 'Example'

uncapitalize

Uncapitalizes the first character of the string.

Syntax
StringWrapper wrap.uncapitalize()

Example

final String value = p6.wrap.of 'Example' uncapitalize()
assert value == 'example'

trim

Trims whitespace from both ends of the string.

Syntax
StringWrapper wrap.trim()

Example

final String value = p6.wrap.of ' example ' trim()
assert value == 'example'

upper

Converts the string to uppercase.

Syntax
StringWrapper wrap.upper()

Example

final String value = p6.wrap.of 'example' upper()
assert value == 'EXAMPLE'

lower

Converts the string to lowercase.

Syntax
StringWrapper wrap.lower()

Example

final String value = p6.wrap.of 'EXAMPLE' lower()
assert value == 'example'

escape

Escape the string.

Syntax
StringWrapper wrap.escape()

Example

final w = p6.wrap.of 'example' escape()

left

Gets the leftmost length characters of the string.

Syntax
StringWrapper wrap.left(int length)

Example

final String value = p6.wrap.of 'example' left 3
assert value == 'exa'

Gets the rightmost length characters of the string.

Syntax
StringWrapper wrap.right(int length)

Example

final String value = p6.wrap.of 'example' right 3
assert value == 'ple'

leftPad

Pads, the specified pad string, to the left of the string length amount of times.

Syntax
StringWrapper wrap.leftPad(int length).with(String pad)

StringWrapper wrap.leftPad(int length).get()
# Similar as pad equals ' '

Example

final String value = p6.wrap.of 'example' leftPad 10 with ' '
assert value == '   example'

final String value = p6.wrap.of 'example' leftPad 10 with '.'
assert value == '...example'

final String value = p6.wrap.of 'example' leftPad 10 get()
assert value == '   example'

rightPad

Pads, the specified pad string, to the right of the string length amount of times.

Syntax
StringWrapper wrap.rightPad(int length).with(String pad)

StringWrapper wrap.rightPad(int length).get()
# Similar as pad equals ' '

Example

final String value = p6.wrap.of 'example' rightPad 10 with  ' '
assert value == 'example   '

final String value = p6.wrap.of 'example' rightPad 10 with '.'
assert value == 'example...'

final String value = p6.wrap.of 'example' rightPad 10 get()
assert value == 'example   '

replace

Replaces all occurrences of target with replacement in the string.

Syntax
StringWrapper wrap.replace(String target).with(String replacement)

Example

final String value = p6.wrap.of 'example' replace 'e' with 'a'
assert value == 'axampla'

replaceRe

Replaces all occurrences of the regular expression target with replacement in the string.

Syntax
StringWrapper wrap.replaceRe(String regex).with(String replacement)

Example

final String value = p6.wrap.of 'example' replaceRe 'e.' with 'a'
assert value == 'aample'

stripStart

Removes the leading characters that match the specified sequence.

Syntax
StringWrapper wrap.stripStart(String seq)

Example

final String value = p6.wrap.of 'example' stripStart 'ex'
assert value == 'ample'

isBlank

Checks if the string is blank.

Syntax
boolean wrap.isBlank()

Example

final value = p6.wrap.of ' ' isBlank()
assert value == true

isNotBlank

Checks if the string is not blank.

Syntax
boolean wrap.isNotBlank()

Example

final value = p6.wrap.of ' ' isNotBlank()
assert value == false

isEmpty

Checks if the string is empty.

Syntax
boolean wrap.isEmpty()

Example

final value = p6.wrap.of '' isEmpty()
assert value == true

#### isNotEmpty Checks if the string is not empty.

Syntax
boolean wrap.isNotEmpty()

Example

final value = p6.wrap.of '' isNotEmpty()
assert value == false

isNumeric

Checks if the string is numeric.

Syntax
boolean wrap.isNumeric()

Example

final value = p6.wrap.of '123' isNumeric()
assert value == true
final value = p6.wrap.of 'abc' isNumeric()
assert value == false

countMatches

Counts how many times the specified sequence seq is contained.

Syntax
NumberWrapper wrap.countMatches(String seq)

Example

final value = p6.wrap.of 'example' countMatches 'e' get()
assert value == 2

contains

Checks if the string contains the specified sequence seq.

Syntax
boolean wrap.contains(String seq)

Example

final value = p6.wrap.of 'example' contains 'amp'
assert value == true
final value = p6.wrap.of 'example' contains 'fee'
assert value == false

startsWith

Checks if the string starts with the specified sequence seq.

Syntax
boolean wrap.startsWith(String seq)

Example

final value = p6.wrap.of 'example' startsWith 'ex'
assert value == true
final value = p6.wrap.of 'example' startsWith 'le'
assert value == false

endsWith

Checks if the string ends with the specified sequence seq.

Syntax
boolean wrap.endsWith(String seq)

Example

final value = p6.wrap.of 'example' endsWith 'le'
assert value == true
final value = p6.wrap.of 'example' endsWith 'ex'
assert value == false

split

Splits the string into an array of StringWrapper using the specified separator.

Syntax
ArrayWrapper wrap.split(String seq)

Example

final value = p6.wrap.of 'fee,foo,bar' split ',' size() get()
assert value == 3

DateWrapper

Provides utility methods for manipulating a Date. On the following methods, wrap is a DateWrapper.

Default: Date format = yyyy-MM-dd'T'HH:mm:ss.SSSZ

Tip

Convert the date to a string, use the toString method or define the variable as a String

toString

Retrieves the String representation of the wrapped value using the optional timezone and date format.

Syntax
String wrap.toString()

Example

final s = p6.wrap.of new Date() toString()
final String s = p6.wrap.of new Date()

get

Retrieves the wrapped Date

Syntax
Date wrap.get()

Example

final d = new Date()
final value = p6.wrap.of d get()
assert value == d

timestamp

Returns the timestamp of the date.

Syntax
NumberWrapper wrap.timestamp()

Example

final d = new Date(1674537600000)
final value = p6.wrap.of d timestamp() get()
assert value == 1674537600000

setLastOfMonth

Sets the date to the last day of the month.

Syntax
NumberWrapper wrap.setLastOfMonth()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d setLastOfMonth() getDay() get()
assert value == 31

setFirstOfMonth

Sets the date to the first day of the month.

Syntax
NumberWrapper wrap.setFirstOfMonth()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d setFirstOfMonth() getDay() get()
assert value == 1

add

Adds the specified modifier to the date.

Syntax
DateWrapper wrap.add(String modifier)

Note

The modifier string should follow the pattern [+-]\d+[smhdMy], where:

  • + o - indicates addition or substraction
  • \d+ is the number of units to add or substract
  • s for seconds, m for minutes, h for hours, d for days, M for months, and y for years.

Tip

You can use multiple modifiers in the same string. (i.e. +1d-1h)

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d add '+1d' getDay() get()
assert value == 25 

getYear

Get the year of the date.

Syntax
NumberWrapper wrap.getYear()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d getYear() get()
assert value == 2025

getMonth

Get the month of the date. (zero indexed value)

Syntax
NumberWrapper wrap.getMonth()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d getMonth() get()
assert value == 0

getDay

Get the day of the month of the date.

Syntax
NumberWrapper wrap.getDay()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d getDay() get()
assert value == 24

getHours

Get the hours of the date.

Syntax
NumberWrapper wrap.getHours()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d getHours() get()
assert value == 12

getMinutes

Get the minutes of the date.

Syntax
NumberWrapper wrap.getMinutes()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d getMinutes() get()
assert value == 35

getSeconds

Get the seconds of the date.

Syntax
NumberWrapper wrap.getSeconds()

Example

final d = new Date(1737722104000)
final value = p6.wrap.of d getSeconds() get()
assert value == 4

format

Formats the date using the specified format.

Syntax
DateWrapper wrap.format(String format)

Example

final d = new Date(1737722104000)
final String value = p6.wrap.of d format 'yyyy-MM-dd'
assert value == '2025-01-24'     

timezone

Set the timezone of the date.

Syntax
DateWrapper wrap.tmezone(String timezone)

Example

final d = new Date(1737722104000)
final String value = p6.wrap.of d format 'yyyy-MM-dd hh:mm:ss' timezone 'GMT+1'
assert value == '2025-01-24 01:35:04'

NumberWrapper

Provides utility methods for manipulating a Number. On the following methods, wrap is a NumberWrapper.

Tip

  • to convert the number to a string, use the toString method or define the variable as a String

toString

Retrieves the String representation of the wrapped value using the optional number format.

Syntax
String wrap.toString()

Example

final s = p6.wrap.of 123456.78 toString()
final String s = p6.wrap.of 123456.78

get

Retrieves the wrapped Number

Syntax
Number wrap.get()

Example

final value = p6.wrap.of 123456.78 get()
assert value == 123456.78

format

Formats the number using the specified format.

Syntax
NumberWrapper wrap.format(String format)

Example

final String value = p6.wrap.of 123456.78 format '#,##0.000'
assert value == "123,456.780"

round

Rounds the number to the specified number of decimal places.

Syntax
NumberWrapper wrap.round(int precision)

Example

final value = p6.wrap.of 123456.78 round 1 get()
assert value == 123456.8

calc

Perform a mathematics operation on the number.

Syntax
NumberWrapper wrap.calc(String operator, Number value)

Note

The operator string should be one of the following:

  • + indicates addition
  • - indicates substraction
  • * indicates multiplication
  • / indicates division

Tip

Multiplications and divisions can generate numbers with decimal. You can use the round method to round the result.

Example

final String value = p6.wrap.of 123.45 calc('*', 67.89) round 2
assert value == "8381.02"

calc (from String)

Performs the same action as calc but with a string value. The string is converted to a BigDecimal before the operation.

Syntax
NumberWrapper wrap.calc(String operator, String value)

Example

final String value = p6.wrap.of 123.45 calc('*', '67.89') round 2
assert value == "8381.02"

FileWrapper

Provides utility methods for manipulating a File. On the following methods, wrap is a FileWrapper.

Tip

  • to convert the File to a string, use the toString method or define the variable as a String

toString

Retrieves the String representation of the wrapped value using the optional number format.

Syntax
String wrap.toString()

Example

final s = p6.wrap.of p6.uri.fileFromUrl('p6file:///path/to.ext') toString()
final String s = p6.wrap.of p6.uri.fileFromUrl('p6file:///path/to.ext')

get

Retrieves the wrapped File

Syntax
File wrap.get()

Example

final value = p6.wrap.of '/path/to.ext' asFile() get()

extension

Retrieves the extension of the file.

Syntax
StringWrapper wrap.extension()

Example

final String value = p6.wrap.of '/path/to.ext' asFile() extension()
assert value == 'ext'

name

Retrieves the name of the file.

Syntax
StringWrapper wrap.name()

Example

final String value = p6.wrap.of '/path/to.ext' asFile() name()
assert value == 'to.ext'

baseName

Retrieves the base name of the file.

Syntax
StringWrapper wrap.baseName()

Example

final String value = p6.wrap.of '/path/to.ext' asFile() baseName()
assert value == 'to'

XmlWrapper

New Feature

Since 6.10.15

Provides utility methods for manipulating xml. On the following methods, wrap is a XmlWrapper.

Tip

  • to convert the Xml to a string, use the toString method or define the variable as a String

toString

Retrieves the String representation of the wrapped value.

Syntax
String wrap.toString()

Example

final s = p6.wrap.of '<root><fee>Fee</fee><foo>Foo</foo></root>' asXml() toString()
final String s = p6.wrap.of '<root><fee>Fee</fee><foo>Foo</foo></root>' asXml()

get

Retrieves the wrapped org.w3c.dom.Element

Syntax
org.w3c.dom.Element wrap.get()

Example

final value = p6.wrap.of '<root><fee>Fee</fee><foo>Foo</foo></root>' asXml() get()

asGPathResult

Retrieves the wrapped org.w3c.dom.Element and convert it to a GPathResult.

Syntax
GPathResult wrap.asGPathResult()

Example

final value = p6.wrap.of '<root><fee>Fee</fee><foo>Foo</foo></root>' asXml() xpath('/root/fee) asGPathResult()

source

Retrieves the xml source of the wrapped value.

Syntax
StringWrapper wrap.source()

Example

final String value = p6.wrap.of '<root><fee>Fee</fee><foo>Foo</foo></root>' asXml() xpath('/root/fee) source()
assert value == '<fee>Fee</fee>'

attribute

Retrieves the value of the specified attribute.

Syntax
StringWrapper wrap.attribute(String name)

Example

final String value = p6.wrap.of '<root attr="value"><fee>Fee</fee><foo>Foo</foo></root>' asXml() attribute('attr')
assert value == 'value'

final String value = p6.wrap.of '<root><fee bar="bee">Fee</fee><foo>Foo</foo></root>' asXml() xpath('/root/fee') attribute('bar')
assert value == 'bee'

xpath

Evaluates the specified xpath expression and returns the first matching node as a XmlWrapper.

Syntax
XmlWrapper wrap.xpath(String xpath)

Example

final w = p6.wrap.of '<root><fee bar="bee">Fee</fee><foo>Foo</foo></root>' asXml() xpath('/root/fee')
assert w instanceof XmlWrapper

list

Evaluates the specified xpath expression and returns all matching nodes as an ArrayWrapper of XmlWrapper.

Syntax
final a = wrap.select(String xpath)

Example

final list = p6.wrap.of '<root><fee>Fee</fee><fee>Foo</fee></root>' asXml() list('/root/fee')
assert list.size() == 2
assert list.get(0).toString() == 'Fee'
assert list.get(1).toString() == 'Foo'

exists

Checks if the specified xpath expression returns at least one node.

Syntax
boolean wrap.exists(String xpath)

Example

final exists = p6.wrap.of '<root><fee bar="bee">Fee</fee><foo>Foo</foo></root>' asXml() exists('/root/fee')
assert exists

ArrayWrapper

Provides utility methods for manipulating an Array. On the following methods, wrap is an ArrayWrapper.

Note

Since 6.10.15

The ArrayWrapper is iterable, so you can use the .each method to iterate over the elements (Wrappers).

Example

final array = p6.wrap.of ['fee', 'foo', 'bar']
array.each { element ->
    // element is a Wrapper (StringWrapper in this case)
    println element capitalize() toString()
}

Tip

To convert the Array to a string, use the toString method or define the variable as a String

toString

Retrieves the String representation of the wrapped value joined on the default separator ,.

Syntax
String wrap.toString()

Example

final s = p6.wrap.of ['fee', 'foo'] toString()
final String s = p6.wrap.of ['fee', 'foo']

get

Retrieves the wrapped Array

Syntax
Object[] wrap.get()

Example

final a = ['fee', 'foo']
final value = p6.wrap.of a get()
assert value == a 

get(index)

Retrieves the element at the specified index as a Wrapper.

Warning

The index is zero-based.

Syntax
BaseWrapper wrap.get()

Example

final String value = p6.wrap.of ['fee', 'foo'] get 0
assert value == 'fee'

first

Retrieves the first element as a Wrapper.

Syntax
BaseWrapper wrap.first()

Example

final String value = p6.wrap.of ['fee', 'foo'] first()
assert value == 'fee'

last

Retrieves the last element as a Wrapper.

Syntax
BaseWrapper wrap.last()

Example

final String value = p6.wrap.of ['fee', 'foo'] last()
assert value == 'foo'

size

Returns the size of the array.

Syntax
NumberWrapper wrap.size()

Example

final value = p6.wrap.of ['fee', 'foo'] size()
assert value == 2

contains

Checks if the array contains one of the specified values.

Syntax
boolean wrap.contains(Object v1 [, Object v2, ...])

Example

final value = p6.wrap.of ['fee', 'foo'] contains 'fee'
assert value == true
final value = p6.wrap.of ['fee', 'foo'] contains ('fee', 'bar')
assert value == true
final value = p6.wrap.of ['fee', 'foo'] contains 'bar'
assert value == false

join

Joins the array elements using the specified separator.

Syntax
StringWrapper wrap.join(String seq)

Example

final String value = p6.wrap.of ['fee', 'foo'] join '|'
assert value == 'fee|foo'