Collapse the five 0/1-based index flags into one option.

This commit is contained in:
Neil Fraser
2016-10-06 17:54:43 -07:00
parent e6ec2d6fd9
commit 7928fac3ce
24 changed files with 60 additions and 74 deletions

View File

@@ -84,12 +84,6 @@ Blockly.Dart.ORDER_CASCADE = 15; // ..
Blockly.Dart.ORDER_ASSIGNMENT = 16; // = *= /= ~/= %= += -= <<= >>= &= ^= |=
Blockly.Dart.ORDER_NONE = 99; // (...)
/**
* Allow for switching between one and zero based indexing for lists and text,
* one based by default.
*/
Blockly.Dart.ONE_BASED_INDEXING = true;
/**
* Initialise the database of variable names.
* @param {!Blockly.Workspace} workspace Workspace to generate code from.
@@ -232,10 +226,10 @@ Blockly.Dart.getAdjusted = function(block, atId, opt_delta, opt_negate,
opt_order) {
var delta = opt_delta || 0;
var order = opt_order || Blockly.Dart.ORDER_NONE;
if (Blockly.Dart.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
delta--;
}
var defaultAtIndex = Blockly.Dart.ONE_BASED_INDEXING ? '1' : '0';
var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';
if (delta) {
var at = Blockly.Dart.valueToCode(block, atId,
Blockly.Dart.ORDER_ADDITIVE) || defaultAtIndex;

View File

@@ -80,7 +80,7 @@ Blockly.Dart['lists_indexOf'] = function(block) {
var list = Blockly.Dart.valueToCode(block, 'VALUE',
Blockly.Dart.ORDER_UNARY_POSTFIX) || '[]';
var code = list + '.' + operator + '(' + item + ')';
if (Blockly.Dart.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
return [code + ' + 1', Blockly.Dart.ORDER_ADDITIVE];
}
return [code, Blockly.Dart.ORDER_UNARY_POSTFIX];

View File

@@ -90,7 +90,7 @@ Blockly.Dart['text_indexOf'] = function(block) {
var text = Blockly.Dart.valueToCode(block, 'VALUE',
Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\'';
var code = text + '.' + operator + '(' + substring + ')';
if (Blockly.Dart.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
return [code + ' + 1', Blockly.Dart.ORDER_ADDITIVE];
}
return [code, Blockly.Dart.ORDER_UNARY_POSTFIX];

View File

@@ -134,12 +134,6 @@ Blockly.JavaScript.ORDER_OVERRIDES = [
[Blockly.JavaScript.ORDER_LOGICAL_OR, Blockly.JavaScript.ORDER_LOGICAL_OR]
];
/**
* Allow for switching between one and zero based indexing for lists and text,
* one based by default.
*/
Blockly.JavaScript.ONE_BASED_INDEXING = true;
/**
* Initialise the database of variable names.
* @param {!Blockly.Workspace} workspace Workspace to generate code from.
@@ -272,10 +266,10 @@ Blockly.JavaScript.getAdjusted = function(block, atId, opt_delta, opt_negate,
opt_order) {
var delta = opt_delta || 0;
var order = opt_order || Blockly.JavaScript.ORDER_NONE;
if (Blockly.JavaScript.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
delta--;
}
var defaultAtIndex = Blockly.JavaScript.ONE_BASED_INDEXING ? '1' : '0';
var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';
if (delta > 0) {
var at = Blockly.JavaScript.valueToCode(block, atId,
Blockly.JavaScript.ORDER_ADDITION) || defaultAtIndex;

View File

@@ -88,7 +88,7 @@ Blockly.JavaScript['lists_indexOf'] = function(block) {
var list = Blockly.JavaScript.valueToCode(block, 'VALUE',
Blockly.JavaScript.ORDER_MEMBER) || '[]';
var code = list + '.' + operator + '(' + item + ')';
if (Blockly.JavaScript.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
return [code + ' + 1', Blockly.JavaScript.ORDER_ADDITION];
}
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];

View File

@@ -96,7 +96,7 @@ Blockly.JavaScript['text_indexOf'] = function(block) {
Blockly.JavaScript.ORDER_MEMBER) || '\'\'';
var code = text + '.' + operator + '(' + substring + ')';
// Adjust index if using one-based indices.
if (Blockly.JavaScript.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
return [code + ' + 1', Blockly.JavaScript.ORDER_ADDITION];
}
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];

View File

@@ -87,9 +87,9 @@ Blockly.Lua.ORDER_OR = 9; // or
Blockly.Lua.ORDER_NONE = 99;
/**
* Lua is not supporting zero-indexing since the language itself is one-indexed,
* so there is not flag for ONE_BASED_INDEXING to indicate which indexing is
* used for lists and text.
* Note: Lua is not supporting zero-indexing since the language itself is
* one-indexed, so the generator does not repoct the oneBasedIndex configuration
* option used for lists and text.
*/
/**

View File

@@ -131,12 +131,6 @@ Blockly.PHP.ORDER_OVERRIDES = [
[Blockly.PHP.ORDER_LOGICAL_OR, Blockly.PHP.ORDER_LOGICAL_OR]
];
/**
* Allow for switching between one and zero based indexing for lists and text,
* one based by default.
*/
Blockly.PHP.ONE_BASED_INDEXING = true;
/**
* Initialise the database of variable names.
* @param {!Blockly.Workspace} workspace Workspace to generate code from.
@@ -257,10 +251,10 @@ Blockly.PHP.getAdjusted = function(block, atId, opt_delta, opt_negate,
opt_order) {
var delta = opt_delta || 0;
var order = opt_order || Blockly.PHP.ORDER_NONE;
if (Blockly.PHP.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
delta--;
}
var defaultAtIndex = Blockly.PHP.ONE_BASED_INDEXING ? '1' : '0';
var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';
if (delta > 0) {
var at = Blockly.PHP.valueToCode(block, atId,
Blockly.PHP.ORDER_ADDITION) || defaultAtIndex;

View File

@@ -105,7 +105,7 @@ Blockly.PHP['lists_indexOf'] = function(block) {
Blockly.PHP.ORDER_NONE) || '\'\'';
var argument1 = Blockly.PHP.valueToCode(block, 'VALUE',
Blockly.PHP.ORDER_MEMBER) || '[]';
if (Blockly.PHP.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
var errorIndex = ' 0';
var indexAdjustment = ' + 1';
} else {

View File

@@ -102,7 +102,7 @@ Blockly.PHP['text_indexOf'] = function(block) {
Blockly.PHP.ORDER_NONE) || '\'\'';
var text = Blockly.PHP.valueToCode(block, 'VALUE',
Blockly.PHP.ORDER_NONE) || '\'\'';
if (Blockly.PHP.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
var errorIndex = ' 0';
var indexAdjustment = ' + 1';
} else {

View File

@@ -90,12 +90,6 @@ Blockly.Python.ORDER_CONDITIONAL = 15; // if else
Blockly.Python.ORDER_LAMBDA = 16; // lambda
Blockly.Python.ORDER_NONE = 99; // (...)
/**
* Allow for switching between one and zero based indexing for lists and text,
* one based by default.
*/
Blockly.Python.ONE_BASED_INDEXING = true;
/**
* List of outer-inner pairings that do NOT require parentheses.
* @type {!Array.<!Array.<number>>}
@@ -258,10 +252,10 @@ Blockly.Python.scrub_ = function(block, code) {
*/
Blockly.Python.getAdjustedInt = function(block, atId, opt_delta, opt_negate) {
var delta = opt_delta || 0;
if (Blockly.Python.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
delta--;
}
var defaultAtIndex = Blockly.Python.ONE_BASED_INDEXING ? '1' : '0';
var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';
var atOrder = delta ? Blockly.Python.ORDER_ADDITIVE :
Blockly.Python.ORDER_NONE;
var at = Blockly.Python.valueToCode(block, atId, atOrder) || defaultAtIndex;
@@ -287,4 +281,3 @@ Blockly.Python.getAdjustedInt = function(block, atId, opt_delta, opt_negate) {
}
return at;
};

View File

@@ -76,7 +76,7 @@ Blockly.Python['lists_indexOf'] = function(block) {
Blockly.Python.ORDER_NONE) || '[]';
var list = Blockly.Python.valueToCode(block, 'VALUE',
Blockly.Python.ORDER_NONE) || '\'\'';
if (Blockly.Python.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
var errorIndex = ' 0';
var firstIndexAdjustment = ' + 1';
var lastIndexAdjustment = '';

View File

@@ -103,7 +103,7 @@ Blockly.Python['text_indexOf'] = function(block) {
var text = Blockly.Python.valueToCode(block, 'VALUE',
Blockly.Python.ORDER_MEMBER) || '\'\'';
var code = text + '.' + operator + '(' + substring + ')';
if (Blockly.Python.ONE_BASED_INDEXING) {
if (block.workspace.options.oneBasedIndex) {
return [code + ' + 1', Blockly.Python.ORDER_ADDITIVE];
}
return [code, Blockly.Python.ORDER_FUNCTION_CALL];