module Locomotive::Steam::Liquid::Filters::Json
Public Instance Methods
json(input, fields = [])
click to toggle source
# File lib/locomotive/steam/liquid/filters/json.rb, line 7 def json(input, fields = []) if fields && fields.is_a?(String) fields = fields.split(',').map(&:strip) end if input.is_a?(Hash) object_to_json(input, fields) elsif input.respond_to?(:each) '[' + input.map do |object| fields.size == 1 ? object[fields.first].to_json : object_to_json(object, fields) end.join(',') + ']' else object_to_json(input, fields) end end
open_json(input)
click to toggle source
without the leading and trailing braces/brackets useful to add a prperty to an object or an element to an array
# File lib/locomotive/steam/liquid/filters/json.rb, line 25 def open_json(input) if input =~ /\A[\{\[](.*)[\}\]]\Z/m $1 else input end end
Protected Instance Methods
object_to_json(input, fields)
click to toggle source
# File lib/locomotive/steam/liquid/filters/json.rb, line 35 def object_to_json(input, fields) if input.respond_to?(:as_json) options = fields.blank? ? {} : { only: fields } input.as_json(options).to_json else input.to_json end end