From 027038fdff55d7aaefd5f793ed9ca4f7208eee77 Mon Sep 17 00:00:00 2001 From: Kyle Banker Date: Mon, 12 Jul 2010 14:06:25 -0400 Subject: [PATCH] j2bson (json to bson) executable (neomantra) --- bin/j2bson | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 bin/j2bson diff --git a/bin/j2bson b/bin/j2bson new file mode 100755 index 0000000..20c4905 --- /dev/null +++ b/bin/j2bson @@ -0,0 +1,69 @@ +#!/usr/bin/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). +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 << <