Skip to content

Commit

Permalink
refactoring: encodeAbe + UT
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaslabbe committed Oct 5, 2016
1 parent 273a12a commit 880c093
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 36 deletions.
5 changes: 3 additions & 2 deletions src/cli/cms/Page.js
Expand Up @@ -6,6 +6,7 @@ import {
fileUtils,
abeEngine,
cmsData,
cmsTemplate,
config,
Hooks,
Manager
Expand Down Expand Up @@ -121,7 +122,7 @@ export default class Page {
var matches = this.template.match(eachSource)
if(typeof matches !== 'undefined' && matches !== null) {
Array.prototype.forEach.call(matches, (match) => {
this.template = this.template.replace(match, `${match}<!-- [[${keys[i]}]] ${util.encodeAbe(match)} -->`)
this.template = this.template.replace(match, `${match}<!-- [[${keys[i]}]] ${cmsTemplate.encodeAbeTagAsComment(match)} -->`)
})
}
}
Expand Down Expand Up @@ -220,7 +221,7 @@ export default class Page {
var textEachWithIndex = block.replace(/(<(?![\/])[A-Za-z0-9!-]*)/g, '$1 data-abe-block="' + key + '{{@index}}"')

// je remplace le block dans le texte par ça
this.template = this.template.replace(block, textEachWithIndex + `<!-- [[${key}]] ${util.encodeAbe(blockHtml)} -->`)
this.template = this.template.replace(block, textEachWithIndex + `<!-- [[${key}]] ${cmsTemplate.encodeAbeTagAsComment(blockHtml)} -->`)
}

// Pour chaque tag Abe, je mets en forme ce tag avec des data- supplémentaires
Expand Down
37 changes: 37 additions & 0 deletions src/cli/cms/templates/encodeAbeTagAsComment.js
@@ -0,0 +1,37 @@
import {
cmsData
} from '../../'

/**
* Encode / Escape && add data-abe attributs
* @param {String} block
* @return {String} escaped string
*/
export default function encodeAbeTagAsComment(block){
var matchAbe = block.match(/>\s*\{\{abe .*\}\}/g)
if(matchAbe){
for (var i = 0; i < matchAbe.length; i++){
var getattr = cmsData.regex.getAttr(matchAbe[i], 'key').replace('.', '[0]-')
block = block.replace(
matchAbe[i],
' data-abe-' + cmsData.regex.validDataAbe(getattr) + '="' + getattr + '" >'
)
}
}
matchAbe = block.match(/( [A-Za-z0-9\-\_]+="*{{.*?}})/g)
if(matchAbe){
for (var i = 0; i < matchAbe.length; i++) {
if(typeof matchAbe !== 'undefined' && matchAbe !== null){
var getattr = cmsData.regex.getAttr(matchAbe[i], 'key').replace('.', '[0]-')
var matchattr = (matchAbe[i].split('=')[0]).trim()
block = block.replace(
matchAbe[i],
' data-abe-attr-' + cmsData.regex.validDataAbe(getattr) + '="' + matchattr + '"' +
' data-abe-' + cmsData.regex.validDataAbe(getattr) + '="' + getattr + '" ' + matchAbe[i]
)
.replace(/\{\{\abe.*?}\}/, '')
}
}
}
return escape(block)
}
2 changes: 2 additions & 0 deletions src/cli/cms/templates/index.js
Expand Up @@ -20,6 +20,7 @@ import times from './handlebars/times'
import truncate from './handlebars/truncate'

import * as template from './template'
import encodeAbeTagAsComment from './encodeAbeTagAsComment'

/* Register utilities */
Handlebars.registerHelper('attrAbe', attrAbe)
Expand All @@ -41,6 +42,7 @@ HandlebarsIntl.registerWith(Handlebars)

export {
template,
encodeAbeTagAsComment,
attrAbe,
className,
cleanTab,
Expand Down
34 changes: 0 additions & 34 deletions src/cli/core/utils/abe-utils.js
Expand Up @@ -90,40 +90,6 @@ export default class Utils {
this._form[obj.tab].item.push(obj)
}

/**
* Encode / Escape && add data-abe attributs
* @param {String} block
* @return {String} escaped string
*/
encodeAbe(block){
var matchAbe = block.match(/>\s*\{\{abe .*\}\}/g)
if(matchAbe){
for (var i = 0; i < matchAbe.length; i++){
var getattr = cmsData.regex.getAttr(matchAbe[i], 'key').replace('.', '[0]-')
block = block.replace(
matchAbe[i],
' data-abe-' + cmsData.regex.validDataAbe(getattr) + '="' + getattr + '" >'
)
}
}
matchAbe = block.match(/( [A-Za-z0-9\-\_]+="*{{.*?}})/g)
if(matchAbe){
for (var i = 0; i < matchAbe.length; i++) {
if(typeof matchAbe !== 'undefined' && matchAbe !== null){
var getattr = cmsData.regex.getAttr(matchAbe[i], 'key').replace('.', '[0]-')
var matchattr = (matchAbe[i].split('=')[0]).trim()
block = block.replace(
matchAbe[i],
' data-abe-attr-' + cmsData.regex.validDataAbe(getattr) + '="' + matchattr + '"' +
' data-abe-' + cmsData.regex.validDataAbe(getattr) + '="' + getattr + '" ' + matchAbe[i]
)
.replace(/\{\{\abe.*?}\}/, '')
}
}
}
return escape(block)
}

/**
* Add some stuff like style / script before closing </body> tag
* @param {String} text html page
Expand Down
32 changes: 32 additions & 0 deletions test/data.js
@@ -0,0 +1,32 @@
var chai = require('chai');
var path = require('path');

var config = require('../src/cli').config
config.set({root: __dirname + '/fixtures/'})

var cmsTemplate = require('../src/cli').cmsTemplate;
var Manager = require('../src/cli').Manager;
var fse = require('fs-extra');

describe('Data', function() {
before( function(done) {
Manager.instance.init()
.then(function () {

this.fixture = {
articleEach: fse.readFileSync(__dirname + '/fixtures/templates/article-each-abe.html', 'utf8'),
}
done()

}.bind(this))
});

/**
* cmsTemplate.encodeAbeTagAsComment
*
*/
it('cmsTemplate.encodeAbeTagAsComment()', function() {
var txt = cmsTemplate.encodeAbeTagAsComment(this.fixture.articleEach);
chai.expect(txt.indexOf('{')).to.equal(-1);
});
});

0 comments on commit 880c093

Please sign in to comment.