Skip to content

Commit

Permalink
Ability to have duplicate column names
Browse files Browse the repository at this point in the history
This makes it easier to re-use stored procedures that have duplicate
column names for multi-mapping between Dapper and tedious. When the same
column is used multiple times, you can reference it with:
row['columnName'][index].value

Single occurence columns would still work with row['columnName'].value.
There might be a more intuitive way of references the duplicated column,
so I'm open to ideas there.
  • Loading branch information
nadeem committed Jan 30, 2013
1 parent 460e33d commit 60c24d1
Showing 1 changed file with 38 additions and 29 deletions.
67 changes: 38 additions & 29 deletions src/token/row-token-parser.coffee
Original file line number Diff line number Diff line change
@@ -1,29 +1,38 @@
# s2.2.7.17

valueParse = require('../value-parser')
sprintf = require('sprintf').sprintf

DIGITS_REGEX = /^\d+$/

parser = (buffer, columnsMetaData) ->
columns = []
for columnMetaData in columnsMetaData
#console.log sprintf('Token @ 0x%02X', buffer.position)

value = valueParse(buffer, columnMetaData)

column =
value: value
metadata: columnMetaData

columns.push(column)

if !(DIGITS_REGEX.test(columnMetaData.colName))
columns[columnMetaData.colName] = column

# Return token
name: 'ROW'
event: 'row'
columns: columns

module.exports = parser
# s2.2.7.17

valueParse = require('../value-parser')
sprintf = require('sprintf').sprintf

DIGITS_REGEX = /^\d+$/

parser = (buffer, columnsMetaData) ->
columns = []
for columnMetaData in columnsMetaData
#console.log sprintf('Token @ 0x%02X', buffer.position)

value = valueParse(buffer, columnMetaData)

column =
value: value
metadata: columnMetaData

columns.push(column)

if !(DIGITS_REGEX.test(columnMetaData.colName))
saveColumn(columnMetaData.colName, columns, column)

# Return token
name: 'ROW'
event: 'row'
columns: columns

saveColumn = (columnName, columns, value) ->
entry = columns[columnName]
if !entry
columns[columnName] = value;
else if Array.isArray(entry)
entry.push(value)
else
columns[columnName] = [entry, value]

module.exports = parser

0 comments on commit 60c24d1

Please sign in to comment.