reaction 0.2.4 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9d44ed5a4d16563ce2b661c870d73950cd4bb81f
4
- data.tar.gz: 22851e1ee79194a12e563da426aacc1b7c3ecf91
3
+ metadata.gz: 29c24623a46f5019236295730d11ae4a450c5c52
4
+ data.tar.gz: e3337df4d723888ef15a847f39db261cddf16794
5
5
  SHA512:
6
- metadata.gz: eba75f96b595f8c5844a92aa6ffebb0eaff6d9045690570dd41d2b904a2af124ecd5fcd29c6593b573c2f2f654b9cfa8edb3af47b26229fb3ddb1c7354ceee4c
7
- data.tar.gz: 32d58d640be2c370fc5b6f9b37711e397ec2594311ea557fa374e3d79377d9e595d75861299dd280b4767d3ad5e5f8f48cb8307a5e3bf88225affc22f7a49054
6
+ metadata.gz: 48715d52c1a4f387d5be9e0f4bec0de61089be9d67de6a3cdf8e5fbb7419d0e02eae90110d69c53f7790140d6e6b8c5b6bd8cf00bd995541349ece1bc565a19b
7
+ data.tar.gz: 34e2353a1d5cffebb298b9c25988a5df03643394d207fa9ae192683b08bae248954a4f5a6f144daa2a4bbac42a22d12085e66232babfc6cfaec3d655aa668c12
data/lib/reaction/doc.rb CHANGED
@@ -5,13 +5,15 @@
5
5
  #
6
6
  module Reaction
7
7
  class Doc
8
- attr_reader :name, :message, :options
8
+ attr_reader :text, :options
9
9
 
10
- def initialize(name, message, options = {})
11
- @name = name.to_sym
12
- @message = message
10
+ def initialize(text, options = {})
11
+ @text = text
13
12
  @options = options
14
13
  end
15
14
 
15
+ def to_html(formatter = Markdown)
16
+ formatter.render(text)
17
+ end
16
18
  end
17
19
  end
@@ -28,6 +28,10 @@ module Reaction
28
28
  messages.any?
29
29
  end
30
30
 
31
+ def first
32
+ messages.first
33
+ end
34
+
31
35
  def each
32
36
  messages
33
37
  end
@@ -35,9 +39,16 @@ module Reaction
35
39
  def full_messages
36
40
  ret = []
37
41
  messages.each do |key, values|
38
- values.each do |value|
39
- ret << "#{key}: #{value}"
40
- end
42
+ ret |= full_messages_for(key, values)
43
+ end
44
+ ret
45
+ end
46
+
47
+ def full_messages_for(key, values = nil)
48
+ ret = []
49
+ values ||= messages[key]
50
+ values.each do |value|
51
+ ret << "Invalid value for param: #{key}. #{value}"
41
52
  end
42
53
  ret
43
54
  end
@@ -7,12 +7,21 @@ module Reaction
7
7
  module ClassMethods
8
8
  def attribute(name)
9
9
  attr_accessor name
10
+ eval(getter_code(name))
10
11
  attributes << name
11
12
  end
12
13
 
13
14
  def attributes
14
15
  @attributes ||= []
15
16
  end
17
+
18
+ def getter_code(name)
19
+ <<-CODE
20
+ def #{name}
21
+ self.#{name}
22
+ end
23
+ CODE
24
+ end
16
25
  end
17
26
 
18
27
  def set_attributes(attributes = {})
@@ -6,7 +6,7 @@ module Reaction
6
6
 
7
7
  module ClassMethods
8
8
  def doc(name, message, options = {})
9
- docs[name.to_sym] = Doc.new(name, message, options)
9
+ docs[name.to_sym] = Doc.new(message, options)
10
10
  end
11
11
 
12
12
  def docs
@@ -61,8 +61,9 @@ module Reaction
61
61
  def validate_params
62
62
  raw_params.each do |name, value|
63
63
  self.class.type(name).validate_each(self, name, value)
64
+ converted = param(name)
64
65
  self.class.validators(name).each do |validator|
65
- validator.validate_each(self, name, value)
66
+ validator.validate_each(self, name, converted)
66
67
  end
67
68
  end
68
69
  end
@@ -0,0 +1,18 @@
1
+ module Reaction
2
+ module IsDocumented
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ def doc(message = nil, options = {})
9
+ if message
10
+ @doc = Doc.new(message, options)
11
+ else
12
+ @doc
13
+ end
14
+ end
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ module Reaction
2
+ class Markdown
3
+ def self.render(md_str)
4
+ markdown.render(md_str)
5
+ end
6
+
7
+ def self.renderer
8
+ @renderer ||= Redcarpet::Render::HTML.new
9
+ end
10
+
11
+ def self.markdown
12
+ @markdown ||= Redcarpet::Markdown.new(renderer, autolink: true, tables: true)
13
+ end
14
+ end
15
+ end
data/lib/reaction/type.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  module Reaction
2
2
  class Type
3
+ include IsDocumented
4
+
3
5
  attr_reader :name
4
6
 
5
7
  def initialize(name)
@@ -36,5 +38,15 @@ module Reaction
36
38
  #
37
39
  def cleanup
38
40
  end
41
+
42
+ # This isn't perfect but works well enough.
43
+ def self.to_type_symbol
44
+ ret = self.to_s
45
+ ret.gsub!(/([A-Z]+)([A-Z])/, '\1_\2')
46
+ ret.gsub!(/([a-z])([A-Z])/, '\1_\2')
47
+ ret.downcase!
48
+ ret.gsub!(/_type$/, '')
49
+ ret.to_sym
50
+ end
39
51
  end
40
52
  end
data/lib/reaction.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'redcarpet'
2
+
1
3
  module Reaction
2
4
  autoload :Action, 'reaction/action'
3
5
  autoload :Doc, 'reaction/doc'
@@ -10,6 +12,8 @@ module Reaction
10
12
  autoload :HasParams, 'reaction/has_params'
11
13
  autoload :HasTypes, 'reaction/has_types'
12
14
  autoload :HasValidators, 'reaction/has_validators'
15
+ autoload :IsDocumented, 'reaction/is_documented'
16
+ autoload :Markdown, 'reaction/markdown'
13
17
  autoload :RawType, 'reaction/types/raw_type'
14
18
  autoload :Type, 'reaction/type'
15
19
  end
data/reaction.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = 'reaction'
7
- gem.version = '0.2.4'
7
+ gem.version = '0.2.6'
8
8
  gem.authors = ["Jon Calhoun", "Jon Calhoun", "Ryan Jackson"]
9
9
  gem.email = ["joncalhoun@gmail.com", "jon@paidlabs.com", "ryan@paidlabs.com"]
10
10
  gem.description = 'Reaction makes it easy to build reusable controller actions along with reusable validators and param type converters.'
@@ -15,4 +15,6 @@ Gem::Specification.new do |gem|
15
15
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
+
19
+ gem.add_dependency('redcarpet')
18
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reaction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Calhoun
@@ -10,8 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-03-07 00:00:00.000000000 Z
14
- dependencies: []
13
+ date: 2016-03-11 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: redcarpet
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
15
29
  description: Reaction makes it easy to build reusable controller actions along with
16
30
  reusable validators and param type converters.
17
31
  email:
@@ -37,6 +51,8 @@ files:
37
51
  - lib/reaction/has_params.rb
38
52
  - lib/reaction/has_types.rb
39
53
  - lib/reaction/has_validators.rb
54
+ - lib/reaction/is_documented.rb
55
+ - lib/reaction/markdown.rb
40
56
  - lib/reaction/type.rb
41
57
  - lib/reaction/types/raw_type.rb
42
58
  - reaction.gemspec