[lasso_type_extensions]

Description

Link: [lasso_type_extensions]
Author: Greg Willits
Category: Data Type
Version: 8.x
License: Public Domain
Posted: Nov. 13, 2007
Updated: Jan. 01, 0001
More by this author...

So as the culmination of a data type extending discussion on LassoTalk, I've created a bunch of extensions to [string], [integer], and [array], and modified [map].

If we could extend date, time, and decimal, we could have a bunch more useful methods.

Fletcher has said he doesn't like the idea, "I should add that this is an unsupported hack which is pretty much guaranteed not to work in the next version of Lasso. Use at your own risk. My original recommendation of subclassing the built-in data types stands."

However subclasses won't work, so there's not much point in chasing that direction. Subclasses won't allow the use of literals, won't survive ->type tags, and won't survive type casting. These extensions I've created must extend the native class in order to have any usefulness.

So, when the next version of lasso comes out (we assume Fletcher means Lasso 9, not 8.5.4), we'll update 'em. No big deal. Also, if LassoSoft decides to create its own member tags with some of these same names, that's OK too, we can delete the definitions for the ones they create.

I think these are too useful to not got forward with.

They're useful, make code much easier to read, and keep OO syntax consistent rather than switching to custom tags for similar functionality.

IMO, LassoSoft should just adopt them and include them in 8.5.4 :-)

Extensions To ARRAY

Adds array->select which can be used to retrieve elements of an array using operators other than just the equals that ->find uses. Works on an array of simple elements or an array of pairs. Will work with non-compund data elements like integer, decimal, string, date, etc.

Example:

$myArray->(select: -gte=5);
$myArray->(select: -btw=(pair:'A'='E'));

Available tags:

->eq (same as ->find)
->gt
->gte
->lt
->lte
->bw
->ew
->btw (between, submit a pair to define the range)

Extensions To STRING

Example:

<td>[(field:'description')->(getWords:25)]...</td>

Available tags:

->getLeft
->getRight
->getWords
->getSentences
->getParagraphs

Extensions To INTEGER

Extensions to integer for relative Dates

Example:

var:'sessionDuration' = 30;
var:'sessionExpires' = $sessionDuration->minutesFromNow;

if now is 07/23/2007 15:10:16, this returns 07/23/2007 15:40:16

Available tags:

->secondsFromNow
->minutesFromNow
->hoursFromNow
->daysFromNow
->weeksFromNow
->monthsFromNow
->yearsFromNow

->secondsAgo
->minutesAgo
->hoursAgo
->daysAgo
->weeksAgo
->monthsAgo
->yearsAgo

Extensions to integer for Digital Data Units

Examples:

Because we cannot yet extend decimal, we have to use a clunky but workable workaround.

5->megabytes  => 5242880
5->KBasMB => 0.4882
375.6 * 1->MBasGB

Available tags:

->bytes
->kilobytes
->megabytes
->gigabytes
->terabytes
->KB
->MB
->GB
->TB
->KBasMB
->KBasGB
->KBasTB
->MBasGB
->MBasTB
->GBasTB
->MBasKB
->GBasKB
->TBasKB
->GBasMB
->TBasMB
->TBasGB

Extensions to Integer for over 275 unit conversions

Basic american units are converted to lowest unit form (just like the bytes units):

18->inches => 18 (inches)
18->feet => 216 (inches)
6->quarts => 192 (ounces)

Otherwise the tag specifies the conversion:

4->gallonsAsQuarts = 16 (quarts)

Lots of metric conversions too:

->inchesAsCentimeters
->inchesAsCentimetres (available in meters and metres spellings)
->inchesAsCm (metric units can be shortened, but american ones cannot)

->metersAsFeet
->mtrAsFeet
->metresAsYards

Because we cannot yet extend decimal, we have to use a clunky but workable workaround.

3.75 * 1->metersAsFeet

Complete Units List:

->inches
->foot
->feet
->yards
->miles
->yardsAsFeet
->milesAsFeet
->milesAsYards
->feetAsYards
->feetAsMiles
->yardsAsMiles

