Sha256: 78e2ca55b58fe14aadd5c995f5580ab2f96c1f07637cf9e86bbda0e2d7745864

Contents?: true

Size: 1.48 KB

Versions: 163

Compression:

Stored size: 1.48 KB

Contents

module ForestLiana
  module JsonPrinter
    def pretty_print json, indentation = ""
      result = ""

      if json.kind_of? Array
        result << "["
        is_small = json.length < 3
        is_primary_value = false

        json.each_index do |index|
          item = json[index]
          is_primary_value = !item.kind_of?(Hash) && !item.kind_of?(Array)

          if index == 0 && is_primary_value && !is_small
            result << "\n#{indentation}  "
          elsif index > 0 && is_primary_value && !is_small
            result << ",\n#{indentation}  "
          elsif index > 0
            result << ", "
          end

          result << pretty_print(item, is_primary_value ? "#{indentation}  " : indentation)
        end

        result << "\n#{indentation}" if is_primary_value && !is_small
        result << "]"
      elsif json.kind_of? Hash
        result << "{\n"

        is_first = true
        json = json.stringify_keys
        json.each do |key, value|
          result << ",\n" unless is_first
          is_first = false
          result << "#{indentation}  \"#{key}\": "
          result << pretty_print(value, "#{indentation}  ")
        end

        result << "\n#{indentation}}"
      elsif json.nil?
        result << "null"
      elsif !!json == json
        result << (json ? "true" : "false")
      elsif json.is_a?(String) || json.is_a?(Symbol)
        result << "\"#{json.gsub(/"/, '\"')}\""
      else
        result << json.to_s
      end

      result
    end
  end
end

Version data entries

163 entries across 163 versions & 1 rubygems

Version Path
forest_liana-9.11.1 lib/forest_liana/json_printer.rb
forest_liana-9.11.0 lib/forest_liana/json_printer.rb
forest_liana-9.10.6 lib/forest_liana/json_printer.rb
forest_liana-9.10.5 lib/forest_liana/json_printer.rb
forest_liana-9.10.4 lib/forest_liana/json_printer.rb
forest_liana-9.10.3 lib/forest_liana/json_printer.rb
forest_liana-9.10.2 lib/forest_liana/json_printer.rb
forest_liana-9.10.1 lib/forest_liana/json_printer.rb
forest_liana-9.10.0 lib/forest_liana/json_printer.rb
forest_liana-9.9.1 lib/forest_liana/json_printer.rb
forest_liana-9.9.0 lib/forest_liana/json_printer.rb
forest_liana-9.8.0 lib/forest_liana/json_printer.rb
forest_liana-9.7.0 lib/forest_liana/json_printer.rb
forest_liana-9.6.4 lib/forest_liana/json_printer.rb
forest_liana-9.6.3 lib/forest_liana/json_printer.rb
forest_liana-9.6.0 lib/forest_liana/json_printer.rb
forest_liana-9.5.7 lib/forest_liana/json_printer.rb
forest_liana-9.5.6 lib/forest_liana/json_printer.rb
forest_liana-9.5.5 lib/forest_liana/json_printer.rb
forest_liana-9.5.4 lib/forest_liana/json_printer.rb