opulent 1.2.1 → 1.3.0

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: da21d9a93894954ff539d9c50097e6828e220a45
4
- data.tar.gz: dc9280c742fb397a1962ce957eaceda6f8b36cb0
3
+ metadata.gz: ed644b0ba2857806a88f0da508087a32b31e85cd
4
+ data.tar.gz: 667cb3bfa83b2ea0786aa9427404ebab524fdb36
5
5
  SHA512:
6
- metadata.gz: 8a2bb3c28e90352de4f78a6d4a56fc1f558fd6d72564b53d5e061dee635831dc26d7d7a900233bc7ff85adb5a1050e4fb38888b2f53dd19b82683333f3e78fd5
7
- data.tar.gz: 69d0e218da3c4f5620c4c2148a65b96092da54abd24a80716691ee8b6996d0f324e5ef3fe3ac9524c95c8009bb30961d3b848a1a05b5c4491b8aa4500abe65aa
6
+ metadata.gz: 55567d695622a6b7c50b45334b851474db72a43b9b7afc2f854125da0b0a6b45f7c06ee2b39f8f3202fba29999b7e36903b9506f6a2fd6b6700e6a0c17ed92cf
7
+ data.tar.gz: eae525a670999e15c25ac8e7859d5ec7ca934c0c8d2bbcb001c08eb89608f80851aa2a957bf5aa89ef040141b5b37a94dcab8f672e4323440ad6a2fbe56efec6
data/README.md CHANGED
@@ -72,7 +72,16 @@ Using Opulent to render a file is as easy as including it in your application an
72
72
  ```ruby
73
73
  require 'opulent'
74
74
 
75
- Opulent.new.render_file 'file.op'
75
+ Opulent.new.render_file :index
76
+ ```
77
+
78
+ For layouts you can simply use the following code. By default, the layout is set to __layouts/application__.
79
+
80
+ ```ruby
81
+ require 'opulent'
82
+
83
+ opulent = Opulent.new layouts: true
84
+ opulent.render_file :index, layout: :'path/layout'
76
85
  ```
77
86
 
78
87
  <!--
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
2
+ #require "rspec/core/rake_task"
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ #RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ #task :default => :spec
@@ -13,9 +13,12 @@ module Opulent
13
13
  # given as arguments
14
14
  #
15
15
  # @param locals [Hash] Binding extension
16
- # @param bind [Binding] Call environment binding
16
+ # @param block [Binding] Call environment block
17
+ # @param content [Binding] Content yielding
17
18
  #
18
- def initialize(locals = {}, &block)
19
+ def initialize(locals = {}, block, &content)
20
+ @content = content
21
+
19
22
  @block = block
20
23
  @binding = if @block
21
24
  @block.binding.clone
@@ -41,7 +44,7 @@ module Opulent
41
44
  # Call given input block and return the output
42
45
  #
43
46
  def evaluate_yield
44
- @block.call if @block
47
+ @content.call if @content
45
48
  end
46
49
 
47
50
  # Extend the call context with a Hash, String or other Object
@@ -71,10 +74,6 @@ module Opulent
71
74
  bind.eval('self.class.class_variables').each do |var|
72
75
  @binding.eval('self').class_variable_set var, bind.eval(var.to_s)
73
76
  end
74
- #
75
- # bind.eval('self.class.constants').each do |var|
76
- # @binding.eval('self').const_set var, bind.eval(var.to_s)
77
- # end
78
77
  end
79
78
  end
80
79
 
@@ -1,5 +1,9 @@
1
1
  # @Opulent
2
2
  module Opulent
3
+ # Debug enable
4
+ #
5
+ DEBUG = false
6
+
3
7
  # Module method wrapper for creating a new engine instance
4
8
  #
5
9
  def Opulent.new(settings = {})
@@ -18,7 +22,6 @@ module Opulent
18
22
  #
19
23
  def initialize(settings = {})
20
24
  @definitions = {}
21
- @overwrite = settings.delete :overwrite
22
25
 
23
26
  Settings.update_settings settings unless settings.empty?
24
27
  end
