@@ -1691,26 +1691,49 @@ logdebug = println
1691
1691
# return d
1692
1692
# end
1693
1693
1694
+ # case insensitive column mapping
1695
+ Base. lowercase (s:: Symbol ) = Symbol (lowercase (String (s)))
1696
+ case_insensitive_in (s:: Symbol , ar:: AbstractArray ) =
1697
+ lowercase (s) in [x isa Symbol ? lowercase (x) : x for x in ar]
1698
+
1694
1699
# fill column indices as a dictionary (key = column index, value = column symbol)
1695
1700
function _fill_column_indices (handler)
1696
1701
handler. column_indices = Vector {Tuple{Int64, Symbol, UInt8}} ()
1697
1702
inflag = length (handler. config. include_columns) > 0
1698
1703
exflag = length (handler. config. exclude_columns) > 0
1699
1704
inflag && exflag && throw (ConfigError (" You can specify either include_columns or exclude_columns but not both." ))
1705
+ processed = []
1700
1706
for j in 1 : length (handler. column_symbols)
1701
1707
name = handler. column_symbols[j]
1702
1708
if inflag
1703
- if j in handler. config. include_columns || name in handler. config. include_columns
1709
+ if j in handler. config. include_columns ||
1710
+ case_insensitive_in (name, handler. config. include_columns)
1704
1711
push! (handler. column_indices, (j, name, handler. column_types[j]))
1712
+ push! (processed, lowercase (name))
1705
1713
end
1706
1714
elseif exflag
1707
- if ! (j in handler. config. exclude_columns || name in handler. config. exclude_columns)
1715
+ if ! (j in handler. config. exclude_columns ||
1716
+ case_insensitive_in (name, handler. config. exclude_columns))
1708
1717
push! (handler. column_indices, (j, name, handler. column_types[j]))
1718
+ else
1719
+ push! (processed, lowercase (name))
1709
1720
end
1710
1721
else
1711
1722
push! (handler. column_indices, (j, name, handler. column_types[j]))
1712
1723
end
1713
1724
end
1725
+ if inflag && length (processed) != length (handler. config. include_columns)
1726
+ diff = setdiff (handler. config. include_columns, processed)
1727
+ for c in diff
1728
+ warn (" Unknown include column $c " )
1729
+ end
1730
+ end
1731
+ if exflag && length (processed) != length (handler. config. exclude_columns)
1732
+ diff = setdiff (handler. config. exclude_columns, processed)
1733
+ for c in diff
1734
+ warn (" Unknown exclude column $c " )
1735
+ end
1736
+ end
1714
1737
# println2(handler, "column_indices = $(handler.column_indices)")
1715
1738
end
1716
1739
0 commit comments