Commit Graph

529 Commits

Author SHA1 Message Date
cloudhead
a9b47a026c added ECMAScript 4 compatibility 2010-05-17 22:57:11 -04:00
cloudhead
a3f252b727 don't cache return values. %() plays nice with strings 2010-05-13 20:15:59 -04:00
cloudhead
b38f5325c9 Refactored some of the evaluation mechanisms
- Don't call `eval` from `toCSS`
- Every node responds to `eval`
2010-05-07 23:21:16 -04:00
cloudhead
8ed7d8c9b8 Evaluate arguments before passing them to mixin.
Closes #23
2010-05-07 00:41:09 -07:00
cloudhead
8ef8bfed8c rename variables() to variable() 2010-05-07 00:40:21 -07:00
cloudhead
3c89d3b9bd evaluate Values of length > 1 properly 2010-05-06 09:46:36 -07:00
cloudhead
94780c2f72 moved index.js to lib/less 2010-05-05 00:23:45 -04:00
cloudhead
7155f44f43 be more flexible, pattern matching 2010-05-04 20:37:06 -04:00
cloudhead
0ec53f74e0 make operations left-associative Closes #20 2010-05-03 14:25:12 -04:00
cloudhead
839da27353 fix timestamps not being compared properly, when loading a .less 2010-04-30 15:22:58 -04:00
cloudhead
861bc2972a fix error styles 2010-04-30 15:09:36 -04:00
cloudhead
d9dd858160 fix for when css isn't available in local storage 2010-04-30 14:49:58 -04:00
cloudhead
1d9b95f9e6 Evaluate function calls properly.
- `fun(f())` is now possible
- Anonymous can take normal strings
- Tests for `%()`
2010-04-30 14:07:05 -04:00
cloudhead
30773f942f New % function, to perform string interpolation 2010-04-30 14:06:36 -04:00
cloudhead
0aaf715232 fixed selector attributes not parsing with a '-' 2010-04-28 17:29:22 -04:00
cloudhead
4347211270 use a timer to check when the dom is ready, before showing errors 2010-04-26 14:22:37 -04:00
cloudhead
210e2e1886 automatically set less.env in certain conditions 2010-04-26 14:22:18 -04:00
cloudhead
535a0301ba Local Storage caching, and .less loading from disk
- .less files can now be loaded directly from disk
- nice error messages
- use HTML 5 storage to cache parsing
2010-04-25 19:42:49 -04:00
cloudhead
f6d1cf981e Overhaul of the error system
The parse() function no longer assumes the command-line is the output
device. We use less.writeError in node.js.
2010-04-25 19:39:21 -04:00
cloudhead
8c762b9e26 Support for pattern-matching on mixin calls. 2010-04-25 00:09:40 -04:00
cloudhead
7555c09707 More accurate parse error messages
Because of the backtracking, we lose the previous point of failure.
The solution is to store the furthest point the parser has parsed to,
when backtracking, and using it when showing parse errors.
2010-04-25 00:06:45 -04:00
cloudhead
1c52d6ac4d use a hash to store variables, fixes variable redifinition bug 2010-04-23 17:52:36 -04:00
cloudhead
1e6cbbf61d fixed bug with passing variables to functions 2010-04-23 13:49:55 -04:00
cloudhead
6778f51fc3 Added a couple colour functions
saturate, desaturate, lighten, darken, greyscale.
2010-04-23 13:36:50 -04:00
cloudhead
f0942511bb Fixed HSL
HSL colors weren't working properly. The values weren't being normalized
to {0, 1}.
2010-04-23 13:35:36 -04:00
cloudhead
7be2b22cfb the e() LESS function
used to escape strings in values.
Added Anonymous node to handle things like this.
2010-04-22 19:42:02 -04:00
cloudhead
1b5452652a refactored mixin.definition.eval 2010-04-22 13:47:01 -04:00
cloudhead
444401dc3c Fixed mixin calls not working from dynamic mixins
Dynamic mixins aren't treated enough like Rulesets.
There is some code duplication which needs to be cleaned up,
ideally they should share a prototype.
2010-04-22 13:34:49 -04:00
cloudhead
23640fe116 Fix dynamic mixins with nested rules
Dynamic mixins with more than one level of nesting wouldn't work.
This is now fixed. Also refactored mixin.definition.eval a little.
2010-04-22 13:07:41 -04:00
cloudhead
ac7916aa87 Reorganized some of the parsing rule order
- Fix for "{" not parsing
- Use some backtracking when necessary,
  it's prettier than crazy lookaheads.
