Sha256: bb263daa60bb680173f218402dc2669901e3283988a82444e881636bb0f2df41

Contents?: true

Size: 1.54 KB

Versions: 16

Compression:

Stored size: 1.54 KB

Contents

require 'jsduck/util/singleton'
require 'jsduck/util/io'
require 'jsduck/logger'
require 'json'

module JsDuck
  module Util

    # Wrapper around the json gem for use in JsDuck.
    #
    # The main benefit of it is that we have a central place for
    # controlling how the JSON is created (pretty-formatted or not).
    class Json
      include Util::Singleton

      def initialize
        @pretty = false
      end

      # Configures the pretty-formatting from command line options.
      def configure(opts)
        @pretty = true if opts.pretty_json
      end

      # Turns object into JSON, places it inside JavaScript that calls the
      # given callback name, and writes the result to file.
      def write_jsonp(filename, callback_name, data)
        jsonp = "Ext.data.JsonP." + callback_name + "(" + generate(data) + ");"
        File.open(filename, 'w') {|f| f.write(jsonp) }
      end

      # Turns object into JSON and writes inside a file
      def write_json(filename, data)
        File.open(filename, 'w') {|f| f.write(generate(data)) }
      end

      # Generates JSON from object
      def generate(data)
        @pretty ? JSON.pretty_generate(data) : JSON.generate(data)
      end

      # Reads and parses JSON from file
      def read(filename)
        begin
          parse(Util::IO.read(filename))
        rescue
          Logger.fatal("#{filename} is not a valid JSON file")
          exit(1)
        end
      end

      # Parses JSON string
      def parse(string, opts = {})
        JSON.parse(string, opts)
      end

    end

  end
end

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
solvas-jsduck-6.0.0.30539 lib/jsduck/util/json.rb
solvas-jsduck-6.0.0.9571 lib/jsduck/util/json.rb
solvas-jsduck-6.0.0.6154 lib/jsduck/util/json.rb
solvas-jsduck-6.0.0.4021 lib/jsduck/util/json.rb
solvas-jsduck-6.0.0.2554 lib/jsduck/util/json.rb
solvas-jsduck-6.0.0.1891 lib/jsduck/util/json.rb
solvas-jsduck-6.0.0.beta.1888 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.10 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.9 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.8 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.7 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.5 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.4 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.3 lib/jsduck/util/json.rb
jsduck-troopjs-0.0.1 lib/jsduck/util/json.rb
jsduck-6.0.0beta lib/jsduck/util/json.rb