@@ -36,6 +39,27 @@ module Opulent
36
39
  render file, locals, &block
37
40
  end
38
41
 
42
+ # Avoid code duplication when layouting is set. When we have a layout, look
43
+ # in layouts/application by default.
44
+ #
45
+ # @param file [String] The file that needs to be analyzed
46
+ # @param locals [Hash] Render call local variables
47
+ # @param block [Proc] Processing environment data
48
+ #
49
+ def render(input, locals = {}, &block)
50
+ # If a layout is set, get the specific layout, otherwise, set the default
51
+ # one. If a layout is set to false, the page will be render as it is.
52
+ if Settings[:layouts]
53
+ layout = locals.has_key?(:layout) ? locals.delete(:layout) : Settings[:default_layout]
54
+
55
+ get layout, locals, block do
56
+ get input, locals, block
57
+ end
58
+ else
59
+ get input, locals, block
60
+ end
61
+ end
62
+
39
63
  # Analyze the input code and check for matching tokens. In case no match was
40
64
  # found, throw an exception. In special cases, modify the token hash.
41
65
  #
@@ -43,7 +67,7 @@ module Opulent
43
67
  # @param locals [Hash] Render call local variables
44
68
  # @param block [Proc] Processing environment data
45
69
  #
46
- def render(input, locals = {}, &block)
70
+ def get(input, locals, block, &content)
47
71
  # Get input code
48
72
  @code = read input
49
73
 
@@ -55,16 +79,18 @@ module Opulent
55
79
  @preamble = @nodes.inspect.inspect
56
80
 
57
81
  # Create a new context based on our rendering environment
58
- @context = Context.new locals, &block
82
+ @context = Context.new locals, block, &content
59
83
 
60
84
  # Compile our syntax tree using input context
61
85
  @output = Compiler.new.compile @nodes, @context
62
86
 
63
- # puts "Nodes\n---\n"
64
- # pp @nodes
65
- #
66
- # puts "\n\nCode\n---\n"
67
- # puts @output
87
+ if DEBUG
88
+ #puts "Nodes\n---\n"
89
+ #pp @nodes
90
+
91
+ # puts "\n\nCode\n---\n"
92
+ # pp @output
93
+ end
68
94
 
69
95
  return @output
70
96
  end
@@ -77,7 +103,8 @@ module Opulent
77
103
  #
78
104
  def read(input)
79
105
  if @mode == :file
80
- @file = File.expand_path input; @mode = nil
106
+ @file = File.expand_path "#{input}.op"
107
+ @mode = nil unless Settings[:layouts]
81
108
  return File.read @file
82
109
  else
83
110
  @file = File.expand_path __FILE__
@@ -43,7 +43,10 @@ module Opulent
43
43
  Defaults = {
44
44
  pretty: true,
45
45
  indent: 2,
46
- dependency_manager: true
46
+ dependency_manager: true,
47
+ invert_escaping: true,
48
+ layouts: false,
49
+ default_layout: :'layouts/application'
47
50
  }
48
51
 
49
52
  # Set defaults as initial options
@@ -17,9 +17,11 @@ module Opulent
17
17
  # Enable caching for the current rendered file
18
18
  @options[:cache] = true
19
19
 
20
+ # Enable layouts so that we can render with symbols
21
+ @options[:layouts] = true
22
+
20
23
  # Set up the rendering engine
21
24
  @engine = ::Opulent.new @options
22
- #@engine.update_options @options
23
25
  end
24
26
 
25
27
  # Execute the compiled template and return the result string. Template
@@ -63,5 +65,5 @@ module Opulent
63
65
  end
64
66
 
65
67
  # Register Opulent to Tilt
66
- ::Tilt.register OpulentTemplate, 'op', 'opl', 'opulent'
68
+ ::Tilt.register OpulentTemplate, 'op'
67
69
  end
@@ -1,4 +1,4 @@
1
1
  # @Opulent
2
2
  module Opulent
3
- VERSION = "1.2.1"
3
+ VERSION = "1.3.0"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opulent
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Grozav
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-20 00:00:00.000000000 Z
11
+ date: 2015-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler