// Opus calls OnInit to initialize the script add-in function OnInit(initData) { initData.name = "Test Name Refresh"; initData.desc = "Adds columns defined by regex search against filenames."; initData.copyright = "playful & contributors 2015"; initData.min_version = "11.5.1" initData.version = "0.9.2"; initData.default_enable = true; var ColumnPrefix = "REFRESH."; // Add all columns (create ScriptColumn objects via AddColumn() for(var key in columns) { if (columns.hasOwnProperty(key)) { var column = columns[key]; var cmd = initData.AddColumn(); cmd.autorefresh = true; cmd.namerefresh = true; cmd.defsort = 1 ; cmd.defwidth = (typeof column.width === 'undefined') ? 5 : column.width; cmd.header = key; cmd.label = ColumnPrefix + key; cmd.method = "OnRegexColumn"; cmd.name = key; cmd.type = null; } } } // End OnInit // Define Three Columns var columns = { 'Title' : { // The title (stripping [the keys=values] ) pattern: /^(?:[^ ]| (?!\[))*/, width: 30 }, 'Min' : { // Duration, e.g. 120 // acceptable aliases for key: min, dur, duration pattern: /\[(?:[^\]]+_)?(?:min|dur(?:ation)?)=([^\]_]+)/i, group: 1, width: 3, }, 'Year' : { // What year was it released? // acceptable aliases for key: y, yr, year pattern: /\[(?:[^\]]+_)?y(?:(?:ea)?r)?=([^\]_]+)/i, group: 1, width: 4, } }; function OnRegexColumn(ColumnData) { // OnRegexColumn is an OnScriptColumn method // See http://www.gpsoft.com.au/help/opus11/index.html#!Documents/Scripting/OnScriptColumn.htm // ColumnData is a ScriptColumnData object // See http://www.gpsoft.com.au/help/opus11/index.html#!Documents/Scripting/ScriptColumnData.htm var colName = ColumnData.col; if(!columns[colName]) return; var regexMatch; var subject = ColumnData.item["name_stem"];; regexMatch = columns[colName].pattern.exec(subject); if (regexMatch != null) { // display the value for the correct capture group var capturegroup = (typeof columns[colName].group === 'undefined') ? 0 : columns[colName].group; ColumnData.value = regexMatch[capturegroup]; } // regexmatch } // OnRegexColumn