coffee-react 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/coffee-react-transform.js +198 -116
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c37e9af38a88f4c1ea53a9e4f2a5595bd4c595a
|
4
|
+
data.tar.gz: 932baeb13b710547875569051f184165f55b47b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7350633763b4f967713a8975e993a60194634d409ec5a523172b9b154fe6f0f0ec76a2f059a9798f6556462530150b0d9ceee6765ad7aa28227510d4af35d68
|
7
|
+
data.tar.gz: a7739092b50a7737bceaeddff270913201be7bcb17fe7534b228345929f0745de8931533eeb98727f71db560f99803af12d8cca62f115f23bb61a2b5eba38108
|
data/coffee-react-transform.js
CHANGED
@@ -286,7 +286,7 @@ module.exports = function decode(str) {
|
|
286
286
|
|
287
287
|
},{}],3:[function(_dereq_,module,exports){
|
288
288
|
// Generated by CoffeeScript 1.7.1
|
289
|
-
var extend, flatten, last, repeat, syntaxErrorToString, _ref;
|
289
|
+
var extend, flatten, last, repeat, syntaxErrorToString, _ref, _ref1;
|
290
290
|
|
291
291
|
exports.starts = function(string, literal, start) {
|
292
292
|
return literal === string.substr(start, literal.length);
|
@@ -384,6 +384,16 @@ exports.some = (_ref = Array.prototype.some) != null ? _ref : function(fn) {
|
|
384
384
|
return false;
|
385
385
|
};
|
386
386
|
|
387
|
+
exports.find = (_ref1 = Array.prototype.find) != null ? _ref1 : function(fn) {
|
388
|
+
var e, _i, _len;
|
389
|
+
for (_i = 0, _len = this.length; _i < _len; _i++) {
|
390
|
+
e = this[_i];
|
391
|
+
if (fn(e)) {
|
392
|
+
return e;
|
393
|
+
}
|
394
|
+
}
|
395
|
+
};
|
396
|
+
|
387
397
|
exports.throwSyntaxError = function(message, location) {
|
388
398
|
var error;
|
389
399
|
error = new SyntaxError(message);
|
@@ -403,11 +413,11 @@ exports.updateSyntaxError = function(error, code, filename) {
|
|
403
413
|
};
|
404
414
|
|
405
415
|
syntaxErrorToString = function() {
|
406
|
-
var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, start,
|
416
|
+
var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, start, _ref2, _ref3;
|
407
417
|
if (!(this.code && this.location)) {
|
408
418
|
return Error.prototype.toString.call(this);
|
409
419
|
}
|
410
|
-
|
420
|
+
_ref2 = this.location, first_line = _ref2.first_line, first_column = _ref2.first_column, last_line = _ref2.last_line, last_column = _ref2.last_column;
|
411
421
|
if (last_line == null) {
|
412
422
|
last_line = first_line;
|
413
423
|
}
|
@@ -422,7 +432,7 @@ syntaxErrorToString = function() {
|
|
422
432
|
if (typeof process !== "undefined" && process !== null) {
|
423
433
|
colorsEnabled = process.stdout.isTTY && !process.env.NODE_DISABLE_COLORS;
|
424
434
|
}
|
425
|
-
if ((
|
435
|
+
if ((_ref3 = this.colorful) != null ? _ref3 : colorsEnabled) {
|
426
436
|
colorize = function(str) {
|
427
437
|
return "\x1B[1;31m" + str + "\x1B[0m";
|
428
438
|
};
|
@@ -583,13 +593,13 @@ module.exports = {
|
|
583
593
|
};
|
584
594
|
},{}],5:[function(_dereq_,module,exports){
|
585
595
|
// Generated by CoffeeScript 1.7.1
|
586
|
-
var $, BOM, CLOSING_TAG, COMMENT, HEREDOC, HEREGEX, JSTOKEN, OPENING_TAG, PRAGMA, Parser, REGEX, SIMPLESTR, TAG_ATTRIBUTES, TRAILING_SPACES, WHITESPACE, compact, count, last,
|
596
|
+
var $, BOM, CLOSING_TAG, COMMENT, HEREDOC, HEREGEX, JSTOKEN, OPENING_TAG, PRAGMA, ParseTreeBranchNode, ParseTreeLeafNode, Parser, REGEX, SIMPLESTR, TAG_ATTRIBUTES, TRAILING_SPACES, WHITESPACE, compact, count, last, repeat, starts, throwSyntaxError, _ref;
|
587
597
|
|
588
598
|
_ref = _dereq_('./helpers'), count = _ref.count, starts = _ref.starts, compact = _ref.compact, last = _ref.last, repeat = _ref.repeat, throwSyntaxError = _ref.throwSyntaxError;
|
589
599
|
|
590
600
|
$ = _dereq_('./symbols');
|
591
601
|
|
592
|
-
|
602
|
+
ParseTreeLeafNode = function(type, value) {
|
593
603
|
if (value == null) {
|
594
604
|
value = null;
|
595
605
|
}
|
@@ -599,7 +609,7 @@ parseTreeLeafNode = function(type, value) {
|
|
599
609
|
};
|
600
610
|
};
|
601
611
|
|
602
|
-
|
612
|
+
ParseTreeBranchNode = function(type, value, children) {
|
603
613
|
if (value == null) {
|
604
614
|
value = null;
|
605
615
|
}
|
@@ -619,7 +629,7 @@ module.exports = Parser = (function() {
|
|
619
629
|
Parser.prototype.parse = function(code, opts) {
|
620
630
|
var consumed, i, message, _ref1, _ref2;
|
621
631
|
this.opts = opts != null ? opts : {};
|
622
|
-
this.parseTree =
|
632
|
+
this.parseTree = ParseTreeBranchNode(this.opts.root || $.ROOT);
|
623
633
|
this.activeStates = [this.parseTree];
|
624
634
|
this.chunkLine = 0;
|
625
635
|
this.chunkColumn = 0;
|
@@ -667,11 +677,11 @@ module.exports = Parser = (function() {
|
|
667
677
|
} else {
|
668
678
|
prefix = 'React.DOM';
|
669
679
|
}
|
670
|
-
this.addLeafNodeToActiveBranch(
|
680
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CJSX_PRAGMA, prefix));
|
671
681
|
return comment.length;
|
672
682
|
}
|
673
683
|
}
|
674
|
-
this.addLeafNodeToActiveBranch(
|
684
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CS_COMMENT, comment));
|
675
685
|
return comment.length;
|
676
686
|
};
|
677
687
|
|
@@ -681,7 +691,7 @@ module.exports = Parser = (function() {
|
|
681
691
|
return 0;
|
682
692
|
}
|
683
693
|
heredoc = match[0];
|
684
|
-
this.addLeafNodeToActiveBranch(
|
694
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CS_HEREDOC, heredoc));
|
685
695
|
return heredoc.length;
|
686
696
|
};
|
687
697
|
|
@@ -697,7 +707,7 @@ module.exports = Parser = (function() {
|
|
697
707
|
if (!string) {
|
698
708
|
return 0;
|
699
709
|
}
|
700
|
-
this.addLeafNodeToActiveBranch(
|
710
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CS_STRING, string));
|
701
711
|
return string.length;
|
702
712
|
};
|
703
713
|
|
@@ -719,7 +729,7 @@ module.exports = Parser = (function() {
|
|
719
729
|
if (regex === '//') {
|
720
730
|
return 0;
|
721
731
|
}
|
722
|
-
this.addLeafNodeToActiveBranch(
|
732
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CS_REGEX, match));
|
723
733
|
return match.length;
|
724
734
|
};
|
725
735
|
|
@@ -729,7 +739,7 @@ module.exports = Parser = (function() {
|
|
729
739
|
return 0;
|
730
740
|
}
|
731
741
|
heregex = match[0], body = match[1], flags = match[2];
|
732
|
-
this.addLeafNodeToActiveBranch(
|
742
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CS_HEREGEX, heregex));
|
733
743
|
return heregex.length;
|
734
744
|
};
|
735
745
|
|
@@ -739,7 +749,7 @@ module.exports = Parser = (function() {
|
|
739
749
|
return 0;
|
740
750
|
}
|
741
751
|
script = match[0];
|
742
|
-
this.addLeafNodeToActiveBranch(
|
752
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.JS_ESC, script));
|
743
753
|
return script.length;
|
744
754
|
};
|
745
755
|
|
@@ -752,13 +762,13 @@ module.exports = Parser = (function() {
|
|
752
762
|
if (!(selfClosing || this.chunk.indexOf("</" + tagName + ">", input.length) > -1)) {
|
753
763
|
return 0;
|
754
764
|
}
|
755
|
-
this.pushActiveBranchNode(
|
756
|
-
this.pushActiveBranchNode(
|
765
|
+
this.pushActiveBranchNode(ParseTreeBranchNode($.CJSX_EL, tagName));
|
766
|
+
this.pushActiveBranchNode(ParseTreeBranchNode($.CJSX_ATTRIBUTES));
|
757
767
|
return 1 + tagName.length;
|
758
768
|
};
|
759
769
|
|
760
770
|
Parser.prototype.cjsxAttribute = function() {
|
761
|
-
var attrName, bareVal, cjsxEscVal, doubleQuotedVal, input, match, singleQuotedVal, whitespace;
|
771
|
+
var attrName, bareVal, cjsxEscVal, doubleQuotedVal, input, match, singleQuotedVal, spreadAttr, whitespace;
|
762
772
|
if (this.currentState() !== $.CJSX_ATTRIBUTES) {
|
763
773
|
return 0;
|
764
774
|
}
|
@@ -781,27 +791,30 @@ module.exports = Parser = (function() {
|
|
781
791
|
if (!(match = TAG_ATTRIBUTES.exec(this.chunk))) {
|
782
792
|
return 0;
|
783
793
|
}
|
784
|
-
input = match[0], attrName = match[1], doubleQuotedVal = match[2], singleQuotedVal = match[3], cjsxEscVal = match[4], bareVal = match[5],
|
794
|
+
input = match[0], attrName = match[1], doubleQuotedVal = match[2], singleQuotedVal = match[3], cjsxEscVal = match[4], bareVal = match[5], spreadAttr = match[6], whitespace = match[7];
|
785
795
|
if (attrName) {
|
786
|
-
if (doubleQuotedVal) {
|
787
|
-
this.addLeafNodeToActiveBranch(
|
796
|
+
if (doubleQuotedVal != null) {
|
797
|
+
this.addLeafNodeToActiveBranch(ParseTreeBranchNode($.CJSX_ATTR_PAIR, null, [ParseTreeLeafNode($.CJSX_ATTR_KEY, "\"" + attrName + "\""), ParseTreeLeafNode($.CJSX_ATTR_VAL, "\"" + doubleQuotedVal + "\"")]));
|
788
798
|
return input.length;
|
789
|
-
} else if (singleQuotedVal) {
|
790
|
-
this.addLeafNodeToActiveBranch(
|
799
|
+
} else if (singleQuotedVal != null) {
|
800
|
+
this.addLeafNodeToActiveBranch(ParseTreeBranchNode($.CJSX_ATTR_PAIR, null, [ParseTreeLeafNode($.CJSX_ATTR_KEY, "\"" + attrName + "\""), ParseTreeLeafNode($.CJSX_ATTR_VAL, "'" + singleQuotedVal + "'")]));
|
791
801
|
return input.length;
|
792
802
|
} else if (cjsxEscVal) {
|
793
|
-
this.pushActiveBranchNode(
|
794
|
-
this.addLeafNodeToActiveBranch(
|
803
|
+
this.pushActiveBranchNode(ParseTreeBranchNode($.CJSX_ATTR_PAIR));
|
804
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CJSX_ATTR_KEY, "\"" + attrName + "\""));
|
795
805
|
return input.indexOf('{');
|
796
806
|
} else if (bareVal) {
|
797
|
-
this.addLeafNodeToActiveBranch(
|
807
|
+
this.addLeafNodeToActiveBranch(ParseTreeBranchNode($.CJSX_ATTR_PAIR, null, [ParseTreeLeafNode($.CJSX_ATTR_KEY, "\"" + attrName + "\""), ParseTreeLeafNode($.CJSX_ATTR_VAL, bareVal)]));
|
798
808
|
return input.length;
|
799
809
|
} else {
|
800
|
-
this.addLeafNodeToActiveBranch(
|
810
|
+
this.addLeafNodeToActiveBranch(ParseTreeBranchNode($.CJSX_ATTR_PAIR, null, [ParseTreeLeafNode($.CJSX_ATTR_KEY, "\"" + attrName + "\""), ParseTreeLeafNode($.CJSX_ATTR_VAL, 'true')]));
|
801
811
|
return input.length;
|
802
812
|
}
|
803
|
-
} else if (
|
804
|
-
this.addLeafNodeToActiveBranch(
|
813
|
+
} else if (spreadAttr) {
|
814
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CJSX_ATTR_SPREAD, spreadAttr));
|
815
|
+
return input.length;
|
816
|
+
} else if (whitespace != null) {
|
817
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CJSX_WHITESPACE, whitespace));
|
805
818
|
return input.length;
|
806
819
|
} else {
|
807
820
|
return throwSyntaxError("Invalid attribute " + input + " in CJSX tag " + (this.peekActiveState(2).value), {
|
@@ -816,18 +829,19 @@ module.exports = Parser = (function() {
|
|
816
829
|
if (!(this.chunk.charAt(0) === '{' && ((_ref1 = this.currentState()) === $.CJSX_EL || _ref1 === $.CJSX_ATTR_PAIR))) {
|
817
830
|
return 0;
|
818
831
|
}
|
819
|
-
this.pushActiveBranchNode(
|
832
|
+
this.pushActiveBranchNode(ParseTreeBranchNode($.CJSX_ESC));
|
820
833
|
this.activeBranchNode().stack = 1;
|
821
834
|
return 1;
|
822
835
|
};
|
823
836
|
|
824
837
|
Parser.prototype.cjsxUnescape = function() {
|
838
|
+
var _ref1;
|
825
839
|
if (!(this.currentState() === $.CJSX_ESC && this.chunk.charAt(0) === '}')) {
|
826
840
|
return 0;
|
827
841
|
}
|
828
842
|
if (this.activeBranchNode().stack === 0) {
|
829
843
|
this.popActiveBranchNode();
|
830
|
-
if (this.currentState() === $.CJSX_ATTR_PAIR) {
|
844
|
+
if ((_ref1 = this.currentState()) === $.CJSX_ATTR_PAIR) {
|
831
845
|
this.popActiveBranchNode();
|
832
846
|
}
|
833
847
|
return 1;
|
@@ -860,7 +874,7 @@ module.exports = Parser = (function() {
|
|
860
874
|
return 0;
|
861
875
|
}
|
862
876
|
if (this.newestNode().type !== $.CJSX_TEXT) {
|
863
|
-
this.addLeafNodeToActiveBranch(
|
877
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CJSX_TEXT, ''));
|
864
878
|
}
|
865
879
|
this.newestNode().value += this.chunk.charAt(0);
|
866
880
|
return 1;
|
@@ -878,7 +892,7 @@ module.exports = Parser = (function() {
|
|
878
892
|
}
|
879
893
|
}
|
880
894
|
if (this.newestNode().type !== $.CS) {
|
881
|
-
this.addLeafNodeToActiveBranch(
|
895
|
+
this.addLeafNodeToActiveBranch(ParseTreeLeafNode($.CS, ''));
|
882
896
|
}
|
883
897
|
this.newestNode().value += this.chunk.charAt(0);
|
884
898
|
return 1;
|
@@ -984,11 +998,11 @@ module.exports = Parser = (function() {
|
|
984
998
|
|
985
999
|
})();
|
986
1000
|
|
987
|
-
OPENING_TAG = /^<([-A-Za-z0-9_\.]+)((?:\s+[\w-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:{[\s\S]*?})|[^>\s]+))?)*?\s*)(\/?)>/;
|
1001
|
+
OPENING_TAG = /^<([-A-Za-z0-9_\.]+)((?:(?:(?:\s+[\w-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:{[\s\S]*?})|[^>\s]+)))|\s+[\w-]+|\s+\{\.\.\.\s*?[^\s{}]+?\s*?\})?)*?\s*)(\/?)>/;
|
988
1002
|
|
989
1003
|
CLOSING_TAG = /^<\/([-A-Za-z0-9_\.]+)[^>]*>/;
|
990
1004
|
|
991
|
-
TAG_ATTRIBUTES = /(?:([-A-Za-z0-9_]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:{((?:\\.|[\s\S])*)})|([^>\s]+)))?)|([\s\n]+)/;
|
1005
|
+
TAG_ATTRIBUTES = /(?:([-A-Za-z0-9_]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:{((?:\\.|[\s\S])*)})|([^>\s]+)))?)|(?:\{\.\.\.(\s*?[^\s{}]+?\s*?)\})|([\s\n]+)/;
|
992
1006
|
|
993
1007
|
PRAGMA = /^\s*#\s*@cjsx\s+(\S*)/i;
|
994
1008
|
|
@@ -1012,9 +1026,9 @@ HEREGEX = /^\/{3}((?:\\?[\s\S])+?)\/{3}([imgy]{0,4})(?!\w)/;
|
|
1012
1026
|
|
1013
1027
|
},{"./helpers":3,"./symbols":8}],6:[function(_dereq_,module,exports){
|
1014
1028
|
// Generated by CoffeeScript 1.7.1
|
1015
|
-
var $, HTML_ELEMENTS, SPACES_ONLY, TEXT_LEADING_WHITESPACE, TEXT_TRAILING_WHITESPACE, WHITESPACE_ONLY, containsNewlines, entityDecode, genericBranchSerialiser, genericLeafSerialiser, last,
|
1029
|
+
var $, HTML_ELEMENTS, SPACES_ONLY, Serialiser, TEXT_LEADING_WHITESPACE, TEXT_TRAILING_WHITESPACE, WHITESPACE_ONLY, containsNewlines, entityDecode, exports, find, firstNonWhitespaceChild, genericBranchSerialiser, genericLeafSerialiser, last, nodeSerialisers, serialise, stringEscape, _ref;
|
1016
1030
|
|
1017
|
-
|
1031
|
+
_ref = _dereq_('./helpers'), last = _ref.last, find = _ref.find;
|
1018
1032
|
|
1019
1033
|
$ = _dereq_('./symbols');
|
1020
1034
|
|
@@ -1024,99 +1038,87 @@ stringEscape = _dereq_('./stringescape');
|
|
1024
1038
|
|
1025
1039
|
entityDecode = _dereq_('./entitydecode');
|
1026
1040
|
|
1027
|
-
module.exports = serialise = function(parseTree) {
|
1028
|
-
|
1029
|
-
env = {
|
1030
|
-
serialiseNode: serialiseNode
|
1031
|
-
};
|
1032
|
-
if (parseTree.children && parseTree.children.length && parseTree.children[0].type === $.CJSX_PRAGMA) {
|
1033
|
-
env.domObject = parseTree.children[0].value;
|
1034
|
-
} else {
|
1035
|
-
env.domObject = 'React.DOM';
|
1036
|
-
}
|
1037
|
-
return env.serialiseNode(parseTree);
|
1041
|
+
module.exports = exports = serialise = function(parseTree) {
|
1042
|
+
return new Serialiser().serialise(parseTree);
|
1038
1043
|
};
|
1039
1044
|
|
1040
|
-
|
1041
|
-
|
1042
|
-
if (serialisers[node.type] == null) {
|
1043
|
-
throw new Error("unknown parseTree node type " + node.type);
|
1044
|
-
}
|
1045
|
-
serialised = serialisers[node.type](node, this);
|
1046
|
-
if (!(typeof serialised === 'string' || serialised === null)) {
|
1047
|
-
throw new Error("serialiser " + node.type + " didn\'t return a string");
|
1048
|
-
}
|
1049
|
-
return serialised;
|
1050
|
-
};
|
1045
|
+
Serialiser = (function() {
|
1046
|
+
function Serialiser() {}
|
1051
1047
|
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1048
|
+
Serialiser.prototype.serialise = function(parseTree) {
|
1049
|
+
if (parseTree.children && parseTree.children.length && parseTree.children[0].type === $.CJSX_PRAGMA) {
|
1050
|
+
this.domObject = parseTree.children[0].value;
|
1051
|
+
} else {
|
1052
|
+
this.domObject = 'React.DOM';
|
1053
|
+
}
|
1054
|
+
return this.serialiseNode(parseTree);
|
1055
|
+
};
|
1057
1056
|
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1057
|
+
Serialiser.prototype.serialiseNode = function(node) {
|
1058
|
+
var serialised;
|
1059
|
+
if (nodeSerialisers[node.type] == null) {
|
1060
|
+
throw new Error("unknown parseTree node type " + node.type);
|
1061
|
+
}
|
1062
|
+
serialised = nodeSerialisers[node.type].call(this, node);
|
1063
|
+
if (!(typeof serialised === 'string' || serialised === null)) {
|
1064
|
+
throw new Error("serialiser " + node.type + " didn\'t return a string");
|
1065
|
+
}
|
1066
|
+
return serialised;
|
1067
|
+
};
|
1061
1068
|
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
if (child != null) {
|
1076
|
-
if (WHITESPACE_ONLY.test(serialisedChild)) {
|
1077
|
-
accumulatedWhitespace += serialisedChild;
|
1078
|
-
} else {
|
1079
|
-
serialisedChildren.push(accumulatedWhitespace + serialisedChild);
|
1080
|
-
accumulatedWhitespace = '';
|
1069
|
+
Serialiser.prototype.serialiseSpreadAndPairAttributes = function(children) {
|
1070
|
+
var assigns, child, childIndex, flushPairs, pairAttrsBuffer, _i, _len, _ref1;
|
1071
|
+
assigns = [];
|
1072
|
+
pairAttrsBuffer = [];
|
1073
|
+
flushPairs = (function(_this) {
|
1074
|
+
return function() {
|
1075
|
+
var serialisedChild;
|
1076
|
+
if (pairAttrsBuffer.length) {
|
1077
|
+
serialisedChild = _this.serialiseAttributePairs(pairAttrsBuffer);
|
1078
|
+
if (serialisedChild) {
|
1079
|
+
assigns.push(serialisedChild);
|
1080
|
+
}
|
1081
|
+
return pairAttrsBuffer = [];
|
1081
1082
|
}
|
1082
|
-
}
|
1083
|
+
};
|
1084
|
+
})(this);
|
1085
|
+
if (((_ref1 = firstNonWhitespaceChild(children)) != null ? _ref1.type : void 0) === $.CJSX_ATTR_SPREAD) {
|
1086
|
+
assigns.push('{}');
|
1083
1087
|
}
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1088
|
+
for (childIndex = _i = 0, _len = children.length; _i < _len; childIndex = ++_i) {
|
1089
|
+
child = children[childIndex];
|
1090
|
+
if (child.type === $.CJSX_ATTR_SPREAD) {
|
1091
|
+
flushPairs();
|
1092
|
+
assigns.push(child.value);
|
1093
|
+
} else {
|
1094
|
+
pairAttrsBuffer.push(child);
|
1095
|
+
}
|
1096
|
+
flushPairs();
|
1087
1097
|
}
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
var
|
1093
|
-
|
1094
|
-
return env.serialiseNode(child);
|
1095
|
-
}).join('');
|
1096
|
-
return '(' + childrenSerialised + ')';
|
1097
|
-
},
|
1098
|
-
CJSX_ATTRIBUTES: function(node, env) {
|
1099
|
-
var child, childIndex, indexOfLastSemanticChild, isBeforeLastSemanticChild, semanticChildren, serialisedChild, serialisedChildren, whitespaceChildren, _ref;
|
1100
|
-
_ref = node.children.reduce(function(partitionedChildren, child) {
|
1098
|
+
return "Object.assign(" + (assigns.join(', ')) + ")";
|
1099
|
+
};
|
1100
|
+
|
1101
|
+
Serialiser.prototype.serialiseAttributePairs = function(children) {
|
1102
|
+
var child, childIndex, indexOfLastSemanticChild, isBeforeLastSemanticChild, semanticChildren, serialisedChild, serialisedChildren, whitespaceChildren, _ref1;
|
1103
|
+
_ref1 = children.reduce(function(partitionedChildren, child) {
|
1101
1104
|
if (child.type === $.CJSX_WHITESPACE) {
|
1102
1105
|
partitionedChildren[0].push(child);
|
1103
1106
|
} else {
|
1104
1107
|
partitionedChildren[1].push(child);
|
1105
1108
|
}
|
1106
1109
|
return partitionedChildren;
|
1107
|
-
}, [[], []]), whitespaceChildren =
|
1108
|
-
indexOfLastSemanticChild =
|
1110
|
+
}, [[], []]), whitespaceChildren = _ref1[0], semanticChildren = _ref1[1];
|
1111
|
+
indexOfLastSemanticChild = children.lastIndexOf(last(semanticChildren));
|
1109
1112
|
isBeforeLastSemanticChild = function(childIndex) {
|
1110
1113
|
return childIndex < indexOfLastSemanticChild;
|
1111
1114
|
};
|
1112
1115
|
if (semanticChildren.length) {
|
1113
1116
|
serialisedChildren = (function() {
|
1114
|
-
var _i, _len,
|
1115
|
-
_ref1 = node.children;
|
1117
|
+
var _i, _len, _results;
|
1116
1118
|
_results = [];
|
1117
|
-
for (childIndex = _i = 0, _len =
|
1118
|
-
child =
|
1119
|
-
serialisedChild =
|
1119
|
+
for (childIndex = _i = 0, _len = children.length; _i < _len; childIndex = ++_i) {
|
1120
|
+
child = children[childIndex];
|
1121
|
+
serialisedChild = this.serialiseNode(child);
|
1120
1122
|
if (child.type === $.CJSX_WHITESPACE) {
|
1121
1123
|
if (containsNewlines(serialisedChild)) {
|
1122
1124
|
if (isBeforeLastSemanticChild(childIndex)) {
|
@@ -1134,16 +1136,85 @@ serialise.serialisers = serialisers = {
|
|
1134
1136
|
}
|
1135
1137
|
}
|
1136
1138
|
return _results;
|
1137
|
-
})();
|
1139
|
+
}).call(this);
|
1138
1140
|
return '{' + serialisedChildren.join('') + '}';
|
1139
1141
|
} else {
|
1140
|
-
return
|
1142
|
+
return null;
|
1143
|
+
}
|
1144
|
+
};
|
1145
|
+
|
1146
|
+
return Serialiser;
|
1147
|
+
|
1148
|
+
})();
|
1149
|
+
|
1150
|
+
genericBranchSerialiser = function(node) {
|
1151
|
+
return node.children.map((function(_this) {
|
1152
|
+
return function(child) {
|
1153
|
+
return _this.serialiseNode(child);
|
1154
|
+
};
|
1155
|
+
})(this)).join('');
|
1156
|
+
};
|
1157
|
+
|
1158
|
+
genericLeafSerialiser = function(node) {
|
1159
|
+
return node.value;
|
1160
|
+
};
|
1161
|
+
|
1162
|
+
nodeSerialisers = {
|
1163
|
+
ROOT: genericBranchSerialiser,
|
1164
|
+
CJSX_PRAGMA: function() {
|
1165
|
+
return null;
|
1166
|
+
},
|
1167
|
+
CJSX_EL: function(node) {
|
1168
|
+
var accumulatedWhitespace, child, prefix, serialisedChild, serialisedChildren, _i, _len, _ref1;
|
1169
|
+
serialisedChildren = [];
|
1170
|
+
accumulatedWhitespace = '';
|
1171
|
+
_ref1 = node.children;
|
1172
|
+
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
1173
|
+
child = _ref1[_i];
|
1174
|
+
serialisedChild = this.serialiseNode(child);
|
1175
|
+
if (child != null) {
|
1176
|
+
if (WHITESPACE_ONLY.test(serialisedChild)) {
|
1177
|
+
accumulatedWhitespace += serialisedChild;
|
1178
|
+
} else {
|
1179
|
+
serialisedChildren.push(accumulatedWhitespace + serialisedChild);
|
1180
|
+
accumulatedWhitespace = '';
|
1181
|
+
}
|
1182
|
+
}
|
1183
|
+
}
|
1184
|
+
if (serialisedChildren.length) {
|
1185
|
+
serialisedChildren[serialisedChildren.length - 1] += accumulatedWhitespace;
|
1186
|
+
accumulatedWhitespace = '';
|
1187
|
+
}
|
1188
|
+
prefix = HTML_ELEMENTS[node.value] != null ? this.domObject + '.' : '';
|
1189
|
+
return prefix + node.value + '(' + serialisedChildren.join(', ') + ')';
|
1190
|
+
},
|
1191
|
+
CJSX_ESC: function(node) {
|
1192
|
+
var childrenSerialised;
|
1193
|
+
childrenSerialised = node.children.map((function(_this) {
|
1194
|
+
return function(child) {
|
1195
|
+
return _this.serialiseNode(child);
|
1196
|
+
};
|
1197
|
+
})(this)).join('');
|
1198
|
+
return '(' + childrenSerialised + ')';
|
1199
|
+
},
|
1200
|
+
CJSX_ATTRIBUTES: function(node) {
|
1201
|
+
if (node.children.some(function(child) {
|
1202
|
+
return child.type === $.CJSX_ATTR_SPREAD;
|
1203
|
+
})) {
|
1204
|
+
return this.serialiseSpreadAndPairAttributes(node.children);
|
1205
|
+
} else {
|
1206
|
+
return this.serialiseAttributePairs(node.children) || 'null';
|
1141
1207
|
}
|
1142
1208
|
},
|
1143
|
-
CJSX_ATTR_PAIR: function(node
|
1144
|
-
return node.children.map(function(
|
1145
|
-
return
|
1146
|
-
|
1209
|
+
CJSX_ATTR_PAIR: function(node) {
|
1210
|
+
return node.children.map((function(_this) {
|
1211
|
+
return function(child) {
|
1212
|
+
return _this.serialiseNode(child);
|
1213
|
+
};
|
1214
|
+
})(this)).join(': ');
|
1215
|
+
},
|
1216
|
+
CJSX_ATTR_SPREAD: function(node) {
|
1217
|
+
return node.value;
|
1147
1218
|
},
|
1148
1219
|
CS: genericLeafSerialiser,
|
1149
1220
|
CS_COMMENT: genericLeafSerialiser,
|
@@ -1190,6 +1261,12 @@ serialise.serialisers = serialisers = {
|
|
1190
1261
|
CJSX_ATTR_VAL: genericLeafSerialiser
|
1191
1262
|
};
|
1192
1263
|
|
1264
|
+
firstNonWhitespaceChild = function(children) {
|
1265
|
+
return find.call(children, function(child) {
|
1266
|
+
return child.type !== $.CJSX_WHITESPACE;
|
1267
|
+
});
|
1268
|
+
};
|
1269
|
+
|
1193
1270
|
containsNewlines = function(text) {
|
1194
1271
|
return text.indexOf('\n') > -1;
|
1195
1272
|
};
|
@@ -1202,6 +1279,10 @@ TEXT_LEADING_WHITESPACE = /^\s*?\n\s*/;
|
|
1202
1279
|
|
1203
1280
|
TEXT_TRAILING_WHITESPACE = /\s*?\n\s*?$/;
|
1204
1281
|
|
1282
|
+
exports.Serialiser = Serialiser;
|
1283
|
+
|
1284
|
+
exports.nodeSerialisers = nodeSerialisers;
|
1285
|
+
|
1205
1286
|
},{"./entitydecode":2,"./helpers":3,"./htmlelements":4,"./stringescape":7,"./symbols":8}],7:[function(_dereq_,module,exports){
|
1206
1287
|
|
1207
1288
|
var hex = '0123456789abcdef'.split('');
|
@@ -1275,6 +1356,7 @@ module.exports = {
|
|
1275
1356
|
CJSX_TEXT: 'CJSX_TEXT',
|
1276
1357
|
CJSX_ATTR_KEY: 'CJSX_ATTR_KEY',
|
1277
1358
|
CJSX_ATTR_VAL: 'CJSX_ATTR_VAL',
|
1359
|
+
CJSX_ATTR_SPREAD: 'CJSX_ATTR_SPREAD',
|
1278
1360
|
CJSX_START: 'CJSX_START',
|
1279
1361
|
CJSX_END: 'CJSX_END',
|
1280
1362
|
CJSX_ESC_START: 'CJSX_ESC_START',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coffee-react
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Friend
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: execjs
|