jsonize 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/jsonize/version.rb +1 -1
- data/lib/jsonize.rb +19 -9
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: bdb7d503cc06ab7caf4bad0cfb1f7162fab524a76d7cfc5d24c695f58231f5ae
         | 
| 4 | 
            +
              data.tar.gz: 5d4ac6b92ab4f1893d7cd23609460e9f2009bd646f1df4f2878a5fa4db758465
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 93ee3812b793b0dd34f88df23bc3438372d7cfb07d1ddefa72026bd9a064e37e4d5689bb13d46ae8eff5e62e90ee844f16179235d4806ec71519ff6dc87e89f1
         | 
| 7 | 
            +
              data.tar.gz: 8830854c6b28efcdeae92aebef0b75138a6f85fc87be5016931374b7b3c2f32c2cec8a0aa133f6a14db1634d83ed5db7f2ab8be7baa40a1603000611e882809d
         | 
    
        data/lib/jsonize/version.rb
    CHANGED
    
    
    
        data/lib/jsonize.rb
    CHANGED
    
    | @@ -44,12 +44,13 @@ module Jsonize | |
| 44 44 | 
             
                  end
         | 
| 45 45 | 
             
               end
         | 
| 46 46 |  | 
| 47 | 
            -
               def generate_json propses,  | 
| 47 | 
            +
               def generate_json propses, options = {}
         | 
| 48 48 | 
             
                  propses.reduce({}) do |r, (name, props)|
         | 
| 49 49 | 
             
                     value =
         | 
| 50 | 
            -
                        if props["rule"] | 
| 51 | 
            -
                            | 
| 52 | 
            -
                        elsif props["rule"].is_a?(String)
         | 
| 50 | 
            +
                        if props["rule"] == '_reflection'
         | 
| 51 | 
            +
                           send(name).as_json(options[name.to_sym] || {})
         | 
| 52 | 
            +
                        elsif props["rule"].is_a?(String) # NOTE required for sidekiq key
         | 
| 53 | 
            +
                           extenrals = options[:externals]
         | 
| 53 54 | 
             
                           externals.fetch(props["rule"].to_sym) { |x| externals[props["rule"]] }
         | 
| 54 55 | 
             
                        elsif props["real_name"] != name.to_s
         | 
| 55 56 | 
             
                           read_attribute(props["real_name"]).as_json
         | 
| @@ -70,7 +71,8 @@ module Jsonize | |
| 70 71 | 
             
                     embed_attrs,
         | 
| 71 72 | 
             
                     additional_attrs,
         | 
| 72 73 | 
             
                     external_attrs(options),
         | 
| 73 | 
            -
                     options[:map] || {}
         | 
| 74 | 
            +
                     options[:map] || {},
         | 
| 75 | 
            +
                     _reflections
         | 
| 74 76 | 
             
                  ].reduce { |r, hash| r.merge(hash.map {|k,v| [k.to_sym, v] }.to_h) }
         | 
| 75 77 | 
             
                  except = options.fetch(:except, [])
         | 
| 76 78 | 
             
                  only = options.fetch(:only, self.attributes.keys.map(&:to_sym) | (options[:map] || {}).keys | embed_attrs.keys | external_attrs(options).keys)
         | 
| @@ -81,19 +83,27 @@ module Jsonize | |
| 81 83 | 
             
                     next nil if except.include?(name.to_sym) || (only & [ name.to_sym, name_in.to_sym ].uniq).blank?
         | 
| 82 84 |  | 
| 83 85 | 
             
                     rule = parse_rule(rule_in)
         | 
| 84 | 
            -
                     #binding.pry
         | 
| 85 86 | 
             
                     [name, { "rule" => rule, "real_name" => name_in.to_s }]
         | 
| 86 87 | 
             
                  end.compact.to_h
         | 
| 87 88 | 
             
               end
         | 
| 88 89 |  | 
| 89 90 | 
             
               def parse_rule rule_in
         | 
| 90 | 
            -
                   | 
| 91 | 
            +
                  case rule_in
         | 
| 92 | 
            +
                  when TrueClass, FalseClass, NilClass
         | 
| 93 | 
            +
                     true
         | 
| 94 | 
            +
                  when ActiveRecord::Reflection::AbstractReflection
         | 
| 95 | 
            +
                     '_reflection'
         | 
| 96 | 
            +
                  when Symbol, String
         | 
| 97 | 
            +
                     rule_in.to_s
         | 
| 98 | 
            +
                  else
         | 
| 99 | 
            +
                     true
         | 
| 100 | 
            +
                  end
         | 
| 91 101 | 
             
               end
         | 
| 92 102 |  | 
| 93 103 | 
             
               def jsonize options = {}
         | 
| 94 104 | 
             
                  attr_props = prepare_json(options)
         | 
| 95 105 | 
             
                  redisize_json(attr_props) do
         | 
| 96 | 
            -
                     generate_json(attr_props, options | 
| 106 | 
            +
                     generate_json(attr_props, options)
         | 
| 97 107 | 
             
                  end
         | 
| 98 108 | 
             
               end
         | 
| 99 109 |  | 
| @@ -104,7 +114,7 @@ module Jsonize | |
| 104 114 |  | 
| 105 115 | 
             
               def as_json options = {}
         | 
| 106 116 | 
             
                  attr_props = prepare_json(options)
         | 
| 107 | 
            -
                  generate_json(attr_props, options | 
| 117 | 
            +
                  generate_json(attr_props, options)
         | 
| 108 118 | 
             
               end
         | 
| 109 119 |  | 
| 110 120 | 
             
               module Relation
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jsonize
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Pavel «Malo» Skrylev
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-08-05 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: redisize
         |