Plugins

The biggest feature of fluentscript is the concept of plugins. Almost every feature of fluentscript is a plugin. A fluentscript plugin extends the syntax and features at the various levels of the core fluentscript language. Plugins are relatively easy to write and there are several ( almost 40 ) examples of them in the codebase. All the core keywords/features of fluentscript ( var, if, while, for, function, etc ) are implemented as system level plugins. These system level plugins basically make fluentscript resemble javascript to a good degree. Aside from the system level plugins, there are additional plugins to extend datatypes, create custom expressions and statements among other additional features.

1. Aggregate

Description: Provides sum, min, max, avg, count aggregate functions for lists.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.AggregatePlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\AggregatePlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289916
// Aggregate plugin allows sum, min, max, avg, count aggregate functions to 
// be applied to lists of objects.

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = 0;

// Example 1: Using format sum of <expression>
result = sum of numbers;
result = avg of numbers;
result = min of numbers;
result = max of numbers;
result = count of numbers;

// Example 2: Using format sum(<expression>)
result = sum( numbers );
result = avg( numbers );
result = min( numbers );
result = max( numbers );
result = count( numbers );    
Back to top

2. Alias

Description: Provides using an alias for a keyword such as set for var inside a script.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.AliasPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\AliasPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1349987
// Alias plugin allows setting up alias of words to other words/tokens in a script

alias def to function
alias set to var

// After the alias configured
set result1 = 1
var result2 = 2
Back to top

3. AndOr

Description: Provides words "and" "or" to be used in place of && and ||
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.AndOrPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\AndOrPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1343614
// AndOr plugin allows the words "and" "or" to be used in place of && ||

if ( i > 30 and j < 20 ) then print works
if ( i < 30 or  j > 20 ) then print works        
    
Back to top

4. Bool

Description: Provides synonyms yes/no, on/off for bool values true/false.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.BoolPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\BoolPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1290454
// Bool plugin allows aliases for true/false

var result = on;
var result = off;
var result = yes;
var result = no;
Back to top

5. ConstCaps

Description: Allows defining constants with UPPERCASE letters.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.ConstCapsPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\ConstCapsPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1345095
// Const caps plugin allows the creation of constants using capital letters
// Constants are defined if all the letters are uppercase

// Example 1
MIN_SIZE = 10
MAX_SIZE = 20

// Example 2 : Multiple declarations with different constants.
FIXED = true, DUE_DATE = "2012-5-10"

// Example 3 : Using constants with other plugins ( Date, DateNumber )
STARTS = 3/10/2012
ENDS   = June 10th 2012
Back to top

6. Compare

Description: Provides synonyms for comparison operators
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.ComparePlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\ComparePlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1290453
    
// Compare plugin allows word aliases for the comparison operators. See list below
// 
// ALIAS:                FOR:
// "less than",          "<" 
// "before",             "<" 
// "below",              "<" 
// "is below",           "<" 
// "is before",          "<"
// "more than",          ">" 
// "after",              ">" 
// "above",              ">" 
// "is after",           ">" 
// "is above",           ">" 
// "less than equal",    "<="
// "less than equal to", "<="
// "more than equal",    ">="
// "more than equal to", ">="
// "is",                 "=="
// "is equal",           "=="
// "is equal to",        "=="
// "equals",             "=="
// "equal to",           "=="
// "not",                "!="
// "not equal",          "!="
// "not equal to",       "!="
// "is not",             "!="
// "is not equal to",    "!=" 

// Example 1: Using <
if a less than b then
if a before b    then 
if a below  b    then
if a is before b then
if a is below b  then

// Example 2: Using <=
if less than equal then
if less than equal to then

// Example 2: Using >
if a more than b then
if a after b     then 
if a above b     then
if a is after b  then
if a is above b  then    
Back to top

7. Date

Description: Provides word based representation for dates e.g December 21st 2011
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.DatePlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\DatePlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289913
// Date plugin allows date expressions in a friendly format like January 1 2001;
// Following formats are supported.

var date = January 1st 2012;
var date = Jan
date = jan 10
date = Jan 10 2012
date = Jan 10, 2012
date = Jan 10th
date = Jan 10th 2012
date = Jan 10th, 2012
date = January 10
date = January 10, 2012
date = January 10th
date = January 10th, 2012
date = January 10th 2012 at 9:20 am; 

if today is before December 25th 2011 then
    print Still have time to buy gifts
Back to top

8. DateNumber

Description: Provides representation of dates in the form of numbers e.g. 1/27/2012
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.DateNumberPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\DateNumberPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289913
// Date number plugin allow you to specify dates in the form of numbers as 
// samples below.
// The separator between months/days/years can be "/", "-", "\"

