culpa 1.3.3 → 2.0.0

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjBjMzRjMTY2YjFiYmM2MTc0MTk0MTBhMzVmNDhmYTZmNzk4OGZkOQ==
5
- data.tar.gz: !binary |-
6
- YzljY2FjMGFkMzMwMjM4MzIzNmVhMDdlN2U1ODI4YTRiNjdhNjcxOA==
2
+ SHA1:
3
+ metadata.gz: 501766c60a9c24b890b1b3b7b0ab92dd6d814452
4
+ data.tar.gz: c03bbfff343038c60600b704d8f609ee2d2ce3e4
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZWE1ZWNkN2ZkZDdkZDYyMmQzZTIzMTc4OGMwMWQ4NWU2ZjRiMDQwYzZhNWVl
10
- NjE2ODlmZTYyNDQ1YTNjMTY2OGUwZWEwZWM3MDNkMTFhNjI4ZDJiY2Q1OTMx
11
- YzI5MjFmYzYxNTc4MTNmNDAwNmQ2NDYwNzlkODQ1MTVkZWQ5MDU=
12
- data.tar.gz: !binary |-
13
- YmI4NmE5Y2NkZmQ0MzdhYTdhMmM1YjUxZDQzNGRiN2QyOTUxYjExZGZiZGZl
14
- M2M0ZmU2YTIyMWRjNTlmNDE5NDUzODczZWVjZmJlYTFiMzA4YTFiYzk3NzZh
15
- YmQyY2Q1NWQzZTQ0MjMwNTczYTYxNzY1ZDQ0ZmQ4NzU4MTllNTQ=
6
+ metadata.gz: b200ea63a079c6bf033f7f947d15abccc69d72764f05c2ec2ca585d0060a65e57115b497acda8095ff2d40b00789b1eec45a26ed834650014e67e76e12bbe765
7
+ data.tar.gz: 4cfef48f853cbdedb2f90c05a346cfec87bc034161edb248a8a9cbf89b6451fdf2244f4d45d924c0bfca4b67e7912ffc22712bd9b972bd7eb1bd849843248202
data/lib/culpa/action.rb CHANGED
@@ -3,6 +3,14 @@ class Action
3
3
 
4
4
  @@renderers = {}
5
5
 
6
+ def self.renderers_list
7
+ @@renderers
8
+ end
9
+
10
+ def self.add_renderer(filepath)
11
+ @@renderers.merge!(RendererDescriber.new(filepath).result)
12
+ end
13
+
6
14
  def self.load_renderers
7
15
  Dir[File.join(File.dirname(__FILE__), 'renderers/*.rb')].each do |renderer|
8
16
  @@renderers.merge!(RendererDescriber.new(renderer).result)
@@ -3,6 +3,12 @@ module Culpa
3
3
  class BrickchainExecutor
4
4
  attr_reader :envelope
5
5
 
6
+ @@injected_keywords = {}
7
+
8
+ def self.inject_keyword!(keyword, &call)
9
+ @@injected_keywords[keyword] = call
10
+ end
11
+
6
12
  def initialize(envelope, request)
7
13
  @envelope = envelope
8
14
  @request = request
@@ -18,16 +24,13 @@ module Culpa
18
24
  @envelope
19
25
  end
20
26
 
21
- def render_coliseum(file)
22
- coliseum = ColiseumDSL.new("./#{COLISEUMS_PATH || 'coliseums'}/#{file}.rb", envelope)
23
- raise Action::RenderNow, format: :json,
24
- status: RendererDescriber::RETURN_CODES[coliseum.culpa_status] || 200,
25
- headers: { 'Content-Type' => 'application/json' }.merge(coliseum.culpa_headers),
26
- object: coliseum.dsl_attributes
27
- end
28
-
29
- def method_missing(sym)
30
- CallHolder.new(sym.to_s, @envelope, @request)
27
+ def method_missing(sym, *args)
28
+ if @@injected_keywords.has_key? sym
29
+ method = @@injected_keywords[sym]
30
+ instance_exec args, &method
31
+ else
32
+ CallHolder.new(sym.to_s, @envelope, @request)
33
+ end
31
34
  end
32
35
  end
33
36
 
data/lib/culpa/version.rb CHANGED
@@ -1 +1 @@
1
- CULPA_VERSION = '1.3.3'.freeze
1
+ CULPA_VERSION = '2.0.0'.freeze
@@ -1,6 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'culpa', '~> 1.3'
3
+ # The MEA framework
4
+ gem 'culpa', '~> 2.0'
5
+ # Coliseum extension to describe JSON in an elegent way
6
+ gem 'culpa-coliseum', '~> 2.0'
4
7
 
5
8
  # Use rspec to test your project.
6
9
  gem 'rspec', '~> 3.4'
@@ -1,2 +1,4 @@
1
- require 'culpa'
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.require(:default)
2
4
  run Culpa::Application.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: culpa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jérémy SEBAN
@@ -14,56 +14,56 @@ dependencies:
14
14
  name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.10'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.10'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.4'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: multi_json
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.12'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.12'
69
69
  description: Culpa is a framework following MEA principles. Learn more on http://culpaframework.org/.
@@ -77,11 +77,9 @@ files:
77
77
  - lib/culpa.rb
78
78
  - lib/culpa/action.rb
79
79
  - lib/culpa/brickchain_helpers.rb
80
- - lib/culpa/coliseum_dsl.rb
81
80
  - lib/culpa/envelope.rb
82
81
  - lib/culpa/path_parser.rb
83
82
  - lib/culpa/renderer_describer.rb
84
- - lib/culpa/renderers/coliseum.rb
85
83
  - lib/culpa/renderers/file.rb
86
84
  - lib/culpa/renderers/json.rb
87
85
  - lib/culpa/renderers/status.rb
@@ -106,12 +104,12 @@ require_paths:
106
104
  - lib
107
105
  required_ruby_version: !ruby/object:Gem::Requirement
108
106
  requirements:
109
- - - ~>
107
+ - - "~>"
110
108
  - !ruby/object:Gem::Version
111
109
  version: '2.0'
112
110
  required_rubygems_version: !ruby/object:Gem::Requirement
113
111
  requirements:
114
- - - ! '>='
112
+ - - ">="
115
113
  - !ruby/object:Gem::Version
116
114
  version: '0'
117
115
  requirements: []
@@ -119,5 +117,5 @@ rubyforge_project:
119
117
  rubygems_version: 2.4.5
120
118
  signing_key:
121
119
  specification_version: 4
122
- summary: ! 'Culpa : the MEA framework'
120
+ summary: 'Culpa : the MEA framework'
123
121
  test_files: []
@@ -1,71 +0,0 @@
1
- class ColiseumDSL
2
- attr_reader :dsl_attributes, :culpa_status, :culpa_headers
3
-
4
- def initialize(to_eval, envelope, eval_args = nil)
5
- @dsl_attributes = {}
6
- @culpa_headers = {}
7
- @culpa_envelope = envelope
8
- if to_eval.is_a? String
9
- instance_eval File.read(to_eval), to_eval
10
- else
11
- instance_exec eval_args, &to_eval
12
- end
13
- end
14
-
15
- def e
16
- @culpa_envelope
17
- end
18
-
19
- def set_status_code!(code)
20
- @culpa_status = code
21
- end
22
-
23
- def add_http_headers!(hdrs = {})
24
- @culpa_headers.merge!(hdrs)
25
- end
26
-
27
- def array!(opts, &blk)
28
- if opts.is_a? Hash
29
- sym, items = opts.first
30
- @dsl_attributes[sym] = []
31
- items.each do |item|
32
- @dsl_attributes[sym] << ColiseumDSL.new(blk, @culpa_envelope, item).dsl_attributes
33
- end
34
- else
35
- @dsl_attributes = []
36
- opts.each do |item|
37
- @dsl_attributes << ColiseumDSL.new(blk, @culpa_envelope, item).dsl_attributes
38
- end
39
- end
40
- end
41
-
42
- def extract!(target, *attrs)
43
- attrs.each do |att|
44
- @dsl_attributes[att] = if target.is_a? Hash
45
- target[att] if target.key? att
46
- else
47
- begin
48
- target.send(att)
49
- rescue
50
- # :nocov:
51
- nil
52
- # :nocov:
53
- end
54
- end
55
- end
56
- end
57
-
58
- def method_missing(sym, *args, &blk)
59
- @dsl_attributes[sym] = if ::Kernel.block_given?
60
- ColiseumDSL.new(blk, @culpa_envelope).dsl_attributes
61
- else
62
- if args.count.zero?
63
- nil
64
- elsif args.count == 1
65
- args[0]
66
- else
67
- args
68
- end
69
- end
70
- end
71
- end
@@ -1,19 +0,0 @@
1
- ##
2
- # This renderer loads the ColiseumDSL to eval the
3
- # passed file, and renders it as a JSON.
4
- ##
5
-
6
- require_relative '../coliseum_dsl'
7
-
8
- describe_renderer :coliseum do |options, envelope|
9
- coliseum = ColiseumDSL.new("./#{ COLISEUMS_PATH || 'coliseums' }/#{options[:coliseum]}.rb", envelope)
10
-
11
- sent_headers = { 'Content-Type' => 'application/json' }.merge(options[:headers]).merge(coliseum.culpa_headers)
12
-
13
- {
14
- format: :json,
15
- status: RETURN_CODES[options[:status]] || RETURN_CODES[coliseum.culpa_status] || 200,
16
- headers: sent_headers,
17
- object: coliseum.dsl_attributes
18
- }
19
- end