2010-04-21 10:12:29 -04:00
cloudhead
03e669be21 less.js now works in firefox, safari and chrome 2010-04-01 22:37:59 -04:00
cloudhead
9a34a05555 @import with .css files no longer precompiles. This gives us some extra
flexibility.
2010-03-30 15:32:38 -04:00
cloudhead
1721e02ae7 We aren't using adapters anymore. 2010-03-29 22:56:07 -04:00
cloudhead
92bdf598c7 quote 'import' so it doesn't freak out 2010-03-29 22:24:33 -04:00
cloudhead
30bf1ff7f3 fix optimization option wrongly scoped 2010-03-29 22:13:36 -04:00
cloudhead
400427e47a merge 2010-03-27 02:27:59 -04:00
cloudhead
24bba952c7 removed lib/ext, moved lib/less.js to /index.js, moved Array/find to tree.find 2010-03-27 02:26:55 -04:00
cloudhead
3a474c9bae Created a compat.js file in build/, for browser compatiblity, moved trim() in
there. LESS builds to dist/ now.
2010-03-27 02:24:39 -04:00
cloudhead
41d701de1d Doc for Call, Comments, Operation.. 2010-03-23 18:33:17 -04:00
cloudhead
aad5ff6385 putting the operate function in operation.js, to facilitate access from browser code 2010-03-23 01:19:12 -04:00
cloudhead
a2133e4b78 functional browser based parsing + css node creation 2010-03-23 01:16:59 -04:00
cloudhead
3287a6ce2c fix typo in browser.js 2010-03-22 23:24:05 -04:00
cloudhead
be5d1999e3 no need for context passing 2010-03-22 23:15:25 -04:00
cloudhead
edf68ec0aa String/trim() 2010-03-22 23:13:47 -04:00
cloudhead
5977640040 optimization level is taken from env now 2010-03-22 23:13:24 -04:00
cloudhead
ca43e06db9 browser.js init -- very basic browser support - Makefile also builds for browser now 2010-03-22 23:12:58 -04:00
cloudhead
a349b9b3fb added render() convenience method. Returns an EventEmitter if no callback was passed. 2010-03-22 21:34:05 -04:00
cloudhead
259a4ad451 refactored the import mechanism, added some doc 2010-03-22 20:59:49 -04:00
cloudhead
336b655e16 allow for passing a context of evaluation to the importer 2010-03-22 20:59:11 -04:00
cloudhead
94f81a5fe0 removed unnecessary require 2010-03-22 20:15:06 -04:00
cloudhead
3253afad27 asynchronous import functionality! All tests passing. 2010-03-21 19:18:47 -04:00
cloudhead
ef97105ce3 made parser reentrant for import support 2010-03-21 19:17:37 -04:00
cloudhead
80905fdc58 no need to pass starting values to toCSS() anymore 2010-03-19 20:14:35 -04:00
cloudhead
40f8671bcd fix to undefined mixin error message 2010-03-19 19:46:37 -04:00
cloudhead
5ee3d47e11 operations.less now passes 2010-03-19 18:47:17 -04:00
cloudhead
10965a9034 allow for operations with no spaces, such as '4+5' 2010-03-19 18:46:42 -04:00
cloudhead
ef61aec5f1 refactored operand(), and take away parsing of -() 2010-03-19 18:05:36 -04:00
cloudhead
f973deec28 refactored rule() cause the closure slows things down too much for some reason 2010-03-19 17:56:43 -04:00
cloudhead
215ef05907 added import.js to less.js 2010-03-19 17:50:48 -04:00
cloudhead
53996b2364 parse() is now asynch, and uses a callback 2010-03-19 17:50:35 -04:00
cloudhead
5088fca537 import.js init 2010-03-18 18:44:03 -04:00
cloudhead
2c0dc223ce Parse @import properly. 2010-03-18 18:13:02 -04:00
cloudhead
00273d452c don't use process.mixin, it's deprecated 2010-03-18 16:42:25 -04:00
cloudhead
79a3b58fa8 fixed scope problem in parser 2010-03-18 14:49:10 -04:00
cloudhead
854f65f079 Refactored parsers.rule 2010-03-13 20:15:44 -05:00
cloudhead
61a7b2e9e7 Added lots more documentation to the parser 2010-03-13 20:14:44 -05:00
cloudhead
fe732e843c refactor of module system. Things work properly now, and it's all much cleaner. 2010-03-13 03:34:48 -05:00
cloudhead
e0623094fa part 2 of the comment pass 2010-03-12 15:03:05 -05:00
cloudhead
be11ab6b89 some eval functions for good measure 2010-03-11 15:36:50 -05:00
cloudhead
9c84b50d5b we need to make sure we're not eating a '-' in the operation parsing, it fucks up our generation of functions which start with a - 2010-03-11 15:36:32 -05:00
cloudhead
8adac6569e output directives properly 2010-03-11 15:35:23 -05:00
cloudhead
553aaecf6a font property parsing, mainly the 'small/12px' part. 2010-03-11 15:34:57 -05:00
cloudhead
9c0fb7174e Cache Selector/toCSS() 2010-03-09 23:58:05 -05:00
cloudhead
77b2a36059 Cache mixin lookups for a nice speed boost. 2010-03-09 23:56:49 -05:00
cloudhead
c4413facad did some refactoring in the parser, so we don't need to pass variables
to the $() function anymore. We also don't need to pass arrays around.
2010-03-08 23:45:57 -05:00
cloudhead
acd46cf7c6 refactoring of prototypes 2010-03-07 23:38:10 -05:00
cloudhead
07837a83a7 refactored variable lookup 2010-03-07 23:33:26 -05:00
cloudhead
6228f4a6d2 cache ruleset lookup 2010-03-07 23:11:20 -05:00
cloudhead
a68a2fc6bf cache variable lookup for a 20% speedup 2010-03-07 23:02:16 -05:00
cloudhead
be893c5993 support for nested rulesets inside dynamic mixins, with lexical scoping 2010-03-07 20:20:50 -05:00
cloudhead
d8838a01d0 eval() for Ruleset 2010-03-07 18:50:58 -05:00
cloudhead
7666c71b80 if something other than a Value was passed to the Rule constructor, wrap it in a Value 2010-03-07 18:50:31 -05:00
cloudhead
23775bda9b implemented dynamic mixins 2010-03-07 18:49:54 -05:00
cloudhead
57013ebdf9 comments.js init 2010-03-06 17:54:11 -05:00
cloudhead
2b0853de81 comments, wooh! 2010-03-06 17:53:55 -05:00
cloudhead
808bd55a95 let us just assume that a rule which contains subrules is a ruleset 2010-03-06 17:34:08 -05:00
cloudhead
7b151447b1 peek() can take a string too now 2010-03-05 21:51:45 -05:00
cloudhead
289a775e83 simplified rule regex 2010-03-05 21:45:23 -05:00
cloudhead
b2d242ba39 some optimizations to make the parser run faster 2010-03-05 21:08:41 -05:00
cloudhead
d08c1fe559 basic directive css output 2010-03-05 19:23:39 -05:00
cloudhead
f0f425de33 move node/ -> tree/ 2010-03-05 19:19:14 -05:00
cloudhead
287ecff0cf added version number to less.js 2010-03-05 15:33:50 -05:00
cloudhead
0af5632531 renamed string to quoted, to match the node 2010-03-05 14:56:27 -05:00
cloudhead
cd5bddff99 when parsing a string, capture the content too 2010-03-05 14:55:21 -05:00
cloudhead
00279d8a06 in an operation, inherit the unit of either operand 2010-03-05 13:36:24 -05:00
cloudhead
74ec956602 just return self if trying to evaluate compound values, seeing as we use eval() for variable lookup/eval 2010-03-05 13:32:07 -05:00
cloudhead
181712e662 minor refactoring in rulesets output 2010-03-05 11:42:52 -05:00
cloudhead
76d4e08b30 the first element of a selector effectively has a descendant combinator, if none was specified 2010-03-05 11:42:13 -05:00
cloudhead
476581f77a getting combinators to output properly. some little hacks, but it beats having a white-space sensitive grammar 2010-03-05 11:39:39 -05:00
cloudhead
b4f3e9029c output strings in attribute selectors properly 2010-03-04 16:13:48 -05:00
cloudhead
7e3d8bda32 if a function isnt found, just output it literally 2010-03-04 16:13:19 -05:00
cloudhead
7539ef7323 fixed closing bracket for alpha not showing 2010-03-04 13:55:00 -05:00
cloudhead
6b938971df fixed closing bracket for url not showing 2010-03-04 13:54:32 -05:00
cloudhead
2644014bdf refactored Ruleset/find() method, and added a match() method to Selector, to do selector matching. 2010-03-04 13:50:52 -05:00
cloudhead
3e8abb2abf typo 2010-03-04 13:48:37 -05:00
cloudhead
9cf5f74d31 Element constructor creates new Combinator if a string was passed 2010-03-04 13:48:24 -05:00
cloudhead
756e8d2434 skip variables in toCSS 2010-03-04 01:40:21 -05:00
cloudhead
4aea44f8f8 when evaluating a mixin, compile all matches, instead of just the first one 2010-03-03 22:13:14 -05:00
cloudhead
a1c8d50699 mixin definition constructor init 2010-03-03 21:22:11 -05:00
cloudhead
4767b264e7 basic mixins with namespaces working. swoosh. 2010-03-03 21:21:32 -05:00
cloudhead
fe0ed621b9 added ext/ folder, to hold some core prototype functions 2010-03-03 21:20:07 -05:00
cloudhead
095523bf59 Element constructor defaults to an empty Combinator, if none specified 2010-03-03 20:37:40 -05:00
cloudhead
e9c6645b2c end rule 2010-03-03 12:01:17 -05:00
cloudhead
e6c5c57755 inverse style to stylize 2010-03-03 12:01:06 -05:00
cloudhead
efab821115 parse mixins, including namespace. For now, lets focus on one mixin per rule 2010-03-03 12:00:55 -05:00
cloudhead
14bc6def86 a little clearer ParseError output 2010-03-03 11:59:30 -05:00
cloudhead
3e0ad2bf73 eval method for Keyword 2010-03-03 11:59:08 -05:00
cloudhead
76eb332b24 Use anonymous functions for the parsers.. It saves us some file size. 2010-03-02 14:58:06 -05:00
cloudhead
46060d466f evaluate arguments, before passing them to a function 2010-03-01 21:48:46 -05:00
cloudhead
2682b6dc16 support for hsl(), rgb() etc 2010-03-01 21:48:19 -05:00
cloudhead
60ac2374c9 get functions.js working 2010-03-01 20:03:43 -05:00
cloudhead
6ea12f7aa5 mixin.js init 2010-03-01 19:47:59 -05:00
cloudhead
0c6366faaf functions.js init 2010-03-01 19:47:48 -05:00
cloudhead
f70f6a542c merge node->tree changes 2010-03-01 19:47:32 -05:00
cloudhead
69d973ed29 tree.js init 2010-03-01 15:32:49 -05:00
cloudhead
5ee0209e8a don't use Usage: node [options] script.js [arguments]
-v, --version      print node's version
  --debug[=port]     enable remote debugging via given TCP port
  --debug-brk[=port] as above, but break in node.js and
                     wait for remote debugger to connect
  --cflags           print pre-processor and compiler flags
  --v8-options       print v8 command line options