var date1 = 1/27/1978;
var date2 = 4-20-1979 at 4:30pm;
var date3 = 6\10\2012 at 7:45am;
Back to top

9. Day

Description: Provides alias and word based representation for days e.g Tuesday, Saturday, today, tommorrow
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.DayPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\DayPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289914
// Day plugin allows days of the week to be used as words. 
// lowercase and uppercase days are supported:
// 1. Monday - Sunday
// 2. monday - sunday
// 3. today, tomorrow, yesterday

var day = Monday;
var date = tomorrow at 3:30 pm;

if tommorrow is Saturday then
    print Thank god it's Friday
Back to top

10. Def

Description: Allows the word "def" to be used instead of "function" when declaring functions.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.DefPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\DefPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1333227
// Def plugin allows the word "def" to be used instead of "function" when declaring functions.
    
def add( a, b ) 
{ 
    return a + b
}
Back to top

11. Email

Description: Provides using emails without quotes such as john.doe@company.com
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.EmailPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\EmailPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1332189
// Email plugin enables recognition of emails as strings without using quotes,
// such as john.doe@company.com

email1 = john.doe@company.com
email2 = batman2012@gotham.com
email3 = super.man_1@metropolis.com
Back to top

12. Env

Description: Provides access to environment variables
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.EnvPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\EnvPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289918
// Env plugin allows direct access to environment variables via the "env" object.

// Example 1: Access to user variables only via the ".user" property of env.
result = env.user.path;

// Example 2: Access to system variables via the ".sys" property of env.
result = env.sys.path;

// Example 3: Access to environment variable without specifying sys or user.
result = env.path;
result = env.SystemRoot;
Back to top

13. Fluent Functions

Description: Provides ability to call functions with spaces in name. e.g. refill inventory
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.Fluent FunctionsPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\FluentFuncPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1334088
// Fluent Func plugins allows calling functions with spaces.
 

// @summary: finds doctors based on the zip code provided and 
// the specicality and accepted insurance
// @arg: name: zip,       type: number, desc: The zipcode, examples: 11201
// @arg: name: specialty, type: text,   desc: Specialization, examples: 'Familye'
// @arg: name: insurance, type: text,   desc: Name of insurance, examples: 'empire'
function find_doctors_by_zipcode ( zip, specialty, insurance )
{
    // ... some code here.
}


// @arg: name: product, desc: The product id,  type: text, examples: 'AS-1232'
// @arg: name: amount,  desc: Number of items, type: text, examples: 23
function refill_inventory( product, amount )
{
    // ... some code here.
}


// Call functions replacing "_" with space - parameters are optional if function call
// is on a single line.

// Example 1:
find doctors by zipcode 11200, 'family practice', 'empire insurance'
 
// Example 2:
refill inventory 'KL-131', 200
Back to top

14. Fluent Members

Description: Provides ability to access properties and methods on a custom c# object without the
"."( dot operator ).
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.Fluent MembersPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\FluentFuncPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1338334
 
 // Fluent Member plugin allows properties and methods to be accessed without "."

 // Supported ways of calling methods:
 // 1. class     property    
 // 2. class     method      
 // 3. instance  property
 // 4. instance  method 
 // 5. prop      class       
 // 6. prop      instance    
 // 7. method    class       
 // 8. method    instance
 
 // NOTE: In the above list "class" designates access to class level/static members
  
 
 // FLUENT CALLS
 // Example 1 : method instance
 activate user 'kreddy'   
  
 // Example 2 : method class arg
 delete file c:\temp.txt
 
 // Example 3 : class method arg
 file exists c:\temp.txt
 
Back to top

15. Function Wildcard

Description: Provides a 'wildcard' like ability to functions so that 2 functions that have different names are
associated with the same function.

Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.Function WildcardPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\FuncWildCardPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1346790
// FuncWildCard plugin allows using functions with changing names allowing
// a single function to handle function calls with different names.
 

// @summary: A single function can be called using wildcards
// @arg name: wildcard,  type: string, example: "by name password email role"
// @arg name: wildcardParts, type: list, example: ['by', 'name' 'password', 'email', 'role' ]
// @arg name: args, type: list, example: [ 'kreddy', 'admin' ]
function "create user by" * ( wildcard, wildcardParts, args ) 
{
    person = new Person()
    
    // Option 1: Use the full name to determine what to do
    if wildcard== "name password email role" 
    {
        person.Name = args[0]
        person.Password = args[1]
        person.Email = args[2]
        person.Role = args[3]
    }
    
    // Option 2: Use the individual name parts
    for( var ndx = 0; ndx < wildcardParts.length; ndx++)
    {
                part = wildcardParts[ndx]

        if part == "name" then person.Name = args[ndx]
        else if part == "password" then person.Password = args[ndx]
        else if part == "email"    then person.Email = args[ndx]
        else if part == "role"     then person.Role = args[ndx]
    }
    person.Save()
}


