Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $ cat bin/say
- #!/usr/bin/env ruby
- class String
- # return this string in qoutes
- def quote
- return '"' + self + '"'
- end
- # copied from file lib/shellwords.rb, line 69
- # escapes a string according to sh rules
- def shellescape str = self
- return "''" if str.nil? # added by nailor
- # An empty argument will be skipped, so return empty quotes.
- return "''" if str.empty?
- str = str.dup
- # Process as a single byte sequence because not all shell
- # implementations are multibyte aware.
- str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/n, "\\\\\\1")
- # A LF cannot be escaped with a backslash because a backslash + LF
- # combo is regarded as line continuation and simply ignored.
- str.gsub!(/\n/, "'\n'")
- return str
- end
- def asciify
- return self.tr("^A-Za-z0-9_.\-", "_")
- end
- end
- if ARGV.length < 1
- STDERR.puts "need an argument"
- Process.exit(-1)
- end
- text = ARGV.join(" ")
- text = text.shellescape
- p text
- system "echo #{text} | espeak -v de --stdin --stdout | aplay"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement