+datePart Example
+Today's date is #todayDate#.
+
Using datePart, we extract an integer representing the dateparts from that value
+
+- year: #datePart("yyyy", todayDate)#
+- quarter: #datePart("q", todayDate)#
+- month: #datePart("m", todayDate)#
+- day of year: #datePart("y", todayDate)#
+- day: #datePart("d", todayDate)#
+- weekday: #datePart("w", todayDate)#
+- week: #datePart("ww", todayDate)#
+- hour: #datePart("h", todayDate)#
+- minute: #datePart("n", todayDate)#
+- second: #datePart("s", todayDate)#
+
+
+```
diff --git a/docs/functions/datetimeformat.md b/docs/functions/datetimeformat.md
new file mode 100644
index 000000000..03e0127e0
--- /dev/null
+++ b/docs/functions/datetimeformat.md
@@ -0,0 +1,85 @@
+# dateTimeFormat
+
+Formats a datetime value using U.S. date and time formats. For international date support, use lsDateTimeFormat.
+
+```javascript
+dateTimeFormat(date [, mask [, timezone]])
+```
+
+```javascript
+returns string
+```
+
+## Member Function Syntax
+
+```javascript
+datetime.dateTimeFormat([mask [, timezone]])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| date | date | Yes | | The datetime object (100AD-9999AD).
NOTE: This parameter is named `datetime` in Lucee. |
+| mask | string | No | dd-mmm-yyyy HH:nn:ss | The mask used to format the datetime output.
- d : Day of the month as digits; no leading zero for single-digit days.
- dd : Day of the month as digits; leading zero for single-digit days.
- EEE : Day of the week as a three-letter abbreviation.
- EEEE : Day of the week as its full name.
- m : Month as digits; no leading zero for single-digit months.
- mm : Month as digits; leading zero for single-digit months.
- mmm : Month as a three-letter abbreviation. (Dec)
- mmmm : Month as its full name.
- M : Month in year. (pre-CF2016u3)
- D : Day in year. (pre-CF2016u3)
- yy : Year as last two digits; leading zero for years less than 10.
- yyyy : Year represented by four digits.
- YYYY : Week year represented by four digits. (pre-CF2016u3)
- Y : Week year. (pre-CF2016u3)
- YY : Week Year as last two digits; leading zero for years less than 10. (pre-CF2016u3)
- G : Period/era string. (e.g. BC/AD)
- h : hours; no leading zero for single-digit hours. (12-hour clock)
- hh : hours; leading zero for single-digit hours. (12-hour clock)
- H : hours; no leading zero for single-digit hours. (24-hour clock)
- HH : hours; leading zero for single-digit hours. (24-hour clock)
- n : minutes; no leading zero for single-digit minutes.
- nn : minutes; leading zero for single-digit minutes.
- s : seconds; no leading zero for single-digit seconds.
- ss : seconds; leading zero for single-digit seconds.
- l or L : milliseconds, with no leading zeros.
- t : one-character time marker string, such as A or P.
- tt : multiple-character time marker string, such as AM or PM.
- w : Week of the year as digit. (JDK7+)
- ww : Week of the year as digits; leading zero for single-digit week. (JDK7+)
- W : Week of the month as digit. (JDK7+)
- WW : Week of the month as digits; leading zero for single-digit week. (JDK7+)
The following masks tell how to format the full date and time and cannot be combined with other masks:
- `short` : equivalent to `"m/d/y h:nn tt"`
- `medium` : equivalent to `"mmm d, yyyy h:nn:ss tt"`
- `long` : `medium` with full month name rather than abbreviation, followed by three-letter time zone; as in, `"mmmm d, yyyy h:mm:ss tt EST"`
- `full` : equivalent to `"EEEE, mmmm d, yyyy h:mm:ss tt EST"`
- `iso` CF2016+ Lucee5.3.8+ Formats the date time in ISO8601 format
- `iso8601` Lucee4.5+ Formats the date time in ISO8601 format
The function also follows Java date time mask, except for mask "a". For more information, refer to Date and Time Patterns topic in `SimpleDateFormat` Java API page.
JDK7 and JDK8 introduces the masks "w", "ww", "W", and "WW". |
+| timezone | string | No | System time-zone | The timezone to use. Can be the 3 letter code ("EST","UTC") or the full name full {"America/New_York") |
+
+## Mask = Short Example
+
+On Lucee with Java 11 adds a comma after year bug: LDEV-3744
+
+```javascript
+dateTimeFormat("2015-04-11 19:02", "short")
+```
+
+### Expected Result: 4/11/15 7:02 PM
+
+## Mask = Medium Example
+
+On Lucee with Java 11 adds a comma after year bug: LDEV-3744
+
+```javascript
+dateTimeFormat("2015-04-11 19:02", "medium")
+```
+
+### Expected Result: Apr 11, 2015 7:02:00 PM
+
+## Mask = Long Example
+
+On Lucee with Java 11 adds at before the time bug: LDEV-3744
+
+```javascript
+dateTimeFormat("2015-04-11 19:02", "long")
+```
+
+### Expected Result: April 11, 2015 7:02:00 PM UTC
+
+## Mask = Full Example
+
+On Lucee with Java 11 adds at before the time bug: LDEV-3744
+
+```javascript
+dateTimeFormat("2015-04-11 19:02", "full")
+```
+
+### Expected Result: Saturday, April 11, 2015 7:02:00 PM UTC
+
+## Date Time Format in ISO 8601
+
+Uses the CF2016+ `iso` or the Lucee4.5+ `iso8601` format depending on the engine. Note the depending on Java version the timezone format may differ (on Lucee at least, possible due to LDEV-3744)
+
+```javascript
+dateTimeFormat("2015-04-11 19:02", (server.keyExists("lucee")) ? "iso8601" : "iso")
+```
+
+### Expected Result: 2015-04-11T19:02:00+0000
+
+## Date Time Format member function syntax
+
+Simple date/time formatting using the member function syntax
+
+```javascript
+createDateTime( 2022, 10, 1, 9, 30, 0 ).dateTimeFormat( 'mm/dd/yyyy hh:nn:ss tt' )
+```
+
+### Expected Result: 10/01/2022 09:30:00 AM
diff --git a/docs/functions/day.md b/docs/functions/day.md
new file mode 100644
index 000000000..b7e4a6a09
--- /dev/null
+++ b/docs/functions/day.md
@@ -0,0 +1,46 @@
+# day
+
+ Determines the day of the month, in a date.
+ The ordinal for the day of the month, ranging from 1 to 31.
+
+```javascript
+day(date)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+date.day()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| date | date | Yes | | Date or datetime object (100AD-9999AD).
When passing a datetime object as a string, enclose it in quotation marks. Otherwise, it is interpreted as a numeric representation of a datetime object. |
+
+## Determines the day of the month
+
+Uses the day function to determine the day of the month
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 8
+
+## Day using member syntax
+
+Returns the day from a datetime object
+
+```javascript
+createDate( 2022, 10, 1 ).day();
+```
+
+### Expected Result: 1
diff --git a/docs/functions/dayofweek.md b/docs/functions/dayofweek.md
new file mode 100644
index 000000000..f42644516
--- /dev/null
+++ b/docs/functions/dayofweek.md
@@ -0,0 +1,36 @@
+# dayOfWeek
+
+Determines the day of the week from a date. Returns the ordinal for the day of the week, as an integer in the range 1 (Sunday) to 7 (Saturday).
+
+```javascript
+dayOfWeek(date)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+date.dayOfWeek()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| date | date | Yes | | Date or datetime object (100AD-9999AD).
When passing a datetime object as a string, enclose it in quotation marks. Otherwise, it is interpreted as a numeric representation of a datetime object. | |
+| calendar | string | No | gregorian | CF2016u8+ Indicates whether the week starts on Sunday (gregorian) or Monday (iso) | /Users/garethedwards/development/github/cfdocs/docs/functions/dayofweek.md|iso |
+
+## Determines the day of the week
+
+Uses the dayOfWeek function to determine the day of the week
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 4
diff --git a/docs/functions/dayofweekasstring.md b/docs/functions/dayofweekasstring.md
new file mode 100644
index 000000000..3a42105d5
--- /dev/null
+++ b/docs/functions/dayofweekasstring.md
@@ -0,0 +1,26 @@
+# dayOfWeekAsString
+
+ Determines the day of the week as a string from 1-7
+
+```javascript
+dayOfWeekAsString(dayOfWeek [, locale])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| dayOfWeek | numeric | Yes | | Only values from 1 to 7 are valid.
Week starting with 1 for Sunday and ends with 7 for Saturday:
- 1 = Sunday
- 2 = Monday
- 3 = Tuesday
- 4 = Wednesday
- 5 = Thursday
- 6 = Friday
- 7 = Saturday |
+| locale | string | No | Default JVM Locale | Locale to use instead of the default JVM locale. |
+
+## Get Sunday
+
+```javascript
+dayOfWeekAsString(1)
+```
+
+### Expected Result: Sunday
diff --git a/docs/functions/dayofweekshortasstring.md b/docs/functions/dayofweekshortasstring.md
new file mode 100644
index 000000000..dc3489143
--- /dev/null
+++ b/docs/functions/dayofweekshortasstring.md
@@ -0,0 +1,34 @@
+# dayOfWeekShortAsString
+
+Returns the first three letters of the day of the week passed to the function
+
+```javascript
+dayOfWeekShortAsString(day_of_week [, locale])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| day_of_week | numeric | Yes | | Only values from 1 to 7 are valid.
Week starting with 1 for Sunday and ends with 7 for Saturday. |
+| locale | string | No | | |
+
+## Get Sunday
+
+```javascript
+dayOfWeekShortAsString(1)
+```
+
+### Expected Result: Sun
+
+## Get Sunday with french locale
+
+```javascript
+dayOfWeekShortAsString(1,"fr")
+```
+
+### Expected Result: dim.
diff --git a/docs/functions/dayofyear.md b/docs/functions/dayofyear.md
new file mode 100644
index 000000000..039d7a5d1
--- /dev/null
+++ b/docs/functions/dayofyear.md
@@ -0,0 +1,35 @@
+# dayOfYear
+
+ Determines the day of the year, in a date.
+
+```javascript
+dayOfYear(date)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+date.dayOfYear()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| date | date | Yes | | Date or datetime object (100AD-9999AD). |
+
+## Determines the day of the year
+
+Uses the dayOfYear function to determine the day of the year
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 365
diff --git a/docs/functions/daysinmonth.md b/docs/functions/daysinmonth.md
new file mode 100644
index 000000000..e6eaa6e34
--- /dev/null
+++ b/docs/functions/daysinmonth.md
@@ -0,0 +1,47 @@
+# daysInMonth
+
+ Determines the number of days in a month.
+
+```javascript
+daysInMonth(date)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+date.daysInMonth()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| date | date | Yes | | Date or datetime object (100AD-9999AD).
When passing a datetime object as a string, enclose it in quotation marks, otherwise, it is interpreted as a numeric representation of a datetime object. |
+
+## Determines the number of days in a month
+
+Uses the daysInMonth function to determine the number of days in a month
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 31
+
+## Simple example
+
+To determine the number of days in a month
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 29
diff --git a/docs/functions/daysinyear.md b/docs/functions/daysinyear.md
new file mode 100644
index 000000000..9906bea25
--- /dev/null
+++ b/docs/functions/daysinyear.md
@@ -0,0 +1,47 @@
+# daysInYear
+
+ Determines the number of days in a year.
+
+```javascript
+daysInYear(date)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+date.daysInYear()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| date | date | Yes | | Date or datetime object (100AD-9999AD). |
+
+## Simple example
+
+Uses the daysInYear function to determine the number of days in a year
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 365
+
+## Simple example with leap year
+
+To determine the number of days in a year
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 366
diff --git a/docs/functions/dbpoolclear.md b/docs/functions/dbpoolclear.md
new file mode 100644
index 000000000..3311acf7a
--- /dev/null
+++ b/docs/functions/dbpoolclear.md
@@ -0,0 +1,33 @@
+# dbpoolclear
+
+clears all existing datasource connection
+
+```javascript
+dbPoolClear([, string])
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| datasource | string | No | | specific datasource to clear, if not set all datasources get removed. |
+
+## dbPoolClear Example
+
+Clear all existing datasource connections
+
+```javascript
+dbPoolClear();
+```
+
+## dbPoolClear Example
+
+Clear a named datasource connection
+
+```javascript
+dbPoolClear(mydatasource);
+```
diff --git a/docs/functions/de.md b/docs/functions/de.md
new file mode 100644
index 000000000..091b93862
--- /dev/null
+++ b/docs/functions/de.md
@@ -0,0 +1,25 @@
+# de
+
+Delay evaluation of a string as an expression, when it is passed as a parameter to the IIf or Evaluate functions. Escapes any double quotation marks in the parameter and wraps the result in double quotation marks. It does not escape `#` so the string could still be evaluated in some cases.
+
+```javascript
+de(String)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| String | string | Yes | | |
+
+## Simple Example
+
+```javascript
+de("pete")
+```
+
+### Expected Result: "pete"
diff --git a/docs/functions/decimalformat.md b/docs/functions/decimalformat.md
new file mode 100644
index 000000000..dfea536da
--- /dev/null
+++ b/docs/functions/decimalformat.md
@@ -0,0 +1,33 @@
+# decimalFormat
+
+Converts a number to a decimal-formatted string.
+
+```javascript
+decimalFormat(number)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| number | numeric | Yes | | |
+
+## Formatting examples
+
+```javascript
+formattedInt = decimalFormat(123); // 123.00
+writeOutput(formattedInt & "
");
+
+formattedWithSeparators = decimalFormat(1000000); // 1,000,000.00
+writeOutput(formattedWithSeparators & "
");
+
+formattedDecimal = decimalFormat(987.15); // 987.15
+writeOutput(formattedDecimal & "
");
+
+formattedRoundedUp = decimalFormat(456.789); // 456.79 - rounds up
+writeOutput(formattedRoundedUp & "
");
+```
diff --git a/docs/functions/decodeforhtml.md b/docs/functions/decodeforhtml.md
new file mode 100644
index 000000000..dcc7e177a
--- /dev/null
+++ b/docs/functions/decodeforhtml.md
@@ -0,0 +1,33 @@
+# decodeForHTML
+
+ Decodes an HTML encoded string.
+
+```javascript
+decodeForHTML(string);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | The encoded string to decode. |
+
+## Tag Syntax
+
+```javascript
+
+
+ Output:#decodeForHTML(form.encodedUserName)#
+
+
+
+
+
+
+
+
+```
diff --git a/docs/functions/decodefromurl.md b/docs/functions/decodefromurl.md
new file mode 100644
index 000000000..ac1a74415
--- /dev/null
+++ b/docs/functions/decodefromurl.md
@@ -0,0 +1,30 @@
+# decodeFromURL
+
+ Decodes an encoded HTML URL string.
+
+```javascript
+decodeFromURL(string);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | The encoded URL string to decode.. |
+
+## Tag Syntax
+
+```javascript
+
+
+
+
+String: #string#
+URL Encoded: #urlencoded#
+URL Decoded: #urldecoded#
+
+```
diff --git a/docs/functions/decrementvalue.md b/docs/functions/decrementvalue.md
new file mode 100644
index 000000000..1b0e8dc2c
--- /dev/null
+++ b/docs/functions/decrementvalue.md
@@ -0,0 +1,33 @@
+# decrementValue
+
+Decrements the integer part of a number. Same as x=x-1 or x--
+
+```javascript
+decrementValue(number)
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| number | numeric | Yes | | |
+
+## Decrement 7
+
+```javascript
+decrementValue(7)
+```
+
+### Expected Result: 6
+
+## Decrement 7.5
+
+There is a difference between CFML engines. ACF will return the integer decremented removing the decimal part, returns 6. Lucee will decrement the integer part but return both, returns 6.5.
+
+```javascript
+decrementValue(7.5)
+```
diff --git a/docs/functions/decrypt.md b/docs/functions/decrypt.md
new file mode 100644
index 000000000..d37b205dd
--- /dev/null
+++ b/docs/functions/decrypt.md
@@ -0,0 +1,36 @@
+# decrypt
+
+ Decrypts a string that is encrypted with the Encrypt function.
+
+```javascript
+decrypt(string, key [, algorithm [, encoding] [, iv | salt [, iterations]]])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | Encrypted string to decrypt. |
+| key | string | Yes | | Key or seed used to encrypt the string.
* For the `CFMX_COMPAT` algorithm, any combination of any number of characters; used as a seed used to generate a 32-bit encryption key.
* For all other algorithms, a key in the format used by the algorithm. For these algorithms, use the `GenerateSecretKey` function to generate the key. |
+| algorithm | string | No | CFMX_COMPAT | The algorithm to use to decrypt the string. Must be the same as the algorithm used to encrypt the string. See the `encrypt` function for additional algorithms.
ColdFusion Standard Edition installs the following algorithms:
* CFMX_COMPAT: the algorithm used in ColdFusion MX and prior releases. This algorithm is the least secure option (default).
* AES: the Advanced Encryption Standard specified by the National Institute of Standards and Technology (NIST) FIPS-197.
* BLOWFISH: the Blowfish algorithm defined by Bruce Schneier.
* DES: the Data Encryption Standard algorithm defined by NIST FIPS-46-3.
* DESEDE: the "Triple DES" algorithm defined by NIST FIPS-46-3.
NOTE: ColdFusion Enterprise Edition installs RSA BSafe Crypto-J library, which provides FIPS-140 Compliant Strong Cryptography. This also includes:
* DESX: The extended Data Encryption Standard symmetric encryption algorithm.
* RC2: The RC2 block symmetric encryption algorithm defined by RFC 2268.
* RC4: The RC4 symmetric encryption algorithm.
* RC5: The RC5 encryption algorithm.
* PBE: Password-based encryption algorithm defined in PKCS #5.
* AES/GCM/NoPadding: Encryption algorithm.
NOTE: If you install additional cryptography algorithms, you can also specify any of its encryption and decryption algorithms. |
+| encoding | string | No | UU | The binary encoding used to represent the data as a string. Must be the same as the algorithm used to encrypt the string.
* Base64: the Base64 algorithm, as specified by IETF RFC 2045.
* Hex: the characters A-F and 0-9 represent the hexadecimal byte values.
* UU: the UNIX standard UUEncode algorithm (default).
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| iv | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `SALT`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Block Encryption Algorithms: This is the binary Initialization Vector value to use with the algorithm. The algorithm must contain a Feedback Mode other than ECB. This must be a binary value that is exactly the same size as the algorithm block size.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| salt | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `IV`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Password Based Encryption Algorithms: This is the binary Salt value to transform the password into a key.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| iterations | numeric | No | 0 | The number of iterations to transform the password into a binary key. Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter with a Password Based Encryption (PBE) algorithm.
NOTE: This parameter is used with the `salt` parameter. Do not specify this parameter for Block Encryption Algorithms.
NOTE: You must use the same value to encrypt and decrypt the data. |
+
+## Encrypt and Decrypt a Secret
+
+Generate an AES 128 bit key and then use it to encrypt and decrypt a secret.
+
+```javascript
+ex={};
+ex.key = generateSecretKey("AES");
+ex.secret = "top secret";
+ex.encrypted=encrypt(ex.secret, ex.key, "AES", "Base64");
+ex.decrypted=decrypt(ex.encrypted, ex.key, "AES", "Base64");
+writeDump(ex);
+```
diff --git a/docs/functions/decryptbinary.md b/docs/functions/decryptbinary.md
new file mode 100644
index 000000000..3f50abb48
--- /dev/null
+++ b/docs/functions/decryptbinary.md
@@ -0,0 +1,23 @@
+# decryptBinary
+
+Decrypts encrypted binary data with the specified key, value, algorithm, salt, and iterations.
+
+```javascript
+decryptBinary(binaryData, key [, algorithm [, encoding] [, iv | salt [, iterations]]])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| binaryData | string | Yes | | Binary data to decrypt. |
+| key | string | Yes | | Key or seed used to encrypt the string.
* For the `CFMX_COMPAT` algorithm, any combination of any number of characters; used as a seed used to generate a 32-bit encryption key.
* For all other algorithms, a key in the format used by the algorithm. For these algorithms, use the `GenerateSecretKey` function to generate the key. |
+| algorithm | string | No | CFMX_COMPAT | The algorithm to use to decrypt the string. Must be the same as the algorithm used to encrypt the string. See the `encrypt` function for additional algorithms.
ColdFusion Standard Edition installs the following algorithms:
* CFMX_COMPAT: the algorithm used in ColdFusion MX and prior releases. This algorithm is the least secure option and not recommended. (default).
* AES: the Advanced Encryption Standard specified by the National Institute of Standards and Technology (NIST) FIPS-197.
* BLOWFISH: the Blowfish algorithm defined by Bruce Schneier.
* DES: the Data Encryption Standard algorithm defined by NIST FIPS-46-3.
* DESEDE: the "Triple DES" algorithm defined by NIST FIPS-46-3.
NOTE: ColdFusion Enterprise Edition installs RSA BSafe Crypto-J library, which provides FIPS-140 Compliant Strong Cryptography. This also includes:
* DESX: The extended Data Encryption Standard symmetric encryption algorithm.
* RC2: The RC2 block symmetric encryption algorithm defined by RFC 2268.
* RC4: The RC4 symmetric encryption algorithm.
* RC5: The RC5 encryption algorithm.
* PBE: Password-based encryption algorithm defined in PKCS #5.
* AES/GCM/NoPadding: Encryption algorithm.
NOTE: If you install additional cryptography algorithms, you can also specify any of its encryption and decryption algorithms. |
+| encoding | string | No | UU | The binary encoding used to represent the data as a string. Must be the same as the algorithm used to encrypt the string.
* Base64: the Base64 algorithm, as specified by IETF RFC 2045.
* Hex: the characters A-F and 0-9 represent the hexadecimal byte values.
* UU: the UNIX standard UUEncode algorithm (default).
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| iv | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `salt`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Block Encryption Algorithms: This is the binary Initialization Vector value to use with the algorithm. The algorithm must contain a Feedback Mode other than ECB. This must be a binary value that is exactly the same size as the algorithm block size.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| salt | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `iv`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Password Based Encryption Algorithms: This is the binary Salt value to transform the password into a key.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| iterations | numeric | No | 0 | The number of iterations to transform the password into a binary key. Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter with a Password Based Encryption (PBE) algorithm.
NOTE: This parameter is used with the `salt` parameter. Do not specify this parameter for Block Encryption Algorithms.
NOTE: You must use the same value to encrypt and decrypt the data. |
diff --git a/docs/functions/deleteclientvariable.md b/docs/functions/deleteclientvariable.md
new file mode 100644
index 000000000..a0a480a14
--- /dev/null
+++ b/docs/functions/deleteclientvariable.md
@@ -0,0 +1,18 @@
+# deleteClientVariable
+
+ Deletes a client variable. Returns `true` if variable was successfully deleted; `false` if it was not deleted.
+NOTE: To test for the existence of a variable, use `IsDefined` or `structKeyExists`.)
+
+```javascript
+deleteClientVariable(name)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The name of a client variable to delete, surrounded by double-quotation marks. |
diff --git a/docs/functions/deserialize.md b/docs/functions/deserialize.md
new file mode 100644
index 000000000..54a86eb58
--- /dev/null
+++ b/docs/functions/deserialize.md
@@ -0,0 +1,19 @@
+# deserialize
+
+Deserializes a string.
+
+```javascript
+deserialize(string, type, useCustomSerializer);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | A string that needs to be deserialized. |
+| type | string | Yes | | The type of the data to be deserialized. ColdFusion by default supports XML and JSON formats. You can also implement support for other types in the CustomSerializer CFC. |
+| useCustomSerializer | boolean | Yes | true | Whether to use the custom serializer or not. The custom serializer will always be used for deserialization.
If false, the XML/JSON deserialization will be done using the default ColdFusion behavior.
If any other type is passed with `useCustomSerializer` as false, then `TypeNotSupportedException` will be thrown. |
diff --git a/docs/functions/deserializeavro.md b/docs/functions/deserializeavro.md
new file mode 100644
index 000000000..3b1b565e8
--- /dev/null
+++ b/docs/functions/deserializeavro.md
@@ -0,0 +1,36 @@
+# deserializeAvro
+
+Converts an Avro data representation into CFML data.
+
+```javascript
+deserializeAvro(data, readerSchema [, strictMapping, useCustomSerialization])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| data | any | Yes | | Avro serialized data |
+| readerSchema | string | Yes | | The Avro schema as a string or the absolute path to the schema |
+| strictMapping | boolean | No | YES | Specifies whether to convert the Avro strictly. If true, converts the Avro binary to matching ColdFusion data types. |
+| useCustomSerialization | boolean | No | YES | Whether to use the customSerializer |
+
+## Deserialize an Avro serialized query (Script syntax)
+
+```javascript
+news = queryNew("id,title",
+ "integer,varchar",
+ [ {"id":1,"title":"Dewey defeats Truman"}, {"id":2,"title":"Man walks on Moon"} ]);
+newsSchema = '{
+ "namespace": "my.example",
+ "type": "record",
+ "name": "News",
+ "fields": [ {"name":"id","type":"int"}, {"name":"title","type":"string"} ]
+}';
+avro = serializeAvro(news, newsSchema);
+writeDump(deserializeAvro(avro, newsSchema));
+```
diff --git a/docs/functions/deserializejson.md b/docs/functions/deserializejson.md
new file mode 100644
index 000000000..874f0b207
--- /dev/null
+++ b/docs/functions/deserializejson.md
@@ -0,0 +1,28 @@
+# deserializeJSON
+
+ Converts a JSON (JavaScript Object Notation) string data representation into CFML data, such as a CFML structure or array.
+
+```javascript
+deserializeJSON(json [, strictMapping, useCustomSerializer])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| json | string | Yes | | A string that contains a valid JSON construct or variable that represents one. |
+| strictMapping | boolean | No | true | A Boolean value that specifies whether to convert the JSON strictly. If true, everything becomes structures. |
+| useCustomSerializer | boolean | No | true | CF11+ Use custom serializer if defined. See: https://helpx.adobe.com/coldfusion/developing-applications/changes-in-coldfusion/restful-web-services-in-coldfusion.html |
+
+## Convert JSON into CF Structure
+
+```javascript
+person = deserializeJSON( '{"company":"Foundeo","name":"Pete Freitag"}' );
+writeOutput( person.company );
+```
+
+### Expected Result: Foundeo
diff --git a/docs/functions/deserializeprotobuf.md b/docs/functions/deserializeprotobuf.md
new file mode 100644
index 000000000..3ee5c9100
--- /dev/null
+++ b/docs/functions/deserializeprotobuf.md
@@ -0,0 +1,34 @@
+# deserializeProtobuf
+
+Converts a Protobuf data representation into CFML data.
+
+```javascript
+serializeProtobuf(data, schema [, messageType, queryFormat, useCustomSerialization, protoPath])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| data | any | Yes | | Protobuf serialized data |
+| schema | string | Yes | | The Protobuf schema as a string or the absolute path to the schema |
+| messageType | string | No | | A message type from given schema as string. This is optional if schema contains one and only one message type. |
+| strictMapping | boolean | No | YES | Specifies whether to convert the Protobuf strictly. If true, converts the Protobuf binary to matching ColdFusion data types. |
+| useCustomSerialization | boolean | No | YES | Whether to use the customSerializer |
+| protoPath | string | No | | Specifies a directory in which the compiler looks for imported files defined in the schema. By default, it will be the current schema's parent path. |
+
+## Deserialize a Protobuf serialized query (Script syntax)
+
+```javascript
+news = queryNew("id,title",
+ "integer,varchar",
+ [ {"id":1,"title":"Dewey defeats Truman"}, {"id":2,"title":"Man walks on Moon"} ]);
+newsSchema = 'syntax = "proto3";
+message News { int32 id = 1; string title = 2; }';
+protobuf = serializeProtobuf(news, newsSchema);
+writeDump(deserializeProtobuf(protobuf, newsSchema));
+```
diff --git a/docs/functions/deserializexml.md b/docs/functions/deserializexml.md
new file mode 100644
index 000000000..38779660b
--- /dev/null
+++ b/docs/functions/deserializexml.md
@@ -0,0 +1,24 @@
+# deserializeXML
+
+Deserializes a string in XML format to a ColdFusion object.
+
+```javascript
+deserializeXML(string [,useCustomSerializer]);
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | A string that needs to be deserialized. |
+| useCustomSerializer | boolean | Yes | YES | This identifies whether or not to use the custom serializer. The default value is true. The custom serializer will be always used for XML deserialization. If false, the XML/JSON deserialization will be done using the default ColdFusion behavior. If any other type is passed with `useCustomSerializer` as false, then `TypeNotSupportedException` will be thrown. |
+
+## Tag Syntax
+
+```javascript
+
+```
diff --git a/docs/functions/directorycopy.md b/docs/functions/directorycopy.md
new file mode 100644
index 000000000..85cba4aa1
--- /dev/null
+++ b/docs/functions/directorycopy.md
@@ -0,0 +1,29 @@
+# directoryCopy
+
+Copies the contents of a directory to a destination directory
+
+```javascript
+directoryCopy(source, destination [, recurse][, filter])
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| source | string | Yes | | Absolute pathname of directory from which you copy content. |
+| destination | string | Yes | | Path of the destination directory. If not an absolute path, it is relative to the source directory. |
+| recurse | boolean | No | false | If true, copies the subdirectories, otherwise only the files in the source directory. |
+| filter | any | No | | File extension filter applied, for example, *.cfm. Filter to be used to filter the data copied: - A string that uses "*" as a wildcard, for example, "*.cfm" - a UDF (User defined Function) using the following pattern "functioname(String path):boolean", the function is run for every single file, if the function returns true, then the file is will be added to the list otherwise it will be omitted. |
+| createPath | boolean | No | true | Lucee4.5+ If set to false, expects all parent directories to exist. If set to true, it will generate necessary directories. |
+
+## Simple DirectoryCopy Example
+
+Copy directory from one place to another.
+
+```javascript
+directoryCopy(expandPath("./mySourceDirectory"),expandPath("../MyDestinationDirectory"))
+```
diff --git a/docs/functions/directorycreate.md b/docs/functions/directorycreate.md
new file mode 100644
index 000000000..f7453013c
--- /dev/null
+++ b/docs/functions/directorycreate.md
@@ -0,0 +1,31 @@
+# directoryCreate
+
+Creates an on-disk or in-memory directory in the specified path
+
+```javascript
+directoryCreate(path)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | Absolute path of the directory to be created. Alternatively, you can specify an IP address, as in the following example: `DirectoryCreate("//12.3.123.123/c_drive/test".
NOTE: You have to have the required permissions to run this function.`); |
+| createPath | boolean | No | true | Lucee Only. Create parent directory when it doesn't exist. |
+| ignoreExists | boolean | No | false | Lucee Only. Pass false (default) to throw an error if the directory already exists, or true to skip the create operation without an error. |
+
+## Script Syntax
+
+Checking if a directory called 'icons' exists and then creating the directory if it does not exist.
+
+```javascript
+if (!directoryExists(expandPath('/assets/img/icons'))) {
+ directoryCreate('assets/img/icons');
+}
+```
+
+### Expected Result: The directory 'icons' will be created under the img folder.
diff --git a/docs/functions/directorydelete.md b/docs/functions/directorydelete.md
new file mode 100644
index 000000000..f6e48500a
--- /dev/null
+++ b/docs/functions/directorydelete.md
@@ -0,0 +1,26 @@
+# directoryDelete
+
+Deletes on-disk or in-memory directory at the given path.
NOTE: Ensure that you have the required permissions to run this function.
+
+```javascript
+directoryDelete(path[, recurse])
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | Absolute path of the directory to be deleted. Alternatively, you can specify IP address, as in the following example: `DirectoryDelete("//12.3.123.123/c_drive/test");`. |
+| recurse | boolean | No | false | If true, the directory and the sub-directories are deleted. If the directory (being deleted) has sub-directories and you set `recurse` to false, an exception occurs. |
+
+## Tag Syntax
+
+```javascript
+
+
+
+```
diff --git a/docs/functions/directoryexists.md b/docs/functions/directoryexists.md
new file mode 100644
index 000000000..e204317bb
--- /dev/null
+++ b/docs/functions/directoryexists.md
@@ -0,0 +1,30 @@
+# directoryExists
+
+Determines whether an on-disk or in-memory directory exists.
+
+```javascript
+directoryExists(path)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | An absolute on-disk or in-memory path. Alternatively, you can specify IP address as in the following example: `DirectoryExists("//12.3.123.123/c_drive/test");` |
+| allowRealPath | boolean | No | | Lucee Only. boolean that defines if relative paths are interpreted or not. |
+
+## Script Syntax
+
+Checking if a directory called 'icons' exists and then creating the directory if it does not exist.
+
+```javascript
+if (!directoryExists(expandPath('/assets/img/icons'))) {
+ directoryCreate('assets/img/icons');
+}
+```
+
+### Expected Result: The directory 'icons' will be created under the img folder.
diff --git a/docs/functions/directorylist.md b/docs/functions/directorylist.md
new file mode 100644
index 000000000..1246debbb
--- /dev/null
+++ b/docs/functions/directorylist.md
@@ -0,0 +1,52 @@
+# directoryList
+
+List the contents of a directory. Returns either an array, or a query.
NOTE: Ensure that you have the required permissions to run this function.
+
+```javascript
+directoryList(path [, recurse] [, listInfo] [, filter] [, sort] [, type])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| path | string | Yes | | The absolute path of the directory for which to list the contents. Alternatively, you can specify IP address as in the following example: `DirectoryList("//12.3.123.123/c_drive/test");`. | |
+| recurse | boolean | No | false | If `true` directoryList traverses the directory tree. | |
+| listInfo | string | No | path | Sets the return type. `name` returns an array with only the file names, `path` returns an array with the full path names and `query` returns a query containing the following fields: `Attributes`, `DateLastModified`, `Directory`, `Link`, `Mode`, `Name`, `Size`, `Type`. | /Users/garethedwards/development/github/cfdocs/docs/functions/directorylist.md|query |
+| filter | string | No | | File extension filter applied to the listed files, for example, `*.jpg`.
Multiple filters can be applied by using a pipe delimiter. For example: `*.doc|*.xls`.
You can also pass a function. The arguments of the passed function must have: `path` :the file path, `type`: The values (file or dir), `extension`: The file extension, if any, otherwise and empty string.
This argument can also accept the instances of Java `FileFilter` Objects.
In Lucee4.5+ it can be a closure as well. | |
+| sort | string | No | | Columns by which to sort. e.g. `Directory, Size DESC, DateLastModified`. To qualify a column, use `asc` (ascending sort a-z) or `desc` (descending sort z-a). | |
+| type | string | No | all | CF11+ Lucee5+ Filter the result to only include files, directories, or both. | /Users/garethedwards/development/github/cfdocs/docs/functions/directorylist.md|all |
+
+## An array of files in this directory
+
+```javascript
+arrayOfLocalFiles = directoryList( expandPath( "./" ), false, "name" );
+```
+
+## A query of files in this directory sorted by date last modified
+
+```javascript
+queryOfFiles = directoryList( expandPath( "./" ), false, "query", "", "DateLastModified DESC" );
+```
+
+## An array of files in the temp directory
+
+Including sub-directories and as an array containing full paths
+
+```javascript
+arrayOfTempFiles = directoryList( "./", true );
+```
+
+## Filter files with closure
+
+Lucee4.5+ Pass a closure instead of a string as `filter` param
+
+```javascript
+arrayOfFilteredFiles = directoryList(".", false, "name", function(path) {
+ return ListFindNoCase("Application.cfc,robots.txt,server.json,favicon.ico,.htaccess,README.md", path);
+});
+```
diff --git a/docs/functions/directoryrename.md b/docs/functions/directoryrename.md
new file mode 100644
index 000000000..d33125c81
--- /dev/null
+++ b/docs/functions/directoryrename.md
@@ -0,0 +1,27 @@
+# directoryRename
+
+Renames given directory.
NOTE:Ensure that you have the required permissions to run this function.
+
+```javascript
+directoryRename(oldPath, newPath)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| oldPath | string | Yes | | Absolute path of the directory to be renamed. Alternatively, you can specify IP address, for example, `DirectoryRename("//12.3.123.123/c_drive/test");` |
+| newPath | string | Yes | | New name for the directory. |
+| createPath | boolean | No | true | Lucee Only. If set to `false`, expects all parent directories to exist. `true` will generate necessary directories. |
+
+## Tag Syntax
+
+```javascript
+
+
+
+```
diff --git a/docs/functions/dollarformat.md b/docs/functions/dollarformat.md
new file mode 100644
index 000000000..1ff1e18e5
--- /dev/null
+++ b/docs/functions/dollarformat.md
@@ -0,0 +1,37 @@
+# dollarFormat
+
+Formats a string in U.S. Dollar format. For other currencies, use `LSCurrencyFormat` or `LSEuroCurrencyFormat`.
The function will return a number as a string, formatted with two decimal places, thousands separator and dollar sign. If the number is negative, the return value is enclosed in parentheses. If number is an empty string, the function returns zero.
+
+```javascript
+dollarFormat(number)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| number | numeric | Yes | | The number to format. |
+
+## Format Positive Numbers
+
+Dollar Format is about $, commas, and 2 decimal places
+
+```javascript
+dollarFormat(1236598.2)
+```
+
+### Expected Result: $1,236,598.20
+
+## Format Negative Numbers
+
+Negative numbers appear with parentheses. May cause issues due to LDEV-3743
+
+```javascript
+dollarFormat(-11.34)
+```
+
+### Expected Result: ($11.34)
diff --git a/docs/functions/dotnettocftype.md b/docs/functions/dotnettocftype.md
new file mode 100644
index 000000000..cfa46a92b
--- /dev/null
+++ b/docs/functions/dotnettocftype.md
@@ -0,0 +1,17 @@
+# dotnetToCFType
+
+Explicitly converts a value returned by a .NET method to the corresponding ColdFusion data type.
+
+```javascript
+dotnetToCFType(variableName)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| variableName | any | Yes | | Name of the .NET variable to convert. |
diff --git a/docs/functions/duplicate.md b/docs/functions/duplicate.md
new file mode 100644
index 000000000..d6987f104
--- /dev/null
+++ b/docs/functions/duplicate.md
@@ -0,0 +1,37 @@
+# duplicate
+
+Returns a clone (or deep copy) of an object or variable, leaving no reference to the original.
Use this function to duplicate complex structures, such as nested structures and queries. When you duplicate a CFC instance, the entire CFC contents is copied, including the values of the variables in the `this` scope at the time you call the `Duplicate` function. Thereafter, the two CFC instances are independent, and changes to one copy, for example by calling one of its functions, have no effect on the other copy.
Note: With this function, you cannot duplicate a COM, CORBA, or JAVA object returned from the cfobject tag or the CreateObject function. If an array element or structure field is a COM, CORBA, or JAVA object, you cannot duplicate the array or structure.
+
+```javascript
+duplicate(object)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| object | any | Yes | | Name of the object to duplicate. |
+| deepcopy | boolean | No | true | Lucee Only.
If set to `true` (default) the child elements are also cloned. If `false`, child elements retain a reference to their corresponding element in the original object.
Note: deeply cloned elements that are not native Lucee objects (i.e. Java objects) may change data type when they can be converted to a native CFML object. |
+
+## Changing a struct compared to changing its copy
+
+`myNewStruct` holds a reference to `myStruct` so if you change `myNewStruct`, `myStruct` is changed accordingly as well, because they are the same struct just assigned to two variables.
+In comparison `myOtherNewStruct` is a copy so if you change `myOtherNewStruct`, `myStruct` stays untouched because with the duplicate, a new, unique structure with the same key-value pairs is created thus they do not share the same reference
+
+```javascript
+myStruct = {'foo': 'Lorem ipsum', 'bar': 'baz'};
+
+myNewStruct = myStruct;
+myOtherNewStruct = duplicate(myStruct);
+
+myNewStruct.foo = 'ahmet sun';
+myOtherNewStruct.foo = 'dolor sit';
+
+writeOutput(myStruct.foo&' → '&myNewStruct.foo&' → '&myOtherNewStruct.foo);
+```
+
+### Expected Result: ahmet sun → ahmet sun → dolor sit
diff --git a/docs/functions/each.md b/docs/functions/each.md
new file mode 100644
index 000000000..939627218
--- /dev/null
+++ b/docs/functions/each.md
@@ -0,0 +1,39 @@
+# each
+
+Function that will call the given UDF/Closure with every entry (key/value) in the given collection.
+
+```javascript
+each(collection, closure [, parallel] [, maxThreads])
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| collection | any | Yes | | Collection to take values from. |
+| closure | function | Yes | | UDF/Closure that is called with each entry from the collection. |
+| parallel | boolean | No | false | Execute the closures in parallel. |
+| maxThreads | numeric | No | 20 | Maximum number of threads executed. Ignored when `parallel` argument is set to `false`. |
+
+## Iterate over collection and output a key from each item
+
+```javascript
+coll = [{
+ id: 0,
+ name: 'me'
+},{
+ id: 1,
+ name: 'you'
+}];
+function outputCollection(item) {
+ writeOutput(item.name);
+ writeOutput(' - ');
+}
+each(coll,outputCollection,true);
+```
+
+### Expected Result: me - you -
diff --git a/docs/functions/echo.md b/docs/functions/echo.md
new file mode 100644
index 000000000..ca1fa1141
--- /dev/null
+++ b/docs/functions/echo.md
@@ -0,0 +1,45 @@
+# echo
+
+While writeOutput writes to the page-output stream, this function writes to the main response buffer
+
+```javascript
+echo(string)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | String to be written to the output buffer |
+
+## Simple Example
+
+Prints a simple string.
+
+```javascript
+echo("hello world");
+```
+
+### Expected Result: hello world
+
+## Complex Data Example
+
+Note that complex objects will not automatically be converted to String, as with System.out.println in Java.
+
+```javascript
+// Create data
+data = {
+ "title" : "A Game of Thrones",
+ "author" : "George R. R. Martin",
+ "ISBN" : "0-00-224584-1"
+};
+
+// Print data
+echo(data.toString());
+```
+
+### Expected Result: {ISBN={0-00-224584-1}, author={George R. R. Martin}, title={A Game of Thrones}}
diff --git a/docs/functions/empty.md b/docs/functions/empty.md
new file mode 100644
index 000000000..a334ef89b
--- /dev/null
+++ b/docs/functions/empty.md
@@ -0,0 +1,32 @@
+# empty
+
+Checks if a variable is empty
+
+```javascript
+empty(variable)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| variable | any | Yes | | | /Users/garethedwards/development/github/cfdocs/docs/functions/empty.md|[] |
+
+## A Simple Empty Example
+
+Check whether the variable is empty or not
+
+```javascript
+
+
+ #empty(Language)#
+
+ #empty(MyInput)#
+
+```
+
+### Expected Result: false,true
diff --git a/docs/functions/encodefor.md b/docs/functions/encodefor.md
new file mode 100644
index 000000000..d8d10a53d
--- /dev/null
+++ b/docs/functions/encodefor.md
@@ -0,0 +1,28 @@
+# encodeFor
+
+Encodes a given string for safe output in the specified context. The encoding is meant to mitigate Cross Site Scripting (XSS) attacks.
+
+```javascript
+encodeFor(type, value)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| type | string | Yes | | The context of the encoding to perform. |
+| value | string | Yes | | The value to encode. |
+
+## Simple encodeFor Example
+
+Pass in a tag and HTML encode the result.
+
+```javascript
+encodeFor("html","
")
+```
+
+### Expected Result: <br>
diff --git a/docs/functions/encodeforcss.md b/docs/functions/encodeforcss.md
new file mode 100644
index 000000000..554007526
--- /dev/null
+++ b/docs/functions/encodeforcss.md
@@ -0,0 +1,46 @@
+# encodeForCSS
+
+Encodes the input string for safe output in CSS to prevent Cross Site Scripting attacks.
+
+```javascript
+encodeForCSS(string [,canonicalize]);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | The string to encode. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded. The default value for canonicalize is false.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Tag Syntax
+
+Encoding CSS values.
+
+```javascript
+
+
+
+
+
+
+
+
+ This div element is styled!!!!
+
+
+
+
+ Background Color :
+
+```
diff --git a/docs/functions/encodefordn.md b/docs/functions/encodefordn.md
new file mode 100644
index 000000000..b476c7faa
--- /dev/null
+++ b/docs/functions/encodefordn.md
@@ -0,0 +1,26 @@
+# encodeForDN
+
+Encodes the given string for safe output in LDAP Distinguished Names (DN). Intended to prevent LDAP Injection.
+
+```javascript
+encodeForDN( string [,canonicalize]);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | String to encode. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded. The default value for canonicalize is false.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Simple encodeForDN Example
+
+```javascript
+encodeForDN("x,y")
+```
+
+### Expected Result: x\,y
diff --git a/docs/functions/encodeforhtml.md b/docs/functions/encodeforhtml.md
new file mode 100644
index 000000000..94f0c1577
--- /dev/null
+++ b/docs/functions/encodeforhtml.md
@@ -0,0 +1,28 @@
+# encodeForHTML
+
+Encodes the input string for safe output in the body of a HTML tag. The encoding in meant to mitigate Cross Site Scripting (XSS) attacks. This function can provide more protection from XSS than the `HTMLEditFormat` or `XMLFormat` functions do.
+
+```javascript
+encodeForHTML(string [, canonicalize])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | A string to encode |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded. The default value for canonicalize is false.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Simple encodeForHTML Example
+
+Pass in a tag and HTML encode the result.
+
+```javascript
+encodeForHTML("")
+```
+
+### Expected Result: <test>
diff --git a/docs/functions/encodeforhtmlattribute.md b/docs/functions/encodeforhtmlattribute.md
new file mode 100644
index 000000000..f368807cd
--- /dev/null
+++ b/docs/functions/encodeforhtmlattribute.md
@@ -0,0 +1,28 @@
+# encodeForHTMLAttribute
+
+Encodes the input string for safe output in the attribute value of an HTML attribute, such as table width or image height. The encoding is meant to mitigate Cross Site Scripting (XSS) attacks.
+
+```javascript
+encodeForHTMLAttribute(string [, canonicalize])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | A string to encode. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded. The default value for canonicalize is false.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Simple encodeForHTMLAttribute Example
+
+Shows how and where encodeForHTMLAttribute would be used.
+
+```javascript
+")#">
+```
+
+### Expected Result:
diff --git a/docs/functions/encodeforjavascript.md b/docs/functions/encodeforjavascript.md
new file mode 100644
index 000000000..d50d429c2
--- /dev/null
+++ b/docs/functions/encodeforjavascript.md
@@ -0,0 +1,27 @@
+# encodeForJavaScript
+
+Encodes the input string for safe output within JavaScript code. The encoding in meant to mitigate Cross Site Scripting (XSS) attacks. This function can provide more protection from XSS than JSStringFormat does.
+
+```javascript
+encodeForJavaScript(string [, canonicalize])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | A string to encode. |
+| canonicalize | boolean | No | | When true runs the canonicalize function against the input before encoding. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using `canonicalize` method and then do encoding. |
+
+## Simple encodeForJavaScript Example
+
+```javascript
+encodeForJavaScript("foo()")
+```
+
+### Expected Result: foo\x28\x29
diff --git a/docs/functions/encodeforldap.md b/docs/functions/encodeforldap.md
new file mode 100644
index 000000000..5f768859a
--- /dev/null
+++ b/docs/functions/encodeforldap.md
@@ -0,0 +1,26 @@
+# encodeForLDAP
+
+Encodes the input string for safe output in LDAP queries to prevent Cross Site Scripting attacks.
+
+```javascript
+encodeForLDAP(string [,canonicalize]);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | String to encode. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Script Syntax
+
+```javascript
+encodeForLDAP("pete) (| (password = * ) )")
+```
+
+### Expected Result: pete\29 \28| \28password = \2a \29 \29
diff --git a/docs/functions/encodeforurl.md b/docs/functions/encodeforurl.md
new file mode 100644
index 000000000..bfebdc7c7
--- /dev/null
+++ b/docs/functions/encodeforurl.md
@@ -0,0 +1,43 @@
+# encodeForURL
+
+Encodes the input string for safe output in URLs to prevent Cross Site Scripting attacks.
+
+```javascript
+encodeForURL(string [,canonicalize]);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | The string to encode. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded and canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed. To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## URL Encode a value
+
+```javascript
+encodeForURL("
")
+```
+
+### Expected Result: %3Ctag%3E
+
+## URL Encode a value with escaped HTML entities
+
+```javascript
+encodeForURL("<tag>",true)
+```
+
+### Expected Result: %3Ctag%3E
+
+## Example Usage
+
+```javascript
+
+http://example.com/math?formula=#encodeForURL(formula)#
+```
+
+### Expected Result: http://example.com/math?formula=5%2B3%3D8
diff --git a/docs/functions/encodeforxml.md b/docs/functions/encodeforxml.md
new file mode 100644
index 000000000..212eb7e00
--- /dev/null
+++ b/docs/functions/encodeforxml.md
@@ -0,0 +1,28 @@
+# encodeForXML
+
+Encodes a string for safe use within an XML tag body. Use `encodeForXMLAttribute` for variables output inside an XML attribute value.
+
+```javascript
+encodeForXML(string , [canonicalize]);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | The string to encode. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Simple encodeForXML Example
+
+Encodes the ampersand into an XML entity.
+
+```javascript
+encodeForXML("Fred & Ted")
+```
+
+### Expected Result: Fred & Ted
diff --git a/docs/functions/encodeforxmlattribute.md b/docs/functions/encodeforxmlattribute.md
new file mode 100644
index 000000000..46d2cdb63
--- /dev/null
+++ b/docs/functions/encodeforxmlattribute.md
@@ -0,0 +1,28 @@
+# encodeForXMLAttribute
+
+Encodes a string for safe output within an XML attribute to prevent Cross Site Scripting attacks. Use encodeForXML when outputting a variable inside a XML tag body.
+
+```javascript
+encodeForXMLAttribute(string [,canonicalize]);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | The string to encode. |
+| canonicalize | boolean | No | false | If set to true, canonicalization happens before encoding. If set to false, the given input string will just be encoded.
When this parameter is not specified, canonicalization will not happen. By default, when canonicalization is performed, both mixed and multiple encodings will be allowed.
To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Simple encodeForXMLAttribute Example
+
+Encodes the single quote into an XML entity.
+
+```javascript
+encodeForXMLAttribute("It's for use in attribute values")
+```
+
+### Expected Result: It's for use in attribute values
diff --git a/docs/functions/encodeforxpath.md b/docs/functions/encodeforxpath.md
new file mode 100644
index 000000000..3ecad89df
--- /dev/null
+++ b/docs/functions/encodeforxpath.md
@@ -0,0 +1,26 @@
+# encodeForXPath
+
+Returns an encoded string for safe use in an XPATH query.
+
+```javascript
+encodeForXPath(string [,canonicalize]);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | The string to encode. |
+| canonicalize | boolean | No | | If set to true, canonicalization happens before encoding.
If set to false, the given input string will just be encoded.
When this parameter is not specified, canonicalization will not happen.
By default, when canonicalization is performed, both mixed and multiple encodings will be allowed. To use any other combinations you should canonicalize using canonicalize method and then do encoding. |
+
+## Tag Syntax
+
+```javascript
+encodeForXPath("'or 1=1",false)
+```
+
+### Expected Result: 'or 1=1
diff --git a/docs/functions/encrypt.md b/docs/functions/encrypt.md
new file mode 100644
index 000000000..85deb244a
--- /dev/null
+++ b/docs/functions/encrypt.md
@@ -0,0 +1,56 @@
+# encrypt
+
+ Encrypts a string, using a symmetric key-based algorithm, in which the same key is used to encrypt and decrypt a string. The security of the encrypted string depends on maintaining the secrecy of the key, and the algorithm choice. Algorithm support is determined by the installed default JCE provider in Lucee or ColdFusion Standard. On ColdFusion Enterprise the algorithms are provided by the FIPS certified RSA BSafe Crypto-J JCE provider.
+
+```javascript
+encrypt(string, key [, algorithm [, encoding] [, iv | salt [, iterations]]])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | String to encrypt. |
+| key | string | Yes | | Key or seed used to encrypt the string.
* For the `CFMX_COMPAT` algorithm, any combination of any number of characters; used as a seed used to generate a 32-bit encryption key.
* For all other algorithms, a key in the format used by the algorithm. For these algorithms, use the `GenerateSecretKey` function to generate the key. |
+| algorithm | string | No | CFMX_COMPAT | The algorithm to use to encrypt the string.
ColdFusion Standard Edition installs the following algorithms:
* CFMX_COMPAT: the algorithm used in ColdFusion MX and prior releases. This algorithm is the least secure option (default).
* AES: the Advanced Encryption Standard specified by the National Institute of Standards and Technology (NIST) FIPS-197.
* BLOWFISH: the Blowfish algorithm defined by Bruce Schneier.
* DES: the Data Encryption Standard algorithm defined by NIST FIPS-46-3.
* DESEDE: the "Triple DES" algorithm defined by NIST FIPS-46-3.
NOTE: ColdFusion Enterprise Edition installs RSA BSafe Crypto-J library, which provides FIPS-140 Compliant Strong Cryptography. This includes:
* AES: the Advanced Encryption Standard specified by the National Institute of Standards and Technology (NIST) FIPS-197.
* DES: the Data Encryption Standard algorithm defined by NIST FIPS-46-3.
* DESEDE: the "Triple DES" algorithm defined by NIST FIPS-46-3.
* DESX: The extended Data Encryption Standard symmetric encryption algorithm.
* RC2: The RC2 block symmetric encryption algorithm defined by RFC 2268.
* RC4: The RC4 symmetric encryption algorithm.
* RC5: The RC5 encryption algorithm.
* PBE: Password-based encryption algorithm defined in PKCS #5.
* AES/GCM/NoPadding: Encryption algorithm.
NOTE: If you install additional cryptography algorithms, you can also specify any of its encryption and decryption algorithms. |
+| encoding | string | No | UU | The binary encoding used to represent the data as a string.
* Base64: the Base64 algorithm, as specified by IETF RFC 2045.
* Hex: the characters A-F and 0-9 represent the hexadecimal byte values.
* UU: the UNIX standard UUEncode algorithm (default).
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| iv | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `SALT`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Block Encryption Algorithms: This is the binary Initialization Vector value to use with the algorithm. The algorithm must contain a Feedback Mode other than ECB. This must be a binary value that is exactly the same size as the algorithm block size.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| salt | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `IV`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Password Based Encryption Algorithms: This is the binary Salt value to transform the password into a key.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| iterations | numeric | No | 0 | The number of iterations to transform the password into a binary key. Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter with a Password Based Encryption (PBE) algorithm.
NOTE: This parameter is used with the `salt` parameter. Do not specify this parameter for Block Encryption Algorithms.
NOTE: You must use the same value to encrypt and decrypt the data. |
+
+## Encrypt using AES Encryption in ECB Mode
+
+The key must be generated using the generateSecretKey("AES") function.
+
+```javascript
+encrypt("top secret", "WTq8zYcZfaWVvMncigHqwQ==", "AES", "Base64")
+```
+
+### Expected Result: keciULin7bxOWvN/BOarWw==
+
+## Encrypt using AES Cipher Block Chaining (CBC) mode
+
+By default encrypt() uses the Electronic Code Book (ECB) mode for encryption.
+ For increased security you should specify the mode and padding to use. In this example we will use CBC mode and PKCS5Padding. The value of the encrypted string will be different every time it runs because the IV is generated at random.
+
+```javascript
+msg = 'data to encrypt';
+key = generateSecretKey('AES');
+encMsg = encrypt( msg, key, 'AES/CBC/PKCS5Padding', 'HEX');
+writeOutput( encMsg );
+```
+
+## Encrypt using AES Galois/Counter Mode (GCM)
+
+Using GCM mode works CF2016+ after update 2. It does not currently work on Lucee (bug: LDEV-904)
+
+```javascript
+msg = 'data to encrypt';
+key = generateSecretKey('AES');
+encMsg = encrypt( msg, key, 'AES/GCM/NoPadding', 'Base64');
+writeOutput( encMsg );
+```
diff --git a/docs/functions/encryptbinary.md b/docs/functions/encryptbinary.md
new file mode 100644
index 000000000..b6475d1e9
--- /dev/null
+++ b/docs/functions/encryptbinary.md
@@ -0,0 +1,22 @@
+# encryptBinary
+
+Encrypts binary data using a specific algorithm and encoding method.
+
+```javascript
+encryptBinary(binaryData, key [, algorithm [, encoding] [, iv | salt [, iterations]]])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| binaryData | any | Yes | | Binary data to encrypt. |
+| key | string | Yes | | Key or seed used to encrypt the string.
* For the `CFMX_COMPAT` algorithm, any combination of any number of characters; used as a seed used to generate a 32-bit encryption key.
* For all other algorithms, a key in the format used by the algorithm. For these algorithms, use the `GenerateSecretKey` function to generate the key. |
+| algorithm | string | No | CFMX_COMPAT | The algorithm to use to encrypt the string.
ColdFusion Standard Edition installs the following algorithms:
* CFMX_COMPAT: the algorithm used in ColdFusion MX and prior releases. This algorithm is the least secure option (default).
* AES: the Advanced Encryption Standard specified by the National Institute of Standards and Technology (NIST) FIPS-197.
* BLOWFISH: the Blowfish algorithm defined by Bruce Schneier.
* DES: the Data Encryption Standard algorithm defined by NIST FIPS-46-3.
* DESEDE: the "Triple DES" algorithm defined by NIST FIPS-46-3.
NOTE: ColdFusion Enterprise Edition installs RSA BSafe Crypto-J library, which provides FIPS-140 Compliant Strong Cryptography. This also includes:
* DESX: The extended Data Encryption Standard symmetric encryption algorithm.
* RC2: The RC2 block symmetric encryption algorithm defined by RFC 2268.
* RC4: The RC4 symmetric encryption algorithm.
* RC5: The RC5 encryption algorithm.
* PBE: Password-based encryption algorithm defined in PKCS #5.
* AES/GCM/NoPadding: Encryption algorithm.
NOTE: If you install additional cryptography algorithms, you can also specify any of its encryption and decryption algorithms. |
+| iv | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `salt`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Block Encryption Algorithms: This is the binary Initialization Vector value to use with the algorithm. The algorithm must contain a Feedback Mode other than ECB. This must be a binary value that is exactly the same size as the algorithm block size.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| salt | binary | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `iv`.
Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
* For Password Based Encryption Algorithms: This is the binary Salt value to transform the password into a key.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter. |
+| iterations | numeric | No | 0 | The number of iterations to transform the password into a binary key. Specify this parameter to adjust ColdFusion encryption to match the details of other encryption software.
NOTE: If you specify this parameter, you must also specify the `algorithm` parameter with a Password Based Encryption (PBE) algorithm.
NOTE: This parameter is used with the `salt` parameter. Do not specify this parameter for Block Encryption Algorithms.
NOTE: You must use the same value to encrypt and decrypt the data. |
diff --git a/docs/functions/entitydelete.md b/docs/functions/entitydelete.md
new file mode 100644
index 000000000..9ade3be7e
--- /dev/null
+++ b/docs/functions/entitydelete.md
@@ -0,0 +1,26 @@
+# entityDelete
+
+Deletes the record from the database for the specified entity. Depending on the cascade attribute specified in the mapping, it deletes the associated objects also.
+
+```javascript
+entityDelete(entity)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| entity | variableName | Yes | | Name of the entity being deleted. |
+
+## Delete an existing entity
+
+Loads an ORM entity from the database, then deletes it
+
+```javascript
+user = entityLoadByPK("User", userID);
+entityDelete(user);
+```
diff --git a/docs/functions/entityload.md b/docs/functions/entityload.md
new file mode 100644
index 000000000..7193f1ace
--- /dev/null
+++ b/docs/functions/entityload.md
@@ -0,0 +1,42 @@
+# entityLoad
+
+Loads and returns an array of entities of the specified entityname or an entity if unique=true or if a primary key id is passed in to filterCriteria.
+
+```javascript
+entityLoad(entityName [,id | Filter ,unique | Order ,options])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| entityName | string | Yes | | Name of CFC / Entity to be loaded. | |
+| id | any | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `Filter`.
The primary key value of the entity to be loaded. Or if the entity has a composite key, then this is specified as a ColdFusion struct (key-value pair). | |
+| Filter | any | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `id`.
This is a ColdFusion struct (key-value pair) of property names and values. If there is more than one key-value pair, then use the `AND` keyword. | |
+| unique | boolean | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `Order`.
When true a single entity is returned, otherwise an array is returned.
If you are sure only one record exists for the `Filter`, then you can specify `unique=true` to return a single entity instead of an array. If you set `unique=true` and multiple records are returned, then an exception occurs. | |
+| Order | string | No | | THIS PARAMETER IS MUTUALLY EXCLUSIVE WITH `unique`.
String used to specify the sort order of the entities that are returned.
If this is specified, the function returns an array of entities that satisfy the `Filter` and is sorted as specified by `Order`.
Usage example: LastName ASC, FirstName ASC | |
+| options | struct | No | | A struct with possible keys:
ignorecase : Ignores the case of sort order when set to true. Use only if you've specified the `Order` parameter.
offset : Specifies the position from which to retrieve the objects.
maxResults : Specifies the maximum number of objects to be retrieved.
cacheable : Whether the result has to be cached in secondary cache. Default is `false`.
cachename : Name of the cache in secondary cache.
timeout : Specified the timeout value (in seconds) for the query | /Users/garethedwards/development/github/cfdocs/docs/functions/entityload.md|timeout |
+
+## Load by PK
+
+Loads an entity by primary key value
+
+```javascript
+entityLoad("Employee", url.employee_id)
+```
+
+### Expected Result: An Employee CFC Instance
+
+## Get multiple entities
+
+Returns an array of Employee instances with last name Smith
+
+```javascript
+entityLoad("Employee", {LastName="Smith"})
+```
+
+### Expected Result: array
diff --git a/docs/functions/entityloadbyexample.md b/docs/functions/entityloadbyexample.md
new file mode 100644
index 000000000..92f68a71a
--- /dev/null
+++ b/docs/functions/entityloadbyexample.md
@@ -0,0 +1,28 @@
+# entityLoadByExample
+
+Loads and returns an array of objects that match the `sampleEntity`.
+
+```javascript
+entityLoadByExample(sampleEntity [, unique, matchCriteria])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| sampleEntity | string | Yes | | No Help Available |
+| unique | boolean | No | | When true a single entity is returned, otherwise an array is returned.
If you are sure only one record exists for the `Filter`, then you can specify `unique=true` to return a single entity instead of an array. If you set `unique=true` and multiple records are returned, then an exception occurs. |
+| matchCriteria | any | No | | No Help Available |
+
+## Tag Syntax
+
+```javascript
+
+
+
+
+```
diff --git a/docs/functions/entityloadbypk.md b/docs/functions/entityloadbypk.md
new file mode 100644
index 000000000..5b53fd2df
--- /dev/null
+++ b/docs/functions/entityloadbypk.md
@@ -0,0 +1,25 @@
+# entityLoadByPK
+
+Loads and returns an array of objects for given primary key.
+Use this function to avoid specifying the required boolean parameter in `EntityLoad()`.
+
+```javascript
+entityLoadByPK(entity, id)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| entity | string | Yes | | Name of the entity to be loaded. |
+| id | string | Yes | | ID of the entity to be loaded. |
+
+## Load an existing User object
+
+```javascript
+user = entityLoadByPK("User", userID);
+```
diff --git a/docs/functions/entitymerge.md b/docs/functions/entitymerge.md
new file mode 100644
index 000000000..15ee7850d
--- /dev/null
+++ b/docs/functions/entitymerge.md
@@ -0,0 +1,17 @@
+# entityMerge
+
+Attaches given entity to current ORM session
+
+```javascript
+entityMerge(entity)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| entity | variableName | Yes | | The entity that must be attached to the ORM session. |
diff --git a/docs/functions/entitynamearray.md b/docs/functions/entitynamearray.md
new file mode 100644
index 000000000..d6541d33c
--- /dev/null
+++ b/docs/functions/entitynamearray.md
@@ -0,0 +1,17 @@
+# entityNameArray
+
+Returns an array of all loaded entities
+
+```javascript
+entityNameArray()
+```
+
+```javascript
+returns array
+```
+
+## Dump an array of entities currently loaded
+
+```javascript
+dump(entityNameArray());
+```
diff --git a/docs/functions/entitynamelist.md b/docs/functions/entitynamelist.md
new file mode 100644
index 000000000..dc8f9b3e1
--- /dev/null
+++ b/docs/functions/entitynamelist.md
@@ -0,0 +1,23 @@
+# entityNameList
+
+Returns a list of all loaded entities
+
+```javascript
+entityNameList([delimiter])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| delimiter | string | No | | |
+
+## Outputs a list of entities currently loaded
+
+```javascript
+entityNameList()
+```
diff --git a/docs/functions/entitynew.md b/docs/functions/entitynew.md
new file mode 100644
index 000000000..aa877c571
--- /dev/null
+++ b/docs/functions/entitynew.md
@@ -0,0 +1,27 @@
+# entityNew
+
+Creates a new instance of the persistent CFC with the entity name that you provide.
+
+```javascript
+entityNew(entityName [,properties [,ignoreExtras]])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| entityName | string | Yes | | Entity name of the persistent CFC. |
+| properties | struct | No | | Key-value pair (CF struct) of property names and values. |
+| ignoreExtras | boolean | No | false | No Help Available |
+
+## Create a new ORM entity
+
+Use entityNew to get a new instance of an Employee entity.
+
+```javascript
+var employee = entityNew("Employee");
+```
diff --git a/docs/functions/entityreload.md b/docs/functions/entityreload.md
new file mode 100644
index 000000000..f356aec15
--- /dev/null
+++ b/docs/functions/entityreload.md
@@ -0,0 +1,17 @@
+# entityReload
+
+Reloads data for an entity that is already loaded.
+
+```javascript
+entityReload(entity)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| entity | variableName | Yes | | Name of the entity to be reloaded |
diff --git a/docs/functions/entitysave.md b/docs/functions/entitysave.md
new file mode 100644
index 000000000..00e96bfe8
--- /dev/null
+++ b/docs/functions/entitysave.md
@@ -0,0 +1,31 @@
+# entitySave
+
+Saves or updates data of the entity and all related entities to the database.
+
+```javascript
+entitySave(entity [, forceInsert])
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| entity | variableName | Yes | | Name of the entity that must be saved in the database. |
+| forceInsert | boolean | No | false | If true, then ColdFusion always tries to insert the entity as a new record. |
+
+## Save a new ORM entity
+
+Use entitySave to save a newly created entity.
+
+```javascript
+var company = entityNew("Company");
+company.setName(form.companyName);
+company.setIndustry(form.industry);
+company.setEmployees(form.employeeCount);
+company.setWebsite(form.companyWebsite);
+entitySave(company);
+```
diff --git a/docs/functions/entitytoquery.md b/docs/functions/entitytoquery.md
new file mode 100644
index 000000000..488685b38
--- /dev/null
+++ b/docs/functions/entitytoquery.md
@@ -0,0 +1,21 @@
+# entityToQuery
+
+Converts the input entity object or the input array of entity objects to a query object.
+The following conditions apply for this function:
+In the case of array input, all objects in the array must be of the same type.
+The result query will not contain any relation data.
+
+```javascript
+entityToQuery(entity [, name])
+```
+
+```javascript
+returns query
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| entity | variableName | Yes | | Entity object or array of objects that needs to be converted to a query object. |
+| name | string | No | | Name of the entity. Use this optional parameter to return the query of the given entity in the case of inheritance mapping. |
diff --git a/docs/functions/esapidecode.md b/docs/functions/esapidecode.md
new file mode 100644
index 000000000..bfffc6f9c
--- /dev/null
+++ b/docs/functions/esapidecode.md
@@ -0,0 +1,18 @@
+# esapiDecode
+
+Decodes a string that has been encoded with ESAPIEncode.
+
+```javascript
+esapiDecode(decodeFrom, string)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| decodeFrom | string | Yes | | given value is encoded as:
* Lucee4, Lucee5+ url
* Lucee5+ HTML |
+| string | string | Yes | | string to encode |
diff --git a/docs/functions/esapiencode.md b/docs/functions/esapiencode.md
new file mode 100644
index 000000000..1acb3c53f
--- /dev/null
+++ b/docs/functions/esapiencode.md
@@ -0,0 +1,18 @@
+# esapiEncode
+
+Calling the various encodeFor functions: encodeForHTML, etc.
+
+```javascript
+esapiEncode(encodeFor,string)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| encodeFor | string | Yes | | Encode for what, valid values are:
- css: for output inside Cascading Style Sheets (CSS)
- dn: for output in LDAP Distinguished Names
- html: for output inside HTML
- html_attr: for output inside HTML Attributes
- javascript: for output inside JavaScript
- ldap: for output in LDAP queries
- url: for output in URL
- vbscript: for output inside vbscript
- xml: for output inside XML
- xml_attr: for output inside XML Attributes
- xpath: for output in XPath. |
+| string | string | Yes | | String to encode. |
diff --git a/docs/functions/evaluate.md b/docs/functions/evaluate.md
new file mode 100644
index 000000000..2ec91a75c
--- /dev/null
+++ b/docs/functions/evaluate.md
@@ -0,0 +1,29 @@
+# evaluate
+
+Evaluates one or more string expressions, dynamically, from left to right. (The results of an evaluation on the left can have meaning in an expression to the right.) Returns the result of evaluating the rightmost expression.
+
+```javascript
+evaluate(expression)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| expression | string | Yes | | Expression to evaluate. String expressions can be complex. If a string expression contains a single- or double-quotation mark, the mark must be escaped. This function is useful for forming one variable from multiple variables. |
+
+## Tag Syntax
+
+```javascript
+
+
+
+
+ #evaluate("first #op# second")#
+```
+
+### Expected Result: YES
diff --git a/docs/functions/exceptionkeyexists.md b/docs/functions/exceptionkeyexists.md
new file mode 100644
index 000000000..7a8d40926
--- /dev/null
+++ b/docs/functions/exceptionkeyexists.md
@@ -0,0 +1,18 @@
+# exceptionKeyExists
+
+Determines whether a specific key is present in an exception.
+
+```javascript
+exceptionKeyExists(exception, key)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| exception | struct | Yes | | Name of structure to test |
+| key | string | Yes | | Key to test |
diff --git a/docs/functions/exp.md b/docs/functions/exp.md
new file mode 100644
index 000000000..4df771a43
--- /dev/null
+++ b/docs/functions/exp.md
@@ -0,0 +1,27 @@
+# exp
+
+Calculates the exponent whose base is e that represents number. The constant e equals 2.71828182845904, the base of the natural logarithm. This function is the inverse of Log, the natural logarithm of number.
+
+```javascript
+exp(number)
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| number | numeric | Yes | | Exponent to apply to the base e. |
+
+## exponent of 1.13140211149
+
+The result could vary depending on if the server is running windows or linux. On a windows box the result will be round to 3.1
+
+```javascript
+exp(1.13140211149)
+```
+
+### Expected Result: 3.099999999997
diff --git a/docs/functions/expandpath.md b/docs/functions/expandpath.md
new file mode 100644
index 000000000..1838f74c9
--- /dev/null
+++ b/docs/functions/expandpath.md
@@ -0,0 +1,35 @@
+# expandPath
+
+Creates an absolute, platform-appropriate path that is equivalent to the value of 'path', appended to the base path. This function (despite its name) can accept an absolute or relative path in the 'path' attribute.
+
+```javascript
+expandPath(path)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | Relative or absolute directory reference or filename, within the current directory, (.\ and ..\) to convert to an absolute path. Can include forward or backward slashes. |
+
+## Expand the current path
+
+```javascript
+expandPath("./")
+```
+
+## Expand the parent folder path
+
+```javascript
+expandPath("../")
+```
+
+## Expand the path to a subfolder
+
+```javascript
+expandPath("path/to/subfolder")
+```
diff --git a/docs/functions/extensionexists.md b/docs/functions/extensionexists.md
new file mode 100644
index 000000000..3541e8509
--- /dev/null
+++ b/docs/functions/extensionexists.md
@@ -0,0 +1,34 @@
+# extensionExists
+
+This function checks if a specific extension exists.
+
+```javascript
+extensionExists(id, version)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| id | string | Yes | | UUID of the Extension. |
+| version | string | No | | Version of the Extension. |
+
+## Simple ExtensionExists() Example
+
+This example shows a very basic usage of the function to determine if a function exists.
+
+```javascript
+dump(extensionExists("99A4EF8D-F2FD-40C8-8FB8C2E67A4EEEB6"));
+```
+
+## Example of ExtensionExists() Using Version Attribute
+
+This example was created by Michael Born to verify that a specific version of an Extension exists.
+
+```javascript
+dump(extensionExists("99A4EF8D-F2FD-40C8-8FB8C2E67A4EEEB6","7.2.2.jre8"));
+```
diff --git a/docs/functions/extensionlist.md b/docs/functions/extensionlist.md
new file mode 100644
index 000000000..aafbd9aa8
--- /dev/null
+++ b/docs/functions/extensionlist.md
@@ -0,0 +1,33 @@
+# extensionList
+
+This function returns a query object containing a list of installed extensions. It takes no arguments.
+
+```javascript
+extensionList()
+```
+
+```javascript
+returns query
+```
+
+## Simple ExtensionList() Example
+
+This example shows a very basic usage of the function to get a list of available extensions.
+
+```javascript
+dump(extensionList());
+```
+
+## Complex ExtensionList() Example
+
+This example was created by Michael Born to check the version of an installed extension.
+
+```javascript
+var extension = extensionList().filter( ( extension ) => extension.name == "Hibernate ORM Engine" );
+if ( !extension.recordCount ){
+throw( "Hibernate extension is not installed; please install it now." );
+} else {
+var installedExtensionVersion = extension.version;
+writeOutput( "You have the Hibernate extension version " & installedExtensionVersion & " installed." );
+}
+```
diff --git a/docs/functions/extract.md b/docs/functions/extract.md
new file mode 100644
index 000000000..b007c7bcf
--- /dev/null
+++ b/docs/functions/extract.md
@@ -0,0 +1,35 @@
+# extract
+
+Extract the data of a compressed file.
+
+```javascript
+extract(format, source, target)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| format | string | Yes | | The format of the compressed file. |
+| source | string | Yes | | Path (relative or absolute) to the source-file or a directory with zip-files. |
+| target | string | Yes | | Path (relative or absolute) to the directory, where you want to extract the data. |
+
+## Extract a zip-file
+
+Extract a zip-file and save the data in the "output-directory".
+
+```javascript
+extract("zip", "test.zip", "output-directory")
+```
+
+## Extract a multiple zip-files via a directory
+
+Extract all zip-files, which are stored in the "multiple-directory" and save the data in the "output-directory".
+
+```javascript
+extract("zip", "multiple-directory", "output-directory")
+```
diff --git a/docs/functions/fileappend.md b/docs/functions/fileappend.md
new file mode 100644
index 000000000..8044dc847
--- /dev/null
+++ b/docs/functions/fileappend.md
@@ -0,0 +1,32 @@
+# fileAppend
+
+Appends the data contents to the file.
+
+```javascript
+fileAppend(file, data [, charset] [, addNewLine])
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | string | Yes | | File path |
+| data | string | Yes | | Data to append to the file |
+| charset | string | No | | The character encoding in which the file contents is encoded. |
+| addNewLine | boolean | No | true | CF2016u11+ Indicates whether a new line is added to the end of the appended data |
+
+## Simple Example
+
+Appends a mock entry to a file.
+
+```javascript
+// Create mock log entry
+logEntry = dateTimeFormat(now(), "yyyy/mm/dd HH:nn") & " this is a mock log entry!";
+
+// Append line to file
+fileAppend("/path/to/file.log", logEntry);
+```
diff --git a/docs/functions/fileclose.md b/docs/functions/fileclose.md
new file mode 100644
index 000000000..4c3c15679
--- /dev/null
+++ b/docs/functions/fileclose.md
@@ -0,0 +1,45 @@
+# fileClose
+
+Closes an on-disk or in-memory file that is open.
+
+```javascript
+fileClose(file)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | any | Yes | | A file object |
+
+## Opens a file, reads a line then closes it.
+
+```javascript
+// Open File
+var fileObject = fileOpen("/path/to/file.txt");
+
+// Perform Actions
+try
+{
+ // Read Line
+ writeOutput(fileReadLine(fileObject));
+}
+
+// Error Handling
+catch(any ex)
+{
+ // Report Exception
+ writeDump(ex);
+}
+
+// Always Close
+finally
+{
+ // Close File
+ fileClose(fileObject);
+}
+```
diff --git a/docs/functions/filecopy.md b/docs/functions/filecopy.md
new file mode 100644
index 000000000..c006323a0
--- /dev/null
+++ b/docs/functions/filecopy.md
@@ -0,0 +1,24 @@
+# fileCopy
+
+Copies the specified on-disk or in-memory source file to the specified destination file.
+
+```javascript
+fileCopy(source, destination)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| source | string | Yes | | Path where the file is located currently |
+| destination | string | Yes | | Path where a copy of the file should be placed |
+
+## Copy file from here to there
+
+```javascript
+fileCopy(sourceFile, destinationFile);
+```
diff --git a/docs/functions/filedelete.md b/docs/functions/filedelete.md
new file mode 100644
index 000000000..8d5c536ce
--- /dev/null
+++ b/docs/functions/filedelete.md
@@ -0,0 +1,32 @@
+# fileDelete
+
+Deletes the specified file on the server. fileDelete throws an exception whenever a file doesn't exist.
+
+```javascript
+fileDelete(filePath)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | string | Yes | | Pathname of the file to delete. If not an absolute path (starting with a drive letter and a colon, or a forward or backward slash), it is relative to the ColdFusion temporary directory, which is returned by the GetTempDirectory function. |
+
+## Script Syntax
+
+Obtaining files within an archive folder and then removing them if they are older than one hour.
+
+```javascript
+var existingFiles = directoryList(expandPath("/archive/"), false, "query");
+for (file in existingFiles) {
+ if (dateDiff("h", file.datelastmodified, now()) GT 1) {
+ fileDelete(file.directory & "\" & file.name);
+ }
+}
+```
+
+### Expected Result: All files within the archive directory older than one hour will be deleted.
diff --git a/docs/functions/fileexists.md b/docs/functions/fileexists.md
new file mode 100644
index 000000000..d8b75cb21
--- /dev/null
+++ b/docs/functions/fileexists.md
@@ -0,0 +1,26 @@
+# fileExists
+
+Determines whether a file exists
+
+```javascript
+fileExists(filePath)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | string | Yes | | A absolute file system path string. |
+
+## Checks if file at the given path exists.
+
+```javascript
+var myFile = "/path/to/the/file.jpg";
+if(fileExists(expandPath(myFile))) {
+ writeOutput(myFile & 'exists!');
+}
+```
diff --git a/docs/functions/filegetmimetype.md b/docs/functions/filegetmimetype.md
new file mode 100644
index 000000000..ec2d2e49b
--- /dev/null
+++ b/docs/functions/filegetmimetype.md
@@ -0,0 +1,35 @@
+# fileGetMimeType
+
+Gets the MIME type for the file path/file object you have specified.
+
+```javascript
+fileGetMimeType(file, strict)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | any | Yes | | Name of the file object or full path on disk to the file if strict is set to true. If you do not specify the full path, the file is assumed to be present in the temp directory, as returned by the function getTempDirectory. |
+| strict | boolean | No | true | If false, determines the file type by extension. The default value is true. |
+
+## Two PDFs and two text files with and without strict mode
+
+Assume that you have a file named test.pdf in temp directory and test.txt in the same folder, and you want to check the MIME type. Here test.txt is a copy of test.pdf with extension renamed to txt.
+
+```javascript
+
+ mimeTypes = '';
+ mimeTypes = listAppend(mimeTypes, fileGetMimeType(expandPath('/folder1/test.pdf')));
+ mimeTypes = listAppend(mimeTypes, fileGetMimeType(expandPath('/folder1/test.pdf'),false));
+ mimeTypes = listAppend(mimeTypes, fileGetMimeType(expandPath('/folder1/test.txt')));
+ mimeTypes = listAppend(mimeTypes, fileGetMimeType(expandPath('/folder1/test.txt'),false));
+ writeOutput(mimeTypes);
+
+```
+
+### Expected Result: application/pdf,application/pdf,text/plain,text/plain
diff --git a/docs/functions/fileiseof.md b/docs/functions/fileiseof.md
new file mode 100644
index 000000000..0ff28846c
--- /dev/null
+++ b/docs/functions/fileiseof.md
@@ -0,0 +1,49 @@
+# fileIsEOF
+
+Determines whether ColdFusion has reached the end of the file while reading it.
+
+```javascript
+fileIsEOF(file)
+```
+
+```javascript
+returns boolean
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | any | Yes | | The file object. |
+
+## Simple usage syntax
+
+Call fileIsEOF on a file object and save the result to a variable.
+
+```javascript
+fileObj = fileOpen(expandPath('./file.txt');
+isEndOfFile = fileIsEOF(fileObj);
+```
+
+## Using fileIsEOF to loop over all lines of a text file
+
+Simplified example of using fileIsEOF to determine when all lines have been read from a file. Error handling omitted for clarity.
+
+```javascript
+// Error handling omitted for clarity.
+
+// open a file for reading
+fileObj = fileOpen(expandPath('./file.txt'), "read");
+
+// read each line until we read the end of the file.
+// fileIsEOF(fileObj) == false until we've read in the last line.
+while (!fileIsEOF(fileObj)) {
+
+ lineContent = fileReadLine(fileObj);
+
+ // do something with content of each line
+}
+
+// end of file reached, close the file handle
+fileClose(fileObj);
+```
diff --git a/docs/functions/filemove.md b/docs/functions/filemove.md
new file mode 100644
index 000000000..dca34e8e9
--- /dev/null
+++ b/docs/functions/filemove.md
@@ -0,0 +1,24 @@
+# fileMove
+
+Moves file from source to destination
+
+```javascript
+fileMove(source, destination)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| source | string | Yes | | Path where the file is located currently |
+| destination | string | Yes | | Path where a copy of the file should be placed |
+
+## Move file from here to there
+
+```javascript
+fileMove(sourcefile, destinationfile);
+```
diff --git a/docs/functions/fileopen.md b/docs/functions/fileopen.md
new file mode 100644
index 000000000..a249269a2
--- /dev/null
+++ b/docs/functions/fileopen.md
@@ -0,0 +1,48 @@
+# fileOpen
+
+Opens a file
+
+```javascript
+fileOpen(filePath [, mode [, charset] [, seekable]])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | string | Yes | | An absolute path of an on-disk or in-memory file on the server |
+| mode | string | No | read | Type of access you require to the file stream |
+| charset | string | No | | Character encoding identified by the file's byte order mark, if any; otherwise, JVM default file character set |
+| seekable | boolean | No | false | Whether the file is usable with the `fileSeek` function |
+
+## Opens a file, reads a line then closes it.
+
+```javascript
+// Open File
+var fileObject = fileOpen("/path/to/file.txt");
+
+// Perform Actions
+try
+{
+ // Read Line
+ writeOutput(fileReadLine(fileObject));
+}
+
+// Error Handling
+catch(any ex)
+{
+ // Report Exception
+ writeDump(ex);
+}
+
+// Always Close
+finally
+{
+ // Close File
+ fileClose(fileObject);
+}
+```
diff --git a/docs/functions/fileread.md b/docs/functions/fileread.md
new file mode 100644
index 000000000..8e21b0346
--- /dev/null
+++ b/docs/functions/fileread.md
@@ -0,0 +1,27 @@
+# fileRead
+
+Reads an on-disk or in-memory text file or a file object created with the FileOpen function.
+
+```javascript
+fileRead(filePath [, charset | bufferSize])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | any | Yes | | An absolute file path, or file object. |
+| charset | any | No | | Character encoding used to read the file. |
+| bufferSize | any | No | | The number of characters to read. |
+
+## Read a file into a variable
+
+Uses expandPath to grab a file in current directory.
+
+```javascript
+fileContent = fileRead(expandPath("./file.txt"), "utf-8")
+```
diff --git a/docs/functions/filereadbinary.md b/docs/functions/filereadbinary.md
new file mode 100644
index 000000000..e33afb7df
--- /dev/null
+++ b/docs/functions/filereadbinary.md
@@ -0,0 +1,25 @@
+# fileReadBinary
+
+Reads an on-disk or in-memory binary file (such as an executable or image file) on the server, into a binary object
+
+```javascript
+fileReadBinary(filePath)
+```
+
+```javascript
+returns binary
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | string | Yes | | Absolute path to the file. |
+
+## Read a file into a binary object
+
+Uses expandPath to grab a file in current directory.
+
+```javascript
+binaryContent = fileReadBinary(expandPath('./file.pdf'));
+```
diff --git a/docs/functions/filereadline.md b/docs/functions/filereadline.md
new file mode 100644
index 000000000..3f9d07435
--- /dev/null
+++ b/docs/functions/filereadline.md
@@ -0,0 +1,45 @@
+# fileReadLine
+
+Returns the next line from the file
+
+```javascript
+fileReadLine(file)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | any | Yes | | file object previously opened with fileOpen() |
+
+## Opens a file, reads a line then closes it.
+
+```javascript
+// Open File
+var fileObject = fileOpen("/path/to/file.txt");
+
+// Perform Actions
+try
+{
+ // Read Line
+ writeOutput(fileReadLine(fileObject));
+}
+
+// Error Handling
+catch(any ex)
+{
+ // Report Exception
+ writeDump(ex);
+}
+
+// Always Close
+finally
+{
+ // Close File
+ fileClose(fileObject);
+}
+```
diff --git a/docs/functions/fileseek.md b/docs/functions/fileseek.md
new file mode 100644
index 000000000..aaca53fff
--- /dev/null
+++ b/docs/functions/fileseek.md
@@ -0,0 +1,27 @@
+# fileSeek
+
+Shifts the file pointer to the given position. The file must be opened with seekable option
+
+```javascript
+fileSeek(file, position)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | any | Yes | | The file object |
+| position | numeric | Yes | | The position in the file within a stream where the following read and write operation must occur. |
+
+## Script Syntax
+
+```javascript
+
+ NewFile = fileOpen(expandPath(".") & " est.txt","write","",true);
+ fileSeek(#NewFile#,0);
+
+```
diff --git a/docs/functions/filesetaccessmode.md b/docs/functions/filesetaccessmode.md
new file mode 100644
index 000000000..1930ec584
--- /dev/null
+++ b/docs/functions/filesetaccessmode.md
@@ -0,0 +1,26 @@
+# fileSetAccessMode
+
+Sets the attributes of an on-disk file on UNIX or Linux. This function does not work with in-memory files.
+
+```javascript
+fileSetAccessMode(filePath, mode)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | string | Yes | | Path to file |
+| mode | string | Yes | | Access mode (the same attributes you use for the Linux command 'chmod')
Each position specifies who is granted the access:
* 1st position: owner
* 2nd position: group
* 3rd position: other
The number at each position specifies which right is granted:
* 4: read (r)
* 2: write (w)
* 1: execute (x)
Let's assume that matrix as seen on Linux systems: rwxrwxrwx. You can combine the numbers for read, write and execute permissions to achieve combined permissions:
* 3: write & execute
* 5: read & execute
* 6: read & write
* 7: read, write and execute
For example, 400 specifies that only the owner can read the file; 004 specifies that anyone can read the file.
In rwe-notation 400 means r-------- and 004 ------r-- whereas 751 means rwxr-er--. |
+
+## Grant read access to everyone
+
+```javascript
+
+ fileSetAccessMode("test1.txt", "004");
+
+```
diff --git a/docs/functions/filesetattribute.md b/docs/functions/filesetattribute.md
new file mode 100644
index 000000000..2e3b850bc
--- /dev/null
+++ b/docs/functions/filesetattribute.md
@@ -0,0 +1,29 @@
+# fileSetAttribute
+
+Sets the attributes of an on-disk file in Windows. This function does not work with in-memory files.
+
+```javascript
+fileSetAttribute(filePath, attribute)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| filePath | string | Yes | | Path to on-disk file | |
+| attribute | string | Yes | | Attribute to enable/disable
readonly/hidden sets the given attribute to `true` and the other one to `false`
normal sets both to false | /Users/garethedwards/development/github/cfdocs/docs/functions/filesetattribute.md|normal |
+
+## Create a temporary file and then change read-only mode
+
+```javascript
+myFile = getTempFile(getTempDirectory(),"testFile");
+writeOutput('is writable: '&getFileInfo(myFile).canWrite);
+fileSetAttribute(myFile,'readOnly');
+writeOutput(' → '&getFileInfo(myFile).canWrite);
+```
+
+### Expected Result: is writable: YES → NO
diff --git a/docs/functions/filesetlastmodified.md b/docs/functions/filesetlastmodified.md
new file mode 100644
index 000000000..16ac2d970
--- /dev/null
+++ b/docs/functions/filesetlastmodified.md
@@ -0,0 +1,27 @@
+# fileSetLastModified
+
+Sets the date when an on-disk or in-memory file was most recently modified.
+
+```javascript
+fileSetLastModified(filePath, date)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | string | Yes | | An absolute path to an on-disk or in-memory file on the server |
+| date | date | Yes | | The date to set for when the file was last modified |
+
+## Script Syntax
+
+```javascript
+
+ fileSetLastModified("c: emp est1.txt", "#now()#");
+ writeOutput(#getFileInfo("c: emp est1.txt").lastmodified#);
+
+```
diff --git a/docs/functions/fileskipbytes.md b/docs/functions/fileskipbytes.md
new file mode 100644
index 000000000..446cc7236
--- /dev/null
+++ b/docs/functions/fileskipbytes.md
@@ -0,0 +1,27 @@
+# fileSkipBytes
+
+Shifts the file pointer by the given number of bytes.
+
+```javascript
+fileSkipBytes(file, skipCount)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | any | Yes | | The file object |
+| skipCount | numeric | Yes | | The number of bytes that must be skipped before the next file operation |
+
+## Script Syntax
+
+```javascript
+
+ NewFile = fileOpen(expandPath(".") & " est.txt","write","",true);
+ fileSeek(#NewFile#,5);
+
+```
diff --git a/docs/functions/fileupload.md b/docs/functions/fileupload.md
new file mode 100644
index 000000000..59aac02bc
--- /dev/null
+++ b/docs/functions/fileupload.md
@@ -0,0 +1,48 @@
+# fileUpload
+
+Uploads file to a directory on the server.
+
+```javascript
+fileUpload(destination [, fileField] [, mimeType] [, onConflict] [, strict])
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| destination | string | Yes | | Path of directory in which to upload the file. If not an absolute path (starting with a drive letter and a colon, or a forward or backward slash), it is relative to the ColdFusion temporary directory returned by the function getTempDirectory. If the destination you specify does not exist, ColdFusion creates a file with the specified destination name. |
+| fileField | string | No | | Name of form field used to select the file. Do not use number signs (#) to specify the field name. |
+| mimeType | string | No | | Specify a comma-delimited list of MIME types and/or file extensions to test the uploaded file against. If the file is not of any of the types in this list, an error of type `coldfusion.tagext.io.FileUtils$InvalidUploadTypeException`is thrown.
If you specify file extensions, use this format: `.txt,.jpg`, not `txt`, `*.txt`, or `*.*`. You can use `*` as a wildcard to accept all files. |
+| onConflict | string | No | error | Action to take if file has the same name of a file in the directory. |
+| strict | boolean | No | true | CF10+ Defines which method is used to determine the file type to check against the value of the `mimeType` parameter.
`true`: The first few bytes of the uploaded file are used to determine the MIME type.
`false`: The MIME type provided by the browser in the request payload is used. |
+
+## Upload form with strict check on MIME type
+
+```javascript
+
+
+
+ if( structKeyExists( form, "fileInput" )) {
+ try {
+ uploadedFile = fileUpload( getTempDirectory(), "fileInput", "image/jpeg,image/pjpeg", "MakeUnique" );
+ // check the file extension of the uploaded file; mime types can be spoofed
+ if (not listFindNoCase("jpg,jpeg", uploadedFile.serverFileExt)) {
+ throw("The uploaded file is not of type JPG.");
+ }
+ // do stuff with uploadedFile...
+ } catch ( coldfusion.tagext.io.FileUtils$InvalidUploadTypeException e ) {
+ writeOutput( "This upload form only accepts JPEG files." );
+ }
+ catch (any e) {
+ writeOutput( "An error occurred while uploading your file: #e.message#" );
+ }
+ }
+
+```
diff --git a/docs/functions/fileuploadall.md b/docs/functions/fileuploadall.md
new file mode 100644
index 000000000..43635c9c7
--- /dev/null
+++ b/docs/functions/fileuploadall.md
@@ -0,0 +1,23 @@
+# fileUploadAll
+
+Uploads all files sent to the page in an HTTP request to a directory on the server.
+
+```javascript
+fileUploadAll(destination [,mimeType] [,onConflict] [,strict] [,continueOnError] [,errorVariable] [,allowedExtensions])
+```
+
+```javascript
+returns array
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| destination | string | Yes | | Path of directory in which to upload the file. If not an absolute path (starting with a drive letter and a colon, or a forward or backward slash), it is relative to the ColdFusion temporary directory returned by the function getTempDirectory. If the destination you specify does not exist, ColdFusion creates a file with the specified destination name. |
+| mimeType | string | No | | Limits the MIME types to accept. Comma-delimited list. For example, the following code permits JPEG and Microsoft Word file uploads:'image/jpg,application/msword' .The browser uses the filename extension to determine file type. |
+| onConflict | string | No | error | Action to take if file has the same name of a file in the directory. |
+| strict | boolean | No | true | Defines which method is used to determine the file type to check against the value of the `mimeType` parameter.
`true`: The first few bytes of the uploaded file are used to determine the MIME type.
`false`: The MIME type provided by the browser in the request payload is used. |
+| continueOnError | boolean | No | false | CF11+ Whether to continue uploading the remaining files when uploading one of the files fails. |
+| errorVariable | variableName | No | cffile.uploadAllErrors | CF11+ The name of the variable in which the array of structs of file upload errors will be stored.
The upload failure information error structure contains the following fields:
`REASON` - The reason for the failure
`DETAIL` - File upload failure detail
MESSAGE - A detailed message depicting the failure
CLIENTFILE - Name of the file uploaded from the client's system
`CLIENTFILEEXT` - Extension of the uploaded file on the client system (without a period)
`CLIENTFILENAME` - Name of the uploaded file on the client system (without an extension)
`INVALID_FILE_TYPE` - If the file mime type or extension is not in the specified accept attribute. If the reason is INVALID_FILE_TYPE, two additional keys will be available in the structure.
--`ACCEPT`: list of mime types or file extensions given in the tag
--`MIMETYPE`: mime type of the uploaded file
`EMPTY_FILE` - If the uploaded file is an empty file
`FILE_EXISTS` - If any file with the given name already exists in the destination and the overwritepolicy is error
`DEST` - The destination where file is copied
`FORM_FILE_NOT_FOUND` - If the uploaded file is not found on the server |
+| allowedExtensions | string | No | | CF2018+ A comma-separated list of file extensions, which will be allowed for upload.
For example, .png, .jpg, or, .jpeg.
You can use `*` (star) to allow all files, except where you specify the MIME type in the accept attribute.
Values specified in the attribute allowedExtensions override the list of blocked extensions in the server or application settings. |
diff --git a/docs/functions/filewrite.md b/docs/functions/filewrite.md
new file mode 100644
index 000000000..324caac23
--- /dev/null
+++ b/docs/functions/filewrite.md
@@ -0,0 +1,25 @@
+# fileWrite
+
+Writes the data to the file object or file path specified using the charset specified or the java default character set if unspecified.
+
+```javascript
+fileWrite(filePath, data [, charset])
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| filePath | any | Yes | | A file object or a file system path string. |
+| data | any | Yes | | The variable to write to the file. |
+| charset | string | No | | An optional character set that the data is encoded with. Defaults to the Java default character set (which is usually UTF-8). |
+
+## Write a Temporary File
+
+```javascript
+fileWrite( getTempFile( getTempDirectory(), "tempFile"), "My Data" );
+```
diff --git a/docs/functions/filewriteline.md b/docs/functions/filewriteline.md
new file mode 100644
index 000000000..c89f4c241
--- /dev/null
+++ b/docs/functions/filewriteline.md
@@ -0,0 +1,26 @@
+# fileWriteLine
+
+Appends content to an existing file
+
+```javascript
+fileWriteLine(file, data)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| file | any | Yes | | The file where you want to add your content |
+| data | string | Yes | | Content to add to the file |
+
+## Script Syntax
+
+```javascript
+myfile = fileOpen("c:\temp\test1.txt", "write");
+fileWriteLine(myfile,"This line is new.");
+fileClose(myfile);
+```
diff --git a/docs/functions/find.md b/docs/functions/find.md
new file mode 100644
index 000000000..e6b747598
--- /dev/null
+++ b/docs/functions/find.md
@@ -0,0 +1,29 @@
+# find
+
+Finds the first occurrence of a substring in a string, from a specified start position. If substring is not in string, returns zero. The search is case-sensitive.
+
+```javascript
+find(substring, string [, start])
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| substring | string | Yes | | The string you are looking for. |
+| string | string | Yes | | The string to search in. |
+| start | numeric | No | 1 | The position from which to start searching in the string |
+
+## Find apple in the string
+
+Returns the index of apple in the string.
+
+```javascript
+find("apple", "An apple a day keeps the doctor away.")
+```
+
+### Expected Result: 4
diff --git a/docs/functions/findnocase.md b/docs/functions/findnocase.md
new file mode 100644
index 000000000..9b794359a
--- /dev/null
+++ b/docs/functions/findnocase.md
@@ -0,0 +1,27 @@
+# findNoCase
+
+Finds the first occurrence of a substring in a string, from a specified start position. If substring is not in string, returns zero. The search is case-insensitive.
+
+```javascript
+findNoCase(substring, string [, start])
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| substring | string | Yes | | The string for which you are looking |
+| string | string | Yes | | The string in which to search |
+| start | numeric | No | 1 | The position from which to start searching in the string |
+
+## Script Syntax
+
+```javascript
+findNoCase("s", "cfdocs.org", 0)
+```
+
+### Expected Result: 6
diff --git a/docs/functions/findoneof.md b/docs/functions/findoneof.md
new file mode 100644
index 000000000..114b747c9
--- /dev/null
+++ b/docs/functions/findoneof.md
@@ -0,0 +1,55 @@
+# findOneOf
+
+Finds the first occurrence of any one of a set of characters in a string, from a specified start position. The search is case-sensitive.
+
+ Returns the position of the first member of set found in string; or 0, if no member of set is found in string.
+
+```javascript
+findOneOf(set, string [, start])
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| set | string | Yes | | String which contains one or more characters to search for. |
+| string | string | Yes | | String in which to search. |
+| start | numeric | No | 1 | Start position of search. Can be 1 through the length of the string to search. Choosing a start index greater than the length of the string to search will return a 0. |
+
+## Find first instance starting from beginning of string.
+
+We're not passing a start index in this example.
+
+```javascript
+string_to_search = 'The rain in Spain falls mainly in the plains.';
+writeOutput( findOneOf('in', string_to_search) );
+```
+
+### Expected Result: 7
+
+## Find first instance starting from the twelfth character.
+
+Let's pass in a starting index of 12. The search will start at the twelfth character, just before the word 'Spain'.
+
+```javascript
+string_to_search = 'The rain in Spain falls mainly in the plains.';
+writeOutput( findOneOf('in', string_to_search, 12) );
+```
+
+### Expected Result: 16
+
+## Example showing this function will search all characters from the 'set' argument in the 'string' argument.
+
+This function is case-sensitive so 't' does NOT match the first 'T'. It's the same for 'H' NOT matching the first 'h'. But 'e' matches the 'e' at the third position.
+Since this is the first match, this is the index that is returned.
+
+```javascript
+string_to_search = 'The rain in Spain falls mainly in the plains.';
+writeOutput( findOneOf('tHe', string_to_search, 1) );
+```
+
+### Expected Result: 3
diff --git a/docs/functions/firstdayofmonth.md b/docs/functions/firstdayofmonth.md
new file mode 100644
index 000000000..6f6a14490
--- /dev/null
+++ b/docs/functions/firstdayofmonth.md
@@ -0,0 +1,35 @@
+# firstDayOfMonth
+
+Determines the ordinal (day number, in the year) of the first day of the month in which a given date falls.
+
+```javascript
+firstDayOfMonth(date)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+date.firstDayOfMonth()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| date | date | Yes | | Date or date/time object. |
+
+## Simple example
+
+To determine the ordinal (day number, in the year).
+
+```javascript
+
+
+#result#
+```
+
+### Expected Result: 336
diff --git a/docs/functions/fix.md b/docs/functions/fix.md
new file mode 100644
index 000000000..da2259670
--- /dev/null
+++ b/docs/functions/fix.md
@@ -0,0 +1,26 @@
+# fix
+
+Converts a real number to an integer.
+**Tip:** If you want to `fix()` to outcome of a division, simply use the integer division operator (\).
+
+```javascript
+fix(number)
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| number | numeric | Yes | | The number to convert |
+
+## Fix 1.8 to an integer
+
+```javascript
+fix(1.8)
+```
+
+### Expected Result: 1
diff --git a/docs/functions/floor.md b/docs/functions/floor.md
new file mode 100644
index 000000000..4ebaf5011
--- /dev/null
+++ b/docs/functions/floor.md
@@ -0,0 +1,57 @@
+# floor
+
+Returns the integer less than or equal to the input. This function is equivalent to the int function.
+
+```javascript
+floor(number)
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| number | numeric | Yes | | A numeric value |
+
+## Floor Value of 4.0
+
+Requires CF2016+
+
+```javascript
+floor(4.0)
+```
+
+### Expected Result: 4
+
+## Floor Value of 4.3
+
+Requires CF2016+
+
+```javascript
+floor(4.3)
+```
+
+### Expected Result: 4
+
+## Floor Value of 4.7
+
+Requires CF2016+
+
+```javascript
+floor(4.7)
+```
+
+### Expected Result: 4
+
+## Floor Value of -4.3
+
+Requires CF2016+
+
+```javascript
+floor(-4.3)
+```
+
+### Expected Result: -5
diff --git a/docs/functions/formatbasen.md b/docs/functions/formatbasen.md
new file mode 100644
index 000000000..f2623c113
--- /dev/null
+++ b/docs/functions/formatbasen.md
@@ -0,0 +1,52 @@
+# formatBaseN
+
+Converts number to a string, in the base specified by radix.
+
+```javascript
+formatBaseN(number, radix)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| number | numeric | Yes | | The number to convert |
+| radix | numeric | Yes | | The base radix to use |
+
+## Format 10 as dual number
+
+```javascript
+formatBaseN(10,2)
+```
+
+### Expected Result: 1010
+
+## Format 1024 as hexadecimal number
+
+```javascript
+formatBaseN(1024,16)
+```
+
+### Expected Result: 400
+
+## Format 125 as decimal number
+
+```javascript
+formatBaseN(125,10)
+```
+
+### Expected Result: 125
+
+## Format a float
+
+Floors float to integer then formats with radix given
+
+```javascript
+formatBaseN(10.75,2)
+```
+
+### Expected Result: 1010
diff --git a/docs/functions/generateargon2hash.md b/docs/functions/generateargon2hash.md
new file mode 100644
index 000000000..b8a37cf97
--- /dev/null
+++ b/docs/functions/generateargon2hash.md
@@ -0,0 +1,30 @@
+# generateArgon2Hash
+
+Generates and returns an Argon2 hash of the input.
+
+```javascript
+generateArgon2Hash(string [, variant] [, parallelismFactor] [, memoryCost] [, iterations])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| input | string | Yes | | |
+| variant | string | No | Argon2i | |
+| parallelismFactor | numeric | No | 1 | Degrees of parallelism, a number between 1 and 10. |
+| memoryCost | numeric | No | 8 | A number between 8 and 100000. |
+| iterations | numeric | No | 1 | A number between 1 and 20. |
+
+## Generate and verify an Argon2 hash
+
+```javascript
+hashedValue = GenerateArgon2Hash("CFDocs.org");
+dump(hashedValue);
+check = Argon2CheckHash( "CFDocs.org", hashedValue);
+dump(check);
+```
diff --git a/docs/functions/generatebcrypthash.md b/docs/functions/generatebcrypthash.md
new file mode 100644
index 000000000..0de08bb48
--- /dev/null
+++ b/docs/functions/generatebcrypthash.md
@@ -0,0 +1,49 @@
+# generateBCryptHash
+
+It is a password-hashing cryptographic function that takes an input and hashes it into a fixed size output./nNOTE: BCrypt input is limited to 72 bytes.
+
+```javascript
+generateBCryptHash(plaintext,options);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| plaintext | string | Yes | | The input string to hash. | |
+| options | struct | No | {"version":"$2a","rounds":10} | A struct containing the optional values:
--version - Version of BCrypt hash to generate ($2a,$2y or $2b). (Default is "$2a". The most current version is "$2b")
--rounds - Number of rounds to run the hash functions. (Default is 10.) | /Users/garethedwards/development/github/cfdocs/docs/functions/generatebcrypthash.md|rounds |
+
+## Example of BCrypt Hashing - No Options
+
+This is an example of using the function with no options.
+
+```javascript
+secretMsg=generateBCryptHash("My voice is my passport. Verify me.");writeDump(secretMsg)
+```
+
+### Expected Result: $2a$10$.jQX1KnwPzhvVet0vEENnOlO8C70oM8GQhu0MQnCgcIlWhguWb3q.
+
+## Example of BCrypt Hashing - With Version Option
+
+This is an example of using the function with optional version specified.
+
+```javascript
+secretMsg=generateBCryptHash("My voice is my passport. Verify me.",{"version":"$2b"});
+writeDump(secretMsg)
+```
+
+### Expected Result: $2b$10$wkfNE0B2hP/GMqQPWRvTte87F/PlEZwetaDPnVwW5OjBRAPiGKZp.
+
+## Example of BCrypt Hashing - With Rounds Option
+
+This is an example of using the function with optional rounds specified.
+
+```javascript
+secretMsg=generateBCryptHash("Setec Astronomy",{"rounds":15});writeDump(secretMsg)
+```
+
+### Expected Result: $2a$15$yBUewN8dYFd9QawytI5SO.MIq0hO65TXEoVyUAZRlK.oTHZ4Dwa0i
diff --git a/docs/functions/generategraphqlmodels.md b/docs/functions/generategraphqlmodels.md
new file mode 100644
index 000000000..4940a297f
--- /dev/null
+++ b/docs/functions/generategraphqlmodels.md
@@ -0,0 +1,24 @@
+# generateGraphQLModels
+
+This generates models for all queries, mutations, and subscriptions. Call this method every time if there is a change in the query or you've added a new query in the GraphQL file.
+
+```javascript
+generateGraphQLModels()
+```
+
+```javascript
+returns void
+```
+
+## Generate GraphQL models (Script syntax)
+
+Creates a GraphQL client with specified properties and calls generateGraphQLModels
+
+```javascript
+gqlClient = getGraphQLClient({
+ service_url: "https://apollo-fullstack-tutorial.herokuapp.com/graphql",
+ root_folder: "root",
+ headers: { keys: "key", values: "value" }
+});
+generateGraphQLModels();
+```
diff --git a/docs/functions/generatepbkdfkey.md b/docs/functions/generatepbkdfkey.md
new file mode 100644
index 000000000..e7d5eb33b
--- /dev/null
+++ b/docs/functions/generatepbkdfkey.md
@@ -0,0 +1,58 @@
+# generatePBKDFKey
+
+CFML implementation of Password-Based Key-Derivation Function (PBKDF)
+
+```javascript
+generatePBKDFKey(algorithm, passphrase, salt, iterations, keySize);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| algorithm | string | Yes | | Hashing algorithm used for generating key |
+| passphrase | string | Yes | | Passphrase used for the key. KEEP THIS SECRET. |
+| salt | string | Yes | | A string which will be added to the passphrase before encryption.
The standard recommends a salt length of at least 64 bits (8 characters). The salt needs to be generated using a pseudo-random number generator (e.g. SHA1PRNG) |
+| iterations | numeric | Yes | | The number of PBKDEF iterations to perform. A minimum recommended value is 1000 |
+| keySize | numeric | Yes | | The length in bits of the key to generate |
+
+## Example PBKDF2 With HMAC SHA1
+
+The `PBKDF2WithHmacSHA1` algorithm will work on older JVMs, or older versions of CF
+
+```javascript
+generatePBKDFKey("PBKDF2WithHmacSHA1", "secret", "salty", 5000, 128)
+```
+
+### Expected Result: Y0MCpCe3zb0CNJvyXNUWEQ==
+
+## More complex encryption example
+
+```javascript
+// some variables
+password = "top_secret";
+dataToEncrypt= "the most closely guarded secret";
+encryptionAlgorithm = "AES";
+keysize = 128;
+algorithmVersion = 512;
+PBKDFalgorithm = 'PBKDF2WithHmacSHA' & algorithmVersion;
+
+// Generate key as recommended in docs
+length = keysize / 8;
+multiplicator = 10 ^ length;
+salt = Round(Randomize(5,'SHA1PRNG') * multiplicator);
+
+// The magic happens here
+PBKDFKey = GeneratePBKDFKey(PBKDFalgorithm, password, salt, algorithmVersion, keysize);
+encryptedData = encrypt(dataToEncrypt, PBKDFKey, encryptionAlgorithm, "BASE64");
+decryptedData = decrypt(encryptedData, PBKDFKey, encryptionAlgorithm, "BASE64");
+
+//Output
+writeOutput("Generated PBKDFKey (Base 64): " & PBKDFKey);
+writeOutput("
Data After Encryption: " & encryptedData);
+writeOutput("
Data After Decryption: " & decryptedData);
+```
diff --git a/docs/functions/generatescrypthash.md b/docs/functions/generatescrypthash.md
new file mode 100644
index 000000000..54cef65db
--- /dev/null
+++ b/docs/functions/generatescrypthash.md
@@ -0,0 +1,41 @@
+# generateSCryptHash
+
+It is a salted password-hashing cryptographic function that takes an input and hashes it into a fixed size output.
+NOTE: This function is less secure than BCrypt.
+
+```javascript
+generateSCryptHash(plaintext,options);
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| plaintext | string | Yes | | The input string to hash. |
+| options | struct | No | {"memorycost":8,"CpuCost":16348,"Parallel":1,"KeyLength":32,"saltLength":8} | A struct containing the optional values:
- memorycost - Default is 8.
- CpuCost - CPU cost of the algorithm (as defined in scrypt, this is `N`) that must be a power of 2 and greater than 1. Default is currently 16,348 or 2^14.
- Parallel - the parallelization of the algorithm (as defined in scrypt, this is `P`). Default is currently 1.
- Keylength - key length for the algorithm (as defined in scrypt, this is `dkLen`). Default is currently 32.
- saltLength - length of the salt to use. Default is 8. |
+
+## Example of SCrypt Hashing - No Options
+
+This is an example of using the function with no options.
+
+```javascript
+secretMsg=generateSCryptHash("My voice is my passport. Verify me.");
+writeOutput(secretMsg)
+```
+
+### Expected Result: $e0801$BEJ9Ob8ZvoY=$LpQ79jMomeePrvBjcWRl3SrVf69962Ztn4WV/Sse4jg=
+
+## Example of SCrypt Hashing - With Options
+
+This is an example of using the function with options specified.
+
+```javascript
+secretMsg=generateBCryptHash("My voice is my passport. Verify me.",{"memorycost":4,"CpuCost":4096,"Parallel":1,"KeyLength":28,"saltLength":10});
+writeOutput(secretMsg)
+```
+
+### Expected Result: $c0401$6TTkF3GRLGrHAw==$NGPASIOKsgNLDOZPyTvn9rrSW3F+IkHLlPWevQ==
diff --git a/docs/functions/generatesecretkey.md b/docs/functions/generatesecretkey.md
new file mode 100644
index 000000000..48f62f516
--- /dev/null
+++ b/docs/functions/generatesecretkey.md
@@ -0,0 +1,31 @@
+# generateSecretKey
+
+Generates a secure random key value for use in the encrypt and decrypt functions.
+
+```javascript
+generateSecretKey([algorithm] [,keysize])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| algorithm | string | No | | The encryption algorithm used to generate the key.
NOTE: You cannot use `generateSecretKey()` to create a key for the `CFMX_COMPAT` default algorithm in `encrypt()` and `decrypt()` functions. | /Users/garethedwards/development/github/cfdocs/docs/functions/generatesecretkey.md|DESEDE |
+| keysize | numeric | No | 128 | Number of bits requested in the key for the specified algorithm (when allowed by JDK). | /Users/garethedwards/development/github/cfdocs/docs/functions/generatesecretkey.md|512 |
+
+## Generate an AES 128 bit Key
+
+Generate an AES key and use it to encrypt and decrypt a secret.
+
+```javascript
+ex={};
+ex.key = generateSecretKey("AES");
+ex.secret = "top secret";
+ex.encrypted=encrypt(ex.secret, ex.key, "AES", "Base64");
+ex.decrypted=decrypt(ex.encrypted, ex.key, "AES", "Base64");
+writeDump(ex);
+```
diff --git a/docs/functions/getapplicationmetadata.md b/docs/functions/getapplicationmetadata.md
new file mode 100644
index 000000000..7898c5280
--- /dev/null
+++ b/docs/functions/getapplicationmetadata.md
@@ -0,0 +1,29 @@
+# getApplicationMetadata
+
+Returns the application settings that you have specified in the application, either in the Application.cfc or Application.cfm. Contains application settings such as name, sessionManagement, or invokeImplicitAccessor.
+
+```javascript
+getApplicationMetadata()
+```
+
+```javascript
+returns struct
+```
+
+## Simple Example
+
+Prints the statements using application meta data.
+
+```javascript
+// Fetch application meta data
+data = getApplicationMetadata();
+
+// Print application name
+writeOutput("Application name is " & (data.name.length() ? data.name : "unspecified") & "
");
+
+// Print session timeout
+writeOutput("Session timeout is " & data.sessionTimeout & "
");
+
+// Print session management
+writeOutput("Session management is " & (data.sessionManagement ? "enabled" : "disabled"));
+```
diff --git a/docs/functions/getapplicationsettings.md b/docs/functions/getapplicationsettings.md
new file mode 100644
index 000000000..1d8c4bc0d
--- /dev/null
+++ b/docs/functions/getapplicationsettings.md
@@ -0,0 +1,17 @@
+# getApplicationSettings
+
+return all data from this scope, when using a application.cfc or all setting defined in tag cfapplication
+
+```javascript
+getApplicationSettings()
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| suppressFunction | boolean | Yes | false | if true only data members from this scope are returned (no functions), default is false |
diff --git a/docs/functions/getauthuser.md b/docs/functions/getauthuser.md
new file mode 100644
index 000000000..980b557c3
--- /dev/null
+++ b/docs/functions/getauthuser.md
@@ -0,0 +1,11 @@
+# getAuthUser
+
+Gets the name of an authenticated user.
+
+```javascript
+getAuthUser()
+```
+
+```javascript
+returns string
+```
diff --git a/docs/functions/getbasetagdata.md b/docs/functions/getbasetagdata.md
new file mode 100644
index 000000000..8af606c0b
--- /dev/null
+++ b/docs/functions/getbasetagdata.md
@@ -0,0 +1,40 @@
+# getBaseTagData
+
+Used within a custom tag. Finds calling (ancestor) tag by name and accesses its data.
+
+```javascript
+getBaseTagData(tagname [, level])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| tagname | string | Yes | | Specify the parent tag name, starting with CF_. |
+| level | numeric | No | 1 | Specify the nth-level ancestor to retrieve variables from. |
+
+## Retrieve parent tag thisTag scope
+
+Use getBaseTagData() to retrieve the execution mode of the parent CF_MAPPER custom tag.
+
+```javascript
+
+
+
+template
+
+BODY
+
+```
+
+## Retrieve parent tag attributes
+
+Use getBaseTagData() to retrieve the attributes of the parent cf_iframe tag
+
+```javascript
+variables.parentAttributes = getBaseTagData('cf_iframe').attributes;
+```
diff --git a/docs/functions/getbasetaglist.md b/docs/functions/getbasetaglist.md
new file mode 100644
index 000000000..4943392a1
--- /dev/null
+++ b/docs/functions/getbasetaglist.md
@@ -0,0 +1,17 @@
+# getBaseTagList
+
+Gets a comma-delimited list of uppercase ancestor tag names, as a string. The first list element is the current tag. If the current tag is nested, the next element is the parent tag. If the function is called for a top-level tag, it returns an empty string.
+
+```javascript
+getBaseTagList()
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| caller | any | No | | Adobe only. Not aliased in Lucee |
diff --git a/docs/functions/getbasetemplatepath.md b/docs/functions/getbasetemplatepath.md
new file mode 100644
index 000000000..f5ea75a93
--- /dev/null
+++ b/docs/functions/getbasetemplatepath.md
@@ -0,0 +1,17 @@
+# getBaseTemplatePath
+
+Gets the absolute server file system path of the requested CFML file.
+
+```javascript
+getBaseTemplatePath()
+```
+
+```javascript
+returns string
+```
+
+## Basic Example
+
+```javascript
+getBaseTemplatePath()
+```
diff --git a/docs/functions/getbuiltinfunction.md b/docs/functions/getbuiltinfunction.md
new file mode 100644
index 000000000..19aaabb91
--- /dev/null
+++ b/docs/functions/getbuiltinfunction.md
@@ -0,0 +1,25 @@
+# getBuiltinFunction
+
+Returns an object, which contains the description, parameters and return-type of the given function. Throws an exception when the function do not exists.
+
+```javascript
+getBuiltinFunction(name)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | Name of the function. |
+
+## Show information about the StructKeyExists-function
+
+Dump the StructKeyExists-function to show information about this function.
+
+```javascript
+dump(getBuiltinFunction("StructKeyExists"));
+```
diff --git a/docs/functions/getcanonicalpath.md b/docs/functions/getcanonicalpath.md
new file mode 100644
index 000000000..36a17af29
--- /dev/null
+++ b/docs/functions/getcanonicalpath.md
@@ -0,0 +1,25 @@
+# getCanonicalPath
+
+Returns the canonical path of the input path. If a directory a trailing slash is used on Lucee, but not on ACF.
+
+```javascript
+getCanonicalPath(path)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | |
+
+## getCanonicalPath Example
+
+Returns the canonical path of the input path.
+
+```javascript
+writeOutput( getCanonicalPath(getBaseTemplatePath()) );
+```
diff --git a/docs/functions/getclasspath.md b/docs/functions/getclasspath.md
new file mode 100644
index 000000000..f4dd33361
--- /dev/null
+++ b/docs/functions/getclasspath.md
@@ -0,0 +1,19 @@
+# getClassPath
+
+Returns an array containing the Java classPath of the current environment.
+
+```javascript
+getClassPath()
+```
+
+```javascript
+returns array
+```
+
+## getClassPath Example
+
+It's containing the Java classPath of the current environment. It supported in Lucee.
+
+```javascript
+writeDump(getClassPath());
+```
diff --git a/docs/functions/getclientvariableslist.md b/docs/functions/getclientvariableslist.md
new file mode 100644
index 000000000..d9990721b
--- /dev/null
+++ b/docs/functions/getclientvariableslist.md
@@ -0,0 +1,12 @@
+# getClientVariablesList
+
+ Finds the client variables to which a page has write access.
+ Comma-delimited list of non-read-only client variables
+
+```javascript
+getClientVariablesList()
+```
+
+```javascript
+returns string
+```
diff --git a/docs/functions/getcomponentmetadata.md b/docs/functions/getcomponentmetadata.md
new file mode 100644
index 000000000..f840031a9
--- /dev/null
+++ b/docs/functions/getcomponentmetadata.md
@@ -0,0 +1,17 @@
+# getComponentMetadata
+
+Gets metadata (such as the functions and implemented interfaces of a component) for a CFC or ColdFusion interface.
+
+```javascript
+getComponentMetadata(path)
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | The dot-delimited path of the interface or CFC definition. |
diff --git a/docs/functions/getcontextroot.md b/docs/functions/getcontextroot.md
new file mode 100644
index 000000000..8d2397277
--- /dev/null
+++ b/docs/functions/getcontextroot.md
@@ -0,0 +1,11 @@
+# getContextRoot
+
+Returns path to the J2EE server context root for the current request.
+
+```javascript
+getContextRoot()
+```
+
+```javascript
+returns string
+```
diff --git a/docs/functions/getcpuusage.md b/docs/functions/getcpuusage.md
new file mode 100644
index 000000000..443f82327
--- /dev/null
+++ b/docs/functions/getcpuusage.md
@@ -0,0 +1,23 @@
+# getCpuUsage
+
+ Gets the CPU usage with default or custom snapshot interval.
+
+```javascript
+getCpuUsage([interval]);
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| interval | numeric | No | 1000 | Time in milliseconds. This is the time delay between two snapshots. |
+
+## Output CPU usage from current snapshot
+
+```javascript
+getCpuUsage()
+```
diff --git a/docs/functions/getcurrentcontext.md b/docs/functions/getcurrentcontext.md
new file mode 100644
index 000000000..91c1d2b49
--- /dev/null
+++ b/docs/functions/getcurrentcontext.md
@@ -0,0 +1,19 @@
+# getCurrentContext
+
+Return the context (stacktrace) of the current position.
+
+```javascript
+getCurrentContext()
+```
+
+```javascript
+returns array
+```
+
+## Script Syntax
+
+Simple dump of the call stack
+
+```javascript
+writeDump(getCurrentContext());
+```
diff --git a/docs/functions/getcurrenttemplatepath.md b/docs/functions/getcurrenttemplatepath.md
new file mode 100644
index 000000000..62e9b840d
--- /dev/null
+++ b/docs/functions/getcurrenttemplatepath.md
@@ -0,0 +1,17 @@
+# getCurrentTemplatePath
+
+Gets the absolute server file system path of the file that calls this function.
+
+```javascript
+getCurrentTemplatePath()
+```
+
+```javascript
+returns string
+```
+
+## Basic Example
+
+```javascript
+getCurrentTemplatePath()
+```
diff --git a/docs/functions/getdirectoryfrompath.md b/docs/functions/getdirectoryfrompath.md
new file mode 100644
index 000000000..95ceb1e72
--- /dev/null
+++ b/docs/functions/getdirectoryfrompath.md
@@ -0,0 +1,25 @@
+# getDirectoryFromPath
+
+Extracts a directory from an absolute path. Returns the absolute path with a trailing slash and omits the filename.
+
+```javascript
+getDirectoryFromPath(path)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | |
+
+## Basic Example
+
+```javascript
+getDirectoryFromPath("C:\temp\file.txt")
+```
+
+### Expected Result: C:\temp\
diff --git a/docs/functions/getencoding.md b/docs/functions/getencoding.md
new file mode 100644
index 000000000..646773ba1
--- /dev/null
+++ b/docs/functions/getencoding.md
@@ -0,0 +1,17 @@
+# getEncoding
+
+Returns the encoding (character set) of the Form or URL scope.
+
+```javascript
+getEncoding(scope)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| scope | string | Yes | | | /Users/garethedwards/development/github/cfdocs/docs/functions/getencoding.md|url |
diff --git a/docs/functions/getexception.md b/docs/functions/getexception.md
new file mode 100644
index 000000000..cd53b2d84
--- /dev/null
+++ b/docs/functions/getexception.md
@@ -0,0 +1,30 @@
+# getException
+
+ Used with the cftry and cfcatch tags. Retrieves a Java
+ exception object from a Java object.
+
+```javascript
+getException(javaobject)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| javaobject | any | Yes | | |
+
+## Simple Example
+
+Renders map of exception data, when trying to access a non-existent element in an ArrayList.
+
+```javascript
+arrayList = createObject("JAVA", "java.util.ArrayList").init();
+try {writeDump(arrayList.get(2));}
+catch(java.lang.IndexOutOfBoundsException _) {
+ writeDump(getException(arrayList));
+}
+```
diff --git a/docs/functions/getfilefrompath.md b/docs/functions/getfilefrompath.md
new file mode 100644
index 000000000..53e456750
--- /dev/null
+++ b/docs/functions/getfilefrompath.md
@@ -0,0 +1,25 @@
+# getFileFromPath
+
+ Extracts a filename from an absolute path.
+
+```javascript
+getFileFromPath(path)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | |
+
+## Basic Example
+
+```javascript
+getFileFromPath("C:\temp\file.txt")
+```
+
+### Expected Result: file.txt
diff --git a/docs/functions/getfileinfo.md b/docs/functions/getfileinfo.md
new file mode 100644
index 000000000..fe97dc2ff
--- /dev/null
+++ b/docs/functions/getfileinfo.md
@@ -0,0 +1,33 @@
+# getFileInfo
+
+Returns information about on-disk or in-memory file. Return struct contains keys such as: lastModified, size, path, name, type, canWrite, canRead, isHidden and more.
+
+```javascript
+getFileInfo(path)
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | Path to the on-disk or in-memory file |
+
+## Output some information about a temporary file
+
+```javascript
+myFile = getTempFile(getTempDirectory(),"testFile");
+fileInfo = getFileInfo(myFile);
+isReadable = (not fileInfo.canRead ? 'un' : '')&'readable';
+isWritable = (not fileInfo.canWrite ? 'un' : '')&'writable';
+isHidden = (not fileInfo.isHidden ? 'not ' : '')&'hidden';
+date = DateTimeFormat(fileInfo.lastModified,'full');
+fileSize = NumberFormat(fileInfo.size / 1000 / 1000,'0.00');
+writeOutput('"'&fileInfo.name&'" is '&isReadable&', '&isWritable&' and '&isHidden&'. ');
+writeOutput('It was at last modified at '&date&' and has a size of '&fileSize&' MB');
+```
+
+### Expected Result: "testFile9217639658547923751.tmp" is readable, writable and not hidden. It was at last modified at Friday, November 3, 2017 3:58:08 PM UTC and has a size of 0.00 MB
diff --git a/docs/functions/getfreespace.md b/docs/functions/getfreespace.md
new file mode 100644
index 000000000..43ae6bf04
--- /dev/null
+++ b/docs/functions/getfreespace.md
@@ -0,0 +1,39 @@
+# getFreeSpace
+
+ Gets information about free hard disk space or free in-memory VFS space.
+
+```javascript
+getFreeSpace(path);
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | The Path to the Hard Disk Drive or to the in-memory file system - ram. |
+
+## Tag Syntax
+
+In the following example, in-memory file system memory for the application is set to 20 MB in ColdFusion Administrator. The function returns 20, which means the total space considered is 20 MB. This is because the value specified in the ColdFusion Administrator (Memory Limit per Application for In-Memory Virtual File System) is lesser than the value specified in the Application.cfc (20 MB).Application.cfc
+
+```javascript
+
+
+
+
+```
+
+## Tag Syntax
+
+space.cfm
+
+```javascript
+
+
+ Free Application RAM Memory = #decimalFormat(freeRAMSpace / (1024 * 1024))# MB
+
Free Hard Disk Space = #decimalFormat(freeDiskSpace / (1024 * 1024 * 1024))# GB
+```
diff --git a/docs/functions/getfunctioncalledname.md b/docs/functions/getfunctioncalledname.md
new file mode 100644
index 000000000..6330d2b07
--- /dev/null
+++ b/docs/functions/getfunctioncalledname.md
@@ -0,0 +1,80 @@
+# getFunctionCalledName
+
+ Returns the name of the variable used to call a defined function. This function can be used to return data from CFCs by simulating getters and setters.
+
+```javascript
+getFunctionCalledName()
+```
+
+```javascript
+returns string
+```
+
+## getFunctionCalledName Basic Example
+
+Show results of calling a function directly versus by reference
+
+```javascript
+void function actualFunctionName(){
+ writeOutput("actualFunctionName() was called as: #getFunctionCalledName()#
");
+}
+writeOutput("
Calling actualFunctionName()
");
+actualFunctionName();
+writeOutput("
Calling actualFunctionName() via reference
");
+referenceToFunction = actualFunctionName;
+referenceToFunction();
+```
+
+## Getters and Setters Example
+
+Example of using getFunctionCalledName to create dynamic getters and setters
+
+```javascript
+//callednamedemo.cfc
+component
+{
+ variables.x1 = 1;
+ variables.y1 = 2;
+
+ function init() {
+ return this;
+ }
+
+ function get() {
+ var name = getFunctionCalledName();
+ return variables[mid(name,4,len(name)-3)];
+ }
+
+ function set(value) {
+ var name = getFunctionCalledName();
+ variables[mid(name,4,len(name)-3)] = value;
+ }
+
+ this.getX1 = get;
+ this.getY1 = get;
+ this.setX1 = set;
+ this.setY1 = set;
+}
+
+
+
+
+function test() {
+ return getFunctionCalledName();
+}
+
+writeOutput(test() & "
"); // test
+a = test;
+
+writeOutput(variables.a() & "
"); // a
+o = new callednamedemo();
+
+// shows *real* methods get(), SetX1() and getY1(), etc.
+writeDump(o);
+o.setX1(10);
+o.setY1(20);
+
+writeOutput(o.getX1() & "
"); // 10
+writeOutput(o.getY1() & "
") ; // 20
+
+```
diff --git a/docs/functions/getfunctiondata.md b/docs/functions/getfunctiondata.md
new file mode 100644
index 000000000..6af80e9ef
--- /dev/null
+++ b/docs/functions/getfunctiondata.md
@@ -0,0 +1,26 @@
+# getFunctionData
+
+Return information to a function as struct
+
+```javascript
+getFunctionData(functionName)
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| functionName | string | Yes | | The function you want information for | |
+| dialect | string | No | current template's dialect | The dialect you want details for | /Users/garethedwards/development/github/cfdocs/docs/functions/getfunctiondata.md|Lucee |
+
+## Output information about a function
+
+Returns a structure storing information about writeDump()
+
+```javascript
+getFunctionData('writeDump')
+```
diff --git a/docs/functions/getfunctionkeywords.md b/docs/functions/getfunctionkeywords.md
new file mode 100644
index 000000000..195e3adad
--- /dev/null
+++ b/docs/functions/getfunctionkeywords.md
@@ -0,0 +1,19 @@
+# getFunctionKeywords
+
+Returns all keywords defined with all functions.
+
+```javascript
+getFunctionKeywords()
+```
+
+```javascript
+returns array
+```
+
+## Simple getFunctionKeywords Example
+
+It returns all function keywords in array format. It is supported only in Lucee.
+
+```javascript
+writeDump(getFunctionKeywords());
+```
diff --git a/docs/functions/getfunctionlist.md b/docs/functions/getfunctionlist.md
new file mode 100644
index 000000000..c9b9cdc7e
--- /dev/null
+++ b/docs/functions/getfunctionlist.md
@@ -0,0 +1,21 @@
+# getFunctionList
+
+Returns a struct with keys of the names of functions that are available in CFML.
+
+```javascript
+getFunctionList()
+```
+
+```javascript
+returns struct
+```
+
+## Check to see if a function exists
+
+CF11+ Uses the member function of structKeyExists.
+
+```javascript
+getFunctionList().keyExists("reMatch")
+```
+
+### Expected Result: YES
diff --git a/docs/functions/getgatewayhelper.md b/docs/functions/getgatewayhelper.md
new file mode 100644
index 000000000..f2a45f9a0
--- /dev/null
+++ b/docs/functions/getgatewayhelper.md
@@ -0,0 +1,17 @@
+# getGatewayHelper
+
+Gets a Java GatewayHelper object that provides methods and properties for use with a ColdFusion event gateway.
+
+```javascript
+getGatewayHelper(gatewayID)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| gatewayID | string | Yes | | Identifier of the gateway that provides the GatewayHelper object. |
diff --git a/docs/functions/getgraphqlclient.md b/docs/functions/getgraphqlclient.md
new file mode 100644
index 000000000..892ee7fcd
--- /dev/null
+++ b/docs/functions/getgraphqlclient.md
@@ -0,0 +1,34 @@
+# getGraphQLClient
+
+Use this method to create the GraphQL client that will communicate with the server that contains the schema. Pass the configuration parameters to get the client.
+
+```javascript
+getGraphQLClient(parameterStruct)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| parameterStruct | struct | Yes | | A structure defining the properties of the GraphQL client |
+
+## Create a GraphQL client (Script syntax)
+
+Creates a GraphQL client with specified properties
+
+```javascript
+gqlClient = getGraphQLClient({
+ service_name: "server-name",
+ type: "graphqlclient",
+ raw_http_client: true,
+ service_url: "endpoint-url",
+ root_folder: "root_folder",
+ headers: { values: "auth-value", keys: "auth-key" },
+ batching_configuration: { enabled: true, batch_interval_ms: 10, max_batch_size: 15 },
+ subscription_configuration: { websocket_url: "wss://websocket-url", subscription_heartbeat_timeout: 5, subscription_heartbeat_timeunit: "nano" }
+});
+```
diff --git a/docs/functions/gethttprequestdata.md b/docs/functions/gethttprequestdata.md
new file mode 100644
index 000000000..65f19f426
--- /dev/null
+++ b/docs/functions/gethttprequestdata.md
@@ -0,0 +1,29 @@
+# getHTTPRequestData
+
+Returns HTTP request headers and request body. The resulting structure contains the following keys:
+ content (the request body),
+ headers (a structure of request headers),
+ method (same as cgi.request_method),
+ protocol (same as cgi.server_protocol).
+
+```javascript
+getHTTPRequestData()
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| includeBody | boolean | Yes | false | Whether return the body or not.
NOTE: This can only be done once.
If you expect the body to contain content which causes an exception in ColdFusion, set it to false as well and process it yourself. | /Users/garethedwards/development/github/cfdocs/docs/functions/gethttprequestdata.md|false |
+
+## GetHttpRequestData Example
+
+Returns HTTP request headers and request body in structure format.
+
+```javascript
+writeDump(GetHttpRequestData());
+```
diff --git a/docs/functions/gethttptimestring.md b/docs/functions/gethttptimestring.md
new file mode 100644
index 000000000..3046440a1
--- /dev/null
+++ b/docs/functions/gethttptimestring.md
@@ -0,0 +1,25 @@
+# getHTTPTimeString
+
+ Gets the current time, in the Universal Time code (UTC).
+
+```javascript
+getHTTPTimeString(DateTime)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| DateTime | date | No | now() | |
+
+## Output UTC Date of 2017/8/8 14:12:10
+
+```javascript
+getHTTPTimeString("2017/8/8 14:12:10")
+```
+
+### Expected Result: Tue, 08 Aug 2017 14:12:10 GMT
diff --git a/docs/functions/getk2serverdoccount.md b/docs/functions/getk2serverdoccount.md
new file mode 100644
index 000000000..0e7cdb0c8
--- /dev/null
+++ b/docs/functions/getk2serverdoccount.md
@@ -0,0 +1,11 @@
+# getK2ServerDocCount
+
+Determines the number of documents that can be searched by the CFML registered K2 Server. This function is used primarily by the CFML Verity and K2Server Administrator pages, and requires significant processing time. Avoid using it in production applications. This function uses Verity K2Server Release K2.2.0.
+
+```javascript
+getK2ServerDocCount()
+```
+
+```javascript
+returns numeric
+```
diff --git a/docs/functions/getk2serverdoccountlimit.md b/docs/functions/getk2serverdoccountlimit.md
new file mode 100644
index 000000000..caf88d46e
--- /dev/null
+++ b/docs/functions/getk2serverdoccountlimit.md
@@ -0,0 +1,11 @@
+# getK2ServerDocCountLimit
+
+Gets the maximum number of documents that the CFML registered K2 Server is permitted to return from a search. This function is used primarily by the CFML Verity and K2Server Administrator pages. This function uses Verity K2Server Release K2.2.0.
+
+```javascript
+getK2ServerDocCountLimit()
+```
+
+```javascript
+returns numeric
+```
diff --git a/docs/functions/getlocale.md b/docs/functions/getlocale.md
new file mode 100644
index 000000000..13add13e2
--- /dev/null
+++ b/docs/functions/getlocale.md
@@ -0,0 +1,25 @@
+# getLocale
+
+ Gets the current geographic/language locale value.
+ To set the default display format of date, time, number, and
+ currency values in a CFML application session, you use
+ the SetLocale function.
+
+```javascript
+getLocale()
+```
+
+```javascript
+returns string
+```
+
+## Output current Locale than set it to swiss locale
+
+```javascript
+writeOutput(getlocale());
+writeOutput(' → ');
+setLocale('de_ch');
+writeOutput(getlocale());
+```
+
+### Expected Result: english (us) → german (swiss)
diff --git a/docs/functions/getlocalecountry.md b/docs/functions/getlocalecountry.md
new file mode 100644
index 000000000..014e3ef3e
--- /dev/null
+++ b/docs/functions/getlocalecountry.md
@@ -0,0 +1,20 @@
+# getLocaleCountry
+
+Gets the country where the locale belongs to.
+
+```javascript
+getLocaleCountry()
+```
+
+```javascript
+returns string
+```
+
+## Output current Locale's display name than set it to swiss locale
+
+```javascript
+writeOutput(getLocaleCountry());
+writeOutput(' → ');
+setLocale('de_ch');
+writeOutput(getLocaleCountry());
+```
diff --git a/docs/functions/getlocaledisplayname.md b/docs/functions/getlocaledisplayname.md
new file mode 100644
index 000000000..859494a36
--- /dev/null
+++ b/docs/functions/getlocaledisplayname.md
@@ -0,0 +1,29 @@
+# getLocaleDisplayName
+
+Gets a locale value and displays the name in a manner that is appropriate to a specific locale. By default, gets the current locale in the current locale's language.
+
+```javascript
+getLocaleDisplayName([locale, inLocale])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| locale | string | No | | The locale whose name you want. The default is the current ColdFusion locale, or if no ColdFusion locale has been set, the JVM locale. |
+| inLocale | string | No | | The locale in which to return the name. The default is the current ColdFusion locale, or if no ColdFusion locale has been set, the JVM locale. |
+
+## Output current Locale's display name than set it to swiss locale
+
+```javascript
+writeOutput(getLocaleDisplayName());
+writeOutput(' → ');
+setLocale('de_ch');
+writeOutput(getLocaleDisplayName());
+```
+
+### Expected Result: English (United States) → Deutsch (Schweiz)
diff --git a/docs/functions/getlocaleinfo.md b/docs/functions/getlocaleinfo.md
new file mode 100644
index 000000000..9559148c9
--- /dev/null
+++ b/docs/functions/getlocaleinfo.md
@@ -0,0 +1,44 @@
+# getLocaleInfo
+
+Returns a structure containing info to a specific locale. This function combines the locale functions `getLocaleCountry`, `getLocaleDisplayName`, and `getLocaleLanguage` to a single function.
+
+```javascript
+getLocaleInfo()
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| locale | string | No | getLocale() | Geographic/language locale value, where the format is a combination of an ISO 639-1 code and an optional ISO 3166-1 code separated by a dash or an underscore. | /Users/garethedwards/development/github/cfdocs/docs/functions/getlocaleinfo.md|... |
+| dspLocale | string | No | getLocaleDisplayName() | Locale's display name/output language | /Users/garethedwards/development/github/cfdocs/docs/functions/getlocaleinfo.md|... |
+
+## Get information about the page's locale
+
+```javascript
+getLocaleInfo()
+```
+
+## Output page's locale in a divergent language
+
+Outputs the language locale of the page in German.
+
+```javascript
+getLocaleInfo(dspLocale='German').display.language
+```
+
+### Expected Result: Englisch
+
+## Output German locale in a page's language
+
+Outputs the German locale in the language defined for the page.
+
+```javascript
+getLocaleInfo(locale='de-DE', dspLocale=getLocaleDisplayName()).display.country
+```
+
+### Expected Result: Germany
diff --git a/docs/functions/getlocalelanguage.md b/docs/functions/getlocalelanguage.md
new file mode 100644
index 000000000..e9655d3f1
--- /dev/null
+++ b/docs/functions/getlocalelanguage.md
@@ -0,0 +1,20 @@
+# getLocaleLanguage
+
+Gets the language from where the locale belongs to.
+
+```javascript
+getLocaleLanguage()
+```
+
+```javascript
+returns string
+```
+
+## Output current Locale's display name than set it to swiss locale
+
+```javascript
+writeOutput(getLocaleLanguage());
+writeOutput(' → ');
+setLocale('de_ch');
+writeOutput(getLocaleLanguage());
+```
diff --git a/docs/functions/getlocalhostip.md b/docs/functions/getlocalhostip.md
new file mode 100644
index 000000000..ab4b02e72
--- /dev/null
+++ b/docs/functions/getlocalhostip.md
@@ -0,0 +1,19 @@
+# getLocalhostIP
+
+Returns the localhost IP address, which is 127.0.0.1 for IPv4 and ::1 for IPv6 addresses.
+
+```javascript
+getLocalhostIP()
+```
+
+```javascript
+returns string
+```
+
+## getLocalhostIP Example
+
+Here we've example to get localhost ip address using getLocalhostIP()
+
+```javascript
+writeOutput(getLocalhostIP());
+```
diff --git a/docs/functions/getluceeid.md b/docs/functions/getluceeid.md
new file mode 100644
index 000000000..7d3b86f3c
--- /dev/null
+++ b/docs/functions/getluceeid.md
@@ -0,0 +1,19 @@
+# getLuceeID
+
+Get ID, ApiKey and SecurityKey for the Server and the current Web-Context.
+
+```javascript
+getLuceeID()
+```
+
+```javascript
+returns struct
+```
+
+## Dump getLuceeID
+
+Display ID, ApiKey and SecurityKey for the Server and Web-Context.
+
+```javascript
+dump( getLuceeID() )
+```
diff --git a/docs/functions/getmemoryusage.md b/docs/functions/getmemoryusage.md
new file mode 100644
index 000000000..b159a77e6
--- /dev/null
+++ b/docs/functions/getmemoryusage.md
@@ -0,0 +1,23 @@
+# getMemoryUsage
+
+Return detailed information to the memory usage of the container.
+
+```javascript
+getMemoryUsage([type])
+```
+
+```javascript
+returns query
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| type | string | No | | Specify the type of memory information to return. If not specified, both types are returned. | /Users/garethedwards/development/github/cfdocs/docs/functions/getmemoryusage.md|non_heap |
+
+## Dump memory usage query
+
+```javascript
+writeDump(getMemoryUsage());
+```
diff --git a/docs/functions/getmetadata.md b/docs/functions/getmetadata.md
new file mode 100644
index 000000000..8dc1a1718
--- /dev/null
+++ b/docs/functions/getmetadata.md
@@ -0,0 +1,25 @@
+# getMetadata
+
+Gets metadata (the methods, properties, and parameters of a component) associated with an object that is deployed on the CFML server.
+
+```javascript
+getMetadata(value)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| value | any | Yes | | A ColdFusion component, user-defined function, or ColdFusion query. Within a CFC, the parameter can also specify the `this` scope. |
+
+## Dump Metadata of CFC Instance
+
+CF9+
+
+```javascript
+writeDump(getMetadata(new Query()));
+```
diff --git a/docs/functions/getmetricdata.md b/docs/functions/getmetricdata.md
new file mode 100644
index 000000000..b373b203f
--- /dev/null
+++ b/docs/functions/getmetricdata.md
@@ -0,0 +1,18 @@
+# getMetricData
+
+Gets server performance metrics
+ [mode - quickly]
+
+```javascript
+getMetricData(mode)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| mode | string | Yes | | perf_monitor - Returns internal data, in a structure.
simple_load - Returns an integer value that is computed
from the state of the server's internal
queues. Indicates the overall server load.
prev_req_time - Returns the time, in milliseconds, that it
took the server to process the previous
request.
avg_req_time - Returns the average time, in milliseconds,
that it takes the server to process a
request. | /Users/garethedwards/development/github/cfdocs/docs/functions/getmetricdata.md|avg_req_time |
diff --git a/docs/functions/getnumericdate.md b/docs/functions/getnumericdate.md
new file mode 100644
index 000000000..e9c1c590c
--- /dev/null
+++ b/docs/functions/getnumericdate.md
@@ -0,0 +1,27 @@
+# getNumericDate
+
+Returns a real number whose integer part represents the number of days since the EPOCH and whose fractional part represents the time value expressed in hours then divided by 24.
NOTE: Lucee (and ACF) uses 12/30/1899 00:00:00 as it's epoch time. See links below.
+
+```javascript
+getNumericDate(arg1)
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| arg1 | any | Yes | | A datetime object or a date-parsable String. |
+
+## Convert a date string to a numeric date - Tag Syntax
+
+This numeric date represents the number of days between December 30, 1899 and January 1, 2008.
+
+```javascript
+getNumericDate('2018-01-01')
+```
+
+### Expected Result: 43101
diff --git a/docs/functions/getpagecontext.md b/docs/functions/getpagecontext.md
new file mode 100644
index 000000000..39b9243f3
--- /dev/null
+++ b/docs/functions/getpagecontext.md
@@ -0,0 +1,11 @@
+# getPageContext
+
+ Gets the current java PageContext object that provides access to page attributes and configuration, request and response objects.
+
+```javascript
+getPageContext()
+```
+
+```javascript
+returns any
+```
diff --git a/docs/functions/getprinterinfo.md b/docs/functions/getprinterinfo.md
new file mode 100644
index 000000000..0440dfdf7
--- /dev/null
+++ b/docs/functions/getprinterinfo.md
@@ -0,0 +1,31 @@
+# getPrinterInfo
+
+Determines which print attributes are supported by a selected printer.
+
+```javascript
+getPrinterInfo([printer])
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| printer | string | No | | Name of the printer |
+
+## Output printer info if exists
+
+```javascript
+try {
+ writeDump(getPrinterInfo());
+}
+catch (Application e) {
+ writeOutput(e.message & "
" & e.detail);
+}
+catch (any e) {
+ rethrow;
+}
+```
diff --git a/docs/functions/getprinterlist.md b/docs/functions/getprinterlist.md
new file mode 100644
index 000000000..7b5bb6472
--- /dev/null
+++ b/docs/functions/getprinterlist.md
@@ -0,0 +1,25 @@
+# getPrinterList
+
+Returns list of printers accessible by the ColdFusion server
+
+```javascript
+getPrinterList([delimiter])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| delimiter | string | No | | list separator |
+
+## Return comma separated printer list
+
+On a server with printers, this will display a result. If there are none, it will be an empty string.
+
+```javascript
+getPrinterList();
+```
diff --git a/docs/functions/getprofilesections.md b/docs/functions/getprofilesections.md
new file mode 100644
index 000000000..03efb3326
--- /dev/null
+++ b/docs/functions/getprofilesections.md
@@ -0,0 +1,21 @@
+# getProfileSections
+
+Gets all the sections of an initialization file.
+Returns a struct whose format is as follows:
+- Each initialization file section name is a key in the struct
+- Each list of entries in a section of an initialization file is a value in the struct
+
+```javascript
+getProfileSections(path [,encoding])
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| path | string | Yes | | Absolute path of initialization file | |
+| encoding | string | No | | CF11+ Encoding of the initialization (ini) file | /Users/garethedwards/development/github/cfdocs/docs/functions/getprofilesections.md|utf-16 |
diff --git a/docs/functions/getprofilestring.md b/docs/functions/getprofilestring.md
new file mode 100644
index 000000000..3600e7bdd
--- /dev/null
+++ b/docs/functions/getprofilestring.md
@@ -0,0 +1,28 @@
+# getProfileString
+
+Gets an initialization file entry. An initialization file assigns values to configuration variables, also known as entries, that are set when the system
+ boots, the operating system comes up, or an application starts. Returns the entry - if no value, returns an empty string.
+
+```javascript
+getProfileString(inipath, section, entry)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| inipath | string | Yes | | |
+| section | string | Yes | | |
+| entry | string | Yes | | |
+
+## Tag Syntax
+
+```javascript
+
+
+
+```
diff --git a/docs/functions/getreadableimageformats.md b/docs/functions/getreadableimageformats.md
new file mode 100644
index 000000000..c9b5d686a
--- /dev/null
+++ b/docs/functions/getreadableimageformats.md
@@ -0,0 +1,17 @@
+# getReadableImageFormats
+
+Returns a list of image formats that ColdFusion can read on the operating system where ColdFusion is deployed.
+
+```javascript
+getReadableImageFormats()
+```
+
+```javascript
+returns string
+```
+
+## Show all available image file extensions
+
+```javascript
+lCase(listChangeDelims(getReadableImageFormats(),", "))
+```
diff --git a/docs/functions/getsafehtml.md b/docs/functions/getsafehtml.md
new file mode 100644
index 000000000..e5af68f8f
--- /dev/null
+++ b/docs/functions/getsafehtml.md
@@ -0,0 +1,37 @@
+# getSafeHTML
+
+Sanitizes HTML using antisamy policy rules.
+
+```javascript
+getSafeHTML(inputString [, PolicyFile, throwOnError])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| inputString | string | Yes | | String to be sanitized |
+| PolicyFile | string | No | | File path for custom antisamy policy file. Can be defined in the application scope or if not defined will use ColdFusion server default |
+| throwOnError | boolean | No | | If true will throw error else empty string will be returned |
+
+## application setting demo
+
+AntiSamy parameter can be set in the application scope
+
+```javascript
+
+
+
+```
+
+## Usage
+
+demonstrates usage
+
+```javascript
+
+```
diff --git a/docs/functions/getsoaprequest.md b/docs/functions/getsoaprequest.md
new file mode 100644
index 000000000..144db0883
--- /dev/null
+++ b/docs/functions/getsoaprequest.md
@@ -0,0 +1,29 @@
+# getSOAPRequest
+
+Returns an XML object that contains the entire SOAP request. Usually called from within a web service CFC.
+
+```javascript
+getSOAPRequest(webservice)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| webservice | any | No | | A webservice object as returned from the cfobject tag or the createObject function |
+
+## Create a SOAP call and retrieve the request
+
+Create a SOAP webservice to call, then we can use getSOAPRequest() to view the request
+
+```javascript
+soapURL = "https://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl";
+ws = createObject("webservice", soapURL);
+zipLatLong = ws.LatLonListZipCode("10001");
+req = getSOAPRequest(ws);
+writeDump(req);
+```
diff --git a/docs/functions/getsoaprequestheader.md b/docs/functions/getsoaprequestheader.md
new file mode 100644
index 000000000..7d62cad0c
--- /dev/null
+++ b/docs/functions/getsoaprequestheader.md
@@ -0,0 +1,19 @@
+# getSOAPRequestHeader
+
+Obtains a SOAP request header. Call only from within a CFC web service function that is processing a request as a SOAP web service.
+
+```javascript
+getSOAPRequestHeader(namespace, name [, asXML])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| namespace | string | Yes | | A String that is the namespace for the header |
+| name | string | Yes | | A String that is the name of the header |
+| asXML | boolean | No | NO | If True, the header is returned as a CFML XML object;
if false (default), the header is returned as a Java object. |
diff --git a/docs/functions/getsoapresponse.md b/docs/functions/getsoapresponse.md
new file mode 100644
index 000000000..3137f51b3
--- /dev/null
+++ b/docs/functions/getsoapresponse.md
@@ -0,0 +1,29 @@
+# getSOAPResponse
+
+Returns an XML object that contains the entire SOAP response after invoking a web service.
+
+```javascript
+getSOAPResponse(webservice)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| webservice | any | Yes | | A webservice object as returned from the cfobject tag or the createObject function. |
+
+## Create a SOAP call and retrieve the response
+
+Create a SOAP webservice to call, then we can use getSOAPResponse() to view the full response
+
+```javascript
+soapURL = "https://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl";
+ws = createObject("webservice", soapURL);
+zipLatLong = ws.LatLonListZipCode("10001");
+res = getSOAPResponse(ws);
+writeDump(res);
+```
diff --git a/docs/functions/getsoapresponseheader.md b/docs/functions/getsoapresponseheader.md
new file mode 100644
index 000000000..0bdfd29d8
--- /dev/null
+++ b/docs/functions/getsoapresponseheader.md
@@ -0,0 +1,20 @@
+# getSOAPResponseHeader
+
+Returns a SOAP response header. Call this function from within code that is invoking a web service after making a web service request.
+
+```javascript
+getSOAPResponseHeader(webservice, namespace, name [, asXML])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| webservice | any | Yes | | A webservice object as returned from the cfobject tag or the createObject function. |
+| namespace | string | Yes | | A String that is the namespace for the header. |
+| name | string | Yes | | A String that is the name of the SOAP header. |
+| asXML | boolean | No | NO | If True, the header is returned as a CFML XML object;
if false (default), the header is returned as a Java object. |
diff --git a/docs/functions/getsystemfreememory.md b/docs/functions/getsystemfreememory.md
new file mode 100644
index 000000000..c636cb05a
--- /dev/null
+++ b/docs/functions/getsystemfreememory.md
@@ -0,0 +1,17 @@
+# getSystemFreeMemory
+
+Gets details of free memory.
+
+```javascript
+getSystemFreeMemory();
+```
+
+```javascript
+returns numeric
+```
+
+## Get free memory in MB
+
+```javascript
+#NumberFormat(getSystemFreeMemory() / 1000 / 1000,"0.00")# MB
+```
diff --git a/docs/functions/getsystemtotalmemory.md b/docs/functions/getsystemtotalmemory.md
new file mode 100644
index 000000000..b083fd8e4
--- /dev/null
+++ b/docs/functions/getsystemtotalmemory.md
@@ -0,0 +1,23 @@
+# getSystemTotalMemory
+
+ Gets details of the memory that is available for the operating system, in bytes.
+
+```javascript
+getSystemTotalMemory();
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| region | string | No | | Indicates the cache region from which to remove the stored objects. If no value is specified, default cache region is considered by default. |
+
+## The in-memory file system memory set in cfadmin
+
+```javascript
+#NumberFormat(getSystemTotalMemory() / 1000 / 1000,"0.00")# MB
+```
diff --git a/docs/functions/gettagdata.md b/docs/functions/gettagdata.md
new file mode 100644
index 000000000..76bf7da82
--- /dev/null
+++ b/docs/functions/gettagdata.md
@@ -0,0 +1,27 @@
+# getTagData
+
+Return information to a Tag as Struct
+
+```javascript
+getTagData(nameSpaceWithSeperator, tagName)
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| nameSpaceWithSeperator | string | Yes | | | |
+| tagName | string | Yes | | | |
+| dialect | string | No | current template's dialect | Define the dialect you want details for | /Users/garethedwards/development/github/cfdocs/docs/functions/gettagdata.md|Lucee |
+
+## Output information about a tag
+
+Returns a structure storing information about <cfmail>
+
+```javascript
+getTagData('cf','mail')
+```
diff --git a/docs/functions/gettaglist.md b/docs/functions/gettaglist.md
new file mode 100644
index 000000000..232e53ec9
--- /dev/null
+++ b/docs/functions/gettaglist.md
@@ -0,0 +1,20 @@
+# getTagList
+
+Gets a struct that contains a list CF language tags
+
+```javascript
+getTagList()
+```
+
+```javascript
+returns struct
+```
+
+## Simple example of getTagList function
+
+Uses the getTagList function to return a list of CF tags
+
+```javascript
+list = gettagList();
+writeDump(list);
+```
diff --git a/docs/functions/gettempdirectory.md b/docs/functions/gettempdirectory.md
new file mode 100644
index 000000000..d3348c0e9
--- /dev/null
+++ b/docs/functions/gettempdirectory.md
@@ -0,0 +1,23 @@
+# getTempDirectory
+
+Gets the path of the directory that CFML uses for
+ temporary files. Before using this function in an application,
+ test to determine the directory it returns under your account.
+ Returns the absolute pathname of a directory, including a
+ trailing slash.
+
+```javascript
+getTempDirectory()
+```
+
+```javascript
+returns string
+```
+
+## Show temp directory path
+
+File system path where temporary files are stored
+
+```javascript
+getTempDirectory()
+```
diff --git a/docs/functions/gettempfile.md b/docs/functions/gettempfile.md
new file mode 100644
index 000000000..a5a725e07
--- /dev/null
+++ b/docs/functions/gettempfile.md
@@ -0,0 +1,27 @@
+# getTempFile
+
+ Creates a temporary file in a directory whose name starts with
+ (at most) the first three characters of prefix.
+
+```javascript
+getTempFile(dir, prefix)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| dir | string | Yes | | |
+| prefix | string | Yes | | |
+
+## Create temp file in temp dir
+
+Returns path of file created
+
+```javascript
+getTempFile(getTempDirectory(),"testFile")
+```
diff --git a/docs/functions/gettemplatepath.md b/docs/functions/gettemplatepath.md
new file mode 100644
index 000000000..7a76493cc
--- /dev/null
+++ b/docs/functions/gettemplatepath.md
@@ -0,0 +1,17 @@
+# getTemplatePath
+
+Returns the filepath of the base template in this request
+
+```javascript
+getTemplatePath()
+```
+
+```javascript
+returns string
+```
+
+## Show template path
+
+```javascript
+getTemplatePath()
+```
diff --git a/docs/functions/gettickcount.md b/docs/functions/gettickcount.md
new file mode 100644
index 000000000..6d5959c31
--- /dev/null
+++ b/docs/functions/gettickcount.md
@@ -0,0 +1,31 @@
+# getTickCount
+
+ Returns the current value of an internal millisecond timer.
+
+```javascript
+getTickCount()
+```
+
+```javascript
+returns numeric
+```
+
+## Script Syntax
+
+Outputs the current value of the internal millisecond timer
+
+```javascript
+writeOutput( getTickCount() )
+```
+
+## A simple timer
+
+Outputs the millisecond difference between a starting point and end point
+
+```javascript
+start = getTickCount();
+ sleep( 1000 );
+ writeOutput( getTickCount() - start );
+```
+
+### Expected Result: 1000 (note: may be off by a few ms depending on the environment)
diff --git a/docs/functions/gettimezone.md b/docs/functions/gettimezone.md
new file mode 100644
index 000000000..49e2263a0
--- /dev/null
+++ b/docs/functions/gettimezone.md
@@ -0,0 +1,22 @@
+# getTimeZone
+
+Returns the time zone for the current request.
+
+```javascript
+getTimeZone()
+```
+
+```javascript
+returns string
+```
+
+## What is the current time zone that's set?
+
+Set the time zone, then retrieve it.
+
+```javascript
+setTimeZone("Etc/UTC");
+writeOutput(getTimeZone().timezone);
+```
+
+### Expected Result: Etc/UTC
diff --git a/docs/functions/gettimezoneinfo.md b/docs/functions/gettimezoneinfo.md
new file mode 100644
index 000000000..b24fe019e
--- /dev/null
+++ b/docs/functions/gettimezoneinfo.md
@@ -0,0 +1,47 @@
+# getTimezoneInfo
+
+ Gets local time zone information for the computer on which it
+ is called, relative to Universal Time Coordinated (UTC). UTC is
+ the mean solar time of the meridian of Greenwich, England.
+
+```javascript
+getTimezoneInfo(text)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| timezone | string | Yes | | Lucee Specify a timezone to return info from |
+| locale | string | Yes | | Lucee Locale used to format the output |
+
+## Output timezone information
+
+This example shows the use of GetTimeZoneInfo
+
+```javascript
+
+The local date and time are #now()#.
+
+
+
+Total offset in seconds is #info.utcTotalOffset#.
+Offset in hours is #info.utcHourOffset#.
+Offset in minutes minus the offset in hours is #info.utcMinuteOffset#.
+Is Daylight Savings Time in effect? #info.isDSTOn#.
+
+```
+
+## Get Hawaii timezone information in German
+
+Shows the use of getTimeZoneInfo for a known / specific timezone with German locale. This syntax is only supported in Lucee.
+
+```javascript
+
+var tz = getTimeZoneInfo("US/Hawaii", "de-DE");
+
+```
diff --git a/docs/functions/gettoken.md b/docs/functions/gettoken.md
new file mode 100644
index 000000000..d28a5136f
--- /dev/null
+++ b/docs/functions/gettoken.md
@@ -0,0 +1,34 @@
+# getToken
+
+ Determines whether a token of the list in the delimiters
+ parameter is present in a string.
+ Returns the token found at position index of the string, as a
+ string. If index is greater than the number of tokens in the
+ string, returns an empty string.
+
+```javascript
+getToken(string, index [, delimiters])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| String | string | Yes | | |
+| index | numeric | Yes | | |
+| delimiters | string | No | , | |
+
+## Tag Syntax
+
+In the following example, the function call requests element number 2 from the string, using the delimiter '[:;".'
+
+```javascript
+
+
+getToken(mystring, 3) is : #getToken(mystring, 3)#
+
+```
diff --git a/docs/functions/gettotalspace.md b/docs/functions/gettotalspace.md
new file mode 100644
index 000000000..c1c2653fd
--- /dev/null
+++ b/docs/functions/gettotalspace.md
@@ -0,0 +1,26 @@
+# getTotalSpace
+
+ Returns the total disk space or in-memory space available for an application.
+
+```javascript
+getTotalSpace(path);
+```
+
+```javascript
+returns numeric
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | path to the hard drive or for in memory file system. |
+
+## Tag Syntax
+
+the in-memory file system memory set in cfadmin and should return that.
+
+```javascript
+
+total app ram memory: #decimalFormat(totalRamSpace)/(1024 * 1024)# mb
+```
diff --git a/docs/functions/getuserroles.md b/docs/functions/getuserroles.md
new file mode 100644
index 000000000..4296e42d0
--- /dev/null
+++ b/docs/functions/getuserroles.md
@@ -0,0 +1,11 @@
+# getUserRoles
+
+Retrieves the list of roles for the current user.
+
+```javascript
+getUserRoles()
+```
+
+```javascript
+returns string
+```
diff --git a/docs/functions/getvariable.md b/docs/functions/getvariable.md
new file mode 100644
index 000000000..9fbf8bb98
--- /dev/null
+++ b/docs/functions/getvariable.md
@@ -0,0 +1,26 @@
+# getVariable
+
+Retrieves value of a variable
+
+```javascript
+getVariable(name)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | |
+
+## Retrieve value of a variable
+
+```javascript
+a=1;
+writeOutput(getVariable('a'));
+```
+
+### Expected Result: 1
diff --git a/docs/functions/getvfsmetadata.md b/docs/functions/getvfsmetadata.md
new file mode 100644
index 000000000..3209abfc8
--- /dev/null
+++ b/docs/functions/getvfsmetadata.md
@@ -0,0 +1,17 @@
+# getVFSMetadata
+
+Returns metadata for VFS
+
+```javascript
+getVFSMetadata(fileSystemType)
+```
+
+```javascript
+returns struct
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| fileSystemType | string | Yes | | |
diff --git a/docs/functions/getwriteableimageformats.md b/docs/functions/getwriteableimageformats.md
new file mode 100644
index 000000000..bd510eff9
--- /dev/null
+++ b/docs/functions/getwriteableimageformats.md
@@ -0,0 +1,11 @@
+# getWriteableImageFormats
+
+Returns a list of image formats that ColdFusion can write on the operating system where ColdFusion is deployed.
+
+```javascript
+getWriteableImageFormats()
+```
+
+```javascript
+returns string
+```
diff --git a/docs/functions/hash.md b/docs/functions/hash.md
new file mode 100644
index 000000000..fd29d7867
--- /dev/null
+++ b/docs/functions/hash.md
@@ -0,0 +1,42 @@
+# hash
+
+Converts a string into a fixed length hexadecimal string.
+
+NOTE: The result is useful for comparison and validation, such as storing and validating a hashed password without exposing the original password.
+
+```javascript
+hash(string [, algorithm [, encoding]] [, additionalIterations])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | |
+| algorithm | string | No | MD5 | CF7+ A supported algorithm such as MD5,SHA,SHA-256,SHA-384, or SHA-512. Of those listed SHA-512 is the strongest and generates a 128 character hex result.
NOTE: The Enterprise Edition of ColdFusion installs the RSA BSafe Crypto-J library, which provides FIPS-140 Compliant Strong Cryptography. This includes additional algorithms. You can also install additional cryptography algorithms and use those hashing algorithms. |
+| encoding | string | No | UTF-8 | CF7+ A string specifying the encoding to use when converting the string to byte data used by the hash algorithm.
Must be a character encoding name recognized by the Java runtime.
NOTE: The default is specified by the value of `defaultCharset` in the `neo-runtime.xml` file, which is normally `UTF-8`.
NOTE: This is ignored when using the `CFMX_COMPAT` algorithm. |
+| additionalIterations | numeric | No | 0 | CF10+ Iterates the number of times the hash is computed to create a more computationally intensive hash. Lucee and Adobe CF implement this differently (off by one), see compatibility notes below.
NOTE: This parameter appears to be ignored if the `CFMX_COMPAT` default algorithm is used. |
+
+## SHA-256 Hash Example
+
+Returns 64 character hex result.
+
+```javascript
+hash("something", "SHA-256", "UTF-8")
+```
+
+### Expected Result: 3FC9B689459D738F8C88A3A48AA9E33542016B7A4052E001AAA536FCA74813CB
+
+## MD5 Hash Example
+
+MD5 is not recommended for use requiring security.
+
+```javascript
+hash("something")
+```
+
+### Expected Result: 437B930DB84B8079C2DD804A71936B5F
diff --git a/docs/functions/hash40.md b/docs/functions/hash40.md
new file mode 100644
index 000000000..bf7dbccfa
--- /dev/null
+++ b/docs/functions/hash40.md
@@ -0,0 +1,21 @@
+# hash40
+
+Converts a variable-length string to a 32-byte, hexadecimal string, using the MD5 algorithm.
+Note: It is not possible to convert the hash result back to the source string.
+
+```javascript
+hash40(input [, algorithm] [, encoding] [, numIterations])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| input | any | Yes | | String for hashing |
+| algorithm | string | No | | The algorithm to use to hash the string. Supported are the following algorithms:
- CFMX_COMPAT: generating a hash string using classic CFML algorithm.
- MD5: (default) Generates a 32-character, hexadecimal string, using the MD5 algorithm.
- SHA: Generates a 28-character string using the Secure Hash Standard SHA-1 algorithm specified by Nation Institute of Standards and Technology (NIST) FIPS-180-2.
- SHA-256: Generates a 44-character string using the SHA-256 algorithm specified by FIPS-180-2.
- SHA-384: Generates a 64-character string using the SHA-384 algorithm specified by FIPS-180-2.
- SHA-512: Generates an 88-character string using the SHA-1 algorithm specified by FIPS-180-2. |
+| encoding | string | No | | Encoding which will be used by the hash algorithm |
+| numIterations | numeric | No | 1 | number of iterations |
diff --git a/docs/functions/hmac.md b/docs/functions/hmac.md
new file mode 100644
index 000000000..1272e9585
--- /dev/null
+++ b/docs/functions/hmac.md
@@ -0,0 +1,28 @@
+# hmac
+
+Creates a keyed-hash message authentication code (HMAC), which can be used to verify authenticity and integrity of a message by two parties that share the key.
+
+```javascript
+hmac(message, key [, algorithm] [, encoding] )
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| message | any | Yes | | The message or data to authenticate. This can be a String or a byte array. | |
+| key | any | Yes | | The secret key. The key can be a String or byte array. | |
+| algorithm | string | No | HMACMD5 | An algorithm supported by the java crypto provider. | /Users/garethedwards/development/github/cfdocs/docs/functions/hmac.md|HMACSHA512 |
+| encoding | string | No | utf-8 | The character encoding to use when converting the message to bytes. Must be a character encoding name recognized by the Java runtime. | /Users/garethedwards/development/github/cfdocs/docs/functions/hmac.md|utf-16 |
+
+## Example HMAC Using HMACSHA256
+
+```javascript
+hmac("msg", "secret", "HMACSHA256")
+```
+
+### Expected Result: FE4F9C418F683F034F6AF90D1DD5B86AC0355DD96332C59CC74598D0736107F6
diff --git a/docs/functions/hour.md b/docs/functions/hour.md
new file mode 100644
index 000000000..91b48d46c
--- /dev/null
+++ b/docs/functions/hour.md
@@ -0,0 +1,40 @@
+# hour
+
+Extracts the hour of the day from a date/time object.
+ Ordinal value of the hour, in the range 0 - 23.
+
+```javascript
+hour(date)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+date.hour()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| date | date | Yes | | Date/time object, in the range 100 AD-9999 AD.
NOTE: When passing a date/time value as a string, enclose it in quotation marks. Otherwise, it is interpreted as a number representation of a date/time object. |
+
+## Hour of a datetime object
+
+```javascript
+dt = createdatetime(2016,1,1,5,30,25);
+h = hour( dt );
+writeoutput( h );
+```
+
+### Expected Result: 5
+
+## Current Hour of the day
+
+```javascript
+hour( now() )
+```
diff --git a/docs/functions/htmlcodeformat.md b/docs/functions/htmlcodeformat.md
new file mode 100644
index 000000000..70101a533
--- /dev/null
+++ b/docs/functions/htmlcodeformat.md
@@ -0,0 +1,25 @@
+# htmlCodeFormat
+
+Replaces special characters in a string with their HTML-escaped equivalents and inserts <pre> and </pre> tags at the beginning and end of the string.
+The only difference between this function and `HTMLEditFormat` is that `HTMLEditFormat` doesn't surround the text in HTML `pre` tags.
+
+```javascript
+htmlCodeFormat(string [, version])
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| string | string | Yes | | A String or variable that contains one. | |
+| version | numeric | No | 2.0 | HTML version to use. Currently ignored.
-1: The latest implementation of HTML
2.0: HTML 2.0 (Default)
3.2: HTML 3.2 | /Users/garethedwards/development/github/cfdocs/docs/functions/htmlcodeformat.md|3.2 |
+
+## Tag Syntax
+
+```javascript
+ #htmlCodeFormat(testString)#
+```
diff --git a/docs/functions/htmleditformat.md b/docs/functions/htmleditformat.md
new file mode 100644
index 000000000..65258b97a
--- /dev/null
+++ b/docs/functions/htmleditformat.md
@@ -0,0 +1,26 @@
+# htmlEditFormat
+
+Replaces special characters in a string with their HTML-escaped equivalents.
+
+```javascript
+htmlEditFormat( string [, version] )
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| string | string | Yes | | A string or a variable that contains one. | |
+| version | numeric | No | 2.0 | HTML version to use; currently ignored. | /Users/garethedwards/development/github/cfdocs/docs/functions/htmleditformat.md|3.2 |
+
+## Escapes the HTML characters
+
+```javascript
+htmlEditFormat( "This is a test & this is another Previous line was blank!!!" )
+```
+
+### Expected Result: This is a test & this is another <This text is in angle brackets> Previous line was blank!!!
diff --git a/docs/functions/htmlparse.md b/docs/functions/htmlparse.md
new file mode 100644
index 000000000..4cf0e7519
--- /dev/null
+++ b/docs/functions/htmlparse.md
@@ -0,0 +1,28 @@
+# htmlParse
+
+Parse the given HTML/XHTML and converts it to an XML object. Similar to xmlParse, but this function is very forgiving
+
+```javascript
+htmlParse(html [, caseSensitive])
+```
+
+```javascript
+returns xml
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| html | string | Yes | | |
+| caseSensitive | boolean | No | | |
+
+## htmlParse Example
+
+Convert the HTML to Xml object.It supported in Lucee
+
+```javascript
+HtmlContent = "Hello world
";
+writeDump(htmlParse(HtmlContent));
+writeoutput(htmlParse('This is example text
'));
+```
diff --git a/docs/functions/iif.md b/docs/functions/iif.md
new file mode 100644
index 000000000..874cadd92
--- /dev/null
+++ b/docs/functions/iif.md
@@ -0,0 +1,37 @@
+# iIf
+
+A boolean condition or value is passed into the first argument. If the condition is `true` the second argument is evaluated and returned, if `false` the third argument is evaluated and returned.
+
+```javascript
+iIf(condition, expression1, expression2)
+```
+
+```javascript
+returns string
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| condition | boolean | Yes | | A boolean value or an expression that evaluates to a boolean. |
+| expression1 | string | Yes | | A CFML expression that is evaluated dynamically using Evaluate if the condition is `true`. |
+| expression2 | string | Yes | | A CFML expression that is evaluated dynamically using Evaluate if the condition is `false`. |
+
+## Simple iIf Example
+
+```javascript
+iIf( server.os.name IS "Bacon", de("Running Bacon OS"), de("Not Running Bacon OS") )
+```
+
+### Expected Result: Not Running Bacon OS
+
+## Simple Example using Ternary Operator Instead
+
+Instead of using iif, you should use the ternary operator CF9+
+
+```javascript
+( (server.os.name IS "Bacon") ? "Running Bacon OS" : "Not Running Bacon OS")
+```
+
+### Expected Result: Not Running Bacon OS
diff --git a/docs/functions/imageaddborder.md b/docs/functions/imageaddborder.md
new file mode 100644
index 000000000..fbf9079a9
--- /dev/null
+++ b/docs/functions/imageaddborder.md
@@ -0,0 +1,68 @@
+# imageAddBorder
+
+ Adds a rectangular border around the outside edge of a ColdFusion image.
+
+```javascript
+imageAddBorder(name, thickness [, color] [, bordertype])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.addBorder(thickness [, color] [, bordertype])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. | |
+| thickness | string | Yes | | Thickness of the border in pixels. The default value is 1. The border is added to the outside edge of the image; the image area is increased accordingly. | |
+| color | string | No | black | Only valid if the borderType is not specified or if borderType = 'constant'. | |
+| bordertype | string | No | constant | The type of border. | /Users/garethedwards/development/github/cfdocs/docs/functions/imageaddborder.md|wrap |
+
+## Tag Syntax
+
+Draw a green border around the outside edge of the red border.
+
+```javascript
+
+```
+
+## Tag Syntax
+
+Add a 50-pixel-wide border to the outside edge of the image that is a tiled version of the image itself.
+
+```javascript
+
+```
+
+## Tag Syntax
+
+Create the border.
+
+```javascript
+
+```
+
+## Tag Syntax
+
+Create a ColdFusion image from an existing JPEG file.
+
+```javascript
+
+```
+
+## Using addBorder member function
+
+CF11+ Lucee4.5+ Add border with optional color parameter
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.addBorder(5,"005100");
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imageblur.md b/docs/functions/imageblur.md
new file mode 100644
index 000000000..41d7b217e
--- /dev/null
+++ b/docs/functions/imageblur.md
@@ -0,0 +1,42 @@
+# imageBlur
+
+ Smooths (blurs) the ColdFusion image.
+
+```javascript
+imageBlur(name [, blurradius])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.blur(blurradius)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| blurradius | numeric | No | 3 | The size of the blur radius. Value must be greater than or equal to 3 and less than or equal to 10. |
+
+## Tag Syntax
+
+This example shows how to blur an image by a radius of 10.
+
+```javascript
+
+```
+
+## Using imageBlur member function
+
+CF11+ Lucee4.5+ Smooth or blur an image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.blur(5);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagecaptcha.md b/docs/functions/imagecaptcha.md
new file mode 100644
index 000000000..2e3f07caa
--- /dev/null
+++ b/docs/functions/imagecaptcha.md
@@ -0,0 +1,33 @@
+# imageCaptcha
+
+Provides information about the time when the current application scope was created.
+
+```javascript
+imageCaptcha()
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| text | string | Yes | | Text in the image captcha. |
+| height | numeric | Yes | | Height of the image in pixels. |
+| width | numeric | Yes | | Width of the image in pixels. |
+| difficulty | string | No | low | Complexity of the image. |
+| fonts | any | No | arial | One or more fonts for the CAPTCHA text, as an array or as string list (separated by commas). Lucee supports the system fonts recognized by JDK only. |
+| fontsize | numeric | No | 24 | Font size for text of the image. |
+| fontcolor | string | No | black | Font color for text of the image. |
+
+## Script Syntax
+
+A 300px by 100px image captcha at medium difficulty.
+
+```javascript
+imagewritetobrowser(imagecaptcha( 'abcxyz', 100, 300, 'medium'));
+```
+
+### Expected Result: An 300px by 100px image captcha with the letters 'abcxyz'
diff --git a/docs/functions/imageclearrect.md b/docs/functions/imageclearrect.md
new file mode 100644
index 000000000..dcba2fe11
--- /dev/null
+++ b/docs/functions/imageclearrect.md
@@ -0,0 +1,58 @@
+# imageClearRect
+
+ Clears the specified rectangle by filling it with the background color of the current drawing surface.
+
+```javascript
+imageClearRect(name, x, y, width, height)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.clearRect(x, y, width, height)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed |
+| x | numeric | Yes | | The X coordinate of the rectangle to clear. |
+| y | numeric | Yes | | The Y coordinate of the rectangle to clear. |
+| width | numeric | Yes | | The width of the rectangle to clear. |
+| height | numeric | Yes | | The height of the rectangle to clear. |
+
+## Tag Syntax
+
+This example shows how to set the background color to green and draws four rectangles in that color on the image.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using clearRect member function
+
+CF11+ Lucee4.5+ Clears the specified rectangle (50x50) from the center of the image (x=50, y-50)
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.clearRect(50,50,50,50);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagecopy.md b/docs/functions/imagecopy.md
new file mode 100644
index 000000000..202af3259
--- /dev/null
+++ b/docs/functions/imagecopy.md
@@ -0,0 +1,41 @@
+# imageCopy
+
+ Copies a rectangular area of an image.
+
+```javascript
+imageCopy(name, x, y, width, height [, dx] [, dy])
+```
+
+```javascript
+returns any
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.copy(x, y, width, height [, dx] [, dy])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The ColdFusion image on which this operation is performed. |
+| x | numeric | Yes | | The x coordinate of the source rectangle. |
+| y | numeric | Yes | | The y coordinate of the source rectangle. |
+| width | numeric | Yes | | The width of the source rectangle. |
+| height | numeric | Yes | | The height of the source rectangle. |
+| dx | numeric | No | | The x coordinate of the destination rectangle. |
+| dy | numeric | No | | The y coordinate of the destination rectangle. |
+
+## Using copy member function
+
+CF11+ Lucee4.5+ Copy the center of the image, rotate it 180 degrees about its center and paste it back into the original image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+copiedImgObj = imgObj.copy(50,50,50,50);
+copiedImgObj.rotate(25,25,180,"bicubic");
+imgObj.paste(copiedImgObj,50,50);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagecreatecaptcha.md b/docs/functions/imagecreatecaptcha.md
new file mode 100644
index 000000000..578c16733
--- /dev/null
+++ b/docs/functions/imagecreatecaptcha.md
@@ -0,0 +1,34 @@
+# imageCreateCaptcha
+
+ Create a Completely Automated Public Turing test to tell Computers and Humans Apart (CAPTCHA) image, a distorted text image that is human-readable, but not machine-readable, used in a challenge-response test for preventing spam.
+
+```javascript
+imageCreateCaptcha (height, width, text [, difficulty, fonts, fontsize)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| height | numeric | Yes | | Height in pixels of the image. |
+| width | numeric | Yes | | Width in pixels of the image. |
+| text | string | Yes | | Text string displayed in the CAPTCHA image. Use capital letters for better readability. Do not include spaces because users cannot detect them in the resulting CAPTCHA image.. |
+| difficulty | string | No | | Level of complexity of the CAPTCHA text. Specify one of the following levels of text distortion: low, medium, and high |
+| font | string | No | | One or more valid fonts to use for the CAPTCHA text. Separate multiple fonts with commas. ColdFusion supports only the system fonts that the JDK can recognize. For example, TTF fonts in the Windows directory are supported on Windows. |
+| fontsize | numeric | No | | Font size of the text in the CAPTCHA image. The value must be an integer. |
+
+## Tag Syntax
+
+```javascript
+imageCreateCaptcha Method
+
+
+
+
+
+
+```
diff --git a/docs/functions/imagecrop.md b/docs/functions/imagecrop.md
new file mode 100644
index 000000000..a561481f8
--- /dev/null
+++ b/docs/functions/imagecrop.md
@@ -0,0 +1,53 @@
+# imageCrop
+
+Crops a ColdFusion image to a specified rectangular area.
+
+```javascript
+imageCrop(name, x, y, width, height)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.crop(x, y, width, height)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x | numeric | Yes | | The X origin of the crop area. |
+| y | numeric | Yes | | The Y origin of the crop area. |
+| width | numeric | Yes | | The width of the crop area. |
+| height | numeric | Yes | | The height of the crop area. |
+
+## Tag Syntax
+
+This example shows how to crop an image.
+
+```javascript
+
+
+
+
+
+
+
+
+
+```
+
+## Using crop member function
+
+CF11+ Lucee4.5+ Crop the image from starting point (x=25, y=25), with width=100 and height=100
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.crop(25,25,100,100);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawarc.md b/docs/functions/imagedrawarc.md
new file mode 100644
index 000000000..a92840475
--- /dev/null
+++ b/docs/functions/imagedrawarc.md
@@ -0,0 +1,57 @@
+# imageDrawArc
+
+ Draws a circular or elliptical arc.
+
+```javascript
+imageDrawArc(name, x, y, width, height, startAngle, archAngle [, filled])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawArc(x, y, width, height, startAngle, archAngle [, filled])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. | |
+| x | numeric | Yes | | The x coordinate of the upper-left corner of the arc. | |
+| y | numeric | Yes | | The y coordinate of the upper-left corner of the arc. | |
+| width | numeric | Yes | | The width of the arc. | |
+| height | numeric | Yes | | The height of the arc. | |
+| startAngle | numeric | Yes | | The beginning angle in degrees. | |
+| archAngle | numeric | Yes | | The angular extent of the arc, relative to the start angle. | |
+| filled | boolean | No | false | Specify whether the arc is filled | /Users/garethedwards/development/github/cfdocs/docs/functions/imagedrawarc.md|false |
+
+## Tag Syntax
+
+This example shows how to use the imageNew function to create a blank ColdFusion image that is 250 pixels wide and 180 pixels high.
+
+```javascript
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawArc member function
+
+CF11+ Lucee4.5+ Draw a circle in the center of the image and fill with color
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.setDrawingColor("005100");
+imgObj.drawArc(50,50,50,50,90,360,"yes");
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawbeveledrect.md b/docs/functions/imagedrawbeveledrect.md
new file mode 100644
index 000000000..cc255e9bf
--- /dev/null
+++ b/docs/functions/imagedrawbeveledrect.md
@@ -0,0 +1,56 @@
+# imageDrawBeveledRect
+
+Draws a rectangle with beveled edges.
+
+```javascript
+imageDrawBeveledRect(name, x, y, width, height, raised [, filled])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawBeveledRect(x, y, width, height, raised [, filled])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x | numeric | Yes | | The x coordinate of the rectangle. |
+| y | numeric | Yes | | The y coordinate of the rectangle. |
+| width | numeric | Yes | | The width of the rectangle. |
+| height | numeric | Yes | | The height of the rectangle. |
+| raised | boolean | Yes | false | Specify whether the rectangle appears raised above the surface or sunk into the surface |
+| filled | boolean | No | false | Specify whether the rectangle is filled. |
+
+## Tag Syntax
+
+This example shows how to create a bevel-edged rectangle.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawBeveledRect member function
+
+CF11+ Lucee4.5+ Create a new image and place a raised beveled rectangle at its center
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawBeveledRect(50,50,50,50,"yes","yes");
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawcubiccurve.md b/docs/functions/imagedrawcubiccurve.md
new file mode 100644
index 000000000..818cc201c
--- /dev/null
+++ b/docs/functions/imagedrawcubiccurve.md
@@ -0,0 +1,58 @@
+# imageDrawCubicCurve
+
+ Draws a cubic curve.
+
+```javascript
+imageDrawCubicCurve(name, ctrlx1, ctrly1, ctrlx2, ctrly2, x1, y1, x2, y2)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawCubicCurve(ctrlx1, ctrly1, ctrlx2, ctrly2, x1, y1, x2, y2)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| ctrlx1 | string | Yes | | The x coordinate of the start point of the cubic curve segment. |
+| ctrly1 | numeric | Yes | | The y coordinate of the start point of the cubic curve segment. |
+| ctrlx2 | numeric | Yes | | The x coordinate of the first control point of the cubic curve segment. |
+| ctrly2 | numeric | Yes | | The y coordinate of the first control point of the cubic curve segment. |
+| x1 | numeric | Yes | | The x coordinate of the second control point of the cubic curve segment. |
+| y1 | numeric | Yes | | The y coordinate of the second control point of the cubic curve segment. |
+| x2 | numeric | Yes | | The x coordinate of the end point of the cubic curve segment. |
+| y2 | numeric | Yes | | The y coordinate of the end point of the cubic curve segment. |
+
+## Tag Syntax
+
+This example shows how to draw a curved line that looks like a stylized 7.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawCubicCurve member function
+
+CF11+ Lucee4.5+ Create a new image. With the new image draw a cubic curve, starting at top left (0,0) ending at bottom right (152,152) with 2 control points, 1 half way down the left side(0,71) and other at bottom left (0,152)
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawCubicCurve(0,0,0,71,0,152,152,152);
+cfimage (action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawimage.md b/docs/functions/imagedrawimage.md
new file mode 100644
index 000000000..47b3528bd
--- /dev/null
+++ b/docs/functions/imagedrawimage.md
@@ -0,0 +1,20 @@
+# imageDrawImage
+
+Draws an image on an image with the baseline of the first pixel positioned at (x,y) in the image i.e. with the top left corner positioned at (x,y).
+
+```javascript
+imageDrawImage(name, image, x, y)
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | any | Yes | | |
+| image | any | Yes | | |
+| x | numeric | Yes | | |
+| y | numeric | Yes | | |
diff --git a/docs/functions/imagedrawline.md b/docs/functions/imagedrawline.md
new file mode 100644
index 000000000..7826ea1e9
--- /dev/null
+++ b/docs/functions/imagedrawline.md
@@ -0,0 +1,52 @@
+# imageDrawLine
+
+Draws a single line defined by two sets of x and y coordinates on a ColdFusion image.
+
+```javascript
+imageDrawLine(name, x1, y1, x2, y2)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawLine(x1, y1, x2, y2)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x1 | numeric | Yes | | The x coordinate for the start point of the line. |
+| y1 | numeric | Yes | | The y coordinate for the start point of the line. |
+| x2 | numeric | Yes | | The x coordinate for the end point of the line. |
+| y2 | numeric | Yes | | The y coordinate for the end point of the line. |
+
+## Tag Syntax
+
+This example shows how to draw a square bisected by a diagonal line.
+
+```javascript
+
+
+
+
+
+
+
+
+```
+
+## Using drawline member function
+
+CF11+ Lucee4.5+ Create a new image and with this image draw a diagonal line from the top left (0,0) to the bottom right (152,152)
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawLine(0,0,152,152);
+cfimage (action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawlines.md b/docs/functions/imagedrawlines.md
new file mode 100644
index 000000000..90c4e94f8
--- /dev/null
+++ b/docs/functions/imagedrawlines.md
@@ -0,0 +1,66 @@
+# imageDrawLines
+
+Draws a sequence of connected lines defined by arrays of x and y coordinates.
+
+```javascript
+imageDrawLines(name, xcords, ycords [, isPolygon] [, filled])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawLines(xcords, ycords [, isPolygon] [, filled])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| xcords | numeric | Yes | | A array of x coordinates. |
+| ycords | numeric | Yes | | A array of y coordinates. |
+| isPolygon | boolean | No | false | Specify whether the lines form a polygon |
+| filled | boolean | No | false | Specify whether the polygon is filled |
+
+## Tag Syntax
+
+This example shows how to draw a zigzag line.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawlines member function
+
+CF11+ Lucee4.5+ Create a new image and with this image draw a 'W'
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawLines([0,38,76,114,152],[0,152,0,152,0],"no","no");
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawoval.md b/docs/functions/imagedrawoval.md
new file mode 100644
index 000000000..493bb1524
--- /dev/null
+++ b/docs/functions/imagedrawoval.md
@@ -0,0 +1,55 @@
+# imageDrawOval
+
+ Draws an oval.
+
+```javascript
+imageDrawOval(name, x, y, width, height [, filled])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawOval(x, y, width, height [, filled])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x | numeric | Yes | | The x coordinate of the upper left corner of the oval to draw. |
+| y | numeric | Yes | | The y coordinate of the upper left corner of the oval to draw. |
+| width | numeric | Yes | | The width of the oval to draw. |
+| height | numeric | Yes | | The height of the oval to draw. |
+| filled | boolean | No | false | Specify whether the oval is filled |
+
+## Tag Syntax
+
+This example shows how to draw a green filled oval.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawOval member function
+
+CF11+ Lucee4.5+ Create a new image and with this image draw a white oval (width=50, height=70) start from (50,40)
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawOval(50,40,50,70,"yes");
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawpoint.md b/docs/functions/imagedrawpoint.md
new file mode 100644
index 000000000..8c30c0082
--- /dev/null
+++ b/docs/functions/imagedrawpoint.md
@@ -0,0 +1,60 @@
+# imageDrawPoint
+
+ Draws a point at the specified (x,y) coordinate.
+
+```javascript
+imageDrawPoint(name, x, y)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawPoint(x, y)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x | numeric | Yes | | The x coordinate of the point. |
+| y | numeric | Yes | | The y coordinate of the point. |
+
+## Tag Syntax
+
+This example shows how to draw a large square in the middle of an image.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawPoints member function
+
+CF11+ Lucee4.5+ Create a new image and with this image draw 100 random points
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+for (i=1;i LTE 100;i=i+1) {
+ x = randRange(0,152);
+ y = randRange(0,152);
+ imgObj.drawPoint(x,y);
+}
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawquadraticcurve.md b/docs/functions/imagedrawquadraticcurve.md
new file mode 100644
index 000000000..25881193f
--- /dev/null
+++ b/docs/functions/imagedrawquadraticcurve.md
@@ -0,0 +1,56 @@
+# imageDrawQuadraticCurve
+
+ Draws a curved line. The curve is controlled by a single point.
+
+```javascript
+imageDrawQuadraticCurve(name, ctrlx1, ctrly1, x1, y1, x2, y2)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawQuadraticCurve(ctrlx1, ctrly1, x1, y1, x2, y2)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x1 | numeric | Yes | | The x coordinate of the start point of the quadratic curve segment. |
+| y1 | numeric | Yes | | The y coordinate of the start point of the quadratic curve segment. |
+| ctrlx1 | string | Yes | | The x coordinate of the first control point of the quadratic curve segment. |
+| ctrly1 | numeric | Yes | | The y coordinate of the first control point of the quadratic curve segment. |
+| x2 | numeric | Yes | | The x coordinate of the end point of the quadratic curve segment. |
+| y2 | numeric | Yes | | The y coordinate of the end point of the quadratic curve segment. |
+
+## Tag Syntax
+
+This example shows how to draw a curved line.OK
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawQuadraticCurve member function
+
+CF11+ Lucee4.5+ Create a new image. With the new image draw a cubic curve, starting at top left (0,0) ending at bottom right (152,152) with 1 control point at the bottom left (0,152)
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawQuadraticCurve(0,0,0,152,152,152);
+cfimage (action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawrect.md b/docs/functions/imagedrawrect.md
new file mode 100644
index 000000000..8a2673a14
--- /dev/null
+++ b/docs/functions/imagedrawrect.md
@@ -0,0 +1,55 @@
+# imageDrawRect
+
+Draws a rectangle.
+
+```javascript
+imageDrawRect(name, x, y, width, height [, filled])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawRect(x, y, width, height [, filled])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x | numeric | Yes | | The x coordinate of the rectangle. |
+| y | numeric | Yes | | The y coordinate of the rectangle. |
+| width | numeric | Yes | | The width of the rectangle. |
+| height | numeric | Yes | | The height of the rectangle. |
+| filled | boolean | No | false | Specify whether the rectangle is filled |
+
+## Tag Syntax
+
+This example shows how to draw a rectangle.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawRect member function
+
+CF11+ Lucee4.5+ Create a new image. With the new image draw filled rectangle (width=70, height=50) starting at point (x=40,y=50)
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawRect(40,50,70,50,"yes");
+cfimage (action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawroundrect.md b/docs/functions/imagedrawroundrect.md
new file mode 100644
index 000000000..2acf3a165
--- /dev/null
+++ b/docs/functions/imagedrawroundrect.md
@@ -0,0 +1,57 @@
+# imageDrawRoundRect
+
+ Draws a rectangle with rounded corners.
+
+```javascript
+imageDrawRoundRect(name, x, y, width, height, arcwidth, archeight [, filled])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawRoundRect(x, y, width, height, arcwidth, archeight [, filled])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| x | numeric | Yes | | The x coordinate of the rectangle. |
+| y | numeric | Yes | | The y coordinate of the rectangle. |
+| width | numeric | Yes | | The width of the rectangle. |
+| height | numeric | Yes | | The height of the rectangle. |
+| arcwidth | numeric | Yes | | The horizontal diameter of the arc at the four corners. |
+| archeight | numeric | Yes | | The vertical diameter of the arc at the four corners. |
+| filled | boolean | No | false | Specify whether the rectangle is filled |
+
+## Tag Syntax
+
+This example shows how to draw a square with rounded corners.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using drawRoundRect member function
+
+CF11+ Lucee4.5+ Create a new image. With the new image draw filled rounded rectangle (width=70, height=50) starting at point (x=40,y=50)
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawRoundRect(40,50,70,50,35,35,"yes");
+cfimage (action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagedrawtext.md b/docs/functions/imagedrawtext.md
new file mode 100644
index 000000000..74b4b0d7c
--- /dev/null
+++ b/docs/functions/imagedrawtext.md
@@ -0,0 +1,53 @@
+# imageDrawText
+
+ Draws a text string on a ColdFusion image with the baseline of the first character positioned at (x,y) in the image.
+
+```javascript
+imageDrawText(name, str, x, y, attributecollection)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.drawText(str, x, y, attributecollection)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| str | string | Yes | | The text to draw. |
+| x | numeric | Yes | | The x coordinate for the start point of the string. |
+| y | numeric | Yes | | The y coordinate for the start point of the string. |
+| attributecollection | struct | No | | A structure used to specify the text characteristics. the following keys are supported:
font: The name of the font used to draw the text string. If you do not specify the font attribute, the text is drawn in the default system font.
size: The font size for the text string. The default value is 10 points.
style: The style to apply to the font ( bold,italic,boldItalic,plain (default) ).
strikethrough: a boolean that specify whether strikethrough is applied to the text image, default is false.
underline: a boolean that specify whether underline is applied to the text image, default is false. |
+
+## Tag Syntax
+
+This example shows how to create a text string image.
+
+```javascript
+
+
+
+
+
+
+
+
+```
+
+## Using drawText member function
+
+CF11+ Lucee4.5+ Create a new image. With the new image write "CFDocs" with the text characteristics specified
+
+```javascript
+TextCharacteristics = { size="20", style="bold", strikethrough="false", underline="false"};
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.drawText("CFDocs",20,50,TextCharacteristics);
+cfimage (action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagefilter.md b/docs/functions/imagefilter.md
new file mode 100644
index 000000000..7993df4f3
--- /dev/null
+++ b/docs/functions/imagefilter.md
@@ -0,0 +1,19 @@
+# imageFilter
+
+Executes a filter on the given image
+
+```javascript
+imageFilter(name, filtername [, parameters])
+```
+
+```javascript
+returns void
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | any | Yes | | |
+| filtername | string | Yes | | |
+| parameters | struct | No | | |
diff --git a/docs/functions/imagefiltercolormap.md b/docs/functions/imagefiltercolormap.md
new file mode 100644
index 000000000..4319dade1
--- /dev/null
+++ b/docs/functions/imagefiltercolormap.md
@@ -0,0 +1,19 @@
+# imageFilterColorMap
+
+Used to provide a colormap as argument of the imageFilter function
+
+```javascript
+imageFilterColorMap(type [, lineColor1] [, lineColor2])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| type | string | Yes | | |
+| lineColor1 | string | No | | |
+| lineColor2 | string | No | | |
diff --git a/docs/functions/imagefiltercurves.md b/docs/functions/imagefiltercurves.md
new file mode 100644
index 000000000..274099653
--- /dev/null
+++ b/docs/functions/imagefiltercurves.md
@@ -0,0 +1,9 @@
+# imageFilterCurves
+
+```javascript
+imageFilterCurves()
+```
+
+```javascript
+returns any
+```
diff --git a/docs/functions/imagefilterkernel.md b/docs/functions/imagefilterkernel.md
new file mode 100644
index 000000000..26713826c
--- /dev/null
+++ b/docs/functions/imagefilterkernel.md
@@ -0,0 +1,21 @@
+# imageFilterKernel
+
+Defines a matrix that describes how a specified pixel and its surrounding pixels affect the value computed for the pixel's position in the output image of a filtering operation.
+
+The X origin and Y origin indicate the kernel matrix element that corresponds to the pixel position for which an output value is being computed.
+
+```javascript
+imageFilterKernel(width, height, data)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| width | numeric | Yes | | |
+| height | numeric | Yes | | |
+| data | any | Yes | | |
diff --git a/docs/functions/imagefilterwarpgrid.md b/docs/functions/imagefilterwarpgrid.md
new file mode 100644
index 000000000..16c0d2df6
--- /dev/null
+++ b/docs/functions/imagefilterwarpgrid.md
@@ -0,0 +1,18 @@
+# imageFilterWarpGrid
+
+```javascript
+imageFilterWarpGrid(rows, cols, width, height)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| rows | numeric | Yes | | |
+| cols | numeric | Yes | | |
+| width | numeric | Yes | | |
+| height | numeric | Yes | | |
diff --git a/docs/functions/imageflip.md b/docs/functions/imageflip.md
new file mode 100644
index 000000000..7c9a59496
--- /dev/null
+++ b/docs/functions/imageflip.md
@@ -0,0 +1,49 @@
+# imageFlip
+
+Flips an image across an axis.
+
+```javascript
+imageFlip(name, transpose)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.flip(transpose)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. | |
+| transpose | string | Yes | vertical | Transpose the image.
vertical: Flip an image across an imaginary horizontal line that runs through the center of the image.
horizontal: Flip an image across an imaginary vertical line that runs through the center of the image.
diagonal: Flip an image across its main diagonal that runs from the upper-left to the lower-right corner.
antidiagonal: Flip an image across its main diagonal that runs from the upper-right to the lower-left corner.
Or rotate an image clockwise by 90, 180, or 270 degrees. | /Users/garethedwards/development/github/cfdocs/docs/functions/imageflip.md|270 |
+
+## Tag Syntax
+
+This example shows how to rotate an image by 270 degrees.
+
+```javascript
+
+
+
+
+
+
+
+
+```
+
+## Using flip member function
+
+CF11+ Lucee4.5+ Flip the image vertically
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.flip("vertical");
+cfimage (action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagefonts.md b/docs/functions/imagefonts.md
new file mode 100644
index 000000000..e9a86aa4c
--- /dev/null
+++ b/docs/functions/imagefonts.md
@@ -0,0 +1,19 @@
+# imageFonts
+
+returns all available image fonts
+
+```javascript
+imageFonts()
+```
+
+```javascript
+returns array
+```
+
+## imageFonts Example
+
+Returns the all available image fonts. It is supported only in Lucee.
+
+```javascript
+writeDump(imageFonts()) ;
+```
diff --git a/docs/functions/imageformats.md b/docs/functions/imageformats.md
new file mode 100644
index 000000000..8b0178725
--- /dev/null
+++ b/docs/functions/imageformats.md
@@ -0,0 +1,19 @@
+# imageFormats
+
+Returns a structure of all supported image formats that can be read (`decoder`) and written (`encoder`).
+
+```javascript
+imageFormats()
+```
+
+```javascript
+returns struct
+```
+
+## Simple example
+
+Calls the function and dumps the structure of image formats it returns
+
+```javascript
+writeDump(imageFormats());
+```
diff --git a/docs/functions/imagegetblob.md b/docs/functions/imagegetblob.md
new file mode 100644
index 000000000..b1de3d3c9
--- /dev/null
+++ b/docs/functions/imagegetblob.md
@@ -0,0 +1,33 @@
+# imageGetBlob
+
+Retrieves the bytes of the underlying image. The bytes are in the same image format as the source image.
+
+```javascript
+imageGetBlob(source)
+```
+
+```javascript
+returns binary
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getBlob()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| source | string | Yes | | The ColdFusion image on which this operation is performed. |
+
+## Using getBlob() member function
+
+CF11+ Lucee4.5+ Retrieve the bytes of the underlying image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+blob = imgObj.getBlob();
+writeDump(blob);
+```
diff --git a/docs/functions/imagegetbufferedimage.md b/docs/functions/imagegetbufferedimage.md
new file mode 100644
index 000000000..44a290aea
--- /dev/null
+++ b/docs/functions/imagegetbufferedimage.md
@@ -0,0 +1,33 @@
+# imageGetBufferedImage
+
+ Returns the java.awt.BufferedImage object underlying the current ColdFusion image.
+
+```javascript
+imageGetBufferedImage(name)
+```
+
+```javascript
+returns any
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getBufferedImage()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Using getBufferedImage member function
+
+CF11+ Lucee4.5+ Call getWidth() on the underlying java.awt.BufferedImage object of the image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+x = imgObj.getBufferedImage();
+writeOutput(x.getWidth());
+```
diff --git a/docs/functions/imagegetexifmetadata.md b/docs/functions/imagegetexifmetadata.md
new file mode 100644
index 000000000..a5ec15e11
--- /dev/null
+++ b/docs/functions/imagegetexifmetadata.md
@@ -0,0 +1,33 @@
+# imageGetEXIFMetadata
+
+Retrieves the Exchangeable Image File Format (EXIF) headers in an image as a CFML structure.
+
+```javascript
+imageGetEXIFMetadata(name)
+```
+
+```javascript
+returns struct
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getEXIFMetadata()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Using getEXIFMetadata member function
+
+CF11+ Lucee4.5+ Extract the EXIF meta data from exiv sample page (http://www.exiv2.org/sample.html)
+
+```javascript
+imgObj = imageRead("http://www.exiv2.org/include/img_1771.jpg");
+x = imgObj.getEXIFMetadata();
+writeDump(x);
+```
diff --git a/docs/functions/imagegetexiftag.md b/docs/functions/imagegetexiftag.md
new file mode 100644
index 000000000..a608ba84f
--- /dev/null
+++ b/docs/functions/imagegetexiftag.md
@@ -0,0 +1,49 @@
+# imageGetEXIFTag
+
+ Retrieves the specified EXIF tag in an image.
+
+```javascript
+imageGetEXIFTag(name, tagName)
+```
+
+```javascript
+returns string
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getEXIFTag(tagName)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| tagName | string | Yes | | The EXIF tag name to be returned. |
+
+## Tag Syntax
+
+This example shows how to retrieve one element from the EXIF information associated with an image.
+
+```javascript
+
+
+
+
+
+
+```
+
+## Using getEXIFTag member function
+
+CF11+ Lucee4.5+ Extract model of camera used for image on exiv sample page (http://www.exiv2.org/sample.html)
+
+```javascript
+imgObj = imageRead("http://www.exiv2.org/include/img_1771.jpg");
+model = imgObj.getEXIFTag('Model');
+writeOutput(model);
+```
+
+### Expected Result: Canon PowerShot S40
diff --git a/docs/functions/imagegetheight.md b/docs/functions/imagegetheight.md
new file mode 100644
index 000000000..34e8a7b9f
--- /dev/null
+++ b/docs/functions/imagegetheight.md
@@ -0,0 +1,33 @@
+# imageGetHeight
+
+Retrieves the height of the ColdFusion image in pixels.
+
+```javascript
+imageGetHeight(name)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getHeight()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Using getHeight member function
+
+CF11+ Lucee4.5+ Extract the height of an image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+height = imgObj.getHeight();
+writeOutput(height);
+```
diff --git a/docs/functions/imagegetiptcmetadata.md b/docs/functions/imagegetiptcmetadata.md
new file mode 100644
index 000000000..dc5f46941
--- /dev/null
+++ b/docs/functions/imagegetiptcmetadata.md
@@ -0,0 +1,33 @@
+# imageGetIPTCMetadata
+
+ Retrieves the International Press Telecommunications Council (IPTC )headers in a ColdFusion image as a structure.
+
+```javascript
+imageGetIPTCMetadata(name)
+```
+
+```javascript
+returns struct
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getIPTCMetadata()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Using getIPTCMetadata member function
+
+CF11+ Extract the IPTC meta data from IPTC image (https://code.google.com/p/metadata-extractor/wiki/SampleOutput)
+
+```javascript
+imgObj = imageRead("http://sample-images.metadata-extractor.googlecode.com/git/FujiFilm%20FinePixS1Pro%20(1).jpg");
+x = imgObj.getIPTCMetadata();
+writeDump(x);
+```
diff --git a/docs/functions/imagegetiptctag.md b/docs/functions/imagegetiptctag.md
new file mode 100644
index 000000000..6e2b6ea2a
--- /dev/null
+++ b/docs/functions/imagegetiptctag.md
@@ -0,0 +1,46 @@
+# imageGetIPTCtag
+
+ Retrieves the value of the IPTC tag for a ColdFusion image.
+
+```javascript
+imageGetIPTCtag(name, tagName)
+```
+
+```javascript
+returns string
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getIPTCtag(tagName)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+| tagName | string | Yes | | The IPTC tag name whose value is returned. |
+
+## Tag Syntax
+
+This example shows how to retrieve the caption for a JPEG file.
+
+```javascript
+
+
+
+
+
+```
+
+## Using getIPTCtag member function
+
+CF11+ Lucee4.5+ Extract the copyright notice for image (https://code.google.com/p/metadata-extractor/wiki/SampleOutput)
+
+```javascript
+imgObj = imageRead("http://sample-images.metadata-extractor.googlecode.com/git/FujiFilm%20FinePixS1Pro%20(1).jpg");
+copyright = imgObj.getIPTCtag('Copyright Notice');
+writeOutput(copyright);
+```
diff --git a/docs/functions/imagegetmetadata.md b/docs/functions/imagegetmetadata.md
new file mode 100644
index 000000000..528eefac7
--- /dev/null
+++ b/docs/functions/imagegetmetadata.md
@@ -0,0 +1,43 @@
+# imageGetMetadata
+
+A structure containing information about the image.
+
+```javascript
+imageGetMetadata(image)
+```
+
+```javascript
+returns struct
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getMetadata()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Tag Usage
+
+CF11+ Extract the meta data from an image
+
+```javascript
+
+
+
+```
+
+## Using getMetadata() member function
+
+CF11+ Extract the meta data from an image
+
+```javascript
+imgObj = imageRead("http://www.exiv2.org/include/img_1771.jpg");
+metaData = imgObj.getMetadata();
+writeDump(metaData);
+```
diff --git a/docs/functions/imagegetwidth.md b/docs/functions/imagegetwidth.md
new file mode 100644
index 000000000..44c6be927
--- /dev/null
+++ b/docs/functions/imagegetwidth.md
@@ -0,0 +1,33 @@
+# imageGetWidth
+
+ Retrieves the width of the specified ColdFusion image.
+
+```javascript
+imageGetWidth(name)
+```
+
+```javascript
+returns numeric
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.getWidth()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Using getWidth member function
+
+CF11+ Lucee4.5+ Extract the width of an image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+width = imgObj.getWidth();
+writeOutput(width);
+```
diff --git a/docs/functions/imagegrayscale.md b/docs/functions/imagegrayscale.md
new file mode 100644
index 000000000..45612318d
--- /dev/null
+++ b/docs/functions/imagegrayscale.md
@@ -0,0 +1,33 @@
+# imageGrayScale
+
+ Converts a ColdFusion image to grayscale.
+
+```javascript
+imageGrayScale(name)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.grayScale()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Using grayScale member function
+
+CF11+ Lucee4.5+ Convert image to grayScale
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.grayScale();
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imageinfo.md b/docs/functions/imageinfo.md
new file mode 100644
index 000000000..fc5c9d2ef
--- /dev/null
+++ b/docs/functions/imageinfo.md
@@ -0,0 +1,45 @@
+# imageInfo
+
+ Returns a structure that contains information about the image, such as height, width, color model, size, and filename.
+
+```javascript
+imageInfo(name)
+```
+
+```javascript
+returns struct
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.info()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Get Image Info
+
+Uses the imageRead function to read an image from a url.
+
+```javascript
+
+
+Image is #imgInfo.height#px high and #imgInfo.width#px wide.
+```
+
+### Expected Result: Image is 20px high and 10px wide.
+
+## Using info member function
+
+CF11+ Lucee4.5+ Extract the image info
+
+```javascript
+imgObj = imageRead("https://cfdocs.org/apple-touch-icon.png");
+info = imgObj.info();
+writeDump(info);
+```
diff --git a/docs/functions/imagemakecolortransparent.md b/docs/functions/imagemakecolortransparent.md
new file mode 100644
index 000000000..8091cc645
--- /dev/null
+++ b/docs/functions/imagemakecolortransparent.md
@@ -0,0 +1,37 @@
+# imageMakeColorTransparent
+
+ Creates an image and sets a transparent color.
+
+```javascript
+imageMakeColorTransparent(img, color__);
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| img | string | Yes | | The ColdFusion image on which this operation is performed. |
+| color | string | Yes | | The transparent color: Hexadecimal, String value, Default is black. |
+
+## Tag Syntax
+
+```javascript
+
+
+
+
+
+
+
+
+ PNG image
+
+
+
+
+
+```
diff --git a/docs/functions/imagemaketranslucent.md b/docs/functions/imagemaketranslucent.md
new file mode 100644
index 000000000..2fbffd5e4
--- /dev/null
+++ b/docs/functions/imagemaketranslucent.md
@@ -0,0 +1,43 @@
+# imageMakeTranslucent
+
+ Create a new translucent image with given percentage of translucence.
+
+```javascript
+imageMakeTranslucent (img, percent__);
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| img | string | Yes | | The ColdFusion image on which this operation is performed. |
+| percentage | numeric | Yes | | The percent of translucence: 0 = opaque, 100=transparent. Decimal values are supported |
+
+## Tag Syntax
+
+The following example illustrates three images with the second one translucent than first and the third one translucent than the second.
+
+```javascript
+
+
+
+
+
+
+
+
+ PNG image
+
+
+
+
+
+
+
+
+
+```
diff --git a/docs/functions/imagenegative.md b/docs/functions/imagenegative.md
new file mode 100644
index 000000000..88d41e45d
--- /dev/null
+++ b/docs/functions/imagenegative.md
@@ -0,0 +1,35 @@
+# imageNegative
+
+Inverts the pixel values of a ColdFusion image.
+
+```javascript
+imageNegative(name)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.negative()
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. |
+
+## Using negative member function
+
+CF11+ Convert image to negative
+
+```javascript
+imgObj = imageRead("https://placekitten.com/408/287");
+imgObjNegative = duplicate(imgObj);
+imgObjNegative.negative();
+cfimage(action="writeToBrowser", source=imgObj);
+cfimage(action="writeToBrowser", source=imgObjNegative);
+```
diff --git a/docs/functions/imagenew.md b/docs/functions/imagenew.md
new file mode 100644
index 000000000..65df2b1a0
--- /dev/null
+++ b/docs/functions/imagenew.md
@@ -0,0 +1,40 @@
+# imageNew
+
+ Creates a ColdFusion image.
+
+```javascript
+imageNew([source] [, width] [, height] [, imagetype] [, canvascolor])
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| source | string | No | | The source image path, URL, a variable that is read into the new image, or a Java buffered image. |
+| width | numeric | No | | The width of the new image. Valid when the height is specified and the source is not. |
+| height | numeric | No | | The height of the new image. Valid when the width is specified and the source is not. |
+| imagetype | string | No | | The type of the image to create (Valid only when width and height are specified), |
+| canvascolor | string | No | black | Color of the image canvas. Possible values are:
Hexadecimal value of RGB color. For example, specify the color white as ##FFFFFF or FFFFFF.
String value of color (for example, 'black', 'red', 'green').
List of three numbers for (R,G,B) values. Each value must be in the range 0-255. |
+
+## Tag Syntax
+
+Use the imageNew function to create a 200x200-pixel image in ARGB format.
+
+```javascript
+
+
+```
+
+## Script Syntax
+
+This example shows how to create a ColdFusion image from a URL.
+
+```javascript
+
+
+
+```
diff --git a/docs/functions/imageoverlay.md b/docs/functions/imageoverlay.md
new file mode 100644
index 000000000..0386a396e
--- /dev/null
+++ b/docs/functions/imageoverlay.md
@@ -0,0 +1,54 @@
+# imageOverlay
+
+ Reads two source ColdFusion images and overlays the second source image on the first source image.
+
+```javascript
+imageOverlay(source1, source2 [, rule, alpha])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.overlay(source2 [, rule, alpha])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| source1 | string | Yes | | The image that is the bottom layer in the image. |
+| source2 | string | Yes | | The image that is the top layer (overlaid on the source1 image) in the image. |
+| rule | string | No | | CF10+ Compositing Rule |
+| alpha | string | No | | CF10+ The percentage value of transparency |
+
+## Tag Syntax
+
+This example shows how to overlay a smaller image on a larger image.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using overlay member function
+
+CF11+ Lucee4.5+ Overlay one image on the other
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+topImg = imageNew("",50,50,"rgb","ffffff");
+imgObj.overlay(topImg);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagepaste.md b/docs/functions/imagepaste.md
new file mode 100644
index 000000000..a738513f9
--- /dev/null
+++ b/docs/functions/imagepaste.md
@@ -0,0 +1,59 @@
+# imagePaste
+
+ Takes two images and an (x,y) coordinate and draws the second image over the first image with the upper-left corner at coordinate (x,y).
+
+```javascript
+imagePaste(image1, image2, x, y)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.paste(image2, x, y)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| image1 | string | Yes | | The bottom image. |
+| image2 | string | Yes | | The image that is pasted on top of image1. |
+| x | numeric | Yes | | The x coordinate where the upper-left corner of image2 is pasted. |
+| y | numeric | Yes | | The y coordinate where the upper-left corner of image2 is pasted. |
+
+## Tag Syntax
+
+This example shows how to copy a small rectangular area of one image and paste it over a larger image.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using paste member function
+
+CF11+ Lucee4.5+ Copy the center of the image, rotate it 180 degrees about its center and paste it back into the original image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+copiedImgObj = imgObj.copy(50,50,50,50);
+copiedImgObj.rotate(25,25,180,"bicubic");
+imgObj.paste(copiedImgObj,50,50);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imageread.md b/docs/functions/imageread.md
new file mode 100644
index 000000000..28495a5e0
--- /dev/null
+++ b/docs/functions/imageread.md
@@ -0,0 +1,26 @@
+# imageRead
+
+ Reads the source pathname or URL and creates a ColdFusion image.
+
+```javascript
+imageRead(path)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| path | string | Yes | | On-disk or in-memory pathname or URL of the source image. |
+
+## Using script syntax
+
+Read an image from URL and output
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagereadbase64.md b/docs/functions/imagereadbase64.md
new file mode 100644
index 000000000..d80b722eb
--- /dev/null
+++ b/docs/functions/imagereadbase64.md
@@ -0,0 +1,26 @@
+# imageReadBase64
+
+ Creates a ColdFusion image from a Base64 string.
+
+```javascript
+imageReadBase64(string)
+```
+
+```javascript
+returns any
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| string | string | Yes | | a variable or Base64 string |
+
+## Using script syntax
+
+convert base64 representation of a small red dot to an image
+
+```javascript
+imgObj = imageReadBase64('iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==');
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imageresize.md b/docs/functions/imageresize.md
new file mode 100644
index 000000000..f53ff1acd
--- /dev/null
+++ b/docs/functions/imageresize.md
@@ -0,0 +1,51 @@
+# imageResize
+
+ Resizes a ColdFusion image.
+
+```javascript
+imageResize(name, width, height, interpolation, blurfactor)
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.resize(width, height, interpolation, blurfactor)
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. | |
+| width | numeric | Yes | | New width of the image. If this value is blank, the width is calculated proportionately to the height. | |
+| height | numeric | Yes | | New height of the image. If this value is blank, the height is calculated proportionately to the width. | |
+| interpolation | string | No | | The interpolation method for resampling. You can specify a specific interpolation algorithm by name (for example, hamming), by image quality (for example, mediumQuality), or by performance (for example, highestPerformance). | /Users/garethedwards/development/github/cfdocs/docs/functions/imageresize.md|quadratic |
+| blurfactor | boolean | No | | The blur factor used for resampling. The higher the blur factor, the more blurred the image (also, the longer it takes to resize the image). | /Users/garethedwards/development/github/cfdocs/docs/functions/imageresize.md|1-10 |
+
+## Tag Syntax
+
+This example shows how to resize an image to 50% of original size and resize it proportionately to the new width. Notice that the height is blank.
+
+```javascript
+
+
+
+
+
+
+
+```
+
+## Using resize member function
+
+CF11+ Resize an image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.resize(50,50);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagerotate.md b/docs/functions/imagerotate.md
new file mode 100644
index 000000000..1a5e413d9
--- /dev/null
+++ b/docs/functions/imagerotate.md
@@ -0,0 +1,47 @@
+# imageRotate
+
+Rotates a ColdFusion image at a specified point by a specified angle.
+
+```javascript
+imageRotate(name [, x] [, y] , angle [, interpolation])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.rotate([, x] [, y] , angle [, interpolation])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| name | string | Yes | | The image on which this operation is performed. | |
+| angle | numeric | Yes | | The rotation angle in degrees. | |
+| x | numeric | No | 2 | The x coordinate for the point of rotation | |
+| y | numeric | No | 2 | The y coordinate for the point of rotation | |
+| interpolation | string | No | nearest | Type of interpolation
nearest: Applies the nearest neighbor method of interpolation. Image quality is lower than the other interpolation methods, but processing is fastest.
bilinear: Applies the bilinear method of interpolation. The quality of the image is less pixelated than the default, but processing is slower.
bicubic: Applies the bicubic method of interpolation. Generally, the quality of image is highest with this method and processing is slowest. | /Users/garethedwards/development/github/cfdocs/docs/functions/imagerotate.md|bicubic |
+
+## Tag Syntax
+
+This example shows how to rotate an image by 10 degrees.
+
+```javascript
+
+
+
+```
+
+## Using rotate member function
+
+CF11+ Rotate an image
+
+```javascript
+imgObj = imageRead("http://cfdocs.org/apple-touch-icon.png");
+imgObj.rotate(90);
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagerotatedrawingaxis.md b/docs/functions/imagerotatedrawingaxis.md
new file mode 100644
index 000000000..32fba02b5
--- /dev/null
+++ b/docs/functions/imagerotatedrawingaxis.md
@@ -0,0 +1,57 @@
+# imageRotateDrawingAxis
+
+ Rotates all subsequent drawing on a ColdFusion image at a specified point by a specified angle.
+
+```javascript
+imageRotateDrawingAxis(name, angle [, x] [, y])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.rotateDrawingAxis(angle [, x] [, y])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| name | string | Yes | | The ColdFusion image on which this operation is performed. |
+| angle | numeric | Yes | | The rotation angle in degrees. |
+| x | numeric | No | 0 | The x coordinate for the point of rotation. |
+| y | numeric | No | 0 | The y coordinate for the point of rotation. |
+
+## Tag Syntax
+
+This example shows how to create an image with three shapes drawn on the same axis.
+
+```javascript
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Using rotateDrawingAxis member function
+
+CF11+ Create a new image, rotate the drawing axis by 45° about the center (71,71) and draw a 'W'
+
+```javascript
+imgObj = imageNew("",152,152,"rgb","149c82");
+imgObj.rotateDrawingAxis(45,71,71);
+imgObj.drawLines([0,38,76,114,152],[0,152,0,152,0],"no","no");
+cfimage(action="writeToBrowser", source=imgObj);
+```
diff --git a/docs/functions/imagescaletofit.md b/docs/functions/imagescaletofit.md
new file mode 100644
index 000000000..ac156f82c
--- /dev/null
+++ b/docs/functions/imagescaletofit.md
@@ -0,0 +1,51 @@
+# imageScaleTofit
+
+Creates a resized image with the aspect ratio maintained.
+
+```javascript
+imageScaleTofit(name, fitWidth, fitHeight [, interpolation] [, blurFactor])
+```
+
+```javascript
+returns void
+```
+
+## Member Function Syntax
+
+```javascript
+someImage.scaleTofit(fitWidth, fitHeight [, interpolation] [, blurFactor])
+```
+
+## Argument Reference
+
+| Name | Type | Required | Default | Description | Values |
+| --- | --- | --- | --- | --- | --- |
+| name | string | Yes | | The ColdFusion image on which this operation is performed. | |
+| fitWidth | numeric | Yes | | The width of the bounding box in pixels. You can specify an integer, or an empty string ('') if the fitHeight is specified. | |
+| fitHeight | numeric | Yes | | The height of the bounding box in pixels. You can specify an integer, or an empty string ('') if the fitWidth is specified. | |
+| interpolation | string | No | | The interpolation method for resampling. You can specify a specific interpolation algorithm by name (for example, hamming), by image quality (for example, mediumQuality), or by performance (for example, highestPerformance). | /Users/garethedwards/development/github/cfdocs/docs/functions/imagescaletofit.md|quadratic |
+| blurfactor | boolean | No | | The blur factor used for resampling. The higher the blur factor, the more blurred the image (also, the longer it takes to resize the image). | /Users/garethedwards/development/github/cfdocs/docs/functions/imagescaletofit.md|1-10 |
+
+## Tag Syntax
+
+This example shows how to resize an image to fit a 100x100-pixel square while maintaining the aspect ratio.
+
+```javascript
+
+