class File

def self.read(path)

def self.read(path)
  %x{
    var data = ''
    var status = -1;
    try {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', path, false);
      xhr.addEventListener('load', function() {
        status = this.status;
        // status is 0 for local file mode (i.e., file://)
        if (status == 0 || status == 200) {
          data = this.responseText;
        }
      });
      xhr.overrideMimeType('text/plain');
      xhr.send();
    }
    catch (e) {
      status = 0;
    }
    // assume that no data in local file mode means it doesn't exist
    if (status == 404 || (status == 0 && data == '')) {
      throw #{IOError.new `'No such file or directory: ' + path`};
    }
  }
  `data`
end