@@ -30,10 +30,10 @@ var cmd = {
30
30
default : false ,
31
31
describe : 'Show problems statistics'
32
32
} ,
33
- tag : {
33
+ tags : {
34
34
alias : 't' ,
35
- type : 'string ' ,
36
- default : '' ,
35
+ type : 'array ' ,
36
+ default : [ ] ,
37
37
describe : 'Filter problems by tags'
38
38
}
39
39
}
@@ -70,6 +70,12 @@ var QUERY_HANDLERS = {
70
70
S : _ . negate ( byStarred )
71
71
} ;
72
72
73
+ function hasTag ( o , tag ) {
74
+ return _ . isArray ( o ) && _ . some ( o , function ( x ) {
75
+ return x . indexOf ( tag . toLowerCase ( ) ) !== - 1 ;
76
+ } ) ;
77
+ }
78
+
73
79
cmd . handler = function ( argv ) {
74
80
session . argv = argv ;
75
81
core . getProblems ( function ( e , problems ) {
@@ -86,15 +92,14 @@ cmd.handler = function(argv) {
86
92
} ) ;
87
93
}
88
94
89
- if ( argv . tag ) {
90
- var tag = argv . tag . toLowerCase ( ) ;
95
+ argv . tags . forEach ( function ( tag ) {
91
96
// TODO: fill company/tags in problems
92
- problems = _ . filter ( problems , function ( x ) {
93
- return x . category === tag ||
94
- ( _ . isArray ( x . companies ) && x . companies . indexOf ( tag ) !== - 1 ) ||
95
- ( _ . isArray ( x . tags ) && x . tags . indexOf ( tag ) !== - 1 ) ;
97
+ problems = _ . filter ( problems , function ( p ) {
98
+ return p . category === tag ||
99
+ hasTag ( p . companies , tag ) ||
100
+ hasTag ( p . tags , tag ) ;
96
101
} ) ;
97
- }
102
+ } ) ;
98
103
99
104
var word = String ( argv . keyword ) . toLowerCase ( ) ;
100
105
if ( word ) {
0 commit comments