->ounces
->pints
->quarts
->gallons
->gallonsAsQuarts
->gallonsAsPints
->quartsAsGallons
->quartsAsPints
->pintsAsGallons
->pintsAsQuarts
->ouncesAsGallons
->ouncesAsQuarts
->ouncesAsPints

->ounces
->lbs
->pounds
->tons
->longTons
->metricTons

->sqInches
->sqFeet
->sqYards
->sqMiles
->sqMilesAsSqYards
->sqMilesAsSqFeet
->sqYardsAsSqMiles
->sqYardsAsSqFeet
->sqFeetAsSqMiles
->sqFeetAsSqYards

->inchesAsMillimeters
->feetAsMillimeters
->yardsAsMillimeters
->milesAsMillimeters
->inchesAsMillimetres
->feetAsMillimetres
->yardsAsMillimetres
->milesAsMillimetres
->inchesAsMm
->feetAsMm
->yardsAsMm
->milesAsMm
->inchesAsCentimeters
->feetAsCentimeters
->yardsAsCentimeters
->milesAsCentimeters
->inchesAsCentimetres
->feetAsCentimetres
->yardsAsCentimetres
->milesAsCentimetres
->inchesAsCm
->feetAsCm
->yardsAsCm
->milesAsCm
->inchesAsMeters
->feetAsMeters
->yardsAsMeters
->milesAsMeters
->inchesAsMetres
->feetAsMetres
->yardsAsMetres
->milesAsMetres
->inchesAsKilometers
->feetAsKilometers
->yardsAsKilometers
->milesAsKilometers
->inchesAsKilometres
->feetAsKilometres
->yardsAsKilometres
->milesAsKilometres
->inchesAsKm
->feetAsKm
->yardsAsKm
->milesAsKm

->millimetersAsInches
->millimetersAsFeet
->millimetersAsYards
->millimetersAsMiles
->millimetresAsInches
->millimetresAsFeet
->millimetresAsYards
->millimetresAsMiles
->mmAsInches
->mmAsFeet
->mmAsYards
->mmAsMiles
->centimetersAsInches
->centimetersAsFeet
->centimetersAsYards
->centimetersAsMiles
->centimetresAsInches
->centimetresAsFeet
->centimetresAsYards
->centimetresAsMiles
->cmAsInches
->cmAsFeet
->cmAsYards
->cmAsMiles
->metersAsInches
->metersAsFeet
->metersAsYards
->metersAsMiles
->metresAsInches
->metresAsFeet
->metresAsYards
->metresAsMiles
->kilometersAsInches
->kilometersAsFeet
->kilometersAsYards
->kilometersAsMiles
->kilometresAsInches
->kilometresAsFeet
->kilometresAsYards
->kilometresAsMiles
->kmAsInches
->kmAsFeet
->kmAsYards
->kmAsMiles

->ouncesAsMilliliters
->pintsAsMilliliters
->quartsAsMilliliters
->gallonsAsMilliliters
->ouncesAsMillilitres
->pintsAsMillilitres
->quartsAsMillilitres
->gallonsAsMillilitres
->ouncesAsMl
->pintsAsMl
->quartsAsMl
->gallonsAsMl
->ouncesAsLiters
->pintsAsLiters
->quartsAsLiters
->gallonsAsLiters
->ouncesAsLitres
->pintsAsLitres
->quartsAsLitres
->gallonsAsLitres
->ouncesAsLtr
->pintsAsLtr
->quartsAsLtr
->gallonsAsLtr
->millilitersAsOunces
->millilitersAsPints
->millilitersAsQuarts
->millilitersAsGallons
->millilitresAsOunces
->millilitresAsPints
->millilitresAsQuarts
->millilitresAsGallons
->mlAsOunces
->mlAsPint
->mlAsQuart
->mlAsGallon
->litersAsOunces
->litersAsPints
->litersAsQuarts
->litersAsGallons
->litresAsOunces
->litresAsPints
->litresAsQuarts
->litresAsGallons
->ltrAsOunces
->ltrAsPints
->ltrAsQuarts
->ltrAsGallons

->ouncesAsGrams
->lbsAsGrams
->poundsAsGrams
->ouncesAsKilograms
->lbsAsKilograms
->poundsAsKilograms
->tonsAsKilograms
->longtonsAsKilograms
->metrictonsAsKilograms
->ouncesAsKg
->lbsAsKg
->poundsAsKg
->tonsAsKg
->longtonsAsKg
->metrictonsAsKg
->gramsAsOunces
->gramsAsLbs
->gramsAsPounds
->KilogramsAsOunces
->KilogramsAsLbs
->KilogramsAsPounds
->KilogramsAsTons
->KilogramsAsLongtons
->KilogramsAsMetrictons
->KgAsOunces
->KgAsLbs
->KgAsPounds
->KgAsTons
->KgAsLongtons
->KgAsMetrictons

->sqInchesAsSqMillimeters
->sqFeetAsSqMillimeters
->sqYardsAsSqMillimeters
->sqInchesAsSqCentimeters
->sqFeetAsSqCentimeters
->sqYardsAsSqCentimeters
->sqInchesAsSqMeters
->sqFeetAsSqMeters
->sqYardsAsSqMeters
->sqFeetAsSqKilometres
->sqYardsAsSqKilometres
->sqMilesAsSqKilometres
->sqInchesAsSqMillimetres
->sqFeetAsSqMillimetres
->sqYardsAsSqMillimetres
->sqInchesAsSqCentimetres
->sqFeetAsSqCentimetres
->sqYardsAsSqCentimetres
->sqInchesAsSqMetres
->sqFeetAsSqMetres
->sqYardsAsSqMetres
->sqFeetAsSqKilometers
->sqYardsAsSqKilometers
->sqMilesAsSqKilometers
->sqInchesAsSqMm
->sqFeetAsSqMm
->sqYardsAsSqMm
->sqInchesAsSqCm
->sqFeetAsSqCm
->sqYardsAsSqCm
->sqInchesAsSqMtr
->sqFeetAsSqMtr
->sqYardsAsSqMtr
->sqFeetAsSqKm
->sqYardsAsSqKm
->sqMilesAsSqKm

->sqMillimetersAsSqInches
->sqMillimetersAsSqFeet
->sqMillimetersAsSqYards
->sqCentimetersAsSqInches
->sqCentimetersAsSqFeet
->sqCentimetersAsSqYards
->sqMetersAsSqInches
->sqMetersAsSqFeet
->sqMetersAsSqYards
->sqKilometersAsSqFeet
->sqKilometersAsSqYards
->sqKilometersAsSqMiles
->sqMillimetresAsSqInches
->sqMillimetresAsSqFeet
->sqMillimetresAsSqYards
->sqCentimetresAsSqInches
->sqCentimetresAsSqFeet
->sqCentimetresAsSqYards
->sqMetresAsSqInches
->sqMetresAsSqFeet
->sqMetresAsSqYards
->sqKilometresAsSqFeet
->sqKilometresAsSqYards
->sqKilometresAsSqMiles
->sqMmAsSqInches
->sqMmAsSqFeet
->sqMmAsSqYards
->sqCmAsSqInches
->sqCmAsSqFeet
->sqCmAsSqYards
->sqMtrAsSqInches
->sqMtrAsSqFeet
->sqMtrAsSqYards
->sqKmAsSqFeet
->sqKmAsSqYards
->sqKmAsSqMiles

Parameters

none


Sample Usage

// see above
						

Source Code

Click the "Download" button below to retrieve a copy of this tag, including the complete documentation and sample usage shown on this page. Place the downloaded ".inc" file in your LassoStartup folder, restart Lasso, and you can begin using this tag immediately.

lasso_type_extensions.zip (5.88 kb)

 

Comments

none

Email:


Password:



Newest

Most Popular