module Harby

module Grammar
        grammar Regex
                rule regex
                        "/" pattern:("\\/" / !"/" .)+ "/" modifiers:[iIxXmM]* {
                                def parsed_value
                                        Regexp.new(pattern.text_value, modifiers)
                                end

                                def modifiers
                                        @modifiers ||= super.text_value.downcase.split("").map do |letter|
                                                case letter
                                                when "i" then Regexp::IGNORECASE
                                                when "x" then Regexp::EXTENDED
                                                when "m" then Regexp::MULTILINE
                                                else nil; end
                                        end.compact.uniq.inject(0) do |flags, modifier|
                                                flags |= modifier
                                        end
                                end
                        }
                end
        end
end

end