Module: TiendappValidator
- Defined in:
- lib/tiendapp_validator.rb,
lib/tiendapp_validator/version.rb,
lib/tiendapp_validator/required_files.rb,
lib/tiendapp_validator/auxiliar_methods.rb,
lib/tiendapp_validator/liquid_validators.rb,
lib/tiendapp_validator/schema_validators.rb
Overview
TiendApp Validator - Methods to validate customization schema
Constant Summary collapse
- VALIDATION_METHODS =
[method(:validate_liquid_files), method(:validate_partial_liquid_files), method(:validate_folders_liquid_files), method(:validate_include_liquid_files), method(:validate_liquid_files_syntax), method(:validate_customation_schema_file), method(:validate_extensions)].freeze
- VERSION =
'0.1.3'.freeze
- LIQUID_FILES =
Nombre de los archivos necesarios de la aplicacion
['layout.liquid', 'home.liquid', 'product.liquid', 'blog.liquid', 'static_page.liquid', 'post.liquid', 'order.liquid', 'sidebar.liquid'].freeze
- LIQUID_FILES_CHECKOUT =
Subcarpeta checkout
['address.liquid', 'cart.liquid', 'delivery.liquid', 'address.liquid', 'payment.liquid'].freeze
- LIQUID_FILES_MAILER =
Subcarpeta mailer
['cancel_order.liquid', 'confirm_order.liquid', 'layout.liquid', 'shipped_order.liquid'].freeze
- DEFAULT_PATH =
Paths basicos de los archivos necesarios
'public/store_templates/public/'.freeze
- CHECKOUT_PATH =
'checkout/'.freeze
- MAILER_PATH =
'mailer/'.freeze
- SCHEMA_FILES =
Schema files
['customization_schema.json', 'email_customization_schema.json'].freeze
- EXTENSIONS =
Format list
['liquid', 'css', 'json', 'js', 'map', 'eot', 'svg', 'ttf', 'woff', 'woff2', 'jpg', 'png'].freeze
Class Method Summary collapse
- .customization_schemas ⇒ Object
- .exist_liquid_file(str) ⇒ Object
- .get_content(path) ⇒ Object
- .get_files(path, extension) ⇒ Object
- .get_format(file) ⇒ Object
- .get_includes(content) ⇒ Object
- .liquid_files ⇒ Object
- .permit_extension?(file) ⇒ Boolean
- .print_response(res) ⇒ Object
- .response(status, message, valid) ⇒ Object
- .root_path(path = nil) ⇒ Object
- .validate(path) ⇒ Object
-
.validate_customation_schema_file ⇒ Object
VG001 - Validar syntaxis customization schema.
- .validate_extensions ⇒ Object
-
.validate_folders_liquid_files ⇒ Object
VL003 - Validar si todas las llamadas a vistas parciales existen.
-
.validate_include_liquid_files ⇒ Object
VL004 - Validar si todas las llamadas a vistas parciales existen.
-
.validate_liquid_files ⇒ Object
VL001 - Validar presencia de los archivos liquid.
-
.validate_liquid_files_syntax ⇒ Object
VL006 - Valida que los archivos tengan sintaxis correcta en Liquid.
-
.validate_partial_liquid_files ⇒ Object
VL002 - Validar vistas parciales liquid.
Class Method Details
.customization_schemas ⇒ Object
17 18 19 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 17 def self.customization_schemas @customization_schemas ||= get_files(root_path + 'config/', 'json') end |
.exist_liquid_file(str) ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 58 def self.exist_liquid_file(str) path = root_path while str.include? '/' substring = str.split('/')[0] str = str.split('/')[1] path = path + substring + '/' end path + '_' + str + '.liquid' end |
.get_content(path) ⇒ Object
29 30 31 32 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 29 def self.get_content(path) file = File.open(path) file.read end |
.get_files(path, extension) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 21 def self.get_files(path, extension) file_paths = [] Find.find(path) do |p| file_paths << p if p =~ /\.(?:#{extension})$/i end file_paths end |
.get_format(file) ⇒ Object
39 40 41 42 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 39 def self.get_format(file) expr = /\.(\w*)$/ expr.match(file)[1] end |
.get_includes(content) ⇒ Object
34 35 36 37 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 34 def self.get_includes(content) expr = /\{\%\s+include\s+[",'](.*)[",']\s+\%\}/ content.scan(expr) end |
.liquid_files ⇒ Object
13 14 15 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 13 def self.liquid_files @liquid_files ||= get_files(root_path, 'liquid') end |
.permit_extension?(file) ⇒ Boolean
44 45 46 47 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 44 def self.permit_extension?(file) extension = get_format(file) EXTENSIONS.include? extension end |
.print_response(res) ⇒ Object
28 29 30 |
# File 'lib/tiendapp_validator.rb', line 28 def self.print_response(res) puts res[:status] + ' - ' + res[:message] end |
.response(status, message, valid) ⇒ Object
68 69 70 71 72 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 68 def self.response(status, , valid) { status: status, message: , valid: valid } end |
.root_path(path = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 3 def self.root_path(path = nil) if path.nil? @root_path ||= DEFAULT_PATH else @root_path = path @liquid_files = nil @customization_schemas = nil end end |
.validate(path) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/tiendapp_validator.rb', line 18 def self.validate(path) root_path(path) VALIDATION_METHODS.each do |method| res = method.call next if res[:valid] return res end response 'OK', 'All validation are OK', true end |
.validate_customation_schema_file ⇒ Object
VG001 - Validar syntaxis customization schema
4 5 6 7 8 9 10 |
# File 'lib/tiendapp_validator/schema_validators.rb', line 4 def self.validate_customation_schema_file SCHEMA_FILES.each do |schema| next if customization_schemas.include? root_path + 'config/' + schema response 'Error', 'Customization schema not found: ' + schema, false end response 'OK', 'found all customization schema files', true end |
.validate_extensions ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/tiendapp_validator/auxiliar_methods.rb', line 49 def self.validate_extensions Find.find(root_path) do |p| next unless p.include? '.' next if permit_extension? p return response 'ERROR', 'not support extension: ' + p.split(root_path)[1], false end response 'OK', 'all format support', true end |
.validate_folders_liquid_files ⇒ Object
VL003 - Validar si todas las llamadas a vistas parciales existen
28 29 30 31 32 33 34 35 36 |
# File 'lib/tiendapp_validator/liquid_validators.rb', line 28 def self.validate_folders_liquid_files path = root_path (LIQUID_FILES_CHECKOUT + LIQUID_FILES_MAILER).each do |liquid| next if liquid_files.include? path + CHECKOUT_PATH + liquid next if liquid_files.include? path + MAILER_PATH + liquid return response 'error', 'file not found: ' + liquid, false end response 'OK', 'found checkout liquid files', true end |
.validate_include_liquid_files ⇒ Object
VL004 - Validar si todas las llamadas a vistas parciales existen
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/tiendapp_validator/liquid_validators.rb', line 39 def self.validate_include_liquid_files liquid_files.each do |liquid| content = get_content(liquid) includes = get_includes(content) includes.each do |include| unless exist_liquid_file(include[0]) return response 'error', include[0] + 'not found', false end end end response 'OK', 'all includes exists', true end |
.validate_liquid_files ⇒ Object
VL001 - Validar presencia de los archivos liquid
6 7 8 9 10 11 12 |
# File 'lib/tiendapp_validator/liquid_validators.rb', line 6 def self.validate_liquid_files LIQUID_FILES.each do |liquid| next if liquid_files.include? root_path + liquid return response 'error', 'file not found: ' + liquid, false end response 'OK', 'found all liquid files.', true end |
.validate_liquid_files_syntax ⇒ Object
VL006 - Valida que los archivos tengan sintaxis correcta en Liquid
53 54 55 56 57 58 59 60 |
# File 'lib/tiendapp_validator/liquid_validators.rb', line 53 def self.validate_liquid_files_syntax file_paths = get_files root_path, 'liquid' file_paths.each do |liquid| next if Liquid::Template.parse(get_content(liquid), error_mode: :strict) return response 'error', 'syntax error: ' + liquid.split(root_path)[0], false end response 'OK', 'liquid files have correct syntax', true end |
.validate_partial_liquid_files ⇒ Object
VL002 - Validar vistas parciales liquid
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/tiendapp_validator/liquid_validators.rb', line 15 def self.validate_partial_liquid_files file_paths = get_files root_path, 'liquid' file_paths.each do |liquid| liquid = liquid.split('/').last next if LIQUID_FILES.include? liquid next if liquid[0] == '_' next if (LIQUID_FILES_CHECKOUT + LIQUID_FILES_MAILER).include? liquid return response 'error', 'name invalid:' + liquid, false end response 'OK', 'partial liquid files are OK.', true end |