Sha256: 1201d9f9d6b3e875fc1a5f55cf7f27c8be9e855e160fffdf6c6b0290fced49f2

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

require "forwardable"

module JsonStatham
  module Requests
    class Base
      extend Forwardable

      attr_reader :parser

      def_delegators :@parser, :name, :block, :current_schema, :observer

      def_delegators :@config, :schemas_path

      def self.call(parser)
        new(parser).call
      end

      def initialize(parser)
        Validation.check_object_class(parser, [JsonStatham::Parser])

        @parser = parser
        @config = JsonStatham.config
      end

      def base_path
        return "#{schemas_path}/#{folder_path}" if folder?

        schemas_path
      end

      def folder?
        !!folder_path
      end

      def file_path
        "#{base_path}/#{schema_name}.json"
      end

      def schema_name
        splitted_name.last
      end

      def folder_path
        return if splitted_name.length == 1

        splitted_name.reverse.drop(1).reverse.join("/")
      end

      def splitted_name
        name.split("/")
      end

      def call
        raise NotImplementedError
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
json_statham-0.1.3 lib/json_statham/requests/base.rb
json_statham-0.1.2 lib/json_statham/requests/base.rb
json_statham-0.1.0 lib/json_statham/requests/base.rb