minor tweaking...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2018-12-14 02:46:05 +03:00
parent 9ece16bb5b
commit 98f1f7fde2

View File

@ -40,7 +40,7 @@ var util = require('lib/util')
// .someMethod(arg, ..) // .someMethod(arg, ..)
// .someMethod([arg, ..]) // .someMethod([arg, ..])
// //
var splitOrList = function(args){ var normalizeSplit = function(args){
return (args.length == 1 && args[0] instanceof Array) ? return (args.length == 1 && args[0] instanceof Array) ?
args.pop() args.pop()
: args } : args }
@ -78,7 +78,7 @@ var TagsClassPrototype = {
: typeof(tagRemovedChars) == typeof('str') ? : typeof(tagRemovedChars) == typeof('str') ?
new RegExp(tagRemovedChars, 'g') new RegExp(tagRemovedChars, 'g')
: /[\s-_]/g : /[\s-_]/g
var res = splitOrList(tags) var res = normalizeSplit(tags)
.map(function(tag){ .map(function(tag){
return tag return tag
.trim() .trim()
@ -106,7 +106,7 @@ var TagsClassPrototype = {
: res : res
}, },
subTags: function(...tags){ subTags: function(...tags){
return this.normalize(splitOrList(tags)) return this.normalize(normalizeSplit(tags))
.map(function(tag){ .map(function(tag){
return tag.split(/[:\\\/]/g) }) return tag.split(/[:\\\/]/g) })
.flat() .flat()
@ -202,6 +202,7 @@ var TagsClassPrototype = {
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// XXX should we store normalized and non-normalized tags for reference??? // XXX should we store normalized and non-normalized tags for reference???
// ...there are two ways to think of this: // ...there are two ways to think of this:
// 1) both (a-la flickr) -- keep both, use normalized internally // 1) both (a-la flickr) -- keep both, use normalized internally
@ -235,7 +236,9 @@ var TagsPrototype = {
// } // }
__index: null, __index: null,
// XXX
// XXX EXPERIMENTAL...
// XXX need a way to edit the compound tag... // XXX need a way to edit the compound tag...
__special_tag_handlers__: { __special_tag_handlers__: {
'*persistent*': function(action, tag, value){ '*persistent*': function(action, tag, value){
@ -273,6 +276,7 @@ var TagsPrototype = {
}, },
// Utils... // Utils...
// //
// proxies to class methods... // proxies to class methods...
@ -603,7 +607,7 @@ var TagsPrototype = {
// check if value is tagged by tags.., // check if value is tagged by tags..,
if(value && tags.length > 0){ if(value && tags.length > 0){
tags = splitOrList(tags) tags = normalizeSplit(tags)
var u = this.tags(value) var u = this.tags(value)
while(tags.length > 0){ while(tags.length > 0){
if(this.match(tags.shift(), u).length == 0){ if(this.match(tags.shift(), u).length == 0){
@ -877,7 +881,7 @@ var TagsPrototype = {
action = ['on', 'off', 'toggle', '?'].includes(tags[tags.length-1]) ? action = ['on', 'off', 'toggle', '?'].includes(tags[tags.length-1]) ?
tags.pop() tags.pop()
: 'toggle' : 'toggle'
tags = splitOrList(tags) tags = normalizeSplit(tags)
var persistent = var persistent =
this.__persistent_tags = this.__persistent_tags =
@ -935,7 +939,7 @@ var TagsPrototype = {
throw new Error( throw new Error(
`.rename(..): only support tags and tag sets as renaming target, got: "${to}"`) } `.rename(..): only support tags and tag sets as renaming target, got: "${to}"`) }
tags = new Set(splitOrList(tags)) tags = new Set(normalizeSplit(tags))
// prepare for the replacement... // prepare for the replacement...
var pattern = new RegExp(`(^|[:\\\\\\/])${tag}(?=$|[:\\\\\\/])`, 'g') var pattern = new RegExp(`(^|[:\\\\\\/])${tag}(?=$|[:\\\\\\/])`, 'g')
@ -1000,7 +1004,7 @@ var TagsPrototype = {
// -> this // -> this
// //
remove: function(...values){ remove: function(...values){
values = splitOrList(values) values = normalizeSplit(values)
var res = this.clone() var res = this.clone()
Object.entries(res.__index || {}) Object.entries(res.__index || {})
@ -1017,7 +1021,7 @@ var TagsPrototype = {
// -> this // -> this
// //
keep: function(...values){ keep: function(...values){
values = splitOrList(values) values = normalizeSplit(values)
var res = this.clone() var res = this.clone()
Object.entries(res.__index || {}) Object.entries(res.__index || {})
@ -1027,6 +1031,9 @@ var TagsPrototype = {
return res return res
}, },
// Tags - Tags API...
//
// Join 1 or more Tags objects... // Join 1 or more Tags objects...
// //
// .join(other, ..) // .join(other, ..)
@ -1036,7 +1043,7 @@ var TagsPrototype = {
join: function(...others){ join: function(...others){
var that = this var that = this
var index = this.__index || {} var index = this.__index || {}
splitOrList(others) normalizeSplit(others)
.forEach(function(other){ .forEach(function(other){
Object.entries(other.__index || {}) Object.entries(other.__index || {})
.forEach(function(e){ .forEach(function(e){
@ -1048,7 +1055,6 @@ var TagsPrototype = {
}, },
// Query API... // Query API...
// //
// //
@ -1305,7 +1311,6 @@ var TagsPrototype = {
}, },
// Object utility API... // Object utility API...
// //
// //
@ -1319,6 +1324,7 @@ var TagsPrototype = {
clone: function(mode){ clone: function(mode){
return new this.constructor(this.json(mode)) }, return new this.constructor(this.json(mode)) },
// Serialization... // Serialization...
// //
// //
@ -1391,13 +1397,13 @@ var TagsPrototype = {
}, },
__init__: function(json){ __init__: function(json){
json json
&& this.load(json) }, && this.load(json) },
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
var Tags = var Tags =
module.Tags = module.Tags =
object.makeConstructor('Tags', object.makeConstructor('Tags',