数か月間、次のコーヒースクリプトを本番環境で使用しました。
yearSource = (yearsBack) ->
endYear = new Date().getFullYear()+1
label: year, value: year for year in [endYear - yearsBack .. endYear]
このスクリプトにコンパイルされたもの:
yearSource = function(yearsBack) {
var endYear, year, _i, _ref, _results;
endYear = new Date().getFullYear() + 1;
_results = [];
for (year = _i = _ref = endYear - yearsBack; _ref <= endYear ? _i <= endYear : _i >= endYear; year = _ref <= endYear ? ++_i : --_i) {
_results.push({
label: year,
value: year
});
}
return _results;
};
これは、指定された年以降の年のリストを返します。
スクリプトが再コンパイルされた更新を展開した後、突然スクリプトは次のようになります。
yearSource = function(yearsBack) {
var endYear, year;
endYear = new Date().getFullYear() + 1;
return {
label: year,
value: (function() {
var _i, _ref, _results;
_results = [];
for (year = _i = _ref = endYear - yearsBack; _ref <= endYear ? _i <= endYear : _i >= endYear; year = _ref <= endYear ? ++_i : --_i) {
_results.push(year);
}
return _results;
})()
};
};
リストは jQuery UI オートコンプリート ウィジェットのソースであると想定されているため、これにより事態が完全に破壊されました。
ループ作業を新しいインデント行に移動することで修正できます。
yearSource = (yearsBack) ->
endYear = new Date().getFullYear()+1
for year in [endYear - yearsBack .. endYear]
label: year, value: year
コーヒースクリプトのバージョン間で問題が発生した原因は何ですか?