Documentation can be found at http://nodejs.org/api.html or with 'man node', as it's, um, used by node. Use  instead. Also moved tree.node requires in tree.js
2010-03-01 15:32:21 -05:00
cloudhead
1032c84b98 refactored selector generation a little 2010-02-28 12:50:41 -05:00
cloudhead
f0c00ab2b4 create an empty Combinator if none was specified. Refactored Combinator generation, and added + ~ :: 2010-02-28 12:49:08 -05:00
cloudhead
35b452bf00 error = null, when starting a parse 2010-02-28 01:07:13 -05:00
cloudhead
8ac1bdf06c proper nested selector rendering, wooh. 2010-02-28 01:06:54 -05:00
cloudhead
cd764a2d8c give Element.toCSS a pre-space, useful when building new selectors 2010-02-28 01:05:27 -05:00
cloudhead
35af01d29a () around ternary operators 2010-02-28 01:03:22 -05:00
cloudhead
1c955c8cb3 fixed function name in alpha.js 2010-02-28 01:01:43 -05:00
cloudhead
1e16d0233c ParseErrors dont raise an exception anymore, we just set parser.error to the value of the error 2010-02-27 14:14:52 -05:00
cloudhead
c804ed2ef1 simplified code-gen loop 2010-02-27 14:13:28 -05:00
cloudhead
bd88ab89ef optimize dimension parsing, also fixes weird bug 2010-02-26 22:31:26 -05:00
cloudhead
b6b5d5f10a swap operands when dimension is first, in a color operation, use new operate() function 2010-02-26 22:31:04 -05:00
cloudhead
633660b7af refactored Color & Dimension operations 2010-02-26 22:30:30 -05:00
cloudhead
1c43df1b85 round numbers on color operations 2010-02-26 22:29:51 -05:00
cloudhead
a7ae7c8514 node.operate, to operate on values, based on a string op 2010-02-26 22:29:23 -05:00
cloudhead
fd8aa91ddc improved the chunkification process, and gave different options, as well as an option not to chunkify, through the optimization setting. The ideal split is now \n} 2010-02-26 16:34:49 -05:00
cloudhead
d97b30d9cc replace \r\n with \n 2010-02-26 14:50:26 -05:00
cloudhead
3ce2d7ad19 handle missing ; before a } 2010-02-26 14:49:07 -05:00
cloudhead
0c00a9c8ac handle empty property values 2010-02-26 14:48:32 -05:00
cloudhead
78ae5285d6 handle capitalized alpha() 2010-02-26 14:47:59 -05:00
cloudhead
4c1ce7075b eat tabs 2010-02-26 14:47:32 -05:00
cloudhead
e30851d384 fixed whitespace eating through chunks 2010-02-26 14:47:25 -05:00
cloudhead
c041deacdb fixed parsing of [disabled] style attribute selectors 2010-02-26 11:29:01 -05:00
cloudhead
7b96181f06 minor optimization in element parsing 2010-02-26 11:28:34 -05:00
cloudhead
2dea90afb7 parse *prop for ie 2010-02-26 10:54:48 -05:00
cloudhead
c8b11c7796 added ms unit 2010-02-26 10:36:26 -05:00
cloudhead
b60c296e6e throw a ParseError, instead of just an Error 2010-02-25 22:49:52 -05:00
cloudhead
543fb96a03 parse alpha in call() instead 2010-02-25 22:37:03 -05:00
cloudhead
3f893b8ddc alpha.js init 2010-02-25 22:32:34 -05:00
cloudhead
9970cb0124 parse IE's alpha() 2010-02-25 22:32:13 -05:00
cloudhead
8c45b58524 parse !important 2010-02-25 21:29:34 -05:00
cloudhead
3f753da627 ability to parse more complex directives 2010-02-25 21:29:21 -05:00
cloudhead
3d60c12a68 get attribute parsing going 2010-02-25 21:28:39 -05:00
cloudhead
cc1b5a91c3 pass a context to directive(), so it can parse a block 2010-02-25 21:28:14 -05:00
cloudhead
5038b215fc handle parse error at beginning of file 2010-02-25 21:27:45 -05:00
cloudhead
8a7747d15b url() parsing 2010-02-25 21:27:23 -05:00
cloudhead
b81160107e in a parens expression, just return the Expression for now 2010-02-25 18:01:03 -05:00
cloudhead
a01cb190eb support caps in keywords, for fonts and stuff 2010-02-25 18:00:25 -05:00
cloudhead
a3b1ef0fd6 // comments 2010-02-25 17:59:28 -05:00
cloudhead
6e22c810d0 code style change in variable.js 2010-02-25 17:57:47 -05:00
cloudhead
3b53bb8707 dont output variables 2010-02-25 17:56:21 -05:00
cloudhead
c8f5997c27 Quoted.eval returns self 2010-02-25 17:55:26 -05:00
cloudhead
b84ec0b67f Element doesnt need to have a combinator 2010-02-25 17:55:12 -05:00
cloudhead
dbf7c5c30c per channel color operations. Color can also take an RGB array 2010-02-25 17:54:59 -05:00
cloudhead
c72d5da9c5 proper parser error messages 2010-02-25 15:49:01 -05:00
cloudhead
93a0a0bebf removed trace code from rule.js 2010-02-25 15:37:16 -05:00
cloudhead
ba2a3e88a7 removed all the testing stuff from the server adapter 2010-02-25 15:37:01 -05:00
cloudhead
0dc6c2e4c4 trim whitespace 2010-02-23 23:21:17 -05:00
cloudhead
308d32c587 moved primary rule to the top 2010-02-23 23:21:07 -05:00
cloudhead
01ae902eff chunkify with a zero-width regexp 2010-02-23 23:20:38 -05:00
cloudhead
e339649158 literature, comments 2010-02-23 23:19:31 -05:00
cloudhead
1d1d40b353 adapters for browser/server 2010-02-23 18:01:26 -05:00
cloudhead
1d2b335827 throw error if variable isnt found 2010-02-23 18:00:53 -05:00
cloudhead
ad66408b9f init 2010-02-23 13:39:05 -05:00