Skip to content

Instantly share code, notes, and snippets.

@domcleal
Created February 23, 2013 16:48
Show Gist options
  • Select an option

  • Save domcleal/5020418 to your computer and use it in GitHub Desktop.

Select an option

Save domcleal/5020418 to your computer and use it in GitHub Desktop.
(* newsrc *)
module Newsrc =
autoload xfm
let colon = del /:[ \t]*/ ": "
let dash = Util.del_str "-"
let comma = del /,[ \t]*/ ","
let eol = Util.eol
let group_name_re = /[^\/:]+/
let number_re = /[0-9]+/
let number = [ label "number" . store number_re ]
let range = [ label "from" . store number_re ] . dash . [ label "to" . store number_re ]
let number_or_range = [ seq "number" . (number | range) ]
let range_list = number_or_range . (comma . number_or_range)*
let group_def = [ key group_name_re . colon . range_list ] . eol
let lns = group_def*
let xfm = transform lns (incl "/etc/newsrc")
module Test_newsrc =
test Newsrc.lns get "gmane.linux.debian.devel.general: 1-180151,180153-180164,180166,180170,180171,180181,180183-180185,180188-180190,180193,180233,180236,180238-180240,180242,180260,180263-180268,180273,180303,180312,180314,180316,180317
gmane.comp.audio.csound.user: 1-38228
gmane.linux.debian.devel.announce: 1-1761,1763
gmane.linux.debian.devel.games: 1-6031,6040,6046-6048,6050-6052,6056
" = ?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment