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.
;;
;; ----------------------------------------------------------------------------