Sha256: 3463f517dfbd47546961aa90eab660ba01997c9d6bed4eec17d63be1ee954eb1

Contents?: true

Size: 1.67 KB

Versions: 38

Compression:

Stored size: 1.67 KB

Contents

# Jets::Processors::Deducer class figures out information that allows the
# controller or job to be called. Sme key methods for deducer:
#
#   code - code to instance eval.  IE: PostsController.new(event, context).index
#   path - full path to the app code. IE: #{Jets.root}app/controllers/posts_controller.rb
#
class Jets::Processors::Deducer
  def initialize(handler)
    @handler = handler # handlers/controllers/posts.show
    # @handler_path: "handlers/controllers/posts"
    # @handler_method: "show"
    @handler_path, @handler_method = @handler.split('.')
  end

  def code
    # code: "PostsController.process(event, context, meth: "show")"
    # code: "HardJob.process(event, context, meth: "dig")"
    %|#{class_name}.process(event, context, "#{@handler_method}")|
  end

  # Input: @handler_path: handlers/jobs/hard_job.rb
  # Output: #{Jets.root/app/jobs/hard_job.rb
  def path
    Jets.root.to_s + @handler_path.sub("handlers", "app") + ".rb"
  end

  # process_type is key. It can be either "controller" or "job". It is used to
  # deduce the rest of the methods: code, path.
  def process_type
    @handler.split('/')[1].singularize # controller or job
  end

  # Example underscored_class_name:
  #   class_name = underscored_class_name
  #   class_name = class_name # PostsController
  def class_name
    regexp = Regexp.new(".*handlers/#{process_type.pluralize}/")
    # Example regexp:
    #   /.*handlers\/controllers\//
    #   /.*handlers\/jobs\//
    class_name = @handler_path.sub(regexp, "")
    # Example class names:
    #   posts_controller
    #   hard_job
    #   hello
    #   hello_function

    class_name.classify
  end

  def load_class
    Jets::Klass.from_path(path)
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
jets-0.8.18 lib/jets/processors/deducer.rb
jets-0.8.17 lib/jets/processors/deducer.rb
jets-0.8.15 lib/jets/processors/deducer.rb
jets-0.8.14 lib/jets/processors/deducer.rb
jets-0.8.13 lib/jets/processors/deducer.rb
jets-0.8.12 lib/jets/processors/deducer.rb
jets-0.8.11 lib/jets/processors/deducer.rb
jets-0.8.10 lib/jets/processors/deducer.rb
jets-0.8.9 lib/jets/processors/deducer.rb
jets-0.8.8 lib/jets/processors/deducer.rb
jets-0.8.6 lib/jets/processors/deducer.rb
jets-0.8.5 lib/jets/processors/deducer.rb
jets-0.8.4 lib/jets/processors/deducer.rb
jets-0.8.3 lib/jets/processors/deducer.rb
jets-0.8.2 lib/jets/processors/deducer.rb
jets-0.8.1 lib/jets/processors/deducer.rb
jets-0.8.0 lib/jets/processors/deducer.rb
jets-0.7.1 lib/jets/processors/deducer.rb
jets-0.7.0 lib/jets/processors/deducer.rb
jets-0.6.9 lib/jets/processors/deducer.rb