| Link | lasso_type_extensions |
| Author | Greg Willits |
| Category | Data Type |
| Version | 8.x |
| License | Public Domain |
| Posted | 13 Nov 2007 |
| Updated | 13 Nov 2007 |
| 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 :-)
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)
Example:
<td>[(field:'description')->(getWords:25)]...</td>
Available tags:
->getLeft
->getRight
->getWords
->getSentences
->getParagraphs
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
// see above
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.
No comments
©LassoSoft Inc 2012 | Web Development by Treefrog Interactive Inc | Privacy | Legal terms and Shipping | Contact LassoSoft