mystique 0.5.1 → 0.5.2

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8924be7abf7342b4cd8d9fe5d760db61dddba130
4
- data.tar.gz: 3548c34e1e9523c0c5f2dde640d8b481e6ecab22
3
+ metadata.gz: 962f1c55063f1f6290c886c5745b27fe1e050dd0
4
+ data.tar.gz: 4ad5b6fb40671f1e6dd48c98e303be69c98a6235
5
5
  SHA512:
6
- metadata.gz: 7a0bf829dee99bc11449102a0c8f981052d057e89e54888042d8b7e916d022f797e7490cb7b9d402a6c375adc392300f2488f583439f09d1b620285d33b39f41
7
- data.tar.gz: 3fa4495a677025a13fe1c92917b15fa233b4d574af7c833614bf4d3f45d219fdbde3c4e5fa17e3406992214325fe84880cb063f3feb73be8311353e9d168d248
6
+ metadata.gz: 9031edaf2db5862fd0aed63f2e2ab66a85e6a29f0306365f79f1a272a767e7c0cb3d03d9601c93fe01b21d3387c2d866833e5e0008ff22d9e8c3931145c7ce52
7
+ data.tar.gz: fe92484bfa886c6ac6b5707aed1c2908d5f1315579c2bf5cd70e91d88efb3bbc0a6b602a2d91a8e9f33ed7508ace61ca623a208cfbab4902ad9774ea9a0a3a8d
data/lib/mystique.rb CHANGED
@@ -3,106 +3,10 @@ require "mystique/version"
3
3
  require "callable"
4
4
  require "string_plus"
5
5
 
6
- require "mystique/null_context"
7
-
6
+ require "mystique/undefined"
7
+ require "mystique/presenter"
8
8
 
9
9
  module Mystique
10
- class Presenter
11
- self.methods.select {|m| m.to_s.start_with?("to_") }.each do |m|
12
- define_method(m) do |*args, &block|
13
- target.send(m, *args, &block)
14
- end
15
- end
16
-
17
- def initialize(object, context)
18
- @__object__ = object
19
- @__context__ = context || self.class.context || NullContext
20
- end
21
-
22
- def self.present(object, context=nil)
23
- self.new(object, context).tap do |presenter|
24
- yield presenter if block_given?
25
- end
26
- end
27
-
28
- def context
29
- @__context__
30
- end
31
- alias :ctx :context
32
- alias :h :context
33
-
34
- def target
35
- @__object__
36
- end
37
-
38
- def inspect
39
- "<#{self.class}(#{target.inspect}) context: #{context.inspect}>"
40
- end
41
-
42
- private
43
-
44
- def method_missing(method, *args, &block)
45
- return target.send(method, *args, &block) if method.to_s.start_with?("to_")
46
- format( target.send(method, *args, &block) )
47
- end
48
-
49
- def format(value)
50
- result = if __formats__.keys.include?(value)
51
- __formats__[value]
52
- elsif __regex_formats__.any? { |regex, _| value =~ regex}
53
- __regex_formats__.select { |regex, _| value =~ regex}.first.last
54
- elsif __class_formats__.any? { |klass, _| value.is_a?(klass)}
55
- __class_formats__.select { |klass, _| value.is_a?(klass)}.first.last
56
- else
57
- value
58
- end
59
- Mystique.present(Callable(result).call(value, context))
60
- end
61
-
62
- def self.context(ctx=Undefined)
63
- @__context__ = ctx unless ctx == Undefined
64
- @__context__
65
- end
66
-
67
- def self.format(matcher, value=nil, &block)
68
- __formats__[matcher] = block_given? ? block : value
69
- end
70
-
71
- def self.format_multiple(*matchers, &block)
72
- matchers.each do |matcher|
73
- format(matcher, &block)
74
- end
75
- end
76
-
77
- def __formats__
78
- self.class.__formats__
79
- end
80
-
81
- def self.__formats__
82
- @__formats__ ||= {
83
- nil => "-----",
84
- }
85
- end
86
-
87
- def __regex_formats__
88
- self.class.__regex_formats__
89
- end
90
-
91
- def self.__regex_formats__
92
- @__regex_formats__ ||= __formats__.select {|k, v| k.is_a?(Regexp)}
93
- end
94
-
95
- def __class_formats__
96
- self.class.__class_formats__
97
- end
98
-
99
- def self.__class_formats__
100
- @__class_formats__ ||= __formats__.select {|k, v| k.is_a?(Class)}
101
- end
102
- end
103
-
104
- class Undefined; end
105
-
106
10
  module_function
