diff --git a/clog-element-common.lisp b/clog-element-common.lisp
index 17d8f7d..e6eec69 100644
--- a/clog-element-common.lisp
+++ b/clog-element-common.lisp
@@ -38,7 +38,8 @@ place-inside-bottom-of CLOG-OBJ.
(auto-place t))
(create-child obj (format nil "~A "
(if class
- (format nil " class='~A'" (escape-string class))
+ (format nil " class='~A'"
+ (escape-string class))
"")
(escape-string target)
(escape-string link)
@@ -91,12 +92,17 @@ place-inside-bottom-of CLOG-OBJ.
;; create-br ;;
;;;;;;;;;;;;;;;
-(defgeneric create-br (clog-obj &key auto-place)
+(defgeneric create-br (clog-obj &key class auto-place)
(:documentation "Create a new CLOG-BR as child of CLOG-OBJ that creates a
line break and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
-(defmethod create-br ((obj clog-obj) &key (auto-place t))
- (create-child obj " " :clog-type 'clog-br :auto-place auto-place))
+(defmethod create-br ((obj clog-obj) &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-br :auto-place auto-place))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - clog-button
@@ -118,7 +124,8 @@ CLOG-OBJ"))
&key (content "") (class nil) (auto-place t))
(create-child obj (format nil "~A "
(if class
- (format nil " class='~A'" (escape-string class))
+ (format nil " class='~A'"
+ (escape-string class))
"")
(escape-string content))
:clog-type 'clog-button :auto-place auto-place))
@@ -156,7 +163,8 @@ CLOG-OBJ"))
(default \"\") and if :AUTO-PLACE (default t) place-inside-bottom-of
CLOG-OBJ"))
-(defmethod create-div ((obj clog-obj) &key (content "") (class nil) (auto-place t))
+(defmethod create-div ((obj clog-obj)
+ &key (content "") (class nil) (auto-place t))
(create-child obj (format nil "
~A
"
(if class
(format nil " class='~A'" (escape-string class))
@@ -175,13 +183,18 @@ CLOG-OBJ"))
;; create-hr ;;
;;;;;;;;;;;;;;;
-(defgeneric create-hr (clog-obj &key auto-place)
+(defgeneric create-hr (clog-obj &key class auto-place)
(:documentation "Create a new CLOG-HR as child of CLOG-OBJ that creates a
horizontal rule (line) and if :AUTO-PLACE (default t) place-inside-bottom-of
CLOG-OBJ"))
-(defmethod create-hr ((obj clog-obj) &key (auto-place t))
- (create-child obj " " :clog-type 'clog-hr :auto-place auto-place))
+(defmethod create-hr ((obj clog-obj) &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-hr :auto-place auto-place))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation - clog-img
@@ -207,7 +220,8 @@ placing image to constrain image size."))
(auto-place t))
(create-child obj (format nil " )"
(if class
- (format nil " class='~A'" (escape-string class))
+ (format nil " class='~A'"
+ (escape-string class))
"")
(escape-string url-src)
(escape-string alt-text))
@@ -259,6 +273,7 @@ placing image to constrain image size."))
;;;;;;;;;;;;;;;;;;
(defgeneric create-meter (clog-obj &key value high low maximum minimum optimum
+ class
auto-place)
(:documentation "Create a new CLOG-Meter as child of CLOG-OBJ with VALUE
(default 0) HIGH (default 100) LOW (default 0) MAXIMUM (default 100) MINIMUM
@@ -272,9 +287,15 @@ place-inside-bottom-of CLOG-OBJ."))
(maximum 100)
(minimum 0)
(optimum 50)
+ (class nil)
(auto-place t))
- (create-child obj (format nil " "
- value high low maximum minimum optimum)
+ (create-child obj (format nil
+ ""
+ value high low maximum minimum optimum
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-meter :auto-place auto-place))
;;;;;;;;;;;
@@ -390,16 +411,20 @@ place-inside-bottom-of CLOG-OBJ."))
;; create-progress-bar ;;
;;;;;;;;;;;;;;;;;;;;;;;;;
-(defgeneric create-progress-bar (clog-obj &key value maximum auto-place)
- (:documentation "Create a new CLOG-Progress-Bar as child of CLOG-OBJ with VALUE
-(default 0) MAXIMUM (default 100) and if :AUTO-PLACE (default t)
+(defgeneric create-progress-bar (clog-obj &key value maximum class auto-place)
+ (:documentation "Create a new CLOG-Progress-Bar as child of CLOG-OBJ with
+VALUE (default 0) MAXIMUM (default 100) and if :AUTO-PLACE (default t)
place-inside-bottom-of CLOG-OBJ."))
-(defmethod create-progress-bar ((obj clog-obj) &key
- (value 0)
- (maximum 100)
- (auto-place t))
- (create-child obj (format nil " " value maximum)
+(defmethod create-progress-bar ((obj clog-obj) &key (value 0)
+ (maximum 100)
+ (class nil)
+ (auto-place t))
+ (create-child obj (format nil " " value maximum
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-progress-bar :auto-place auto-place))
;;;;;;;;;;;
@@ -456,7 +481,8 @@ CLOG-OBJ"))
&key (content "") (class nil) (auto-place t))
(create-child obj (format nil "~A
"
(if class
- (format nil " class='~A'" (escape-string class))
+ (format nil " class='~A'"
+ (escape-string class))
"")
(escape-string content))
:clog-type 'clog-p :auto-place auto-place))
@@ -482,7 +508,8 @@ CLOG-OBJ"))
&key (content "") (class nil) (auto-place t))
(create-child obj (format nil "~A "
(if class
- (format nil " class='~A'" (escape-string class))
+ (format nil " class='~A'"
+ (escape-string class))
"")
(escape-string content))
:clog-type 'clog-span :auto-place auto-place))
@@ -514,7 +541,8 @@ CLOG-OBJ"))
(create-child obj (format nil "<~A~A>~A~A>"
section
(if class
- (format nil " class='~A'" (escape-string class))
+ (format nil " class='~A'"
+ (escape-string class))
"")
(escape-string content)
section)
@@ -547,7 +575,8 @@ CLOG-OBJ"))
(create-child obj (format nil "<~A~A>~A~A>"
phrase
(if class
- (format nil " class='~A'" (escape-string class))
+ (format nil " class='~A'"
+ (escape-string class))
"")
(escape-string content)
phrase)
@@ -565,12 +594,17 @@ CLOG-OBJ"))
;; create-ordered-list ;;
;;;;;;;;;;;;;;;;;;;;;;;;;
-(defgeneric create-ordered-list (clog-obj &key auto-place)
+(defgeneric create-ordered-list (clog-obj &key class auto-place)
(:documentation "Create a new CLOG-Ordered-List as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
-(defmethod create-ordered-list ((obj clog-obj) &key (auto-place t))
- (create-child obj " "
+(defmethod create-ordered-list ((obj clog-obj)
+ &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-ordered-list :auto-place auto-place))
;;;;;;;;;;;;;;;
@@ -628,12 +662,17 @@ is outside."))
;; create-unordered-list ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defgeneric create-unordered-list (clog-obj &key auto-place)
+(defgeneric create-unordered-list (clog-obj &key class auto-place)
(:documentation "Create a new CLOG-Unordered-List as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
-(defmethod create-unordered-list ((obj clog-obj) &key (auto-place t))
- (create-child obj ""
+(defmethod create-unordered-list ((obj clog-obj) &key (class nil)
+ (auto-place t))
+ (create-child obj (format nil ""
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-unordered-list :auto-place auto-place))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -647,12 +686,19 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
;; create-list-item ;;
;;;;;;;;;;;;;;;;;;;;;;
-(defgeneric create-list-item (clog-obj &key content auto-place)
+(defgeneric create-list-item (clog-obj &key content class auto-place)
(:documentation "Create a new CLOG-List-Item as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
-(defmethod create-list-item ((obj clog-obj) &key (content "") (auto-place t))
- (create-child obj (format nil "~A " (escape-string content))
+(defmethod create-list-item ((obj clog-obj) &key (content "")
+ (class nil)
+ (auto-place t))
+ (create-child obj (format nil "~A "
+ (escape-string content)
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-list-item :auto-place auto-place))
;;;;;;;;;;;;;;;;
@@ -683,12 +729,17 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
;; create-definition-list ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defgeneric create-definition-list (clog-obj &key auto-place)
+(defgeneric create-definition-list (clog-obj &key class auto-place)
(:documentation "Create a new CLOG-Definition-List as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
-(defmethod create-definition-list ((obj clog-obj) &key (auto-place t))
- (create-child obj " "
+(defmethod create-definition-list ((obj clog-obj) &key (class nil)
+ (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-definition-list :auto-place auto-place))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -702,13 +753,20 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
;; create-term ;;
;;;;;;;;;;;;;;;;;
-(defgeneric create-term (clog-definition-list &key content auto-place)
+(defgeneric create-term (clog-definition-list &key content class auto-place)
(:documentation "Create a new CLOG-Term as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
(defmethod create-term ((obj clog-definition-list)
- &key (content "") (auto-place t))
- (create-child obj (format nil "~A " (escape-string content))
+ &key (content "")
+ (class nil)
+ (auto-place t))
+ (create-child obj (format nil "~A "
+ (escape-string content)
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-term :auto-place auto-place))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -722,11 +780,282 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
;; create-description ;;
;;;;;;;;;;;;;;;;;;;;;;;;
-(defgeneric create-description (clog-definition-list &key content auto-place)
+(defgeneric create-description (clog-definition-list
+ &key content class auto-place)
(:documentation "Create a new CLOG-Description as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
(defmethod create-description ((obj clog-definition-list)
- &key (content "") (auto-place t))
- (create-child obj (format nil "~A " (escape-string content))
+ &key (content "")
+ (class nil)
+ (auto-place t))
+ (create-child obj (format nil "~A "
+ (escape-string content)
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
:clog-type 'clog-description :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table (clog-element)()
+ (:documentation "CLOG Table Objects."))
+
+;;;;;;;;;;;;;;;;;;
+;; create-table ;;
+;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table (clog-obj &key class auto-place)
+ (:documentation "Create a new CLOG-Table as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table ((obj clog-obj)
+ &key (class nil) (auto-place t))
+ (create-child obj (format nil ""
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-table :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-row
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-row (clog-element)()
+ (:documentation "CLOG Table-Row Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-row ;;
+;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-row (clog-obj &key class auto-place)
+ (:documentation "Create a new CLOG-Table-Row as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-row ((obj clog-obj)
+ &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-table-row :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-column
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-column (clog-table-row)()
+ (:documentation "CLOG Table-Column Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-column ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-column (clog-obj &key content
+ column-span
+ row-span
+ class
+ auto-place)
+ (:documentation "Create a new CLOG-Table-Column as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-column ((obj clog-obj) &key (content "")
+ (column-span 1)
+ (row-span 1)
+ (class nil)
+ (auto-place t))
+ (create-child obj (format nil "~A "
+ column-span
+ row-span
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ "")
+ (escape-string content))
+ :clog-type 'clog-table-column :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-heading
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-heading (clog-table-row)()
+ (:documentation "CLOG Table-Heading Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-heading ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-heading (clog-obj &key content
+ column-span
+ row-span
+ class
+ auto-place)
+ (:documentation "Create a new CLOG-Table-Heading as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-heading ((obj clog-obj) &key (content "")
+ (column-span 1)
+ (row-span 1)
+ (class nil)
+ (auto-place t))
+ (create-child obj (format nil "~A "
+ column-span
+ row-span
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ "")
+ (escape-string content))
+ :clog-type 'clog-table-heading :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-head
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-head (clog-table)()
+ (:documentation "CLOG Table-Head Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-head ;;
+;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-head (clog-obj &key class auto-place)
+ (:documentation "Create a new CLOG-Table-Head as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-head ((obj clog-obj)
+ &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-table-head :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-body
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-body (clog-table)()
+ (:documentation "CLOG Table-Body Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-body ;;
+;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-body (clog-obj &key class auto-place)
+ (:documentation "Create a new CLOG-Table-Body as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-body ((obj clog-obj)
+ &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-table-body :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-caption
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-caption (clog-table)()
+ (:documentation "CLOG Table-Caption Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-caption ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-caption (clog-obj &key content class auto-place)
+ (:documentation "Create a new CLOG-Table-Caption as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-caption ((obj clog-obj)
+ &key (content "") (class nil) (auto-place t))
+ (create-child obj (format nil " ~A"
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ "")
+ (escape-string content))
+ :clog-type 'clog-table-caption :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-footer
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-footer (clog-table)()
+ (:documentation "CLOG Table-Footer Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-footer ;;
+;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-footer (clog-obj &key class auto-place)
+ (:documentation "Create a new CLOG-Table-Footer as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-footer ((obj clog-obj)
+ &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-table-footer :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-column-group
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-column-group (clog-table)()
+ (:documentation "CLOG Table-Column-Group Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-column-group ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-column-group (clog-obj &key class auto-place)
+ (:documentation "Create a new CLOG-Table-Column-Group as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-column-group ((obj clog-obj)
+ &key (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-table-column-group :auto-place auto-place))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation - clog-table-column-group-item
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defclass clog-table-column-group-item (clog-table-column-group)()
+ (:documentation "CLOG Table-Column-Group-Item Objects."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; create-table-column-group-item ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgeneric create-table-column-group-item (clog-obj
+ &key column-span class auto-place)
+ (:documentation "Create a new CLOG-Table-Column-Group-Item as child of CLOG-OBJ
+and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ"))
+
+(defmethod create-table-column-group-item ((obj clog-obj)
+ &key (column-span 1) (class nil) (auto-place t))
+ (create-child obj (format nil " "
+ column-span
+ (if class
+ (format nil " class='~A'"
+ (escape-string class))
+ ""))
+ :clog-type 'clog-table-column-group-item :auto-place auto-place))
diff --git a/clog.lisp b/clog.lisp
index 1a2023a..5881b97 100644
--- a/clog.lisp
+++ b/clog.lisp
@@ -381,7 +381,47 @@ embedded in a native template application.)"
"CLOG-Description - Class for CLOG Descriptions"
(clog-description class)
- (create-description generic-function))
+ (create-description generic-function)
+
+ "CLOG-Table - Class for CLOG Tables"
+ (clog-table class)
+ (create-table generic-function)
+
+ "CLOG-Table-Row - Class for CLOG Table-Rows"
+ (clog-table-row class)
+ (create-table-row generic-function)
+
+ "CLOG-Table-Column - Class for CLOG Table-Columns"
+ (clog-table-column class)
+ (create-table-column generic-function)
+
+ "CLOG-Table-Heading - Class for CLOG Table-Headings"
+ (clog-table-heading class)
+ (create-table-heading generic-function)
+
+ "CLOG-Table-Head - Class for CLOG Table-Heads"
+ (clog-table-head class)
+ (create-table-head generic-function)
+
+ "CLOG-Table-Body - Class for CLOG Table-Bodys"
+ (clog-table-body class)
+ (create-table-body generic-function)
+
+ "CLOG-Table-Caption - Class for CLOG Table-Captions"
+ (clog-table-caption class)
+ (create-table-caption generic-function)
+
+ "CLOG-Table-Footer - Class for CLOG Table-Footers"
+ (clog-table-footer class)
+ (create-table-footer generic-function)
+
+ "CLOG-Table-Column-Group - Class for CLOG Table-Column-Groups"
+ (clog-table-column-group class)
+ (create-table-column-group generic-function)
+
+ "CLOG-Table-Column-Group-Item - Class for CLOG Table-Column-Group-Items"
+ (clog-table-column-group-item class)
+ (create-table-column-group-item generic-function))
(defsection @clog-form (:title "CLOG Form Objects")
"CLOG-Form - Class for organizing Form Elements in to a From"
diff --git a/doc/clog-manual.html b/doc/clog-manual.html
index facb1a5..dc9d602 100644
--- a/doc/clog-manual.html
+++ b/doc/clog-manual.html
@@ -309,14 +309,16 @@ properties (to use for :property) are based on the event type.
-[function] INITIALIZE ON-NEW-WINDOW-HANDLER &KEY (HOST "0.0.0.0") (PORT 8080) (BOOT-FILE "/boot.html") (STATIC-ROOT #P"static-files/")
+[function] INITIALIZE ON-NEW-WINDOW-HANDLER &KEY (HOST "0.0.0.0") (PORT 8080) (BOOT-FILE "/boot.html") (STATIC-ROOT (MERGE-PATHNAMES "./static-files/" (ASDF/SYSTEM:SYSTEM-SOURCE-DIRECTORY :CLOG)))
-Inititalize CLOG on a socket using HOST and PORT to serve BOOT-FILE as
-the default route to establish web-socket connections and static files
-located at STATIC-ROOT. If CLOG was already initialized and not shut
-down, this function does the same as set-on-new-window. If the variable
-clog:overide-static-root is set STATIC-ROOT will be ignored. If BOOT-FILE
-is nil no default boot-file will be set for /.
+Inititalize CLOG on a socket using HOST and PORT to serve BOOT-FILE
+as the default route to establish web-socket connections and static
+files located at STATIC-ROOT. If CLOG was already initialized and not
+shut down, this function does the same as set-on-new-window (does not
+change the static-root). STATIC-ROOT by default is the "directory CLOG
+is installed in ./static-files" If the variable clog:overide-static-root
+is set STATIC-ROOT will be ignored. If BOOT-FILE is nil no default
+boot-file will be set for root path, i.e. /.
@@ -564,6 +566,69 @@ is nil unbind the event.
is nil unbind the event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2178,7 +2243,7 @@ to no actual HTML elemen.
-[generic-function] CREATE-A CLOG-OBJ &KEY LINK CONTENT TARGET AUTO-PLACE
+[generic-function] CREATE-A CLOG-OBJ &KEY LINK CONTENT TARGET CLASS AUTO-PLACE
Create a new CLOG-A as child of CLOG-OBJ with :LINK and
:CONTENT (default "") and :TARGET ("_self") and if :AUTO-PLACE (default t)
@@ -2220,7 +2285,7 @@ place-inside-bottom-of CLOG-OBJ.
-[generic-function] CREATE-BR CLOG-OBJ &KEY AUTO-PLACE
+[generic-function] CREATE-BR CLOG-OBJ &KEY CLASS AUTO-PLACE
Create a new CLOG-BR as child of CLOG-OBJ that creates a
line break and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ
@@ -2239,7 +2304,7 @@ line break and if :AUTO-PLACE (default t) place-inside-bottom-of
-[generic-function] CREATE-BUTTON CLOG-OBJ &KEY CONTENT AUTO-PLACE
+[generic-function] CREATE-BUTTON CLOG-OBJ &KEY CONTENT CLASS AUTO-PLACE
Create a new CLOG-Button as child of CLOG-OBJ with :CONTENT
(default "") and if :AUTO-PLACE (default t) place-inside-bottom-of
@@ -2267,7 +2332,7 @@ line break and if :AUTO-PLACE (default t) place-inside-bottom-of
-[generic-function] CREATE-IMG CLOG-OBJ &KEY URL-SRC ALT-TEXT AUTO-PLACE
+[generic-function] CREATE-IMG CLOG-OBJ &KEY URL-SRC ALT-TEXT CLASS AUTO-PLACE
Create a new CLOG-Img as child of CLOG-OBJ with :URL-SRC
(default "") and :ALT-TEXT (default "") if :AUTO-PLACE (default t)
@@ -2296,7 +2361,7 @@ placing image to constrain image size.
-[generic-function] CREATE-DIV CLOG-OBJ &KEY CONTENT AUTO-PLACE
+[generic-function] CREATE-DIV CLOG-OBJ &KEY CONTENT CLASS AUTO-PLACE
Create a new CLOG-Div as child of CLOG-OBJ with :CONTENT
(default "") and if :AUTO-PLACE (default t) place-inside-bottom-of
@@ -2316,7 +2381,7 @@ placing image to constrain image size.
-[generic-function] CREATE-HR CLOG-OBJ &KEY AUTO-PLACE
+[generic-function] CREATE-HR CLOG-OBJ &KEY CLASS AUTO-PLACE
Create a new CLOG-HR as child of CLOG-OBJ that creates a
horizontal rule (line) and if :AUTO-PLACE (default t) place-inside-bottom-of
@@ -2336,7 +2401,7 @@ horizontal rule (line) and if :AUTO-PLACE (default t) place-inside-
-[generic-function] CREATE-METER CLOG-OBJ &KEY VALUE HIGH LOW MAXIMUM MINIMUM OPTIMUM AUTO-PLACE
+[generic-function] CREATE-METER CLOG-OBJ &KEY VALUE HIGH LOW MAXIMUM MINIMUM OPTIMUM CLASS AUTO-PLACE
Create a new CLOG-Meter as child of CLOG-OBJ with VALUE
(default 0) HIGH (default 100) LOW (default 0) MAXIMUM (default 100) MINIMUM
@@ -2407,10 +2472,10 @@ instead through the value property.
-[generic-function] CREATE-PROGRESS-BAR CLOG-OBJ &KEY VALUE MAXIMUM AUTO-PLACE
+[generic-function] CREATE-PROGRESS-BAR CLOG-OBJ &KEY VALUE MAXIMUM CLASS AUTO-PLACE
-Create a new CLOG-Progress-Bar as child of CLOG-OBJ with VALUE
-(default 0) MAXIMUM (default 100) and if :AUTO-PLACE (default t)
+
Create a new CLOG-Progress-Bar as child of CLOG-OBJ with
+VALUE (default 0) MAXIMUM (default 100) and if :AUTO-PLACE (default t)
place-inside-bottom-of CLOG-OBJ.
@@ -2445,7 +2510,7 @@ instead through the value property.
-[generic-function] CREATE-P CLOG-OBJ &KEY CONTENT AUTO-PLACE
+[generic-function] CREATE-P CLOG-OBJ &KEY CONTENT CLASS AUTO-PLACE
Create a new CLOG-P as child of CLOG-OBJ with :CONTENT
(default "") and if :AUTO-PLACE (default t) place-inside-bottom-of
@@ -2465,7 +2530,7 @@ instead through the value property.
-[generic-function] CREATE-SPAN CLOG-OBJ &KEY CONTENT AUTO-PLACE
+[generic-function] CREATE-SPAN CLOG-OBJ &KEY CONTENT CLASS AUTO-PLACE
Create a new CLOG-Span as child of CLOG-OBJ with CONTENT
and if :AUTO-PLACE (default t) place-inside-bottom-of
@@ -2491,7 +2556,7 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of
-[generic-function] CREATE-SECTION CLOG-OBJ SECTION &KEY CONTENT AUTO-PLACE
+[generic-function] CREATE-SECTION CLOG-OBJ SECTION &KEY CONTENT CLASS AUTO-PLACE
Create a new CLOG-Section of section type as child of
CLOG-OBJ with CONTENT and if :AUTO-PLACE (default t) place-inside-bottom-of
@@ -2517,7 +2582,7 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of
-[generic-function] CREATE-PHRASE CLOG-OBJ PHRASE &KEY CONTENT AUTO-PLACE
+[generic-function] CREATE-PHRASE CLOG-OBJ PHRASE &KEY CONTENT CLASS AUTO-PLACE
Create a new CLOG-Phrase of phrase type as child of
CLOG-OBJ with CONTENT and if :AUTO-PLACE (default t) place-inside-bottom-of
@@ -2537,7 +2602,7 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of
-[generic-function] CREATE-ORDERED-LIST CLOG-OBJ &KEY AUTO-PLACE
+[generic-function] CREATE-ORDERED-LIST CLOG-OBJ &KEY CLASS AUTO-PLACE
Create a new CLOG-Ordered-List as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ
@@ -2585,7 +2650,7 @@ is outside.
-[generic-function] CREATE-UNORDERED-LIST CLOG-OBJ &KEY AUTO-PLACE
+[generic-function] CREATE-UNORDERED-LIST CLOG-OBJ &KEY CLASS AUTO-PLACE
Create a new CLOG-Unordered-List as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ
@@ -2604,7 +2669,7 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OB
-[generic-function] CREATE-LIST-ITEM CLOG-OBJ &KEY CONTENT AUTO-PLACE
+[generic-function] CREATE-LIST-ITEM CLOG-OBJ &KEY CONTENT CLASS AUTO-PLACE
Create a new CLOG-List-Item as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ
@@ -2631,7 +2696,7 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OB
-[generic-function] CREATE-DEFINITION-LIST CLOG-OBJ &KEY AUTO-PLACE
+[generic-function] CREATE-DEFINITION-LIST CLOG-OBJ &KEY CLASS AUTO-PLACE
Create a new CLOG-Definition-List as child of CLOG-OBJ
and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OBJ
@@ -2650,7 +2715,7 @@ and if :AUTO-PLACE (default t) place-inside-bottom-of CLOG-OB
+
+
@@ -4482,6 +4554,14 @@ on-storage event is fired for changes to :local storage keys.
Load css from CSS-URL.
+
+
+
+
diff --git a/test/test-clog.lisp b/test/test-clog.lisp
index d45773f..ba83ed6 100644
--- a/test/test-clog.lisp
+++ b/test/test-clog.lisp
@@ -66,6 +66,19 @@
(create-list-item tmp :content "list item 2")
(create-list-item tmp :content "list item 3")
(setf (list-location tmp) :inside)
+
+ (create-hr win)
+
+ (let* ((tbl (create-table win))
+ (cap (create-table-caption tbl :content "My Table"))
+ (rw))
+
+ (set-border tbl :thin :solid :black)
+
+ (dotimes (y 10)
+ (setf rw (create-table-row tbl))
+ (dotimes (x 6)
+ (create-table-column rw :content (format nil "~A X ~A" x y)))))
))
(defun test ()