create user by name email ( "user02", "user02@abc.com" )
create user by name password email role ( "user01", "password", "user01@abc.com", "user" )
Back to top

16. HashComment

Description: Provides single line comment using # instead of //
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.HashCommentPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\HashCommentPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1344512
// Allows using # for single line comments instead of //

#  Single line comment 

// Also single line comment
Back to top

17. Holiday

Description: Provides holiday names e.g. Christmas, Independence Day, Christmas Eve, New Years
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.HolidayPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\HolidayPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289952
// Holiday plugin allows references to dates using Holiday names such as:
// Christmas
// Independence day
// Valentines day
// New Years

if today is New Years 2012 then 
    print happy new year!
Back to top

18. Linq

Description: Provides partial support for linq-like queries on lists.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.LinqPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\LinqPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1290456
// Linq plugin is a Light-weight and partial version of Linq style queries and comprehensions
// NOTE: This has limited functionality as of this release.
var books = [ 
                { name: 'book 1', pages: 200, author: 'homey' },
                { name: 'book 2', pages: 120, author: 'kdog' },
                { name: 'book 3', pages: 140, author: 'homeslice' }
            ];
 
// Case 1: start with source <books> and system auto creates variable <book>
var favorites = books where book.pages < 150 and book.author == 'kdog';

// Case 2: using from <variable> in <source>
var favorities = from book in books where book.pages < 150 and book.author == 'kdog';
Back to top

19. Log

Description: Provides logging ability to either the console or a log file
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.LogPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\LogPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1349989
// CONFIGURATION    
// 1. Set level to "error" and log to console
log.configure( 'error', 'console' )

// 2. Fluen mode, set level = "error" and log to console.
log configure 'error', 'console'

// 3. File logging: set level to "warn" and log to file
log configure 'warn', 'c:/temp/myapp.log'

// 4. File logging: set level to "warn" and log to file with a name format.
// log file name will be converted to "myapp-2012-07-15-time-09-45-12.log"
log configure 'warn', 'c:/temp/myapp.log', '${yyyy-MM-dd}-time-${HH-mm-ss}'

// 5. Get the current log level : this is only a getter property
print( log.level )


// LOGGING   
// 1. Using OO ( object oriented ) syntax e.g. "log.<method>"
log.error( 'an error occurred' )

// 2. Using OO syntax with formatting
log.warn( 'could not load {0}', 'blogs' )

// 3. Using OO syntax in fluent mode
log info 'finished updating data'

// 4. functional mode - without prefixing with "log."
error 'unable to initialize'
warn 'could not send notification'
info 'finished updating data'

// NOTES: Log-level
// 1. fatal
// 2. error
// 3. warn
// 4. info
// 5. debug
// 6. put   ( this will always output the log message )    
Back to top

20. Marker

Description: Provides markers/comments that are checked for syntax
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.MarkerPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\MarkerPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1293552
// Marker plugin allows you to mark code like comments but in the form of statements
// so that syntax is checked. This allows for structured comments.

// Case1 : Todo
@todo: i need to add extra comments here

// Case2 : Todo quoted
@todo: "I need to add extra checks here and
also do additional cleanup of code"

// Case 3 : bug
@bug: 'this bug related to parsing'
@bug: this bug related to johns code!
Back to top

21. MachineInfo

Description: Provides markers/comments that are checked for syntax
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.MachineInfoPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\MachineInfoPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1349266
// Machine info plugin provides variable names to get information about the machine
    
print ( @machine        )
print ( @domain         )
print ( @user           )
print ( @cmdline        )

print ( mac.numprocs    )
print ( mac.osname      )
print ( mac.osversion   )
print ( mac.osspack     )

print ( mac sysdir      )
print ( mac memory      )
print ( mac version     )
print ( mac currentdir  )  

// NOTES:
// Any of the properties above can be prefixed with either
// 1. mac.<property>
// 2. mac <property>
// 3. @<property>
Back to top

22. Money

Description: Provides dollar sign $ support for numbers.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.MoneyPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\MoneyPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289917
// Money plugin simply allows the $ to be prefixed to numbers.

var salary = $225.50;
if salary is more than $160 then
    print I worked overtime.
Back to top

23. Percent

