0
我想用Ruby的OptionParser來解析命令行參數。我的一個參數是我定義這樣不區分大小寫OptionParser
opts.on('-p', '--project-name PROJECT', PROJECTS, 'The Project name', "{#{PROJECTS.join ', '}}"){|p| options.project = p}
其中PROJECTS
是一個字符串的預定義列表(我是紅寶石1.8.7)接受字符串的預定義列表。我如何告訴OptionsParser應該使用POJECTS列表以不區分大小寫的方式匹配參數?我看到類OptionParser :: List可能有這樣的東西,我只是不知道如何使用它。
不要你的意思'Regexp.union(項目)'而不是那個地圖/ escape/stringify/join/regexify的東西? –
@ muistooshort我曾嘗試過'Regexp.union',但那麼您如何使得到的正則表達式不區分大小寫?如果你做'/#{Regexp.union PROJECTS}/i',你會得到匹配區分大小寫的'/(? - mix:foo | bar | baz)/ i',因爲混合的正則表達式有自己的修飾符。我能想到的唯一選擇是'Regexp.union PROJECTS.map {| p | /#{p}/i}'這並不會更好,並且會生成一個更復雜的正則表達式,例如'/(?i-mx:foo)|(?i-mx:bar)|(?i-mx:baz)/' 。 –
@ muistooshort好的另一種選擇是'Regexp.new(Regexp.union(PROJECTS).source,Regexp :: IGNORECASE)',這是目前爲止我認爲最好的選擇。改變了我的答案。 –