I've reorganized name manipulators:

1. Accept both a string representation and a list representation 
   in many functions. We can rid `apply' from many lines.

2. Introduce *-semi-qualified functions.
   We have used much more frequently tla-xxx-full-qualified 
   functions than tla-xxx. So I renamed the functions like:
   tla-xxx-semi-qualified (renamed from tla-xxx)
   tla-xxx (renamed from tla-xxx-full-qualified).

3. Introduce tla--name-{archive|category|branch|version|revision}.
   Thses are almost the same as 
tla-{archive|category|branch|version|revision}-name.
   However, new ones keep tla--name name space.
   "1. Accept..." is applicable to 
tla--name-{archive|category|branch|version|revision}.
   
I think 1. and 2. are acceptable.
How about 3?
For the objections, I have not removed 
tla-{archive|category|branch|version|revision}-name.
Commens are wel come.

;; ----------------------------------------------------------------------------
;; Arch name manipulators
;; ======================
;;
;; Normally in xtla, a name, a revision specifier is represented as a
;; list like:
;;
;;    ("archive" "category" "branch" "version" "revision")
;;
;; Nil is permitted as the element. However the list length must be 5
;; like:
;;
;;    (nil "category" "branch" nil nil)
;;
;; In other hand, in tla command, the name must be represented as a
;; string like:
;;
;;    "archive/category--branch--version--revision"
;;
;; So we have to convert a name in different representation in many
;; cases.
;;
;; * tla--name-split-* is for converting from a string representation
;;   to a list representation. There are semi-qualified version and
;;   fully-qualified version.
;;
;;   - semi-qualified: "category--branch--version--revision".
;;     `tla--name-split-semi-qualified' expects a name string without
;;     archive component. The archive field of returned list is filled
;;     with nil.
;;
;;   - fully-qualified: "archive/category--branch--version--revision".
;;     `tla--name-split' expects a name string including archive.
;;
;; * tla--name-construct-* is for converting from a list
;;   representation to a string representation. The functions accept
;;   arguments two ways.
;;
;;   - normall passing: (tla--name-construct "archive" "category"...)
;;   - packed passing: (tla--name-construct '("archive" "category"...))
;;
;;   There are semi-qualified version and fully-qualified version.
;;   - semi-qualified: `tla--name-construct-semi-qualified' connects
;;     arguments with "--".
;;   - fully-qualified: `tla--name-construct" connects the first argument
;;     and the rest with "/". About the rest,
;;     `tla--name-construct-semi-qualified' is applied.
;;
;; * tla--name-{archive|category|branch|version|revision} is for
;;   extracting a component from a name. The both representations are
;;   acceptable.
;;
;; ----------------------------------------------------------------------------

Reply via email to