Module: GPS_PVT::Util
- Defined in:
- lib/gps_pvt/util.rb
Defined Under Namespace
Class Method Summary collapse
- .get_txt(fname_or_uri) ⇒ Object
- .inflate(src, type = :gz) ⇒ Object
- .open(*args, &b) ⇒ Object
- .special_stream?(spec) ⇒ Boolean
Class Method Details
.get_txt(fname_or_uri) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/gps_pvt/util.rb', line 78 def get_txt(fname_or_uri) is_uri = fname_or_uri.kind_of?(URI) open(fname_or_uri){|src| compressed = proc{ case src.content_type when /gzip/; next :gz end if is_uri case fname_or_uri.to_s when /\.gz$/; next :gz when /\.Z$/; next :Z end nil }.call case src when File next src.path when Tempfile # Preserve tempfile after leaving open-uri block src.define_singleton_method(:close!){close(false)} next src # Kernel.open(obj) redirects to obj.open if obj responds to :open end unless compressed Tempfile::open(File::basename($0, '.*')){|dst| dst.binmode dst.write((compressed ? inflate(is_file ? src.path : src, compressed) : src).read) dst.rewind dst.path } } end |
.inflate(src, type = :gz) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/gps_pvt/util.rb', line 64 def inflate(src, type = :gz) case type when :gz require 'zlib' Zlib::GzipReader.send(*(src.kind_of?(IO) ? [:new, src] : [:open, src])) when :Z res = IO::popen("uncompress -c #{src.kind_of?(IO) ? '-' : src}", 'r+') res.print(src.read) if src.kind_of?(IO) res.close_write res else raise "Unknown compression type: #{type} of #{src}" end end |
.open(*args, &b) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/gps_pvt/util.rb', line 49 def open(*args, &b) return args[0].open(*args[1..-1], &b) if args[0].respond_to?(:open) case args[0].to_str when (Serial::SPEC rescue nil) return ((@serial_ports ||= {})[$1] ||= Serial::new($1, $2 ? $2.to_i : 115200)) when '-' if (/^[wa]/ === args[1]) \ || (args[1].kind_of?(Integer) && ((File::Constants::WRONLY & args[1]) > 0)) then return STDOUT else return STDIN end end rescue nil super end |
.special_stream?(spec) ⇒ Boolean
46 47 48 |
# File 'lib/gps_pvt/util.rb', line 46 def special_stream?(spec) ['-', (Serial::SPEC rescue nil)].compact.any?{|v| v === spec} end |