107
11
 
108
12
  def present(object, with: nil, context: nil, &block)
@@ -0,0 +1,107 @@
1
+ require "mystique/null_context"
2
+
3
+ module Mystique
4
+ class Presenter
5
+ self.methods.select {|m| m.to_s.start_with?("to_") }.each do |m|
6
+ define_method(m) do |*args, &block|
7
+ target.send(m, *args, &block)
8
+ end
9
+ end
10
+
11
+ def initialize(object, context)
12
+ @__object__ = object
13
+ @__context__ = context || self.class.context || NullContext
14
+ end
15
+
16
+ def self.present(object, context=nil)
17
+ self.new(object, context).tap do |presenter|
18
+ yield presenter if block_given?
19
+ end
20
+ end
21
+
22
+ def context
23
+ @__context__
24
+ end
25
+ alias :ctx :context
26
+ alias :h :context
27
+
28
+ def target
29
+ @__object__
30
+ end
31
+
32
+ def inspect
33
+ "<#{self.class}(#{target.inspect}) context: #{context.inspect}>"
34
+ end
35
+
36
+ private
37
+
38
+ def method_missing(method, *args, &block)
39
+ return target.send(method, *args, &block) if method.to_s.start_with?("to_")
40
+ format( target.send(method, *args, &block) )
41
+ end
42
+
43
+ def format(value)
44
+ result = if __formats__.keys.include?(value)
45
+ __formats__[value]
46
+ elsif __regex_formats__.any? { |regex, _| value =~ regex}
47
+ __regex_formats__.select { |regex, _| value =~ regex}.first.last
48
+ elsif __class_formats__.any? { |klass, _| value.is_a?(klass)}
49
+ __class_formats__.select { |klass, _| value.is_a?(klass)}.first.last
50
+ else
51
+ value
52
+ end
53
+ Mystique.present(Callable(result).call(value, context))
54
+ end
55
+
56
+ def self.context(ctx=Undefined)
57
+ @__context__ = ctx unless ctx == Undefined
58
+ @__context__
59
+ end
60
+
61
+ def self.format(matcher, value=nil, &block)
62
+ __formats__[matcher] = block_given? ? block : value
63
+ end
64
+
65
+ def self.format_multiple(*matchers, &block)
66
+ matchers.each do |matcher|
67
+ format(matcher, &block)
68
+ end
69
+ end
70
+
71
+ def __formats__
72
+ self.class.__formats__
73
+ end
74
+
75
+ def self.default_formats
76
+ if block_given?
77
+ @__default_formats__ = yield
78
+ else
79
+ @__default_formats__ ||= {}
80
+ end
81
+ end
82
+
83
+ def default_formats
84
+ Mystique::Presenter.default_formats
85
+ end
86
+
87
+ def self.__formats__
88
+ @__formats__ ||= Mystique::Presenter.default_formats
89
+ end
90
+
91
+ def __regex_formats__
92
+ self.class.__regex_formats__
93
+ end
94
+
95
+ def self.__regex_formats__
96
+ @__regex_formats__ ||= __formats__.select {|k, v| k.is_a?(Regexp)}
97
+ end
98
+
99
+ def __class_formats__
100
+ self.class.__class_formats__
101
+ end
102
+
103
+ def self.__class_formats__
104
+ @__class_formats__ ||= __formats__.select {|k, v| k.is_a?(Class)}
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,3 @@
1
+ module Mystique
2
+ class Undefined; end
3
+ end
@@ -1,3 +1,3 @@
1
1
  module Mystique
2
- VERSION = "0.5.1"
2
+ VERSION = "0.5.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mystique
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Federico Iachetti
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-03-24 00:00:00.000000000 Z
11
+ date: 2015-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -97,8 +97,10 @@ files:
97
97
  - bin/setup
98
98
  - lib/mystique.rb
99
99
  - lib/mystique/null_context.rb
100
+ - lib/mystique/presenter.rb
100
101
  - lib/mystique/presenters.rb
101
102
  - lib/mystique/presenters/hash_presenter.rb
103
+ - lib/mystique/undefined.rb
102
104
  - lib/mystique/version.rb
103
105
  - mystique.gemspec
104
106
  homepage: https://github.com/iachettifederico/mystique
@@ -121,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
123
  version: '0'
122
124
  requirements: []
123
125
  rubyforge_project:
124
- rubygems_version: 2.4.6
126
+ rubygems_version: 2.4.8
125
127
  signing_key:
126
128
  specification_version: 4
127
129
  summary: Ruby presenter gem.