- (insert (format "001 RANK %s" sex))
- (when (= (length sex) 0) (insert " ")) ;; add extra space if the sex string is empty
- (insert-char ?\s (- 3 (length title)))
- (insert (format "%s " title))
- (insert (format "%s" name))
- (insert-char ?\s (- 34 (length name)))
- (insert (format "%s " elo))
- (when (= (length elo) 0) (insert " ")) ;; add extra space if the elo is empty
- (when (= (length elo) 1) (insert " ")) ;; add extra space if the elo is a "0"
- (insert (format "%s" fed))
- (when (= (length fed) 0) (insert " ")) ;; add extra space if fed is empty
- (insert-char ?\s (- 12 (length idfide)))
- (insert (format "%s " idfide))
- (insert (format "%s " year))
- (when (= (length year) 0) (insert " ")) ;; TODO: improve this to make it support different data formats
- (insert (format " 0.0 POS"))
- (setq thislinelength (length (thing-at-point 'line)))
- (insert-char ?\s (- playerlinelength thislinelength)))
+ (save-excursion
+ (goto-char (point-min))
+ (while (re-search-forward "^001" nil t))
+ (let* ((linestring (thing-at-point 'line))
+ (rankstring (substring linestring 5 8)))
+
+ (forward-line 1)
+ (insert "\n")
+ (forward-char -1)
+ (insert (format "001 "))
+ (insert-char ?\s (- 4 (length (format "%s" (+ (string-to-number rankstring) 1)))))
+ (insert (format "%s" (+ (string-to-number rankstring) 1)))
+ (insert (format " %s" sex))
+ (when (= (length sex) 0) (insert " ")) ;; add extra space if the sex string is empty
+ (insert-char ?\s (- 3 (length title)))
+ (insert (format "%s " title))
+ (insert (format "%s" name))
+ (insert-char ?\s (- 34 (length name)))
+ (insert (format "%s " elo))
+ (when (= (length elo) 0) (insert " ")) ;; add extra space if the elo is empty
+ (when (= (length elo) 1) (insert " ")) ;; add extra space if the elo is a "0"
+ (insert (format "%s" fed))
+ (when (= (length fed) 0) (insert " ")) ;; add extra space if fed is empty
+ (insert-char ?\s (- 12 (length idfide)))
+ (insert (format "%s " idfide))
+ (insert (format "%s " year))
+ (when (= (length year) 0) (insert " ")) ;; TODO: improve this to make it support different data formats
+ (insert (format " 0.0 "))
+ (insert-char ?\s (- 4 (length (format "%s" (+ (string-to-number rankstring) 1)))))
+ (insert (format "%s" (+ (string-to-number rankstring) 1)))
+ (setq thislinelength (length (thing-at-point 'line)))
+ (insert-char ?\s (- playerlinelength thislinelength)))))