finepack
Version:
Organizes and maintains your JSON files readable
85 lines (64 loc) • 2.52 kB
text/coffeescript
'use strict'
chalk = require 'chalk'
jsonlint = require 'jsonlint'
Logger = require './Logger'
KEYWORDS = require './Keywords'
MSG = require './Messages'
DEFAULT =
validate:
required: false
missing: false
module.exports = class Report
constructor: ( = 'Your file', = false, = false) ->
= Logger color:
lint: (objt) ->
objt = JSON.stringify(objt) if typeof objt isnt 'string'
jsonlint.parse objt
validate: (objt, isValidationEnable) ->
return DEFAULT.validate unless
required : objt
missing : objt
errorMessage: (cb, data) ->
.push 'error', MSG.wrong()
cb true, data, .messages
successMessage: (cb, data) ->
.push 'success', MSG.success()
cb null, data, .messages
requiredMessage: (cb, data) ->
.push 'info', MSG.notFine()
cb null, data, .messages
missingMessage: (cb, data) ->
.push 'info', MSG.almostFine()
cb null, data, .messages
alreadyMessage: (cb, data) ->
.push 'info', MSG.alreadyFine()
cb null, data, .messages
_isPrivate: (objt) -> objt.private is true
_determinateCollection: (collection, objt) ->
return collection unless
collect = KEYWORDS.required.filter (i) -> KEYWORDS.missing.indexOf is -1
_validateRequiredKeys: (objt) ->
collection =
haveRequiredValues = false
for key in collection when not objt[key]?
.push 'error', MSG.required(key)
haveRequiredValues = true unless haveRequiredValues
haveRequiredValues
_validateMissingKeys: (objt) ->
collection =
haveMissingValues = false
for key in collection
unless objt[key]?
.push 'warn', MSG.missing(key)
haveMissingValues = true unless haveMissingValues
else
hasInvalidValue =
if (hasInvalidValue)
.push 'error', hasInvalidValue
haveMissingValues = true unless haveMissingValues
haveMissingValues
_validateMissingKeysValues: (objt, key) ->
return false unless KEYWORDS.missingValues.indexOf(key) isnt -1
switch key
when 'keywords'
MSG.invalidValue(key, 'is empty') if objt[key].length is 0