#!/usr/bin/env ruby # encoding: UTF-8 # -- # Copyright (C) 2008-2010 10gen Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ++ require 'rubygems' require 'bson' # We don't use YAJL because we need to specify the class # to store the JSON object in. BSON is ordered so we need BSON::OrderedHash # # We use json/pure because json/ext is broken with BSON::OrderedHash # (probably for the same reasons that we can't use YAJL). # # Note that, at the moment, this will not properly round-trip # in all cases from the output generated by b2json. begin require 'json/pure' # broken with 'json/ext' rescue LoadError puts "This script requires json/pure. Please install one of the following:" puts " gem install json_pure" puts " gem install json" Process.exit end # Convert all JSON objects in an IO into BSON. def print_j2bson(io) io.each_line do |line| jsonobj = JSON.parse(line, { :object_class => BSON::OrderedHash } ) bsonobj = BSON.serialize(jsonobj) STDOUT << bsonobj.to_s end end # print usage def usage() STDERR << <