liquidum 1.1.0 → 1.1.2

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
  SHA256:
3
- metadata.gz: 16e876c05fe67578580e9b365f02e957d0931317ced4765c9eeccc46e997deac
4
- data.tar.gz: 20d60c9963067edc071ec34fc37833dc98cb41d8099ba6b8d860def2a8f90584
3
+ metadata.gz: 07f82032cfc0adb076d2e0ed424c2eb19747e85322bfdebbb668d6995f7cdb2b
4
+ data.tar.gz: 3933ec803077049700a2f5ed63599968f6477dd679a29b0c2a9e89ca81373fd7
5
5
  SHA512:
6
- metadata.gz: f909afdc2966789818915b4fe6ad11f8a6ce9b7cba39ff3ccaec3af357a1b236242d66f6aa3ac35c2b3ce4c077674d9602b620fb2f4ef449fbab4ae690a9b206
7
- data.tar.gz: ecc6f3c0bb6c259f468ba80afca0fa98de1ec096b0111c129d4ea9a7766d28aeb0be51c9281bd6ca9cd7acb0994ed8d5b094687457e66b9dc8c88c41e7c1e62c
6
+ metadata.gz: 0ab256dde0cbce5bdf1615a72e519350066f506063caae818ed0e4b2d99028360c85da1b039a546ba284800a6c0fc56c6d828c31472d80b116f09760877906e2
7
+ data.tar.gz: 1b52586a9e4fa54c80b35dda4c4af75eef3a2b16a1761490d931fa9d18170934c0fedd454fb1c59fd84607fe4dc527ece70671a382c4055a0eb08248a0de3419
@@ -1,10 +1,20 @@
1
1
  module Liquidum
2
2
  module Options
3
3
  module ClassMethods
4
- def option(name, default: nil)
5
- attr_accessor(name)
4
+ def option(name, default: nil, proc: false)
5
+ attr_writer(name)
6
+ schema[name] = {default: default, proc: proc}
6
7
 
7
- schema[name] = default
8
+ if schema[name][:proc]
9
+ define_method(name) do |*params|
10
+ value = instance_variable_get(:"@#{name}")
11
+ instance_exec(*params, &value)
12
+ end
13
+ else
14
+ define_method(name) do
15
+ instance_variable_get(:"@#{name}")
16
+ end
17
+ end
8
18
  end
9
19
 
10
20
  def schema
@@ -13,8 +23,8 @@ module Liquidum
13
23
  end
14
24
 
15
25
  def set_defaults!
16
- self.class.schema.each do |name, default|
17
- instance_variable_set(:"@#{name}", default)
26
+ self.class.schema.each do |name, options|
27
+ instance_variable_set(:"@#{name}", options[:default])
18
28
  end
19
29
  end
20
30
 
@@ -26,13 +36,22 @@ module Liquidum
26
36
  class Configuration
27
37
  include Options
28
38
 
29
- option :logger, default: -> { Logger.new($stdout).tap { |l| l.level = Logger::INFO } }
39
+ option :logger, default: -> { Logger.new($stdout).tap { |l| l.level = Logger::INFO } }, proc: true
30
40
  option :liquidum_file_system, default: "Liquidum::LiquidumFileSystem"
31
- option :i18n_store, default: ->(context, block) {}
41
+ attr_writer :i18n_store
32
42
 
33
43
  def initialize
44
+ @i18n_store = ->(context, block) {}
34
45
  set_defaults!
35
46
  end
47
+
48
+ def i18n_store(context, &block)
49
+ old_i18n_backend = I18n.backend
50
+ I18n.backend = instance_exec(context, &@i18n_store)
51
+ yield
52
+ ensure
53
+ I18n.backend = old_i18n_backend
54
+ end
36
55
  end
37
56
 
38
57
  module Configurable
@@ -19,27 +19,27 @@ module TranslateFilter
19
19
  result = nil
20
20
 
21
21
  Liquidum.config.i18n_store(@context) do |obj|
22
- locale = options.delete('locale')
22
+ locale = options.delete("locale")
23
23
 
24
24
  key = input
25
25
  scope = nil
26
26
 
27
- if key.start_with?('.')
27
+ if key.start_with?(".")
28
28
  key = input[1..-1]
29
- scope = obj.translation_scope
29
+ scope = obj.translation_scope if obj.respond_to?(:translation_scope)
30
30
  end
31
31
 
32
- result = I18n.t(key, locale: locale, scope: scope, cascade: { skip_root: false },
32
+ result = I18n.t(key, locale: locale, scope: scope, cascade: {skip_root: false},
33
33
  **options.symbolize_keys)
34
34
  if result
35
35
  result = I18n::Backend::Simple.new.send(:interpolate, I18n.locale, result,
36
- options.symbolize_keys)
36
+ options.symbolize_keys)
37
37
  end
38
38
  end
39
39
 
40
40
  result
41
41
  end
42
- alias t translate
42
+ alias_method :t, :translate
43
43
  end
44
44
 
45
45
  Liquid::Template.register_filter(TranslateFilter)
@@ -24,7 +24,7 @@ module Liquidum
24
24
 
25
25
  # Return named argument
26
26
  def arg(name)
27
- raise 'No @context set' unless @context
27
+ raise "No @context set" unless @context
28
28
 
29
29
  attr = @args.find { |a| a[:attr] == name.to_s }
30
30
  return unless attr
@@ -39,7 +39,7 @@ module Liquidum
39
39
  # Returns the first argument - usually reserved for literal or quoted values, not for attribute value pairs
40
40
  # When the first attribute is a pair, it will return nil
41
41
  def argv1
42
- raise 'No @context set' unless @context
42
+ raise "No @context set" unless @context
43
43
 
44
44
  argv1 = @args[0]
45
45
  return unless argv1
@@ -53,7 +53,7 @@ module Liquidum
53
53
 
54
54
  # Returns the standalone arguments
55
55
  def sargs
56
- raise 'No @context set' unless @context
56
+ raise "No @context set" unless @context
57
57
 
58
58
  @args.slice(1..-1).select { |a| a.key?(:quoted) || a.key?(:literal) }.map do |a|
59
59
  if a.key? :quoted
@@ -66,7 +66,7 @@ module Liquidum
66
66
 
67
67
  # Returns the attribute-value-pair arguments as a hash
68
68
  def attr_args
69
- raise 'No @context set' unless @context
69
+ raise "No @context set" unless @context
70
70
 
71
71
  result = {}
72
72
  @args.select { |a| a.key?(:value) || a.key?(:lvalue) || a.key?(:svalue) }.map do |a|
@@ -89,7 +89,7 @@ module Liquidum
89
89
  # @return [String]
90
90
  def attr_str(attr, value, default = nil)
91
91
  v = value || default
92
- v.present? ? " #{attr}=\"#{v}\"" : ''
92
+ v.present? ? " #{attr}=\"#{v}\"" : ""
93
93
  end
94
94
 
95
95
  def attrs_str(*attrs, reject: [])
@@ -111,20 +111,18 @@ module Liquidum
111
111
 
112
112
  # For use with forms and inputs
113
113
  def input(purpose, name)
114
- form_model = lookup(@context, 'form.model')
115
- form_class_name = lookup(@context, 'form.class_name')
116
-
117
- # binding.pry if name == 'postal_code'
114
+ form_model = lookup(@context, "form.model")
115
+ form_class_name = lookup(@context, "form.class_name")
118
116
 
119
117
  # order[order_lines_attributes][xxxx][product_name]
120
118
  #
121
119
  # order[order_attributes]_[lines_attributes][][product_name]
122
120
 
123
- parts = @context.scopes.select { |scope| scope.key? 'form' }.map do |scope|
124
- if scope['form'].attribute
125
- scope['form'].attribute.to_s.gsub(/([a-z\-\_]+)/) { "[#{Regexp.last_match(1)}_attributes]" }.gsub(/\[\]$/, "[#{SecureRandom.uuid}]")
121
+ parts = @context.scopes.select { |scope| scope.key? "form" }.map do |scope|
122
+ if scope["form"].attribute
123
+ scope["form"].attribute.to_s.gsub(/([a-z\-\_]+)/) { "[#{Regexp.last_match(1)}_attributes]" }.gsub(/\[\]$/, "[#{SecureRandom.uuid}]")
126
124
  else
