Skip to content

Wrap

Purpose

Since 6.10.8

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.

??? quote ‘Syntax’

StringWrapper p6.wrap.of(String source)

Example

=== ‘Default’

final w = p6.wrap.of transactionInfo.sender

=== ‘Date format’

final String formattedDate = p6.wrap.of transactionInfo.creationDate asDate 'yyyy-MM-dd' format 'yyyy-MM-dd'T'HH:mm'

=== ‘Number format’

final String formattedDate = p6.wrap
    .of transactionInfo.keyValue.find{it.Key.text() == 'Total Amount'}.Value.text()
     asNumber() format'###,###,##0.00'

=== ‘File’

final String extension = p6.wrap
    .of '/opt/path/to' asFile() extension()

of (Date)

Provides a DateWrapper based on a Date.

??? quote ‘Syntax’

DateWrapper p6.wrap.of(Date source)

Example

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

of (Number)

Provides a NumberWrapper based on a Number.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘Syntax’

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

Example

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

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.

??? quote ‘Syntax’

String wrap.toString()

Example

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

get

Retrieves the wrapped String

??? quote ‘Syntax’

String wrap.get()

Example

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

asNumber

Converts the string to a number.

??? quote ‘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

??? quote ‘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.

??? quote ‘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.

??? quote ‘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'

append

Appends the specified value to the string.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘Syntax’

StringWrapper wrap.capitalize()

Example

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

uncapitalize

Uncapitalizes the first character of the string.

??? quote ‘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.

??? quote ‘Syntax’

StringWrapper wrap.trim()

Example

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

upper

Converts the string to uppercase.

??? quote ‘Syntax’

StringWrapper wrap.upper()

Example

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

lower

Converts the string to lowercase.

??? quote ‘Syntax’

StringWrapper wrap.lower()

Example

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

escape

Escape the string.

??? quote ‘Syntax’

StringWrapper wrap.escape()

Example

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

left

Gets the leftmost length characters of the string.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘Syntax’

boolean wrap.isBlank()

Example

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

isNotBlank

Checks if the string is not blank.

??? quote ‘Syntax’

boolean wrap.isNotBlank()

Example

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

isEmpty

Checks if the string is empty.

??? quote ‘Syntax’

boolean wrap.isEmpty()

Example

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

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

??? quote ‘Syntax’

boolean wrap.isNotEmpty()

Example

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

isNumeric

Checks if the string is numeric.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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)

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘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

??? quote ‘Syntax’

File wrap.get()

Example

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

extension

Retrieves the extension of the file.

??? quote ‘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.

??? quote ‘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.

??? quote ‘Syntax’

StringWrapper wrap.baseName()

Example

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

ArrayWrapper

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

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 ,.

??? quote ‘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

??? quote ‘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.

??? quote ‘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.

??? quote ‘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.

??? quote ‘Syntax’

BaseWrapper wrap.last()

Example

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

size

Returns the size of the array.

??? quote ‘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.

??? quote ‘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.

??? quote ‘Syntax’

StringWrapper wrap.join(String seq)

Example

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