mojodna / linq.js Goto Github PK
View Code? Open in Web Editor NEWGit mirror of http://linqjs.codeplex.com/
Home Page: http://linqjs.codeplex.com/
Git mirror of http://linqjs.codeplex.com/
Home Page: http://linqjs.codeplex.com/
/*-------------------------------------------------------------------------- * linq.js - LINQ for JavaScript * ver 2.2.0.2 (Jan. 21th, 2011) * * created and maintained by neuecc <[email protected]> * licensed under Microsoft Public License(Ms-PL) * http://neue.cc/ * http://linqjs.codeplex.com/ *--------------------------------------------------------------------------*/ Features * implement all .NET 4.0 methods and many extra methods (inspiration from Rx, Achiral, Haskell, Ruby, etc...) * complete lazy evaluation * Full IntelliSense support for VisualStudio * two versions - linq.js(Normal) and jquery.linq.js(jQuery plugin) * support Windows Script Host * binding for Reactive Extensions for JavaScript(RxJS) * NuGet install support(linq.js, linq.js-jQuery, linq.js-Bindings) Tutorial linq.js --- <script type="text/javascript" src="linq.js"></script> <script type="text/javascript"> // load linq.js -> Enumerable Enumerable.Range(1,10).... </script> jQuery.linq.js (jQuery plugin) --- <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.linq.js"></script> <script type="text/javascript"> // load jquery.linq.js -> $.Enumerable $.Enumerable.Range(1,10).... </script> jQuery plugin version is added two methods. * Enumerable.prototype.TojQuery (Enumerable to jQuery object) * jQuery.prototype.toEnumerable (jQuery object to Eunmerable) bindings/linq.jquery.js --- <script type="text/javascript" src="linq.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="linq.jquery.js"></script> <script type="text/javascript"> Enumerable.Range(1,10).TojQuery()... </script> jQuery Bindings added two methods(TojQuery and toEnumerable) There are same as plugin version. binding/linq.rx.js --- more tutorial see linq.js CodePlex's Documentation <script type="text/javascript" src="rx.js"></script> <script type="text/javascript" src="linq.js"></script> <script type="text/javascript" src="linq.rx.js"></script> or <script type="text/javascript" src="rx.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.linq.js"></script> <script type="text/javascript" src="linq.rx.js"></script> -vsdoc.js --- Visual Studio 2010 - as is. Visual Studio 2008 - install SP1 and Patch KB958502. linq-vsdoc.js(or jquery.linq-vsdoc.js) puts in same directory. if not html then write xml referrence tag on top. for example /// <reference path="linq.js" /> for Windows Script Host --- create wsf file. example <job id="Main"> <script language="JScript" src="linq.js"></script> <script language="JScript"> var dir = WScript.CreateObject("Scripting.FileSystemObject").GetFolder("C:\\"); var itemNames = Enumerable.From(dir.SubFolders) .Concat(dir.Files) .Select("$.Name") .ToArray(); </script> </job> How to use CodeSnippets --- open Visual Studio 2010's Code Snippet Manager(Ctrl+K, Ctrl+B) click import button and select snippets/*.snippet func0 = function () { return /*cursor*/} func1 = function (x) { return /*cursor*/} func2 = function (x, y) { return /*cursor*/} action0 = function () { /*cursor*/} action1 = function (x) { /*cursor*/} action2 = function (x, y) { /*cursor*/} efrom = Enumerable.From() erange = Enumerable.Range() jqfrom = $.Enumerable.From() jqrange = $.Enumerable.Range() // history 2011-01-21 ver 2.2.0.2 Add bindings/linq.jquery.js Info NuGet Package Added to NuGet Gallery 2011-01-18 ver 2.2.0.1 Change ToObservable(linq.rx.js) receive scheduler OrderBy optimized performance minifier/jQuery genereted by F# Script Bug Fix remove two not declared var 2010-06-28 ver 2.2.0.0 Add Method TakeFromLast ToJSON Add File rewrite all tests from JSUnit to QUnit binding for RxJS(Reactive Extensions for JavaScript) add RxVSDocGenerator(rx-vsdoc.js generator for RxJS) add code snippets for Visual Studio Change wrap array (Enumerable.From(array)) optimized performance Grouping optimized performance Enumerable.From(array)'s array allow function element if TakeExceptLast's count under 0 then return all sequence add default iterator variable's second, third, fourth($$, $$$, $$$$) Bug Fix MemoizeAll can't work when sequence contains undefined Sum can't work when sequence is empty(fixed return 0) vsdoc's Grouping elementSelector is short of summary 2010-05-18 ver 2.1.0.0 Add Class Dictionary Lookup Grouping OrderedEnumerable Add Method ToDictionary MemoizeAll Share Let Add Overload Join (compareKey) GroupJoin (compareKey) GroupBy (compareKey) PartitionBy (compareKey) ToLookup (compareKey) Breaking Change return type of ToLookup -> from Array to Lookup Enumerate type of GroupBy,PartitionBy -> from KeyValuePair to Grouping Change implimentation of OrderBy/ThenBy changed CLR compatible (maybe...) Bug Fix GroupBy Key auto converts to string All set methods do not distinction between boolean and string and number Scan and All Paging Methods do not work if sequence contains undefined 2010-04-23 ver 2.0.0.0 all code rewrite from scratch. enumerator support Dispose. namespace changed E, Linq.Enumerable -> Enumerable delete methods ToJSON ToTable TraceF RangeDownTo rename methods ZipWith -> Zip Slice -> BufferWithCount Times -> Generate change methods From (add argument - WSH's IEnumerable) Trace (write to console.log) RangeTo (contains downto) OrderBy/ThenBy (support string sort) add methods MaxBy MinBy OfType Catch Finally PartitionBy Alternate TakeExceptLast RepeatWithFinalize add files jquery.linq.js and minifier file by Microsoft Ajax Minifier(-HC) delete files linq.xml.js (move to branches) linq.tools.js (move to branches and rename linq.utils.js) 2009-06-15 ver 1.3.0.2 Add Make, CascadeDepthFirst/CascadeBreadthFirst. ForEach support continue/break. 2009-06-05 ver 1.3.0.1 IntelliSense Support. dom functional construction(Linq to Xml). 2009-05-24 ver 1.3.0.0 Add - Unfold, Matches, Insert, IndexOf, LastIndexOf Change - From<String> Add linq.tools.js - Stopwatch.Bench, StringBuilder.Reverse, HashSet 2009-05-17 ver 1.2.0.3 Add linq.tools.js - Stopwatch, DateUtility.IsLeapYear, DateUtility.DaysInMonth 2009-05-16 ver 1.2.0.2 Add new Sample - linq.tools.js 2009-05-07 ver 1.2.0.1 FixBug - ToJSON Add - Times Add Overload step - Range, RangeDown, RangeTo, RangeDownTo, ToInfinity, ToNegativeInfinity 2009-04-26 ver 1.2.0.0 FixBug - Set Operations(Disctint,Union,Intersect,Except) FixBug - ToJSON Add compareSelector - Contains, Distinct, Except, Intersect, SequenceEqual, Union 2009-04-19 ver 1.1.0.0 Add new Sample - linqfader Add linq.xml.js 2009-04-10 ver 1.0.0.1 Add - Choice Add - RangeTo Add - RangeDownTo Fix - Cycle 2009-04-04 1st Release
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.