Description: Provides using a percent sign % after a number to indicate percentage
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.PercentPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\PercentPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1357973
// Percent plugin allow using a percent sign % after a number to indicate percentage
 
a = 25%
b = 75 %
 
// NOTES
// 1. You can not use this when an identifier comes after the "%"
// 2. You can not use this when another number comes after the "%"
Back to top

24. Print

Description: Provides functionality to print to console a line of text without wrapping around quotes.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.PrintPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\PrintPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1290455
// Print plugin derives from the "TakeoverPlugin"
// Takeovers are keywords that consume the entire line of text in the script
// after the keyword. 
// In this case of the Print plugin, it consume the rest of the line and you
// don't need to wrap text around quotes.

var language = 'fluentscript';
print No need for quotes in #{language} if text to print is on one line    
Back to top

25. Records

Description: Supports representing data in a table/csv like format.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.RecordsPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\RecordsPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1296274
   
   // Supports representing data in a table/csv like format
   // 1. The top most row must the the header names without spaces
   // 2. The header names must be separated by "|"
   // 3. The columns in the data rows must be separated by either "|" or ","
   
   set books1 = [  
                    name          |     pages   |  artist
                    'batman'     |     110     |  'john'
                    'xmen'       |     120     |  'lee'
                    'daredevil'  |     140     |  'maleev'
                ];
    
    
    set books2 = [  
                    name          |     pages   |  artist
                    'batman'     ,     110     ,  'john'
                    'xmen'       ,     120     ,  'lee'
                    'daredevil'  ,     140     ,  'maleev'
                 ];
Back to top

26. Round

Description: Provides rounding of numbers using round, round up, round down.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.RoundPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\RoundPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1292482
// Round plugin provides functions to round, round up or round down numbers.

var a = 2.3;

// Rounds the number using standing round technique of .4
var b = round 2.3;

// Gets rounded up to 3
var c = round up 2.3; 

// Gets rounded down to 2
var d = round down 2.3;
Back to top

27. Run

Description: Provides alternative ways of calling a function.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.RunPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\RunPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289922
// Run plugin provides alternate way to call a function for fluid syntax.
// Notes: 
// 1. The keyword "function" can be aliased with the word "step"
// 2. The name of a function can be in quotes with spaces.

// This is a function with 0 parameters so parentheses are not required
step Cleanup
{
    // do something here.
}
 

// This is a function with string for name and 0 parameters so parentheses are not required
step 'Clean up'
{
    // do something here.
}

// Example 1: Call function normally
Cleanup();

// Example 2: Call function using Run keyword
run Cleanup();

// Example 3: Call function using run without parenthesis for function name.
run Cleanup;

// Example 4: Call function with spaces in name using run with quotes for function name.    
run 'Clean up';

// Example 5: Call function with spaces using run and keyword.
run step 'Clean up';
Back to top

28. Set

Description: Allows the word "set" to be used instead of "var" when declaring variables
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.SetPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\SetPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1333226
// Set plugin allows using the word 'set' instead of 'var' when declaring variables
    
set age = 33
Back to top

29. Sort

Description: Provides ability to sort of list of either basic types of objects with properties.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.SortPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\SortPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1293513
// Sort plugin allows you to sort a list

// Case 1: sort list of basic types
var numbers = [4, 3, 1, 7, 5, 2, 6];
sort numbers asc
sort numbers desc

// Case 2: start with source <books> and system auto creates variable <book>
var books = [ 
                { name: 'book 1', pages: 200, author: 'homey' },
                { name: 'book 2', pages: 120, author: 'kdog' },
                { name: 'book 3', pages: 140, author: 'homeslice' }
            ];     
sort books by book.pages asc
sort books by book.pages desc
sort i in books by i.pages desc
 
Back to top

30. Step

Description: Allows the word "step" to be used instead of "function" when declaring functions.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.StepPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\StepPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1343616
// Step plugin allows the word "step" to be used instead of "function" when declaring functions.
    
step add( a, b ) 
{ 
    return a + b
}
Back to top

31. Suffix

Description: Provides enables the use of functions as postfix operators on constants
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.SuffixPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\SuffixPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1331001
// Suffix plugin enables the use of functions as postfix operators on constants.

// create hours with timespan object using number of hours supplied
function hours( num )
{
     return new TimeSpan( 0, num, 0 , 0 )
}

// create minutes with timespan object using number of minutes supplied
function minutes( num )
{
    return new TimeSpan(0, 0, num, 0 )
}

// timespan objects can be added together
var time = 3 hours + 20 minutes;
 
Back to top

32. Swap

Description: Provides ability to swap values of 2 variables in 1 statement e.g swap a with b;
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.SwapPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\SwapPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289912
// Swap plugin provides 1 line statement to swap variables.

var a = 1, b = 2;

// Swap values in 1 statement.
// Instead of needing a third variable.
swap a with b;
Back to top

33. Time

Description: Provides time representation in format 12:30 pm
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.TimePlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\TimePlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289920
// Time plugin provides a convenient way to represent time in fluent syntax.

var t = 12:30 pm;

if t is 12:30 pm then
    print it's time to go to lunch!
Back to top

34. TypeOf

Description: Provides checking of data types
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.TypeOfPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\TypeOfPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1289920
// Type of plugins gets the type of an expression.

datType = typeof 'fluentscript'
datType = typeof 12            
datType = typeof 12.34         
datType = typeof true          
datType = typeof false         
datType = typeof new Date()    
datType = typeof 3pm           
datType = typeof names         
datType = typeof lang          
Back to top

35. Units

Description: Provides usage of units of measure such as length, weight
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.UnitsPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\UnitsPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1331000
 
 // Units plugin allows the usage of units of measure such as length, weight
 
 enable units;

 // inches, bytes are base types. everything is relative to the base types
 // In examples below, the units will get converted to the measurement on the
 // left hand side. e.g. 3 feet + 5 inches will get converted to datatype
 // LUnit with value in feet and basevalue in inches.    
 var result1 = 3 feet + 5 inches + 10 yards + 2 miles
 var result2 = 1 meg + 30 kb + 50 B + 2 gigs

 // Each unit of measure is based on a basevalue with a relative value.
 // e.g. 
 // type             basevalue   relative values
 // length           inches      feet, yard, mile
 // weight           ounces      milligrams, grams, kilograms
 // computerspace    bytes       kilobytes, megabytes, gigabytes

 print feet: #{result1.Value} , inches: #{result1.BaseValue}
 print megs: #{result2.Value} , bytes:  #{result2.BaseValue}
  
Back to top

36. Uri

Description: Provides url and folder representations as strings without quotes.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.UriPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\UriPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1293481
// Uri plugin allows you urls and file paths without surrounding them in 
// quotes as long as there are no spaces. These are interpreted as strings.

var url1 = www.yahoo.com;
var url2 = http://www.google.com;
var url3 = http://www.yahoo.com?user=kishore%20&id=123;
var file1 = c:\users\kishore\settings.ini;
var file2 = c:/data/blogposts.xml;

// Since this file has a space in it... you have to surround in quotes.
var file3 = 'c:/data/blog posts.xml';
Back to top

37. VariablePath

Description: Provides representation of file paths in more convenient ways.
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.VariablePathPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\VariablePathPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1358170
// Provides representation of file paths in more convenient ways

// Set the home dir
home    = c:\myapp\
script  = "build"

// Case 1: Typical approach
file = home + "\\build\\script.xml"    

// Case 2: VariablePath plugin simple case
// The @ is optional on the first variable in the path.
file = home\build\script.xml
file = @home\build\script.xml
 
// Case 3: Use variables in the path by prefixing @
file = @home\build\@script.xml
file = @home\build\@script-build.xml
file = @home\build\@script.build.xml
 
// Case 4: Use variables by prefixing with @ and surrounding by {}
// This is only needed when separating a variable name from another variable name.
file = @home\build\@{script}build.xml
file = @home\build\@{script}-build.xml
file = @home\build\@{script}.build.xml
 
 
// NOTE:
// This plugin is useful since the beginning drive letter ( "c:\" or "d:\" )
// should NOT be hardcoded. This plugin removes the need to:
// 1. use "+" for appending parts of the path
// 2. use doublequotes for wrapping the path name e.g. "\build\appbuild.fs"
Back to top

38. Words

Description: Provides ability to use multi-word strings. e.g fluent script = 'fluent script'
Date: 7/20/2012
Version: 0.9.8.5
Type: CommonLibrary.dll - ComLib.Lang.Extensions.WordsPlugin
Core source: src\Lib\CommonLibrary.NET\_Core\Lang\Plugins\Parser\WordsPlugin.cs
Example full: http://commonlibrarynet.codeplex.com/SourceControl/changeset/view/75944#1311195
// Words plugin enables the registration of custom text/words into the language
// which are then immediately available for use. 
// They are basically an alternative to not having to surround text in double quotes
// Only 
@words( nasdaq, fluent script )

if ( "fluent script" == fluent script ) then
    print( "works" )
Back to top

Last edited Jul 20, 2012 at 9:38 PM by kishore_reddy, version 22

Comments

No comments yet.