Sha256: 736aad9c895398d03a65a936d846723be38b40deededa37028ad3cc888d452b4
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
require "sugoi_pretty_json/version" require "sugoi_pretty_json/sugoi_json" require "awesome_print" require "user_agent_parser" require "json" module SugoiPrettyJSON def self.parse(log, options = {}) parser = Parser.new(log, options) if block_given? yield(parser) end parser.parse end class ParsedMember attr_accessor :name, :source attr_reader :json_key def initialize(json_key) @json_key = json_key.to_s end end class Parser def initialize(log, options) @log = log.strip if options[:user_agent] parse_user_agent(json_key: options[:user_agent]) end @parsed_hash_members = [] @parsed_string_members = [] @assigned_option_only = options[:only] || [] end def parse json = SugoiJSON.new(@log) json.parse_user_agent!(@user_agent_member) json.parse_hash!(@parsed_hash_members) json.parse_string!(@parsed_string_members) json.slice_only_option!(build_option_only) json.to_hash end def parse_string(json_key: ) parsed_member = ParsedMember.new(json_key) yield(parsed_member) @parsed_string_members << parsed_member end def parse_hash(json_key: ) parsed_member = ParsedMember.new(json_key) yield(parsed_member) @parsed_hash_members << parsed_member end def parse_user_agent(json_key: ) parsed_member = ParsedMember.new(json_key) yield(parsed_member) if block_given? parsed_member.name ||= 'user_agent' @user_agent_member = parsed_member end private def build_option_only return if @assigned_option_only.empty? only = [] only.concat(@assigned_option_only) only << @user_agent_member.name if @user_agent_member @parsed_hash_members.each { |member| only << member.name } only end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sugoi_pretty_json-0.1.0 | lib/sugoi_pretty_json.rb |