127
- scope['form'].class_name.underscore.gsub('/', '_')
125
+ scope["form"].class_name.underscore.gsub("/", "_")
128
126
  end
129
127
  end
130
128
  parts = parts.unshift("[#{name}]").reverse
@@ -133,7 +131,7 @@ module Liquidum
133
131
 
134
132
  case purpose
135
133
  when :id
136
- parts.join('_').gsub('][', '_').tr('][', '')
134
+ parts.join("_").gsub("][", "_").tr("][", "")
137
135
  when :value
138
136
  # This is executed on the drop, drops provide the values for the form
139
137
  form_model.send(name.to_sym)
@@ -141,23 +139,23 @@ module Liquidum
141
139
  # The original class's name dictates the name of the fields
142
140
  parts.first + parts.slice(1..-1).join
143
141
  when :error
144
- parts.slice(1..-1).join('.')
142
+ parts.slice(1..-1).join(".")
145
143
  when :checked
146
- 'checked' if (input(:value, name) ? 1 : 0) == 1
144
+ "checked" if (input(:value, name) ? 1 : 0) == 1
147
145
  end
148
146
  end
149
147
 
150
148
  # Returns the path for the input from the main form, say: origin.contact_name
151
149
  def path_for_input(name)
152
- parts = @context.scopes.select { |scope| scope.key? 'form' }.select { |scope| scope['form'].attribute }.map do |scope|
153
- scope['form'].attribute
150
+ parts = @context.scopes.select { |scope| scope.key? "form" }.select { |scope| scope["form"].attribute }.map do |scope|
151
+ scope["form"].attribute
154
152
  end
155
153
  parts = parts.unshift(name.to_s).reverse
156
- parts.join('.')
154
+ parts.join(".")
157
155
  end
158
156
 
159
157
  def real_object_from_drop(drop)
160
- drop.instance_variable_get('@object')
158
+ drop.instance_variable_get("@object")
161
159
  end
162
160
  end
163
161
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Liquidum
4
- VERSION = "1.1.0"
4
+ VERSION = "1.1.2"
5
5
  end
data/lib/liquidum.rb CHANGED
@@ -1,25 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'liquid'
4
- require 'tilt'
5
- require 'sassc'
6
- require 'addressable/uri'
7
-
8
- require 'liquidum/version'
9
- require 'liquidum/engine'
10
- require 'liquidum/configuration'
11
- require 'liquidum/drop'
12
-
13
- require 'liquidum/liquid/liquid_helpers'
14
- require 'liquidum/liquid/liquid_template_extensions'
15
- require 'liquidum/liquid/liquidum_block'
16
- require 'liquidum/liquid/liquidum_tag'
17
- require 'liquidum/liquid/parser'
3
+ require "liquid"
4
+ require "tilt"
5
+ require "sassc"
6
+ require "addressable/uri"
7
+
8
+ require "liquidum/version"
9
+ require "liquidum/engine"
10
+ require "liquidum/configuration"
11
+ require "liquidum/drop"
12
+
13
+ require "liquidum/liquid/liquid_helpers"
14
+ require "liquidum/liquid/liquid_template_extensions"
15
+ require "liquidum/liquid/liquidum_block"
16
+ require "liquidum/liquid/liquidum_tag"
17
+ require "liquidum/liquid/parser"
18
18
 
19
19
  module Liquidum
20
20
  extend Configurable
21
21
 
22
22
  class Error < StandardError; end
23
+
23
24
  class UnknownStepTypeError < Error; end
24
25
 
25
26
  class LiquidumFileSystem
@@ -30,12 +31,12 @@ module Liquidum
30
31
  end
31
32
 
32
33
  def read_template_file(template_path)
33
- current_content = registers['content']
34
+ current_content = registers["content"]
34
35
 
35
36
  contents = current_content.site.contents.published
36
37
 
37
38
  content = contents.include(template_path).first
38
- content&.data || ''
39
+ content&.data || ""
39
40
  end
40
41
  end
41
42
 
@@ -44,20 +45,20 @@ module Liquidum
44
45
  template = Liquid::Template.parse(content)
45
46
  options[:assigns] ||= {}
46
47
  options[:registers] ||= {}
47
- options[:registers]['file_system'] =
48
+ options[:registers]["file_system"] =
48
49
  Liquidum.config.liquidum_file_system.constantize.new(options[:registers])
49
50
  result = template.render(options[:context] || options[:assigns].stringify_keys,
50
- registers: options[:registers])
51
+ registers: options[:registers])
51
52
 
52
53
  if template.errors.present?
53
- Liquidum.config.logger.error '--- Template rendering errors: ' + '-' * 49
54
+ Liquidum.config.logger.error "--- Template rendering errors: " + "-" * 49
54
55
  template.errors.map do |error|
55
56
  next unless error.cause
56
57
 
57
58
  Liquidum.config.logger.error error
58
- Liquidum.config.logger.error '=> ' + error.cause.backtrace.first.to_s + ': ' + error.cause.message
59
+ Liquidum.config.logger.error "=> " + error.cause.backtrace.first.to_s + ": " + error.cause.message
59
60
  end
60
- Liquidum.config.logger.error '-' * 80
61
+ Liquidum.config.logger.error "-" * 80
61
62
  end
62
63
 
63
64
  assigns = options[:assigns].deep_stringify_keys
@@ -70,8 +71,8 @@ module Liquidum
70
71
  end.render
71
72
  end
72
73
  if options[:layout].present?
73
- result = render(options[:layout], assigns: assigns.merge('content' => result),
74
- registers: options[:registers])
74
+ result = render(options[:layout], assigns: assigns.merge("content" => result),
75
+ registers: options[:registers])
75
76
  end
76
77
 
77
78
  result
data/liquidum.gemspec CHANGED
@@ -28,17 +28,18 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency("i18n", ["~> 1.8"])
29
29
  spec.add_runtime_dependency("kramdown", ["~> 2.1"])
30
30
  spec.add_runtime_dependency("kramdown-parser-gfm", ["~> 1.0"])
31
- spec.add_runtime_dependency("liquid", ["= 5.1.0"])
31
+ spec.add_runtime_dependency("liquid", ["< 5.4"])
32
32
  spec.add_runtime_dependency("parslet", [">= 0"])
33
33
  spec.add_runtime_dependency("pg", [">= 0"])
34
34
  spec.add_runtime_dependency("rails", [">= 5.2"])
35
35
  spec.add_runtime_dependency("sassc", ["~> 2.2"])
36
36
  spec.add_runtime_dependency "slim-rails", "~> 3.6"
37
+
37
38
  spec.add_development_dependency("minitest", ["~> 5.11"])
38
39
  spec.add_development_dependency("minitest-reporters", ["~> 1.1"])
39
40
  spec.add_development_dependency("pry", ["> 0"])
40
41
  spec.add_development_dependency("pry-rails", ["~> 0.3"])
41
42
  spec.add_development_dependency "rubocop", "~> 1"
42
-
43
43
  spec.add_development_dependency "standard", "~> 1"
44
+ spec.add_development_dependency "debug", "~> 1"
44
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquidum
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom de Grunt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-06 00:00:00.000000000 Z
11
+ date: 2024-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: liquid
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '='
87
+ - - "<"
88
88
  - !ruby/object:Gem::Version
89
- version: 5.1.0
89
+ version: '5.4'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '='
94
+ - - "<"
95
95
  - !ruby/object:Gem::Version
96
- version: 5.1.0
96
+ version: '5.4'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: parslet
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -248,6 +248,20 @@ dependencies:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
250
  version: '1'
251
+ - !ruby/object:Gem::Dependency
252
+ name: debug
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '1'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '1'
251
265
  description: Ready made set of tags, parsings and awesomeness
252
266
  email:
253
267
  - tom@degrunt.nl