##// END OF EJS Templates
filesets: add eol predicate
Matt Mackall -
r18842:3ce3f2b0 default
parent child Browse files
Show More
@@ -353,6 +353,29 def encoding(mctx, x):
353
353
354 return s
354 return s
355
355
356 def eol(mctx, x):
357 """``eol(style)``
358 File contains newlines of the given style (dos, unix, mac). Binary
359 files are excluded, files with mixed line endings match multiple
360 styles.
361 """
362
363 # i18n: "encoding" is a keyword
364 enc = getstring(x, _("encoding requires an encoding name"))
365
366 s = []
367 for f in mctx.existing():
368 d = mctx.ctx[f].data()
369 if util.binary(d):
370 continue
371 if (enc == 'dos' or enc == 'win') and '\r\n' in d:
372 s.append(f)
373 elif enc == 'unix' and re.search('(?<!\r)\n', d):
374 s.append(f)
375 elif enc == 'mac' and re.search('\r(?!\n)', d):
376 s.append(f)
377 return s
378
356 def copied(mctx, x):
379 def copied(mctx, x):
357 """``copied()``
380 """``copied()``
358 File that is recorded as being copied.
381 File that is recorded as being copied.
@@ -395,6 +418,7 symbols = {
395 'copied': copied,
418 'copied': copied,
396 'deleted': deleted,
419 'deleted': deleted,
397 'encoding': encoding,
420 'encoding': encoding,
421 'eol': eol,
398 'exec': exec_,
422 'exec': exec_,
399 'grep': grep,
423 'grep': grep,
400 'ignored': ignored,
424 'ignored': ignored,
@@ -226,3 +226,21 Test with a revision
226 b2
226 b2
227 c1
227 c1
228
228
229 >>> open('dos', 'wb').write("dos\r\n")
230 >>> open('mixed', 'wb').write("dos\r\nunix\n")
231 >>> open('mac', 'wb').write("mac\r")
232 $ hg add dos mixed mac
233
234 $ fileset 'eol(dos)'
235 dos
236 mixed
237 $ fileset 'eol(unix)'
238 .hgsub
239 .hgsubstate
240 a1
241 b1
242 b2
243 c1
244 mixed
245 $ fileset 'eol(mac)'
246 mac
General Comments 0
You need to be logged in to leave comments. Login now