Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit17e4a5d

Browse files
authored
Merge pull request#567 from peakon/fix/malformedAddress
Avoid error on malformed address
2 parents98cd6c3 +00a01f8 commit17e4a5d

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

‎lib/utils/col-cache.js‎

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,20 +89,29 @@ var colCache = module.exports = {
8989
if(addr){
9090
returnaddr;
9191
}
92-
93-
varcol=value.match(/[A-Z]+/)[0];
94-
varcolNumber=this.l2n(col);
95-
varrow=value.match(/\d+/)[0];
96-
varrowNumber=parseInt(row,10);
92+
varmatchCol=value.match(/[A-Z]+/);
93+
varcol;
94+
varcolNumber;
95+
if(matchCol){
96+
col=matchCol[0];
97+
colNumber=this.l2n(col);
98+
}
99+
varmatchRow=value.match(/\d+/);
100+
varrow;
101+
varrowNumber;
102+
if(matchRow){
103+
row=matchRow[0];
104+
rowNumber=parseInt(row,10);
105+
}
97106

98107
// in case $row$col
99-
value=col+row;
108+
value=(col||'')+(row||'');
100109

101110
varaddress={
102111
address:value,
103112
col:colNumber,
104113
row:rowNumber,
105-
$col$row:'$'+col+'$'+row
114+
$col$row:'$'+(col||'')+'$'+(row||'')
106115
};
107116

108117
// mem fix - cache only the tl 100x100 square

‎spec/unit/utils/col-cache.spec.js‎

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,25 @@ describe('colCache', function() {
6666
it('decodes addresses',function(){
6767
expect(colCache.decodeAddress('A1')).to.deep.equal({address:'A1',col:1,row:1,$col$row:'$A$1'});
6868
expect(colCache.decodeAddress('AA11')).to.deep.equal({address:'AA11',col:27,row:11,$col$row:'$AA$11'});
69+
});
70+
71+
describe('with a malformed address',function(){
72+
it('tolerates a missing row number',function(){
73+
expect(colCache.decodeAddress('$B')).to.deep.equal({address:'B',col:2,row:undefined,$col$row:'$B$'});
74+
});
6975

70-
it('convert [sheetName!][$]col[$]row[[$]col[$]row] into address or range structures',function(){
71-
expect(colCache.decodeEx('Sheet1!$H$1')).to.deep.equal({$col$row:'$H$1',address:'H1',col:8,row:1,sheetName:'Sheet1'});
72-
expect(colCache.decodeEx("'Sheet 1'!$H$1")).to.deep.equal({$col$row:'$H$1',address:'H1',col:8,row:1,sheetName:'Sheet 1'});
73-
expect(colCache.decodeEx("'Sheet !$:1'!$H$1")).to.deep.equal({$col$row:'$H$1',address:'H1',col:8,row:1,sheetName:'Sheet !$:1'});
74-
expect(colCache.decodeEx("'Sheet !$:1'!#REF!")).to.deep.equal({sheetName:'Sheet !$:1',error:'#REF!'});
76+
it('tolerates a missing column number',function(){
77+
expect(colCache.decodeAddress('$2')).to.deep.equal({address:'2',col:undefined,row:2,$col$row:'$$2'});
7578
});
7679
});
7780

81+
it('convert [sheetName!][$]col[$]row[[$]col[$]row] into address or range structures',function(){
82+
expect(colCache.decodeEx('Sheet1!$H$1')).to.deep.equal({$col$row:'$H$1',address:'H1',col:8,row:1,sheetName:'Sheet1'});
83+
expect(colCache.decodeEx("'Sheet 1'!$H$1")).to.deep.equal({$col$row:'$H$1',address:'H1',col:8,row:1,sheetName:'Sheet 1'});
84+
expect(colCache.decodeEx("'Sheet !$:1'!$H$1")).to.deep.equal({$col$row:'$H$1',address:'H1',col:8,row:1,sheetName:'Sheet !$:1'});
85+
expect(colCache.decodeEx("'Sheet !$:1'!#REF!")).to.deep.equal({sheetName:'Sheet !$:1',error:'#REF!'});
86+
});
87+
7888
it('gets address structures (and caches them)',function(){
7989
varaddr=colCache.getAddress('D5');
8090
expect(addr.address).to.equal('D5');

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp