#!/usr/bin/ruby # The old problem of string expanding # https://trizenx.blogspot.ro/2012/03/expand-string.html func abs_str (str) { var strs = []; var root = []; var word = ''; func store { word != '' && ( strs.append(root.join + word); ); } str.split('').each { |c| given (c) { when ('{') { root.append(word); word.clear!; } when ('}') { store.run; root.pop; word.clear!; } when (',') { store.run; word.clear!; } default { word += c; } } } store.run; return(strs); } var strings = [ "perl-{gnome2-wnck,gtk2-{imageview,unique},x11-protocol,image-exiftool}", "perl-{proc-{simple,processtable},net-{dbus,dropbox-api},goo-canvas}", "perl-{sort-naturally,json,json-xs,xml-simple,www-mechanize,locale-gettext}", "perl-{file-{which,basedir,copy-recursive},pathtools,path-class},mplayer", "perl-{script-{test,meta}},flash-player", ]; strings.each { |str| var array = abs_str(str); "%-25s" * 3 + "\n" -> printf(array[0..2 -> to_list]); }