Sha256: da95d871558b3279f4eea29e4815f26f4447dbe31cabf55537a95b46b3618e9a
Contents?: true
Size: 1.44 KB
Versions: 2
Compression:
Stored size: 1.44 KB
Contents
# Namespace to create custom fragments from client scripts module Fragment include Ecoportal::API::Common::GraphQL::ClassHelpers end # Class to define/parse fragments module Ecoportal module API class GraphQL class Fragment include Ecoportal::API::Common::GraphQL::ClassHelpers class << self def fragment(sym, heredoc) fragments[sym] = heredoc end def fragments @fragments ||= {} end end attr_reader :client, :fragments def initialize(client) @client = client parse end def define(sym, heredoc, namespace: ::Fragment) namespace.send(:remove_const, sym) if namespace.const_defined?(sym) client.parse(heredoc).tap do |fragment| namespace.const_set(sym, fragment) ::Fragment.const_set(sym, fragment) unless namespace == ::Fragment end end private def parse fragments = self.class.fragments.each_with_object({}) do |(sym, heredoc), out| out[sym] = define(sym, heredoc, namespace: self.class) end end end end end end require 'ecoportal/api/graphql/fragment/pagination' require 'ecoportal/api/graphql/fragment/location_node' require 'ecoportal/api/graphql/fragment/action' require 'ecoportal/api/graphql/fragment/contractor_entity'
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ecoportal-api-graphql-0.3.7 | lib/ecoportal/api/graphql/fragment.rb |
ecoportal-api-graphql-0.3.6 | lib/ecoportal/api/graphql/fragment.rb |