Initial commit.
8
.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
*.fasl
|
||||
*.dx32fsl
|
||||
*.dx64fsl
|
||||
*.lx32fsl
|
||||
*.lx64fsl
|
||||
*.x86f
|
||||
*~
|
||||
.#*
|
20
README.markdown
Normal file
|
@ -0,0 +1,20 @@
|
|||
# quickdocs-server
|
||||
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
## Installation
|
||||
|
||||
## Author
|
||||
|
||||
* Eitaro Fukamachi (e.arrows@gmail.com)
|
||||
|
||||
## Copyright
|
||||
|
||||
Copyright (c) 2015 Eitaro Fukamachi (e.arrows@gmail.com)
|
||||
|
||||
# License
|
||||
|
||||
Licensed under the BSD 2-Clause License.
|
||||
|
39
app.lisp
Normal file
|
@ -0,0 +1,39 @@
|
|||
(ql:quickload :quickdocs-server)
|
||||
|
||||
(defpackage quickdocs-server.app
|
||||
(:use :cl)
|
||||
(:import-from :lack.builder
|
||||
:builder)
|
||||
(:import-from :ppcre
|
||||
:scan
|
||||
:regex-replace)
|
||||
(:import-from :quickdocs-server.web
|
||||
:*web*)
|
||||
(:import-from :quickdocs-server.config
|
||||
:config
|
||||
:productionp
|
||||
:*static-directory*))
|
||||
(in-package :quickdocs-server.app)
|
||||
|
||||
(builder
|
||||
(:static
|
||||
:path (lambda (path)
|
||||
(if (ppcre:scan "^(?:/images/|/css/|/js/|/robot\\.txt$|/favicon\\.ico$)" path)
|
||||
path
|
||||
nil))
|
||||
:root *static-directory*)
|
||||
(if (productionp)
|
||||
nil
|
||||
:accesslog)
|
||||
(if (getf (config) :error-log)
|
||||
'(:backtrace
|
||||
:output (getf (config) :error-log))
|
||||
nil)
|
||||
:session
|
||||
(if (productionp)
|
||||
nil
|
||||
(lambda (app)
|
||||
(lambda (env)
|
||||
(let ((datafly:*trace-sql* t))
|
||||
(funcall app env)))))
|
||||
*web*)
|
0
db/schema.sql
Normal file
2
qlfile
Normal file
|
@ -0,0 +1,2 @@
|
|||
github datafly fukamachi/datafly
|
||||
github quickdocs-database quickdocs/quickdocs-database
|
36
quickdocs-server.asd
Normal file
|
@ -0,0 +1,36 @@
|
|||
(in-package :cl-user)
|
||||
(defpackage quickdocs-server-asd
|
||||
(:use :cl :asdf))
|
||||
(in-package :quickdocs-server-asd)
|
||||
|
||||
(defsystem quickdocs-server
|
||||
:version "0.1"
|
||||
:author "Eitaro Fukamachi"
|
||||
:license "BSD 2-Clause"
|
||||
:depends-on (:clack
|
||||
:lack
|
||||
:caveman2
|
||||
:envy
|
||||
:cl-ppcre
|
||||
:quri
|
||||
|
||||
:quickdocs-database
|
||||
|
||||
;; for @route annotation
|
||||
:cl-syntax-annot
|
||||
|
||||
;; HTML Template
|
||||
:djula
|
||||
|
||||
;; for DB
|
||||
:datafly
|
||||
:sxql)
|
||||
:components ((:module "src"
|
||||
:components
|
||||
((:file "main" :depends-on ("config" "view" "db"))
|
||||
(:file "web" :depends-on ("view" "search"))
|
||||
(:file "view" :depends-on ("config"))
|
||||
(:file "search")
|
||||
(:file "db" :depends-on ("config"))
|
||||
(:file "config"))))
|
||||
:description "Web application running at quickdocs.org.")
|
44
src/config.lisp
Normal file
|
@ -0,0 +1,44 @@
|
|||
(in-package :cl-user)
|
||||
(defpackage quickdocs-server.config
|
||||
(:use :cl)
|
||||
(:import-from :envy
|
||||
:config-env-var
|
||||
:defconfig)
|
||||
(:export :config
|
||||
:*application-root*
|
||||
:*static-directory*
|
||||
:*template-directory*
|
||||
:appenv
|
||||
:developmentp
|
||||
:productionp))
|
||||
(in-package :quickdocs-server.config)
|
||||
|
||||
(setf (config-env-var) "APP_ENV")
|
||||
|
||||
(defparameter *application-root* (asdf:system-source-directory :quickdocs-server))
|
||||
(defparameter *static-directory* (merge-pathnames #P"static/" *application-root*))
|
||||
(defparameter *template-directory* (merge-pathnames #P"templates/" *application-root*))
|
||||
|
||||
(defconfig :common
|
||||
`(:databases ((:maindb :sqlite3 :database-name ":memory:"))))
|
||||
|
||||
(defconfig |development|
|
||||
'())
|
||||
|
||||
(defconfig |production|
|
||||
'())
|
||||
|
||||
(defconfig |test|
|
||||
'())
|
||||
|
||||
(defun config (&optional key)
|
||||
(envy:config #.(package-name *package*) key))
|
||||
|
||||
(defun appenv ()
|
||||
(asdf::getenv (config-env-var #.(package-name *package*))))
|
||||
|
||||
(defun developmentp ()
|
||||
(string= (appenv) "development"))
|
||||
|
||||
(defun productionp ()
|
||||
(string= (appenv) "production"))
|
22
src/db.lisp
Normal file
|
@ -0,0 +1,22 @@
|
|||
(in-package :cl-user)
|
||||
(defpackage quickdocs-server.db
|
||||
(:use :cl)
|
||||
(:import-from :quickdocs-server.config
|
||||
:config)
|
||||
(:import-from :datafly
|
||||
:*connection*
|
||||
:connect-cached)
|
||||
(:export :connection-settings
|
||||
:db
|
||||
:with-connection))
|
||||
(in-package :quickdocs-server.db)
|
||||
|
||||
(defun connection-settings (&optional (db :maindb))
|
||||
(cdr (assoc db (config :databases))))
|
||||
|
||||
(defun db (&optional (db :maindb))
|
||||
(apply #'connect-cached (connection-settings db)))
|
||||
|
||||
(defmacro with-connection (conn &body body)
|
||||
`(let ((*connection* ,conn))
|
||||
,@body))
|
30
src/main.lisp
Normal file
|
@ -0,0 +1,30 @@
|
|||
(in-package :cl-user)
|
||||
(defpackage quickdocs-server
|
||||
(:use :cl)
|
||||
(:import-from :quickdocs-server.config
|
||||
:config)
|
||||
(:import-from :clack
|
||||
:clackup)
|
||||
(:export :start
|
||||
:stop))
|
||||
(in-package :quickdocs-server)
|
||||
|
||||
(defvar *appfile-path*
|
||||
(asdf:system-relative-pathname :quickdocs-server #P"app.lisp"))
|
||||
|
||||
(defvar *handler* nil)
|
||||
|
||||
(defun start (&rest args &key server port debug &allow-other-keys)
|
||||
(declare (ignore server port debug))
|
||||
(when *handler*
|
||||
(restart-case (error "Server is already running.")
|
||||
(restart-server ()
|
||||
:report "Restart the server"
|
||||
(stop))))
|
||||
(setf *handler*
|
||||
(apply #'clackup *appfile-path* args)))
|
||||
|
||||
(defun stop ()
|
||||
(prog1
|
||||
(clack:stop *handler*)
|
||||
(setf *handler* nil)))
|
87
src/search.lisp
Normal file
|
@ -0,0 +1,87 @@
|
|||
(in-package :cl-user)
|
||||
(defpackage quickdocs-server.search
|
||||
(:use :cl
|
||||
:sxql
|
||||
:quickdocs-database)
|
||||
(:import-from :datafly
|
||||
:retrieve-all)
|
||||
(:import-from :alexandria
|
||||
:ensure-list))
|
||||
(in-package :quickdocs-server.search)
|
||||
|
||||
(syntax:use-syntax :annot)
|
||||
|
||||
@export
|
||||
(defun search-projects (query &optional (ql-dist-version
|
||||
(preference "ql-dist-version")))
|
||||
;; TODO: sort
|
||||
(if (and query
|
||||
(/= 0 (length query)))
|
||||
(remove-duplicates
|
||||
(append
|
||||
(ensure-list (search-exact-project query ql-dist-version))
|
||||
(search-by-categories query ql-dist-version)
|
||||
(search-by-name query ql-dist-version)
|
||||
(search-by-description query ql-dist-version))
|
||||
:test #'eql
|
||||
:key #'project-id
|
||||
:from-end t)
|
||||
(search-all-projects ql-dist-version)))
|
||||
|
||||
@export
|
||||
(defun search-all-projects (&optional (ql-dist-version
|
||||
(preference "ql-dist-version")))
|
||||
(retrieve-all
|
||||
(select :*
|
||||
(from :project)
|
||||
(where (:= :ql_dist_version ql-dist-version)))
|
||||
:as 'project))
|
||||
|
||||
(defun search-exact-project (query ql-dist-version)
|
||||
(retrieve-project query :ql-dist-version ql-dist-version))
|
||||
|
||||
(defun search-by-categories (query ql-dist-version)
|
||||
(let* ((scanner (ppcre:create-scanner
|
||||
(format nil "\\b~A\\b" (ppcre:quote-meta-chars query)) :case-insensitive-mode t))
|
||||
(rows (retrieve-all
|
||||
(select (:project_name :category)
|
||||
(from :cliki_project_category)
|
||||
(where (:like :category (format nil "%~(~A~)%" query)))
|
||||
(group-by :category))))
|
||||
(rows (remove-if-not
|
||||
(lambda (row)
|
||||
(ppcre:scan scanner (getf row :category)))
|
||||
rows)))
|
||||
(if rows
|
||||
(retrieve-all
|
||||
(select :*
|
||||
(from :project)
|
||||
(where (:and (:= :ql_dist_version ql-dist-version)
|
||||
(:in :name (mapcar (lambda (row)
|
||||
(getf row :project-name))
|
||||
rows)))))
|
||||
:as 'project)
|
||||
nil)))
|
||||
|
||||
(defun search-by-name (query ql-dist-version)
|
||||
(let ((queries (ppcre:split "\\s+" (string-downcase query))))
|
||||
(retrieve-all
|
||||
(select :*
|
||||
(from :project)
|
||||
(where `(:and (:= :ql_dist_version ,ql-dist-version)
|
||||
,@(mapcar
|
||||
(lambda (query) `(:like :name ,(format nil "%~A%" query)))
|
||||
queries))))
|
||||
:as 'project)))
|
||||
|
||||
(defun search-by-description (query ql-dist-version)
|
||||
(let ((queries (ppcre:split "\\s+" (string-downcase query))))
|
||||
(retrieve-all
|
||||
(select :project.*
|
||||
(from :cliki)
|
||||
(left-join :project :on (:= :cliki.project_name :project.name))
|
||||
(where `(:and (:= :ql_dist_version ,ql-dist-version)
|
||||
,@(mapcar
|
||||
(lambda (query) `(:like (:lower :body) ,(format nil "%~A%" query)))
|
||||
queries))))
|
||||
:as 'project)))
|
83
src/view.lisp
Normal file
|
@ -0,0 +1,83 @@
|
|||
(in-package :cl-user)
|
||||
(defpackage quickdocs-server.view
|
||||
(:use :cl)
|
||||
(:import-from :quickdocs-server.config
|
||||
:*template-directory*)
|
||||
(:import-from :caveman2
|
||||
:*response*
|
||||
:response-headers)
|
||||
(:import-from :djula
|
||||
:add-template-directory
|
||||
:compile-template*
|
||||
:render-template*
|
||||
:*djula-execute-package*)
|
||||
(:import-from :datafly
|
||||
:encode-json)
|
||||
(:export :render
|
||||
:render-json))
|
||||
(in-package :quickdocs-server.view)
|
||||
|
||||
(djula:add-template-directory *template-directory*)
|
||||
|
||||
(defparameter *template-registry* (make-hash-table :test 'equal))
|
||||
|
||||
(defun render (template-path &optional env)
|
||||
(let ((template (gethash template-path *template-registry*)))
|
||||
(unless template
|
||||
(setf template (djula:compile-template* (princ-to-string template-path)))
|
||||
(setf (gethash template-path *template-registry*) template))
|
||||
(apply #'djula:render-template*
|
||||
template nil
|
||||
env)))
|
||||
|
||||
(defun render-json (object)
|
||||
(setf (getf (response-headers *response*) :content-type) "application/json")
|
||||
(encode-json object))
|
||||
|
||||
|
||||
;;
|
||||
;; Execute package definition
|
||||
|
||||
(defpackage quickdocs-server.djula
|
||||
(:use :cl)
|
||||
(:import-from :quickdocs-server.config
|
||||
:config
|
||||
:appenv
|
||||
:developmentp
|
||||
:productionp)
|
||||
(:import-from :caveman2
|
||||
:url-for))
|
||||
|
||||
(setf djula:*djula-execute-package* (find-package :quickdocs-server.djula))
|
||||
|
||||
|
||||
;;
|
||||
;; Custom filters
|
||||
|
||||
(djula::def-filter :symbol (it)
|
||||
(quickdocs-serializer:symb-name it))
|
||||
|
||||
(djula::def-filter :lambda-list (it)
|
||||
(labels ((maptree (fn obj)
|
||||
(if (consp obj)
|
||||
(cons (maptree fn (car obj))
|
||||
(and (cdr obj)
|
||||
(maptree fn (cdr obj))))
|
||||
(funcall fn obj)))
|
||||
(princ-for-html (item)
|
||||
(djula::escape-for-html (format nil "~(~A~)" item))))
|
||||
(maptree (lambda (item)
|
||||
(typecase item
|
||||
(quickdocs-serializer:symb
|
||||
(format nil "<span class=\"symbol-name\">~A</span>"
|
||||
(princ-for-html
|
||||
(quickdocs-serializer:symb-name item))))
|
||||
((and symbol
|
||||
(not keyword))
|
||||
(if (eq (symbol-package item) (find-package :cl))
|
||||
(format nil "<span class=\"keyword\">~A</span>"
|
||||
(princ-for-html item))
|
||||
(format nil "<span class=\"symbol-name\">~A</span>"
|
||||
(princ-for-html item))))
|
||||
(otherwise (princ-for-html item))))
|
||||
it)))
|
132
src/web.lisp
Normal file
|
@ -0,0 +1,132 @@
|
|||
(in-package :cl-user)
|
||||
(defpackage quickdocs-server.web
|
||||
(:use :cl
|
||||
:caveman2
|
||||
:quickdocs-server.config
|
||||
:quickdocs-server.view
|
||||
:quickdocs-server.db
|
||||
:datafly
|
||||
:sxql
|
||||
:quickdocs-database)
|
||||
(:import-from :quickdocs-server.search
|
||||
:search-projects)
|
||||
(:import-from :lack.component
|
||||
:call)
|
||||
(:import-from :datafly
|
||||
:*connection*
|
||||
:connect-cached)
|
||||
(:export :*web*))
|
||||
(in-package :quickdocs-server.web)
|
||||
|
||||
;; for @route annotation
|
||||
(syntax:use-syntax :annot)
|
||||
|
||||
;;
|
||||
;; Application
|
||||
|
||||
(defclass <web> (<app>) ())
|
||||
(defvar *web* (make-instance '<web>))
|
||||
(defmethod lack.component:call :around ((app <web>) env)
|
||||
(let ((datafly:*connection*
|
||||
(datafly:connect-cached :mysql :username "root" :database-name "quickdocs")))
|
||||
(call-next-method)))
|
||||
(clear-routing-rules *web*)
|
||||
|
||||
|
||||
;;
|
||||
;; Routing rules
|
||||
|
||||
(defroute "/" ()
|
||||
(render #P"index.html"
|
||||
(list :ql-dist-version (preference "ql-dist-version"))))
|
||||
|
||||
@route GET "/:project-name/"
|
||||
(defun project-page (&key project-name)
|
||||
(let ((project (retrieve-project project-name)))
|
||||
(unless project
|
||||
(throw-code 404))
|
||||
|
||||
(let ((dependencies
|
||||
(mapcar (lambda (dep)
|
||||
(list :name (project-name dep)
|
||||
:description (project-description dep)))
|
||||
(project-dependencies project)))
|
||||
(dependees
|
||||
(mapcar (lambda (dep)
|
||||
(list :name (project-name dep)
|
||||
:description (project-description dep)))
|
||||
(project-dependees project))))
|
||||
(render #P"project.html"
|
||||
`(:project-name ,project-name
|
||||
:ql-dist-version ,(project-ql-dist-version project)
|
||||
:homepage ,(project-homepage-url project)
|
||||
:repos-url ,(project-repos-url project)
|
||||
:archive-url ,(project-archive-url project)
|
||||
:readme ,(let ((readme (project-readme project)))
|
||||
(when readme (project-readme-converted readme)))
|
||||
:authors ,(project-authors project)
|
||||
:maintainers ,(project-maintainers project)
|
||||
:licenses ,(project-licenses project)
|
||||
:categories ,(project-categories project)
|
||||
:dependencies-count ,(length dependencies)
|
||||
:dependencies ,dependencies
|
||||
:dependees-count ,(length dependees)
|
||||
:dependees ,dependees)))))
|
||||
|
||||
@route GET "/:project-name/api"
|
||||
(defun project-api-reference (&key project-name)
|
||||
(let ((project (retrieve-project project-name)))
|
||||
(unless project
|
||||
(throw-code 404))
|
||||
|
||||
(render #P"api.html"
|
||||
`(:project-name ,project-name
|
||||
:ql-dist-version ,(project-ql-dist-version project)
|
||||
:homepage ,(project-homepage-url project)
|
||||
:repos-url ,(project-repos-url project)
|
||||
:archive-url ,(project-archive-url project)
|
||||
:systems ,(mapcar (lambda (system)
|
||||
(list :name (system-name system)
|
||||
:description (system-description system)
|
||||
:packages
|
||||
(mapcar (lambda (package)
|
||||
(setf (getf package :symbols)
|
||||
(mapcar (lambda (symbol)
|
||||
(setf (getf symbol :type)
|
||||
(string-downcase (getf symbol :type)))
|
||||
(setf (getf symbol :name)
|
||||
(quickdocs-serializer:symb-name
|
||||
(getf symbol :name)))
|
||||
symbol)
|
||||
(getf package :symbols)))
|
||||
package)
|
||||
(system-extracted-info-packages
|
||||
(system-extracted-info system)))))
|
||||
(project-systems project))))))
|
||||
|
||||
@route GET "/search"
|
||||
(defun search-page (&key |q|)
|
||||
(let ((projects (search-projects |q| (preference "ql-dist-version"))))
|
||||
|
||||
(render #P"search.html"
|
||||
(list
|
||||
:projects (mapcar (lambda (project)
|
||||
(list :name (project-name project)
|
||||
:release-version (project-release-version project)
|
||||
:description (project-description project)))
|
||||
projects)
|
||||
:query |q|))))
|
||||
|
||||
@route GET "/:project-name"
|
||||
(defun redirect-to-project (&key project-name)
|
||||
(redirect (format nil "/~A/" (quri:url-encode project-name)) 301)
|
||||
"")
|
||||
|
||||
|
||||
;;
|
||||
;; Error pages
|
||||
|
||||
(defmethod on-exception ((app <web>) (code (eql 404)))
|
||||
(declare (ignore app))
|
||||
(merge-pathnames #P"_errors/404.html"
|
||||
*template-directory*))
|
BIN
static/apple-touch-icon-114x114.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
static/apple-touch-icon-144x144.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
static/apple-touch-icon-57x57.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
static/apple-touch-icon-72x72.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
static/css/LigatureSymbols/.DS_Store
vendored
Normal file
BIN
static/css/LigatureSymbols/LigatureSymbols-2.11.eot
Normal file
BIN
static/css/LigatureSymbols/LigatureSymbols-2.11.otf
Normal file
1299
static/css/LigatureSymbols/LigatureSymbols-2.11.svg
Normal file
After Width: | Height: | Size: 197 KiB |
BIN
static/css/LigatureSymbols/LigatureSymbols-2.11.ttf
Normal file
BIN
static/css/LigatureSymbols/LigatureSymbols-2.11.woff
Normal file
33
static/css/LigatureSymbols/style.css
Normal file
|
@ -0,0 +1,33 @@
|
|||
@charset "UTF-8";
|
||||
|
||||
@font-face {
|
||||
font-family: 'LigatureSymbols';
|
||||
src: url('LigatureSymbols-2.11.eot');
|
||||
src: url('LigatureSymbols-2.11.eot?#iefix') format('embedded-opentype'),
|
||||
url('LigatureSymbols-2.11.woff') format('woff'),
|
||||
url('LigatureSymbols-2.11.ttf') format('truetype'),
|
||||
url('LigatureSymbols-2.11.svg#LigatureSymbols') format('svg');
|
||||
src: url('LigatureSymbols-2.11.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.lsf, .lsf-icon:before {
|
||||
font-family: 'LigatureSymbols';
|
||||
-webkit-text-rendering: optimizeLegibility;
|
||||
-moz-text-rendering: optimizeLegibility;
|
||||
-ms-text-rendering: optimizeLegibility;
|
||||
-o-text-rendering: optimizeLegibility;
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-font-smoothing: antialiased;
|
||||
-ms-font-smoothing: antialiased;
|
||||
-o-font-smoothing: antialiased;
|
||||
font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.lsf-icon:before {
|
||||
content:attr(title);
|
||||
margin-right:0.3em;
|
||||
font-size:130%;
|
||||
}
|
7
static/css/error.css
Normal file
|
@ -0,0 +1,7 @@
|
|||
@charset "UTF-8";
|
||||
#global-header .search-form {
|
||||
display: none;
|
||||
}
|
||||
.error-message {
|
||||
text-align: center;
|
||||
}
|
380
static/css/index.css
Normal file
|
@ -0,0 +1,380 @@
|
|||
@charset "UTF-8";
|
||||
@charset "UTF-8";
|
||||
html,
|
||||
body,
|
||||
div,
|
||||
span,
|
||||
applet,
|
||||
object,
|
||||
iframe,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
blockquote,
|
||||
pre,
|
||||
a,
|
||||
abbr,
|
||||
acronym,
|
||||
address,
|
||||
big,
|
||||
cite,
|
||||
code,
|
||||
del,
|
||||
dfn,
|
||||
em,
|
||||
font,
|
||||
img,
|
||||
ins,
|
||||
kbd,
|
||||
q,
|
||||
s,
|
||||
samp,
|
||||
small,
|
||||
strike,
|
||||
strong,
|
||||
sub,
|
||||
sup,
|
||||
tt,
|
||||
var,
|
||||
b,
|
||||
u,
|
||||
i,
|
||||
center,
|
||||
dl,
|
||||
dt,
|
||||
dd,
|
||||
ol,
|
||||
ul,
|
||||
li,
|
||||
fieldset,
|
||||
form,
|
||||
label,
|
||||
legend,
|
||||
table,
|
||||
caption,
|
||||
tbody,
|
||||
tfoot,
|
||||
thead,
|
||||
tr,
|
||||
th,
|
||||
td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
background: transparent;
|
||||
}
|
||||
body {
|
||||
color: #333;
|
||||
line-height: 150%;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
#content h1,
|
||||
#content h2,
|
||||
#content h3,
|
||||
#content h4,
|
||||
#content h5,
|
||||
#content h6 {
|
||||
margin: 20px 0 10px;
|
||||
}
|
||||
a:link {
|
||||
color: #005585;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:visited {
|
||||
color: #485270;
|
||||
}
|
||||
a:hover {
|
||||
color: #b83800;
|
||||
text-decoration: underline;
|
||||
}
|
||||
pre {
|
||||
margin: 15px 0;
|
||||
font-family: Consolas, "Liberation Mono", Courier, monospace;
|
||||
}
|
||||
code {
|
||||
font-family: Consolas, "Liberation Mono", Courier, monospace;
|
||||
}
|
||||
ul {
|
||||
margin: 15px 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
.logo {
|
||||
font-family: Baskerville, "Baskerville Win95BT", "Times New Roman", Times, serif;
|
||||
}
|
||||
@charset "UTF-8";
|
||||
#global-header {
|
||||
width: 100%;
|
||||
height: 39px;
|
||||
color: white;
|
||||
background-color: #1d304e;
|
||||
text-shadow: 1px 1px 3px black;
|
||||
}
|
||||
#global-header .logo {
|
||||
padding: 6px 15px;
|
||||
}
|
||||
#global-header .logo a {
|
||||
font-size: 24px;
|
||||
color: white;
|
||||
}
|
||||
#global-header .logo a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
#global-header .search-form {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 15px;
|
||||
}
|
||||
#global-header .search-form input[type="text"] {
|
||||
width: 300px;
|
||||
height: 26px;
|
||||
padding-left: 4px;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
#global-header .search-form input[type="submit"] {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
border: none;
|
||||
color: white;
|
||||
background-color: #6fbf42;
|
||||
cursor: pointer;
|
||||
font-size: 20px;
|
||||
vertical-align: middle;
|
||||
font-weight: normal;
|
||||
margin-left: -6px;
|
||||
}
|
||||
@charset "UTF-8";
|
||||
/**
|
||||
* Footer
|
||||
*/
|
||||
#global-footer {
|
||||
position: relative;
|
||||
width: 800px;
|
||||
text-align: center;
|
||||
padding: 50px 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#global-footer .lisp-logo {
|
||||
position: absolute;
|
||||
top: 35px;
|
||||
right: 0;
|
||||
width: 150px;
|
||||
height: 50px;
|
||||
background-image: url(/images/lisp-logo150x50.png);
|
||||
}
|
||||
body {
|
||||
min-width: 1100px;
|
||||
}
|
||||
.catch {
|
||||
position: relative;
|
||||
max-width: 1180px;
|
||||
height: 350px;
|
||||
margin: 100px auto;
|
||||
}
|
||||
.catch .catch-copy {
|
||||
padding: 80px 80px;
|
||||
font-size: 200%;
|
||||
line-height: 140%;
|
||||
font-weight: 500;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.catch .catch-copy strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
.catch .screen-shot {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: -40px;
|
||||
}
|
||||
.search-libraries {
|
||||
text-align: center;
|
||||
background-color: #333;
|
||||
box-shadow: 0 0 80px 10px rgba(1, 2, 4, 0.5) inset;
|
||||
margin: 0 auto;
|
||||
padding: 30px 80px;
|
||||
color: white;
|
||||
}
|
||||
.search-libraries h2 {
|
||||
font-size: 150%;
|
||||
line-height: 130%;
|
||||
}
|
||||
.search-libraries .search-form input[type="text"] {
|
||||
width: 350px;
|
||||
height: 25px;
|
||||
padding-left: 5px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #BCBCBC;
|
||||
}
|
||||
.search-libraries .search-form input[type="submit"] {
|
||||
margin: 0;
|
||||
width: 29px;
|
||||
height: 29px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
color: white;
|
||||
background-color: #6fbf42;
|
||||
cursor: pointer;
|
||||
font-size: 20px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.search-libraries .categories {
|
||||
height: 135px;
|
||||
width: 840px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.search-libraries .categories h3 {
|
||||
color: #efefef;
|
||||
text-align: left;
|
||||
margin-bottom: 5px !important;
|
||||
}
|
||||
.search-libraries .categories ul {
|
||||
margin-top: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.search-libraries .categories ul li {
|
||||
float: left;
|
||||
}
|
||||
.search-libraries .categories ul li a {
|
||||
display: inline-block;
|
||||
width: 180px;
|
||||
margin: 5px;
|
||||
height: 24px;
|
||||
padding: 10px;
|
||||
background-color: #395e98;
|
||||
border-radius: 4px;
|
||||
color: #efefef;
|
||||
}
|
||||
.search-libraries .categories ul li a:hover {
|
||||
transition-duration: 0.1s;
|
||||
-moz-transition-duration: 0.1s;
|
||||
-webkit-transition-duration: 0.1s;
|
||||
-o-transition-duration: 0.1s;
|
||||
background-color: #4069ab;
|
||||
text-decoration: none;
|
||||
}
|
||||
.teasers {
|
||||
margin: 0 auto 80px;
|
||||
padding: 0 80px;
|
||||
}
|
||||
.teasers .teaser {
|
||||
width: 540px;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
padding-left: 60px;
|
||||
}
|
||||
.teasers .teaser p {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.teasers .teaser .teaser-icon {
|
||||
font-size: 300%;
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
left: 0;
|
||||
}
|
||||
hr.soften {
|
||||
width: 800px;
|
||||
border: 0;
|
||||
height: 1px;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
background: -webkit-gradient(linear, left top, right top, color-stop(0, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0.1)), color-stop(100%, rgba(0, 0, 0, 0)));
|
||||
background: -moz-linear-gradient(center top, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0) 100%);
|
||||
background: -ms-linear-gradient(center top, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0) 100%);
|
||||
background: -o-linear-gradient(center top, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0) 100%);
|
||||
background: linear-gradient(center top, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0) 100%);
|
||||
-pie-background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=rgba(0, 0, 0, 0),endColorstr=rgba(0, 0, 0, 0));
|
||||
border-top: 1px solid #eee;
|
||||
border-bottom: 1px solid #fff;
|
||||
}
|
||||
.contribution {
|
||||
width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
.contribution h2 {
|
||||
font-size: 160%;
|
||||
}
|
||||
.contribution p {
|
||||
text-align: left;
|
||||
margin: 0 20px;
|
||||
color: #888;
|
||||
}
|
||||
.contribution .contribute-button {
|
||||
display: inline-block;
|
||||
padding: 10px 15px;
|
||||
color: #fff;
|
||||
background: #426fbf;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #7b9bd2), color-stop(1, #426fbf));
|
||||
background: -ms-linear-gradient(top, #7b9bd2, #426fbf);
|
||||
background: -moz-linear-gradient(center top, #7b9bd2 0%, #426fbf 100%);
|
||||
background: -o-linear-gradient(#7b9bd2, #426fbf);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7b9bd2', endColorstr='#426fbf', GradientType=0);
|
||||
border-radius: 4px;
|
||||
font-size: 110%;
|
||||
text-shadow: 0 -1px 1px #34599a, 0 1px 1px #688ccc;
|
||||
}
|
||||
.contribution .contribute-button:hover {
|
||||
text-decoration: none;
|
||||
background: #3b64ad;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #688ccc), color-stop(1, #3b64ad));
|
||||
background: -ms-linear-gradient(top, #688ccc, #3b64ad);
|
||||
background: -moz-linear-gradient(center top, #688ccc 0%, #3b64ad 100%);
|
||||
background: -o-linear-gradient(#688ccc, #3b64ad);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#688ccc', endColorstr='#3b64ad', GradientType=0);
|
||||
}
|
||||
.contribution .contribute-button .logo {
|
||||
font-family: Baskerville, "Baskerville Win95BT", "Times New Roman", Times, serif;
|
||||
font-size: 110%;
|
||||
}
|
||||
.dist-version {
|
||||
color: #888;
|
||||
margin: 0 0 25px;
|
||||
}
|
||||
#global-footer {
|
||||
position: relative;
|
||||
margin-top: 30px;
|
||||
width: 100%;
|
||||
background: #ddebb9;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #e7f1cd), color-stop(1, #ddebb9));
|
||||
background: -ms-linear-gradient(top, #e7f1cd, #ddebb9);
|
||||
background: -moz-linear-gradient(center top, #e7f1cd 0%, #ddebb9 100%);
|
||||
background: -o-linear-gradient(#e7f1cd, #ddebb9);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e7f1cd', endColorstr='#ddebb9', GradientType=0);
|
||||
}
|
||||
#global-footer .back-to-top-link {
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: -18px;
|
||||
right: 80px;
|
||||
padding: 5px 12px;
|
||||
border-radius: 4px;
|
||||
font-size: 80%;
|
||||
color: white;
|
||||
background-color: #f09200;
|
||||
transition-duration: 0.1s;
|
||||
-moz-transition-duration: 0.1s;
|
||||
-webkit-transition-duration: 0.1s;
|
||||
-o-transition-duration: 0.1s;
|
||||
}
|
||||
#global-footer .back-to-top-link:hover {
|
||||
background-color: #ff9b00;
|
||||
}
|
||||
#global-footer .lisp-logo {
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
right: 50px;
|
||||
width: 100px;
|
||||
height: 71px;
|
||||
background-image: url(/images/lisp-logo-transparent.png);
|
||||
}
|
670
static/css/main.css
Normal file
|
@ -0,0 +1,670 @@
|
|||
@charset "UTF-8";
|
||||
@charset "UTF-8";
|
||||
html,
|
||||
body,
|
||||
div,
|
||||
span,
|
||||
applet,
|
||||
object,
|
||||
iframe,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
blockquote,
|
||||
pre,
|
||||
a,
|
||||
abbr,
|
||||
acronym,
|
||||
address,
|
||||
big,
|
||||
cite,
|
||||
code,
|
||||
del,
|
||||
dfn,
|
||||
em,
|
||||
font,
|
||||
img,
|
||||
ins,
|
||||
kbd,
|
||||
q,
|
||||
s,
|
||||
samp,
|
||||
small,
|
||||
strike,
|
||||
strong,
|
||||
sub,
|
||||
sup,
|
||||
tt,
|
||||
var,
|
||||
b,
|
||||
u,
|
||||
i,
|
||||
center,
|
||||
dl,
|
||||
dt,
|
||||
dd,
|
||||
ol,
|
||||
ul,
|
||||
li,
|
||||
fieldset,
|
||||
form,
|
||||
label,
|
||||
legend,
|
||||
table,
|
||||
caption,
|
||||
tbody,
|
||||
tfoot,
|
||||
thead,
|
||||
tr,
|
||||
th,
|
||||
td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
background: transparent;
|
||||
}
|
||||
body {
|
||||
color: #333;
|
||||
line-height: 150%;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
#content h1,
|
||||
#content h2,
|
||||
#content h3,
|
||||
#content h4,
|
||||
#content h5,
|
||||
#content h6 {
|
||||
margin: 20px 0 10px;
|
||||
}
|
||||
a:link {
|
||||
color: #005585;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:visited {
|
||||
color: #485270;
|
||||
}
|
||||
a:hover {
|
||||
color: #b83800;
|
||||
text-decoration: underline;
|
||||
}
|
||||
pre {
|
||||
margin: 15px 0;
|
||||
font-family: Consolas, "Liberation Mono", Courier, monospace;
|
||||
}
|
||||
code {
|
||||
font-family: Consolas, "Liberation Mono", Courier, monospace;
|
||||
}
|
||||
ul {
|
||||
margin: 15px 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
.logo {
|
||||
font-family: Baskerville, "Baskerville Win95BT", "Times New Roman", Times, serif;
|
||||
}
|
||||
@charset "UTF-8";
|
||||
#global-header {
|
||||
width: 100%;
|
||||
height: 39px;
|
||||
color: white;
|
||||
background-color: #1d304e;
|
||||
text-shadow: 1px 1px 3px black;
|
||||
}
|
||||
#global-header .logo {
|
||||
padding: 6px 15px;
|
||||
}
|
||||
#global-header .logo a {
|
||||
font-size: 24px;
|
||||
color: white;
|
||||
}
|
||||
#global-header .logo a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
#global-header .search-form {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 15px;
|
||||
}
|
||||
#global-header .search-form input[type="text"] {
|
||||
width: 300px;
|
||||
height: 26px;
|
||||
padding-left: 4px;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
#global-header .search-form input[type="submit"] {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
border: none;
|
||||
color: white;
|
||||
background-color: #6fbf42;
|
||||
cursor: pointer;
|
||||
font-size: 20px;
|
||||
vertical-align: middle;
|
||||
font-weight: normal;
|
||||
margin-left: -6px;
|
||||
}
|
||||
@charset "UTF-8";
|
||||
/**
|
||||
* Footer
|
||||
*/
|
||||
#global-footer {
|
||||
position: relative;
|
||||
width: 800px;
|
||||
text-align: center;
|
||||
padding: 50px 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#global-footer .lisp-logo {
|
||||
position: absolute;
|
||||
top: 35px;
|
||||
right: 0;
|
||||
width: 150px;
|
||||
height: 50px;
|
||||
background-image: url(/images/lisp-logo150x50.png);
|
||||
}
|
||||
@charset "UTF-8";
|
||||
.information {
|
||||
border: 1px solid #cccccc;
|
||||
background-color: #f1f1f1;
|
||||
line-height: 200%;
|
||||
padding: 15px;
|
||||
}
|
||||
.information dt {
|
||||
color: #666;
|
||||
font-weight: bold;
|
||||
font-size: 90%;
|
||||
}
|
||||
.information dd {
|
||||
color: #888;
|
||||
font-size: 80%;
|
||||
}
|
||||
.readme-body {
|
||||
margin: 0 10px 10px;
|
||||
padding: 0 15px 15px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.readme-body .plain-text {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.readme-body h1 {
|
||||
font-size: 28px !important;
|
||||
}
|
||||
.readme-body h2 {
|
||||
font-size: 24px !important;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
.readme-body h3 {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
.readme-body p {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.readme-body pre code {
|
||||
padding: 0 !important;
|
||||
}
|
||||
.readme-body code {
|
||||
background-color: #eee;
|
||||
padding: 2px;
|
||||
border-radius: 3px;
|
||||
font-size: 90%;
|
||||
}
|
||||
.readme-body pre {
|
||||
padding: 15px;
|
||||
border-radius: 5px;
|
||||
color: white;
|
||||
background-color: black;
|
||||
}
|
||||
.readme-body pre code {
|
||||
background-color: transparent;
|
||||
}
|
||||
.dependencies,
|
||||
.depending {
|
||||
position: relative;
|
||||
width: 390px;
|
||||
float: left;
|
||||
border: 1px solid #cccccc;
|
||||
border-radius: 3px;
|
||||
background-color: #ffffff;
|
||||
margin-bottom: 40px;
|
||||
line-height: 1.5;
|
||||
font-size: 90%;
|
||||
}
|
||||
.dependencies h3,
|
||||
.depending h3 {
|
||||
margin: 0 !important;
|
||||
padding: 5px 12px;
|
||||
background-color: #f2f2f2;
|
||||
font-size: 95% !important;
|
||||
}
|
||||
.dependencies .count,
|
||||
.depending .count {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 8px;
|
||||
color: #888;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #d9d9d9;
|
||||
border-radius: 10px;
|
||||
display: inline-block;
|
||||
padding: 0 5px;
|
||||
font-size: 80%;
|
||||
}
|
||||
.dependencies ul,
|
||||
.depending ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.dependencies ul li,
|
||||
.depending ul li {
|
||||
border-top: 1px solid #cccccc;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
display: table;
|
||||
}
|
||||
.dependencies ul li a,
|
||||
.depending ul li a {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
height: 100%;
|
||||
padding: 0px 15px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.dependencies ul li a:hover .name,
|
||||
.depending ul li a:hover .name {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.dependencies ul li .description,
|
||||
.depending ul li .description {
|
||||
display: block;
|
||||
margin-left: 10px;
|
||||
font-size: 80%;
|
||||
color: #AAA;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 340px;
|
||||
}
|
||||
.dependencies .none,
|
||||
.depending .none {
|
||||
display: block;
|
||||
margin: 20px 20px;
|
||||
color: #888;
|
||||
}
|
||||
.dependencies .load-more,
|
||||
.depending .load-more {
|
||||
font-size: 85%;
|
||||
height: 25px;
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
text-align: center;
|
||||
background-color: #fafafa;
|
||||
}
|
||||
.dependencies .load-more:hover,
|
||||
.depending .load-more:hover {
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
.dependencies .load-more:hover a,
|
||||
.depending .load-more:hover a {
|
||||
color: #777;
|
||||
}
|
||||
.depending {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.links {
|
||||
clear: both;
|
||||
}
|
||||
@charset "UTF-8";
|
||||
.search-results-summary {
|
||||
margin-left: 30px;
|
||||
color: #888;
|
||||
}
|
||||
.search-results-summary strong {
|
||||
color: #666;
|
||||
}
|
||||
.search-result-container {
|
||||
padding: 0 30px;
|
||||
}
|
||||
.search-result-container .search-result {
|
||||
position: relative;
|
||||
padding: 15px;
|
||||
list-style: none;
|
||||
clear: both;
|
||||
line-height: 100%;
|
||||
width: 100%;
|
||||
height: 71px;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
.search-result-container .search-result .project-name {
|
||||
font-size: 130%;
|
||||
}
|
||||
.search-result-container .search-result .ql-version {
|
||||
margin-left: 10px;
|
||||
font-style: italic;
|
||||
color: #999;
|
||||
font-size: 80%;
|
||||
}
|
||||
.search-result-container .search-result .download-count {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 25px;
|
||||
color: #2075a5;
|
||||
}
|
||||
.search-result-container .search-result .description {
|
||||
margin: 5px 0.5em 0;
|
||||
color: #AAA;
|
||||
font-size: 90%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.search-result-container .search-result:nth-child(2n+1) {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
@charset "UTF-8";
|
||||
.toc-systems header {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.toc-systems header h2 {
|
||||
font-size: 120% !important;
|
||||
}
|
||||
.toc-systems dl {
|
||||
margin-left: 220px;
|
||||
}
|
||||
.toc-systems dl dd {
|
||||
margin-left: 20px;
|
||||
}
|
||||
.toc-systems dl .one-line-description {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: #777;
|
||||
font-size: 90%;
|
||||
}
|
||||
.system {
|
||||
padding-left: 220px;
|
||||
margin-top: 35px;
|
||||
padding-bottom: 40px;
|
||||
border-top: 1px dotted #CCC;
|
||||
}
|
||||
.toc {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.toc h3 {
|
||||
font-size: 100% !important;
|
||||
margin: 0 auto 5px !important;
|
||||
}
|
||||
.toc ul {
|
||||
margin-top: 0;
|
||||
font-size: 90%;
|
||||
padding: 0;
|
||||
width: 200px;
|
||||
}
|
||||
.toc ul.toc-systems {
|
||||
list-style: none;
|
||||
}
|
||||
.toc ul.toc-packages {
|
||||
list-style: inherit;
|
||||
}
|
||||
.toc ul li {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.api {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.api .package {
|
||||
border-top: 1px dotted #CCC;
|
||||
}
|
||||
.api ul {
|
||||
padding-left: 3px;
|
||||
list-style: none;
|
||||
}
|
||||
.api ul li {
|
||||
margin: 30px 0;
|
||||
}
|
||||
.api code.symbol-name {
|
||||
font-weight: bold;
|
||||
color: #444;
|
||||
font-size: 120%;
|
||||
}
|
||||
.api .lambda-list {
|
||||
display: inline-block;
|
||||
margin-left: 8px;
|
||||
color: #555;
|
||||
}
|
||||
.api .lambda-list .symbol-name {
|
||||
font-size: 95%;
|
||||
font-weight: normal;
|
||||
}
|
||||
.api .lambda-list .keyword {
|
||||
color: #777;
|
||||
font-style: italic;
|
||||
font-size: 90%;
|
||||
}
|
||||
.api .initial-value {
|
||||
color: #777;
|
||||
font-size: 95%;
|
||||
display: inline-block;
|
||||
margin-left: 8px;
|
||||
}
|
||||
.api .initial-value.unbound {
|
||||
font-style: italic;
|
||||
}
|
||||
.api dl {
|
||||
margin: 8px 0 0 15px;
|
||||
font-size: 90%;
|
||||
}
|
||||
.api dl .docstring {
|
||||
margin-top: 0;
|
||||
line-height: 1.3;
|
||||
font-size: 100%;
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
.api .symbol {
|
||||
position: relative;
|
||||
}
|
||||
.api .symbol-type {
|
||||
position: absolute;
|
||||
left: -78px;
|
||||
display: inline-block;
|
||||
padding-right: 10px;
|
||||
font-size: 85%;
|
||||
text-align: right;
|
||||
width: 60px;
|
||||
border-right: 3px solid;
|
||||
}
|
||||
.api .symbol-type.class {
|
||||
border-color: rgba(224, 153, 82, 0.7);
|
||||
}
|
||||
.api .symbol-type.function {
|
||||
border-color: rgba(77, 119, 203, 0.7);
|
||||
}
|
||||
.api .symbol-type.method {
|
||||
border-color: rgba(46, 83, 157, 0.7);
|
||||
}
|
||||
.api .symbol-type.macro {
|
||||
border-color: rgba(153, 51, 204, 0.7);
|
||||
}
|
||||
.api .symbol-type.variable {
|
||||
border-color: rgba(52, 178, 125, 0.7);
|
||||
}
|
||||
.api .symbol-type.constant {
|
||||
border-color: rgba(98, 209, 162, 0.7);
|
||||
}
|
||||
.api .symbol-type.type {
|
||||
border-color: #AAA;
|
||||
}
|
||||
.api .slot-list .label {
|
||||
font-style: italic;
|
||||
color: #555;
|
||||
}
|
||||
.api .docstring {
|
||||
margin: 5px 0 10px;
|
||||
font-size: 90%;
|
||||
color: #333;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.api .docstring pre {
|
||||
white-space: pre-wrap;
|
||||
margin: 0;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
.api .description {
|
||||
margin: 15px 0 10px 10px !important;
|
||||
}
|
||||
.error {
|
||||
margin-bottom: 20px;
|
||||
padding: 15px;
|
||||
font-size: 100%;
|
||||
border: 1px solid #fbeed5;
|
||||
color: #c09853;
|
||||
background-color: #fcf8e3;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.error .error-detail {
|
||||
margin-bottom: 0;
|
||||
overflow: scroll;
|
||||
}
|
||||
section {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
#content {
|
||||
position: relative;
|
||||
width: 800px;
|
||||
margin: 30px auto;
|
||||
}
|
||||
#content h1 {
|
||||
font-size: 32px;
|
||||
}
|
||||
#content h2 {
|
||||
font-size: 20px;
|
||||
}
|
||||
#content h3 {
|
||||
font-size: 32px;
|
||||
margin: 10px 0 20px;
|
||||
}
|
||||
/**
|
||||
* Header
|
||||
*/
|
||||
header {
|
||||
margin: 10px 0 30px;
|
||||
}
|
||||
header h2 {
|
||||
float: left;
|
||||
font-size: 40px !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
header .subtitle {
|
||||
display: inline-block;
|
||||
margin: 3px 0 0 10px;
|
||||
font-style: italic;
|
||||
color: #ccc;
|
||||
}
|
||||
header .header-links {
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
right: 0;
|
||||
}
|
||||
header .header-links a {
|
||||
display: inline-block;
|
||||
padding: 10px 15px;
|
||||
border-radius: 4px;
|
||||
color: white;
|
||||
background: #6fbf42;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #6fbf42), color-stop(1, #4e872e));
|
||||
background: -ms-linear-gradient(top, #6fbf42, #4e872e);
|
||||
background: -moz-linear-gradient(center top, #6fbf42 0%, #4e872e 100%);
|
||||
background: -o-linear-gradient(#6fbf42, #4e872e);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6fbf42', endColorstr='#4e872e', GradientType=0);
|
||||
text-decoration: none;
|
||||
}
|
||||
header .search-query {
|
||||
display: inline-block;
|
||||
margin: 6px 0 0 10px;
|
||||
color: #888;
|
||||
font-size: 25px;
|
||||
}
|
||||
header .search-query strong {
|
||||
color: #333;
|
||||
}
|
||||
.error-message {
|
||||
text-align: left;
|
||||
}
|
||||
.breadcrumb-header-container {
|
||||
position: fixed;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 80%;
|
||||
list-style: none;
|
||||
transition-duration: 0.2s;
|
||||
-moz-transition-duration: 0.2s;
|
||||
-webkit-transition-duration: 0.2s;
|
||||
-o-transition-duration: 0.2s;
|
||||
opacity: 0.5;
|
||||
}
|
||||
.breadcrumb-header-container:hover {
|
||||
opacity: 0.7 !important;
|
||||
}
|
||||
.breadcrumb-header-container li {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.breadcrumb-header-container li.package-name.current:before {
|
||||
content: ">";
|
||||
color: #ccc;
|
||||
}
|
||||
.breadcrumb-header-container a {
|
||||
height: 25px;
|
||||
padding: 0 10px;
|
||||
text-decoration: none;
|
||||
color: #555;
|
||||
transition-duration: 0.2s;
|
||||
-moz-transition-duration: 0.2s;
|
||||
-webkit-transition-duration: 0.2s;
|
||||
-o-transition-duration: 0.2s;
|
||||
}
|
||||
.breadcrumb-header-container a.top-link {
|
||||
font-size: 140%;
|
||||
}
|
||||
.breadcrumb-header-container a:hover {
|
||||
color: black;
|
||||
}
|
||||
.pager-link-container {
|
||||
position: fixed;
|
||||
top: 10px;
|
||||
right: 20px;
|
||||
font-size: 80%;
|
||||
}
|
||||
.pager-link-container .pager-link {
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
opacity: 0.5;
|
||||
transition-duration: 0.2s;
|
||||
-moz-transition-duration: 0.2s;
|
||||
-webkit-transition-duration: 0.2s;
|
||||
-o-transition-duration: 0.2s;
|
||||
color: #555;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.pager-link-container .pager-link:hover {
|
||||
opacity: 1;
|
||||
}
|
55
static/css/project.css
Normal file
|
@ -0,0 +1,55 @@
|
|||
@charset "UTF-8";
|
||||
.information {
|
||||
border: 1px solid #ccc;
|
||||
border-top: 3px solid #BBB;
|
||||
background-color: #f1f1f1;
|
||||
line-height: 200%;
|
||||
padding: 15px;
|
||||
}
|
||||
.information dt {
|
||||
color: #666;
|
||||
font-weight: bold;
|
||||
font-size: 90%;
|
||||
}
|
||||
.information dd {
|
||||
color: #888;
|
||||
font-size: 80%;
|
||||
}
|
||||
.readme-body {
|
||||
margin: 0 10px 10px;
|
||||
padding: 0 15px 15px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.readme-body .plain-text {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.readme-body h1 {
|
||||
font-size: 28px !important;
|
||||
}
|
||||
.readme-body h2 {
|
||||
font-size: 24px !important;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
.readme-body h3 {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
.readme-body p {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.readme-body pre code {
|
||||
padding: 0 !important;
|
||||
}
|
||||
.readme-body code,
|
||||
.readme-body pre {
|
||||
color: white;
|
||||
background-color: black;
|
||||
}
|
||||
.readme-body code {
|
||||
padding: 2px;
|
||||
border-radius: 3px;
|
||||
font-size: 90%;
|
||||
}
|
||||
.readme-body pre {
|
||||
padding: 15px;
|
||||
border-radius: 5px;
|
||||
}
|
BIN
static/favicon.ico
Normal file
After Width: | Height: | Size: 17 KiB |
38
static/html/50x.html
Normal file
|
@ -0,0 +1,38 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="shortcut icon" href="/favicon.ico" />
|
||||
<title>Quickdocs</title>
|
||||
<link rel="stylesheet" type="text/css" href="/css/LigatureSymbols/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/main.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/error.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="global-header">
|
||||
<h1 class="logo"><a href="/">Quickdocs</a></h1>
|
||||
<form class="search-form" method="get" action="/search">
|
||||
<input type="text" name="q" value="" placeholder="Search for projects" />
|
||||
<input type="submit" class="lsf" value="search" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="content">
|
||||
<div class="error-message">
|
||||
<h2>Quickdocs.org is under maintainance. Sorry.</h2>
|
||||
|
||||
<img src="/images/lisplogo_alien.png" width="531px" height="325px" title="Made with secret alien technology" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="global-footer">
|
||||
© 2013-2015 <a href="http://8arrow.org/">Eitaro Fukamachi</a>
|
||||
<div class="lisp-logo"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
BIN
static/images/github.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
static/images/lisp-logo-transparent.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
static/images/lisp-logo150x50.png
Normal file
After Width: | Height: | Size: 7.1 KiB |
BIN
static/images/lisplogo_alien.png
Normal file
After Width: | Height: | Size: 68 KiB |
495
static/images/lisplogo_alien.svg
Normal file
|
@ -0,0 +1,495 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="744.09448819"
|
||||
height="1052.3622047"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.42"
|
||||
sodipodi:docbase="C:\home\logo_page"
|
||||
sodipodi:docname="lisplogo_alien.svg"
|
||||
inkscape:export-filename="C:\home\lisplogo_alien.png"
|
||||
inkscape:export-xdpi="258.45999"
|
||||
inkscape:export-ydpi="258.45999">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient8707">
|
||||
<stop
|
||||
style="stop-color:#8de17a;stop-opacity:1.0000000;"
|
||||
offset="0.00000000"
|
||||
id="stop8709" />
|
||||
<stop
|
||||
style="stop-color:#a3f590;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop8711" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient7973">
|
||||
<stop
|
||||
id="stop7975"
|
||||
offset="0.00000000"
|
||||
style="stop-color:#71bc60;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop7977"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#77ce64;stop-opacity:0.42352942;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient6509">
|
||||
<stop
|
||||
style="stop-color:#7a73de;stop-opacity:1.0000000;"
|
||||
offset="0.00000000"
|
||||
id="stop6511" />
|
||||
<stop
|
||||
id="stop6517"
|
||||
offset="0.50000000"
|
||||
style="stop-color:#a2c8e9;stop-opacity:0.98039216;" />
|
||||
<stop
|
||||
style="stop-color:#7a73de;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop6513" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5773">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.00000000;"
|
||||
offset="0.00000000"
|
||||
id="stop5775" />
|
||||
<stop
|
||||
id="stop5781"
|
||||
offset="0.50000000"
|
||||
style="stop-color:#616161;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5777" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5037">
|
||||
<stop
|
||||
id="stop5039"
|
||||
offset="0.00000000"
|
||||
style="stop-color:#d6d1f9;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop5041"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#9687fa;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4303">
|
||||
<stop
|
||||
style="stop-color:#d6d1f9;stop-opacity:1.0000000;"
|
||||
offset="0.00000000"
|
||||
id="stop4305" />
|
||||
<stop
|
||||
style="stop-color:#9687fa;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop4307" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2115">
|
||||
<stop
|
||||
style="stop-color:#d2f1cb;stop-opacity:1.0000000;"
|
||||
offset="0.00000000"
|
||||
id="stop2117" />
|
||||
<stop
|
||||
style="stop-color:#cdf9c3;stop-opacity:0.42268041;"
|
||||
offset="1.0000000"
|
||||
id="stop2119" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2115"
|
||||
id="linearGradient2121"
|
||||
x1="272.79681"
|
||||
y1="476.64795"
|
||||
x2="254.12024"
|
||||
y2="535.94427"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4303"
|
||||
id="radialGradient4309"
|
||||
cx="300.83069"
|
||||
cy="447.85394"
|
||||
fx="300.83069"
|
||||
fy="447.85394"
|
||||
r="78.713470"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.960976,0.000000,15.90946)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5037"
|
||||
id="linearGradient5045"
|
||||
x1="225.84930"
|
||||
y1="641.64783"
|
||||
x2="253.46617"
|
||||
y2="543.98328"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5773"
|
||||
id="linearGradient5779"
|
||||
x1="80.912460"
|
||||
y1="670.96942"
|
||||
x2="301.00812"
|
||||
y2="670.96942"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6509"
|
||||
id="linearGradient6515"
|
||||
x1="456.66621"
|
||||
y1="428.55343"
|
||||
x2="579.09352"
|
||||
y2="428.55343"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7973"
|
||||
id="linearGradient7979"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="209.93025"
|
||||
y1="609.15863"
|
||||
x2="272.07062"
|
||||
y2="554.45270" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8707"
|
||||
id="linearGradient8713"
|
||||
x1="202.42282"
|
||||
y1="630.79425"
|
||||
x2="201.15987"
|
||||
y2="501.72241"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.8321488"
|
||||
inkscape:cx="280.98857"
|
||||
inkscape:cy="458.91807"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:window-width="759"
|
||||
inkscape:window-height="779"
|
||||
inkscape:window-x="1"
|
||||
inkscape:window-y="0" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:url(#linearGradient5779);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:0.16666667"
|
||||
d="M 67.144386,666.93597 C 74.120426,681.02585 87.234595,682.74658 102.89660,679.43686 C 111.72000,677.57228 140.39281,675.65602 160.44893,683.50406 C 180.50504,691.35211 204.88673,682.15623 233.66290,680.41222 C 262.43906,678.66821 271.19356,686.99208 290.37767,677.40003 C 309.56178,667.80797 354.03404,665.19196 329.61790,656.47191 C 305.20176,647.75186 219.74527,649.49587 187.48108,653.85589 C 155.21690,658.21592 83.712481,637.28780 71.504411,642.51983 C 58.555797,648.06924 64.528371,654.72790 67.144386,666.93597 z "
|
||||
id="path2123"
|
||||
sodipodi:nodetypes="csssssszc" />
|
||||
<path
|
||||
style="fill:#8ed97d;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3e7e42;stroke-width:2.9830000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||
d="M 142.76766,550.12665 C 136.15502,574.26631 130.95896,630.57333 127.69749,652.88979 C 126.89916,652.62576 126.03531,652.46271 125.14665,652.50195 C 121.07030,652.68196 117.93038,656.25924 118.11662,660.47614 C 118.30285,664.69302 121.74452,667.94836 125.82086,667.76832 C 128.64019,667.64379 130.93357,665.85431 132.07147,663.39453 C 133.29062,666.04330 135.99007,667.85099 139.08140,667.71446 C 143.15772,667.53442 146.33369,664.06501 146.15367,659.98866 C 145.97364,655.91230 142.50558,652.76757 138.42924,652.94760 C 138.41852,652.94808 138.40872,652.94846 138.39802,652.94898 C 138.90516,649.31332 148.99544,582.24518 150.21242,575.50724 C 151.46757,568.55800 150.73287,521.04944 142.76766,550.12665 z "
|
||||
id="path7191"
|
||||
sodipodi:nodetypes="ccssscssscss" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 70.112026,725.23378 C 196.77942,746.08337 316.58355,743.97138 438.34231,722.65281"
|
||||
id="path3574"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient6515);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:3.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 456.66621,444.89871 C 475.28118,450.63386 493.51137,438.88145 504.22314,445.63641 C 514.93490,452.39137 524.28502,462.05589 541.13718,460.51176 C 557.80512,458.98451 579.09352,450.95426 579.09352,450.95426 C 579.09352,450.95426 558.17039,441.92846 549.14440,431.66233 C 540.11839,421.39621 535.83465,410.77594 519.99221,405.10761 C 498.47786,397.40990 479.61491,401.48012 470.70087,396.43061 C 459.46347,406.21159 456.66621,444.89871 456.66621,444.89871 z "
|
||||
id="path3572"
|
||||
sodipodi:nodetypes="csscsscc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.8630000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||
d="M 476.70033,405.01034 L 467.44645,438.27363 L 484.10745,436.34116"
|
||||
id="path3586"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.8630000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||
d="M 498.25829,406.72852 L 492.61695,436.08784"
|
||||
id="path3588"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.8630000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||
d="M 523.32646,417.67134 C 519.81816,412.52468 506.68473,404.66125 505.33079,415.73168 C 503.97684,426.80214 525.41239,424.10169 520.11053,437.40330 C 515.79042,448.24184 501.89764,433.67985 501.89764,433.67985"
|
||||
id="path3590"
|
||||
sodipodi:nodetypes="cssc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.8630000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||
d="M 525.36140,451.00300 L 531.36075,423.06948 C 531.36075,423.06948 545.14439,433.11252 542.29152,439.77667 C 538.41438,448.83345 528.95141,436.27401 528.95141,436.27401"
|
||||
id="path3592"
|
||||
sodipodi:nodetypes="ccsc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient8713);fill-opacity:1.0;fill-rule:evenodd;stroke:#3e7e42;stroke-width:2.9830000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||
d="M 270.51899,473.63452 C 186.03183,473.32884 117.33411,508.62334 108.09375,537.32081 C 100.42250,561.14521 89.846437,628.73395 85.603534,650.88478 C 84.817635,650.58579 83.961816,650.38478 83.072284,650.38478 C 78.991969,650.38476 75.697281,653.82002 75.697284,658.04103 C 75.697282,662.26202 78.991971,665.66604 83.072284,665.66603 C 85.894372,665.66601 88.264466,663.97946 89.509784,661.57228 C 90.610880,664.27225 93.227950,666.19729 96.322284,666.19728 C 100.40259,666.19726 103.72853,662.87136 103.72853,658.79103 C 103.72853,654.71070 100.40259,651.41602 96.322284,651.41603 C 96.311560,651.41603 96.301744,651.41598 96.291034,651.41603 C 96.958087,647.80628 107.04943,590.82074 111.61669,581.08887 C 114.61685,574.69618 238.84164,568.85811 240.75000,574.72706 C 243.50651,583.20447 236.27814,637.10872 234.63478,658.67013 C 234.24628,658.61772 233.88360,658.50053 233.47853,658.51388 C 229.40043,658.64826 226.21453,662.20141 226.35353,666.42013 C 226.49253,670.63886 229.90044,673.92950 233.97853,673.79513 C 236.79908,673.70217 239.09441,671.92951 240.25978,669.48263 C 241.44920,672.14488 244.13588,673.99079 247.22853,673.88888 C 251.30663,673.75452 254.51915,670.31075 254.38478,666.23263 C 254.25042,662.15453 250.83789,658.97325 246.75978,659.10763 C 246.41000,659.11916 246.09186,659.23567 245.75978,659.29513 C 246.92433,642.74667 255.09873,576.54431 259.42392,571.64309 C 262.37946,568.29392 287.10830,566.78265 287.88858,572.13930 C 288.57332,576.84027 300.27776,647.89279 298.96818,655.28002 C 291.03140,655.02048 285.29440,664.47746 289.74349,668.25018 C 293.91482,671.78736 300.98301,672.97801 303.34529,665.55805 C 308.04368,673.55644 315.38495,669.99998 317.88153,666.13649 C 320.02882,662.81352 317.73746,656.01493 307.96818,654.90502 C 311.81199,638.22268 303.11619,563.96683 304.46875,561.97706 C 306.02930,559.68134 313.84474,546.65990 314.62500,537.47706 C 314.73280,536.20836 314.71985,533.92375 314.56250,531.16456 C 338.96788,535.84741 355.35651,538.98893 366.14040,533.06486 C 381.40207,524.68094 384.27702,518.47614 399.81250,508.25831 C 419.15908,495.53388 433.67678,503.16068 442.94710,501.26058 C 452.21743,499.36053 447.92808,486.96815 453.52398,477.50280 C 459.59978,467.22571 432.04243,459.98752 425.71986,468.08875 C 417.85160,478.17050 419.26202,485.20207 412.17309,487.66407 C 402.87743,490.89246 382.69140,503.22203 376.08702,507.88257 C 364.89903,515.77764 354.86141,522.38042 334.84375,514.75831 C 320.03993,507.37383 323.22898,490.84653 303.81250,482.63331 C 294.38984,477.78969 285.27126,473.96796 277.93750,472.69581 C 277.55554,472.60932 277.17096,472.55316 276.78125,472.47706 C 276.32712,472.41403 275.87541,472.36098 275.43750,472.32081 C 273.72290,472.04335 272.38271,473.70349 270.51899,473.63452 z "
|
||||
id="path1306"
|
||||
sodipodi:nodetypes="cscssscssscsscssscssscssczczcsscssssssscccscc" />
|
||||
<path
|
||||
transform="matrix(0.989097,0.147266,-0.270564,0.962702,0.000000,0.000000)"
|
||||
style="fill:#e0773e;fill-opacity:1.0000000;stroke:#000000;stroke-width:2.7335560;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
|
||||
d="M 560.34112,321.05953 C 562.60643,321.05953 564.62104,322.68769 564.62104,326.88038 L 563.99561,441.61088 C 563.99561,445.80357 562.59362,447.05283 560.32831,447.05283 C 558.06301,447.05283 555.81761,445.80357 555.81761,441.61088 L 556.44304,326.88038 C 556.44304,322.68769 558.07582,321.05953 560.34112,321.05953 z "
|
||||
id="rect2844"
|
||||
sodipodi:nodetypes="cccsccc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 246.14310,509.11110 C 241.02119,526.84076 255.00793,532.35666 255.00793,532.35666 C 255.00793,532.35666 260.52383,535.90259 264.85774,537.08457 C 269.19166,538.26655 286.67508,543.28995 288.10330,523.88582 C 281.45468,522.01436 246.14310,509.11110 246.14310,509.11110 z "
|
||||
id="path9395"
|
||||
sodipodi:nodetypes="ccscc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 281.99642,521.91586 L 278.25349,538.46354"
|
||||
id="path10849" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 275.88954,520.33989 L 271.75261,538.46354"
|
||||
id="path10851" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 270.17664,517.97593 L 266.03972,536.69058"
|
||||
id="path10853" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 264.66075,516.00597 L 260.52383,534.72061 L 264.66075,516.00597 z "
|
||||
id="path10855" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 258.94785,514.03601 L 255.00793,532.35666"
|
||||
id="path10857" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 254.02295,512.26304 L 250.28002,528.21974"
|
||||
id="path10859" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 249.49203,510.09608 L 246.53709,522.30985"
|
||||
id="path10861" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 286.52734,531.37168 C 273.91957,530.97769 253.43196,524.08282 244.96112,517.18795"
|
||||
id="path10863"
|
||||
sodipodi:nodetypes="cs" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3e7e42;stroke-width:2.9830000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 314.73918,531.21038 C 287.29383,524.26287 246.50860,508.88870 246.50860,508.88870 C 246.50860,508.88870 236.65196,531.11393 269.32519,538.14820 C 287.57448,542.07710 288.12150,524.25744 288.12150,524.25744"
|
||||
id="path1334"
|
||||
sodipodi:nodetypes="ccsc" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:#9af286;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3e7e42;stroke-width:2.9830000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 448.05225,488.20443 C 457.54479,489.43116 460.35916,478.75382 457.08417,473.68765 C 454.09991,469.07122 443.84736,464.04902 441.23893,470.41365 C 439.28318,475.18573 444.45174,477.89625 448.76518,477.45148"
|
||||
id="path1319"
|
||||
sodipodi:nodetypes="csss" />
|
||||
<path
|
||||
style="fill:#9af286;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3e7e42;stroke-width:2.9830000;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:1.0000000;color:#000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 444.43069,493.83066 C 440.55788,491.80306 435.16203,492.23114 437.58543,485.56144 C 439.37673,480.63139 445.27629,484.41451 453.18149,489.82225 C 461.08670,495.22998 452.88813,501.92241 443.28704,501.09310"
|
||||
id="path1317"
|
||||
sodipodi:nodetypes="csss" />
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:#9af286;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3e7e42;stroke-width:2.9830000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 419.57651,478.78648 C 422.82017,473.02082 423.77214,467.20062 427.28746,465.99345 C 430.68152,464.82794 438.80518,458.88944 441.72524,460.45869 C 444.64525,462.02795 446.97626,467.63368 437.59210,472.14545 C 433.11706,474.29699 432.92789,479.97163 429.29171,482.22177"
|
||||
id="path1315"
|
||||
sodipodi:nodetypes="csssz" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 204.67588,506.38984 C 204.67588,506.38984 224.38821,503.17905 222.72522,491.92631 C 221.32745,482.46817 207.13035,484.57698 199.99263,486.37428 C 200.44519,492.10976 201.21034,495.26298 194.65310,498.02106 C 201.24775,497.88549 202.75869,499.84733 204.67588,506.38984 z "
|
||||
id="path15231"
|
||||
sodipodi:nodetypes="csccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15959"
|
||||
d="M 206.84427,528.80171 C 206.84427,528.80171 226.81416,528.50375 226.81212,517.12879 C 226.81042,507.56792 212.45756,507.58106 205.13390,508.31684 C 204.74411,514.05693 205.04063,517.28808 198.15093,519.05910 C 204.69469,519.88794 205.90297,522.04938 206.84427,528.80171 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 207.00459,552.07477 C 207.00459,552.07477 226.93742,553.32665 227.81769,541.98581 C 228.55758,532.45361 214.24694,531.35343 206.88827,531.51894 C 206.05443,537.21150 206.09943,540.45592 199.09312,541.68721 C 205.55288,543.02112 206.58987,545.26977 207.00459,552.07477 z "
|
||||
id="path15961"
|
||||
sodipodi:nodetypes="csccc" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 206.34375 554.53125 C 205.13901 560.15699 204.97815 563.41757 197.90625 564.18750 C 203.30431 565.67653 204.70298 567.72897 205.00000 572.43750 C 211.46987 572.34077 217.37346 572.34767 222.50000 572.46875 C 224.58495 571.12494 226.12602 569.15846 226.53125 566.34375 C 227.89366 556.88047 213.69748 554.84789 206.34375 554.53125 z "
|
||||
id="path15963" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 196.03125 482.84375 C 187.52447 485.04283 179.42599 487.56587 171.87500 490.34375 C 176.36725 491.29017 177.56746 493.45549 178.37500 498.96875 C 178.37500 498.96874 198.12565 498.39857 198.12500 487.68750 C 198.12488 485.59722 197.29605 484.04852 196.03125 482.84375 z "
|
||||
id="path15965" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15967"
|
||||
d="M 182.55810,519.59489 C 182.55810,519.59489 202.29393,519.08874 202.32211,508.37771 C 202.34579,499.37485 188.16167,499.54934 180.92217,500.32491 C 180.52175,505.73438 180.80622,508.77360 173.99283,510.51910 C 180.45745,511.22563 181.64578,513.24729 182.55810,519.59489 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 184.40776,541.79081 C 184.40776,541.79081 204.14359,541.28466 204.17177,530.57363 C 204.19545,521.57077 190.01133,521.74526 182.77183,522.52083 C 182.37141,527.93030 182.65588,530.96952 175.84249,532.71502 C 182.30711,533.42155 183.49544,535.44321 184.40776,541.79081 z "
|
||||
id="path15971"
|
||||
sodipodi:nodetypes="csccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15973"
|
||||
d="M 184.54511,562.87630 C 184.54511,562.87630 204.25568,563.99547 205.16493,553.32306 C 205.92917,544.35267 191.77877,543.35968 184.50001,543.53705 C 183.65592,548.89525 183.68940,551.94757 176.75551,553.12663 C 183.14009,554.36259 184.15808,556.47516 184.54511,562.87630 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 182.96875 564.81250 C 182.32423 568.90383 182.11368 571.62362 179.00000 573.21875 C 187.45278 572.83281 195.60321 572.57296 203.34375 572.43750 C 201.75888 565.52893 189.59312 564.65108 182.96875 564.81250 z "
|
||||
id="path15975" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15977"
|
||||
d="M 159.98437,513.05560 C 159.98437,513.05560 179.54898,510.41269 178.41571,499.76174 C 177.46318,490.80938 164.07633,494.00942 156.96360,495.56532 C 157.15202,500.98633 157.06958,502.48804 150.48559,504.96194 C 156.98871,504.96342 158.38922,506.84433 159.98437,513.05560 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 162.14231,533.71013 C 162.14231,533.71013 181.70692,531.06722 180.57365,520.41627 C 179.62112,511.46391 165.53952,513.17520 158.42679,514.73110 C 158.61521,520.15211 159.22752,523.14257 152.64353,525.61647 C 159.14665,525.61795 160.54716,527.49886 162.14231,533.71013 z "
|
||||
id="path15979"
|
||||
sodipodi:nodetypes="csccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15981"
|
||||
d="M 161.73793,553.35464 C 161.73793,553.35464 181.48022,553.38736 181.80074,542.68108 C 182.07015,533.68222 167.88654,533.46950 160.62858,534.04718 C 160.08065,539.44372 160.28207,542.48957 153.42357,544.04844 C 159.86650,544.93116 160.99920,546.98451 161.73793,553.35464 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 160.85077,573.63589 C 160.85077,573.63589 180.55493,574.86270 181.52246,564.19542 C 182.33569,555.22933 168.19092,554.15908 160.91130,554.29668 C 160.03796,559.65019 160.05477,562.70265 153.11454,563.84381 C 159.49228,565.11464 160.49870,567.23275 160.85077,573.63589 z "
|
||||
id="path15983"
|
||||
sodipodi:nodetypes="csccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15987"
|
||||
d="M 141.03633,527.19872 C 141.03633,527.19872 159.26152,523.13440 157.31335,513.12248 C 155.67587,504.70724 142.54253,507.45143 135.96590,509.49341 C 136.59135,514.62008 137.41560,517.40771 131.41325,520.27830 C 137.54385,519.76200 139.01949,521.43450 141.03633,527.19872 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 141.31895,546.24122 C 141.31895,546.24122 159.85370,543.97419 158.89150,533.81997 C 158.08275,525.28513 144.74435,526.73505 137.99989,528.12573 C 138.12224,533.28896 138.67062,536.14371 132.41687,538.41507 C 138.56859,538.49928 139.87404,540.30775 141.31895,546.24122 z "
|
||||
id="path15989"
|
||||
sodipodi:nodetypes="csccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15991"
|
||||
d="M 140.64248,564.70916 C 140.64248,564.70916 159.29210,563.77735 159.06068,553.58027 C 158.86616,545.00940 145.45812,545.49891 138.63128,546.40227 C 138.38299,551.56098 138.72521,554.44771 132.32465,556.26467 C 138.45449,556.78989 139.62687,558.68734 140.64248,564.70916 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 139.81250 565.50000 C 139.07109 570.61119 139.13895 573.52338 132.59375 574.71875 C 134.51034 575.07033 135.80011 575.55551 136.84375 576.18750 C 143.66955 575.48857 151.25972 574.88782 159.43750 574.34375 C 159.75612 566.05514 146.61893 565.25757 139.81250 565.50000 z "
|
||||
id="path15995" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path15997"
|
||||
d="M 120.55759,539.29735 C 120.55759,539.29735 138.57310,536.58485 137.29636,527.11255 C 136.22320,519.15085 123.25243,520.93302 116.71571,522.44950 C 117.00680,527.27769 117.63697,529.93188 111.60849,532.25691 C 117.61570,532.13961 118.95000,533.79049 120.55759,539.29735 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 120.00330,557.06167 C 120.00330,557.06167 138.19701,556.11039 137.84559,546.55890 C 137.55019,538.53063 124.46769,539.04557 117.81465,539.92050 C 117.63579,544.75414 118.00539,547.45696 111.77972,549.18595 C 117.76996,549.65221 118.93774,551.42479 120.00330,557.06167 z "
|
||||
id="path15999"
|
||||
sodipodi:nodetypes="csccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccc"
|
||||
id="path16003"
|
||||
d="M 120.31158,575.55827 C 120.31158,575.55827 138.50529,574.60699 138.15387,565.05550 C 137.85847,557.02723 124.77597,557.54217 118.12293,558.41710 C 117.94407,563.25074 118.31367,565.95356 112.08800,567.68255 C 118.07824,568.14881 119.24602,569.92139 120.31158,575.55827 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
id="path16013"
|
||||
d="M 196.03125 482.84375 C 187.52447 485.04283 179.42599 487.56587 171.87500 490.34375 C 176.36725 491.29017 177.56746 493.45549 178.37500 498.96875 C 178.37500 498.96874 198.12565 498.39857 198.12500 487.68750 C 198.12488 485.59722 197.29605 484.04852 196.03125 482.84375 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:url(#linearGradient2121);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:2.9830000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:0.85000000;color:#000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 118.59268,523.92715 C 107.25662,543.11126 111.61664,542.23925 121.20870,539.62324 C 130.80075,537.00722 199.68915,522.18314 209.28120,524.79915 C 218.87326,527.41517 232.82534,523.92715 235.44135,513.46309 C 238.05737,502.99903 238.77435,497.54307 250.24821,501.98922 C 269.16027,509.31769 305.20175,516.07910 319.15383,518.69512 C 333.10591,521.31113 348.80200,533.51920 371.47413,520.43913 C 394.14627,507.35905 412.54953,496.39061 421.17842,489.91895 C 422.92243,488.61095 428.62957,475.76353 430.50800,471.34729 C 431.44721,469.13918 439.39286,464.86685 438.95096,463.74334 C 438.50906,462.61984 433.93678,464.55570 429.23763,467.66914 C 424.38217,470.88614 421.27227,486.21977 415.16824,488.83579 C 409.06420,491.45180 389.78624,502.12702 381.93820,508.23106 C 374.09015,514.33509 353.16203,526.54316 339.20995,519.56712 C 325.25787,512.59108 320.02584,499.51101 308.68977,491.66296 C 297.35371,483.81492 248.52143,468.11882 190.09709,487.30294 C 131.67276,506.48705 129.05674,513.46309 118.59268,523.92715 z "
|
||||
id="path1387"
|
||||
sodipodi:nodetypes="csssssssszssssssc" />
|
||||
<path
|
||||
id="path16018"
|
||||
d="M 139.81250 565.50000 C 139.07109 570.61119 139.13895 573.52338 132.59375 574.71875 C 134.51034 575.07033 135.80011 575.55551 136.84375 576.18750 C 143.66955 575.48857 151.25972 574.88782 159.43750 574.34375 C 159.75612 566.05514 146.61893 565.25757 139.81250 565.50000 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
id="path16023"
|
||||
d="M 182.96875 564.81250 C 182.32423 568.90383 182.11368 571.62362 179.00000 573.21875 C 187.45278 572.83281 195.60321 572.57296 203.34375 572.43750 C 201.75888 565.52893 189.59312 564.65108 182.96875 564.81250 z "
|
||||
style="fill:#54de61;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.20767665px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccscssscssscss"
|
||||
id="path16026"
|
||||
d="M 277.93750,472.69581 C 277.55554,472.60932 277.17096,472.55316 276.78125,472.47706 C 276.32712,472.41403 275.87541,472.36098 275.43750,472.32081 C 273.72290,472.04335 272.38271,473.70349 270.51899,473.63452 C 186.03183,473.32884 117.33411,508.62334 108.09375,537.32081 C 100.42250,561.14521 89.846437,628.73395 85.603534,650.88478 C 84.817635,650.58579 83.961816,650.38478 83.072284,650.38478 C 78.991969,650.38476 75.697281,653.82002 75.697284,658.04103 C 75.697282,662.26202 78.991971,665.66604 83.072284,665.66603 C 85.894372,665.66601 88.264466,663.97946 89.509784,661.57228 C 90.610880,664.27225 93.227950,666.19729 96.322284,666.19728 C 100.40259,666.19726 103.72853,662.87136 103.72853,658.79103 C 103.72853,654.71070 100.40259,651.41602 96.322284,651.41603 C 96.311560,651.41603 96.301744,651.41598 96.291034,651.41603 C 96.958087,647.80628 107.04943,590.82074 111.61669,581.08887 C 114.61685,574.69618 238.84164,568.85811 240.75000,574.72706"
|
||||
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3e7e42;stroke-width:2.9830000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4350000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none"
|
||||
d="M 264.36900,453.69048 C 254.12520,453.88747 248.21531,462.55530 252.94322,469.64717 C 257.67113,476.73904 275.79479,475.75405 278.15875,468.46519 C 280.52270,461.17633 270.47589,452.90249 264.36900,453.69048 z "
|
||||
id="path7197"
|
||||
sodipodi:nodetypes="cssc" />
|
||||
<path
|
||||
id="path7933"
|
||||
d="M 267.08631,465.48980 C 272.73936,464.34915 271.50467,460.81573 269.28413,458.04415 C 267.06360,455.27256 261.79147,456.90613 261.90136,460.20656 C 262.01124,463.50699 262.96803,465.05075 267.08631,465.48980 z "
|
||||
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4350000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none"
|
||||
d="M 297.07874,475.12108 C 299.24958,464.52072 293.46063,459.97771 284.05361,459.22055 C 274.64658,458.46337 263.06871,463.00639 267.41041,470.57806 C 271.75211,478.14976 290.56616,488.75011 297.07874,475.12108 z "
|
||||
id="path1323" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4350000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none"
|
||||
d="M 242.39530,460.52578 C 233.60908,465.79612 232.79847,476.25561 240.42934,480.05267 C 248.06021,483.84972 263.28824,473.97327 261.70998,466.47495 C 260.13171,458.97663 247.29944,456.80228 242.39530,460.52578 z "
|
||||
id="path7199"
|
||||
sodipodi:nodetypes="cssc" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 243.68431,469.83581 C 245.28249,475.37691 248.70337,473.85799 251.28448,471.41867 C 253.86561,468.97936 251.80723,463.85812 248.52678,464.23699 C 245.24633,464.61586 243.78580,465.69544 243.68431,469.83581 z "
|
||||
id="path7935" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4350000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none"
|
||||
d="M 271.68386,472.17278 C 265.53310,466.49400 252.86981,463.08675 249.25172,469.90126 C 245.63364,476.71576 247.80448,490.34482 260.82959,489.58764 C 273.85471,488.83047 277.83459,477.85155 271.68386,472.17278 z "
|
||||
id="path1321"
|
||||
sodipodi:nodetypes="czzz" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4350000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none"
|
||||
d="M 277.96176,469.45019 C 270.27891,470.04118 265.35400,478.90602 271.06689,482.84594 C 276.77978,486.78587 288.59956,486.78587 289.58454,479.30001 C 290.56952,471.81415 284.26564,469.25320 277.96176,469.45019 z "
|
||||
id="path7195" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 262.20205,471.61714 C 256.48916,470.82916 256.48916,474.57209 257.67114,477.92102 C 258.85311,481.26996 264.36901,481.46696 265.35399,478.31502 C 266.33897,475.16308 265.94498,473.39011 262.20205,471.61714 z "
|
||||
id="path7927" />
|
||||
<path
|
||||
id="path7929"
|
||||
d="M 283.40203,472.86341 C 278.97987,472.29768 278.97987,474.98495 279.89481,477.38933 C 280.80972,479.79372 285.07940,479.93516 285.84184,477.67220 C 286.60427,475.40925 286.29931,474.13633 283.40203,472.86341 z "
|
||||
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.74548370px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 287.01749,462.95586 C 281.94580,465.70104 284.16055,468.71839 287.09502,470.71872 C 290.02948,472.71907 294.59267,469.61404 293.52166,466.49028 C 292.45064,463.36653 291.08393,462.17038 287.01749,462.95586 z "
|
||||
id="path7931" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 157.32993,388.01687 C 240.06214,383.69759 287.32367,387.19261 345.54264,390.07213"
|
||||
id="path3573"
|
||||
sodipodi:nodetypes="cs" />
|
||||
<path
|
||||
style="fill:url(#linearGradient7979);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:2.9830000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:0.52777778;color:#000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.00000000;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 299.17307,535.22016 C 307.72087,538.63929 303.44697,563.42791 290.62527,565.13747 C 277.80356,566.84703 191.47076,569.41137 176.08472,570.26615 C 160.69868,571.12093 119.66923,576.24961 119.66923,576.24961 C 119.66923,576.24961 113.68577,571.12093 112.83099,565.99225 C 111.97621,560.86357 169.24648,551.46099 189.76120,550.60621 C 210.27593,549.75143 248.25830,537.79821 253.86971,540.34885 C 272.67489,548.89665 294.04439,536.92972 299.17307,535.22016 z "
|
||||
id="path7245"
|
||||
sodipodi:nodetypes="csscsssc" />
|
||||
<path
|
||||
style="fill:#86d973;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 453.19526,478.54252 C 450.22096,478.65268 448.56857,478.21204 448.01777,480.08475 C 447.46697,481.95746 449.44984,485.48255 450.66159,485.81303 C 451.87335,486.14351 455.50860,483.72001 455.72892,482.06762 C 455.94924,480.41523 454.95780,479.20348 453.19526,478.54252 z "
|
||||
id="path8715" />
|
||||
<path
|
||||
style="fill:#86d973;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 451.76319,491.54131 C 449.56000,490.21940 445.15363,489.66861 444.49267,490.54988 C 443.83172,491.43116 447.35681,491.98195 446.58570,493.74450 C 445.81459,495.50705 444.27236,495.28673 443.72156,496.05784 C 443.17076,496.82896 442.17933,498.15087 443.28092,498.92199 C 444.38251,499.69310 452.20382,498.26103 452.86478,497.15944 C 453.52573,496.05784 455.61876,493.41402 451.76319,491.54131 z "
|
||||
id="path8717" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 41 KiB |
BIN
static/images/screen-shot.png
Normal file
After Width: | Height: | Size: 122 KiB |
5
static/js/jquery-1.9.1.min.js
vendored
Normal file
170
static/js/quickdocs.js
Normal file
|
@ -0,0 +1,170 @@
|
|||
var Quickdocs = Quickdocs || {};
|
||||
|
||||
(function($, Quickdocs) {
|
||||
|
||||
if (Quickdocs.init) return;
|
||||
|
||||
Quickdocs.init = $.Deferred(function() { $(this.resolve); }).promise();
|
||||
|
||||
Quickdocs.getCurrentScrollEl = function(jqObj) {
|
||||
var scrollTop = $(document).scrollTop();
|
||||
return _.chain($(jqObj))
|
||||
.filter(function(el) { return scrollTop > $(el).position().top; })
|
||||
.last()
|
||||
.value();
|
||||
};
|
||||
|
||||
Quickdocs.breadcrumbTimer_ = undefined;
|
||||
Quickdocs.updateBreadcrumbHeader = function() {
|
||||
var el = Quickdocs.getCurrentScrollEl('.system');
|
||||
if (el) {
|
||||
var $el = $(el);
|
||||
var breadcrumb = $('.breadcrumb-header-container');
|
||||
breadcrumb.children('.system-name, .package-name').remove();
|
||||
|
||||
var currentSystem = $el.find('header h1').text();
|
||||
var systemLink = $('<li class="system-name">')
|
||||
.append($('<a href="#system-' + currentSystem + '">')
|
||||
.text(currentSystem));
|
||||
breadcrumb.append(systemLink);
|
||||
|
||||
var packageEl = Quickdocs.getCurrentScrollEl($el.find('.package'));
|
||||
if (packageEl) {
|
||||
var currentPackage = $(packageEl).find('h2').text();
|
||||
|
||||
var packageLink = $('<li class="package-name">')
|
||||
.append($('<a href="#package-' + currentPackage + '">')
|
||||
.text(currentPackage));
|
||||
packageLink.addClass('current');
|
||||
breadcrumb.append(packageLink);
|
||||
}
|
||||
else {
|
||||
systemLink.addClass('current');
|
||||
}
|
||||
|
||||
$('.breadcrumb-header-container').show().css({ opacity: 0.7 });
|
||||
$('.pager-link-container').show();
|
||||
|
||||
if (Quickdocs.breadcrumbTimer_ !== undefined) {
|
||||
clearTimeout(Quickdocs.breadcrumbTimer_);
|
||||
}
|
||||
Quickdocs.breadcrumbTimer_ = setTimeout(function() {
|
||||
$('.breadcrumb-header-container').css({ opacity: 0.5 }, 100);
|
||||
Quickdocs.breadcrumbTimer_ = undefined;
|
||||
}, 200);
|
||||
}
|
||||
else {
|
||||
$('.breadcrumb-header-container').hide();
|
||||
$('.pager-link-container').hide();
|
||||
}
|
||||
};
|
||||
|
||||
$(document).on('scroll', Quickdocs.updateBreadcrumbHeader);
|
||||
|
||||
Quickdocs.smoothScrollTo = function(el, opt_speed) {
|
||||
var speed = opt_speed || 300;
|
||||
var $el = $(el);
|
||||
if ($el.length !== 0) {
|
||||
var position = $el.offset().top;
|
||||
$(/safari/i.test(navigator.userAgent) ? 'body' : 'html').animate({
|
||||
scrollTop: position
|
||||
}, speed, 'swing', function() {
|
||||
var id = $el.attr('id');
|
||||
if (!id) {
|
||||
id = $el.find('h1,h2').attr('id');
|
||||
}
|
||||
if (id && window.history && window.history.pushState) {
|
||||
history.pushState({}, null, '#'+id);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$(document).on('click', 'a[href^=#]', function(e) {
|
||||
e.preventDefault();
|
||||
var href = $(this).attr("href");
|
||||
href = href.replace(/\./g, '\\.');
|
||||
var target = $(href == "#" || href == "" ? 'html' : href);
|
||||
Quickdocs.smoothScrollTo(target);
|
||||
});
|
||||
|
||||
$(document).on('click', '.error-open-detail', function(e) {
|
||||
var detail = $(this).hide().closest('.error').find('.error-detail');
|
||||
|
||||
var height = detail.height();
|
||||
detail.css({
|
||||
height: 0
|
||||
}).show().animate({'height': height}, 200);
|
||||
});
|
||||
|
||||
Quickdocs.getPrevComponent = function(el) {
|
||||
var $el = $(el);
|
||||
if ($el.hasClass('package')) {
|
||||
var prev = $el.prev('.package');
|
||||
if (prev.length === 0) {
|
||||
return $el.closest('.system');
|
||||
}
|
||||
return prev;
|
||||
}
|
||||
else if ($el.hasClass('system')) {
|
||||
var prev = $el.prev('.system');
|
||||
if (prev.length === 0) {
|
||||
return $('#global-header');
|
||||
}
|
||||
return prev;
|
||||
}
|
||||
return $el;
|
||||
};
|
||||
|
||||
Quickdocs.getNextComponent = function(el) {
|
||||
var $el = $(el);
|
||||
if ($el.hasClass('package')) {
|
||||
var next = $el.next('.package');
|
||||
if (next.length === 0) {
|
||||
next = $el.closest('.system').next('.system');
|
||||
if (next.length === 0) {
|
||||
return $('#global-footer');
|
||||
}
|
||||
}
|
||||
return next;
|
||||
}
|
||||
else if ($el.hasClass('system')) {
|
||||
var next = $el.find('.package').first();
|
||||
if (next.length === 0) {
|
||||
return $('#global-footer');
|
||||
}
|
||||
return next;
|
||||
}
|
||||
return $el;
|
||||
};
|
||||
|
||||
$(document).on('click', '.pager-link', function(e) {
|
||||
var target = $(e.target);
|
||||
var current = $('.breadcrumb-header-container .current a').attr('href');
|
||||
current = current.replace(/\./g, '\\.');
|
||||
if (target.attr('title') === 'up') {
|
||||
var scrollTo = Quickdocs.getPrevComponent($(current).closest('.package, .system'));
|
||||
Quickdocs.smoothScrollTo(scrollTo);
|
||||
}
|
||||
else if (target.attr('title') === 'down') {
|
||||
var scrollTo = Quickdocs.getNextComponent($(current).closest('.package, .system'));
|
||||
Quickdocs.smoothScrollTo(scrollTo);
|
||||
}
|
||||
});
|
||||
|
||||
Quickdocs.init.done(function() {
|
||||
$('.folding-list').each(function(i, list) {
|
||||
var rows = $(list).children('li');
|
||||
if (rows.length > 3) {
|
||||
rows.slice(3).hide();
|
||||
var loadMore = $('<a class="lsf">down</a>').on('click', function() {
|
||||
var parent = $(this).closest('li');
|
||||
parent.siblings('li:hidden').fadeIn();
|
||||
parent.hide();
|
||||
});
|
||||
$('<li class="load-more">').append(loadMore).appendTo(list);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
}).call(this, jQuery, Quickdocs);
|
1
static/js/underscore-min.js
vendored
Normal file
BIN
static/lisp-logo300x100.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
36
templates/_errors/404.html
Normal file
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="shortcut icon" href="/favicon.ico" />
|
||||
<title>Quickdocs</title>
|
||||
<link rel="stylesheet" type="text/css" href="/css/LigatureSymbols/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/main.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/error.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="global-header">
|
||||
<h1 class="logo"><a href="/">Quickdocs</a></h1>
|
||||
<form class="search-form" method="get" action="/search">
|
||||
<input type="text" name="q" value="" placeholder="Search for projects" />
|
||||
<input type="submit" class="lsf" value="search" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="content">
|
||||
<div class="error-message">
|
||||
<h2>Page not found</h2>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="global-footer">
|
||||
© 2013-2015 <a href="http://8arrow.org/">Eitaro Fukamachi</a>
|
||||
<div class="lisp-logo"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
123
templates/api.html
Normal file
|
@ -0,0 +1,123 @@
|
|||
{% extends "layouts/default.html" %}
|
||||
{% block title %}{{ project-name }} | Quickdocs{% endblock %}
|
||||
{% block css %}
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css">
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<header>
|
||||
<h2 class="project-name"><a href="/{{ project-name }}/">{{ project-name }}</a></h2>
|
||||
<span class="subtitle">API Reference</span>
|
||||
{% include "partials/header-links.html" %}
|
||||
</header>
|
||||
|
||||
<nav class="toc-systems">
|
||||
<header><h2>Systems</h2></header>
|
||||
<dl>
|
||||
{% for system in systems %}
|
||||
<dt><a href="#system-{{ system.name }}">{{ system.name }}</a></dt>
|
||||
{% if system.description %}
|
||||
<dd class="one-line-description">{{ system.description }}</dd>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</nav>
|
||||
|
||||
{% for system in systems %}
|
||||
<article class="system">
|
||||
<nav class="toc">
|
||||
<h3>Package Index</h3>
|
||||
<ul class="toc-packages">
|
||||
{% for package in system.packages %}
|
||||
<li><a href="#package-{{ package.name }}" title="{{ package.name }}">{{ package.name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<header>
|
||||
<h1 id="system-{{ system.name }}">{{ system.name }}</h1>
|
||||
{% if system.description %}
|
||||
<p class="description">{{ system.description }}</p>
|
||||
{% endif %}
|
||||
</header>
|
||||
|
||||
<div class="api">
|
||||
{% for package in system.packages %}
|
||||
<section class="package">
|
||||
<h2 id="package-{{ package.name }}">{{ package.name }}</h2>
|
||||
{% if package.docstring %}
|
||||
<div class="docstring"><pre>{{ package.docstring }}</pre></div>
|
||||
{% endif %}
|
||||
<ul>
|
||||
{% for symbol in package.symbols %}
|
||||
{% if symbol.externalp %}
|
||||
<li class="symbol">
|
||||
<span class="symbol-type label {{ symbol.type }}">{{ symbol.type | capfirst }}</span>
|
||||
<code class="symbol-name">
|
||||
{% if symbol.setfp %}
|
||||
(setf {{ symbol.name }})
|
||||
{% else %}
|
||||
{{ symbol.name }}
|
||||
{% endif %}
|
||||
</code>
|
||||
{% if symbol.lambda-list %}
|
||||
<span class="lambda-list">
|
||||
{{ symbol.lambda-list | lambda-list | safe }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if symbol.initial-value %}
|
||||
{% endif %}
|
||||
<div class="docstring">{{ symbol.docstring }}</div>
|
||||
{% if symbol.type == "class" %}
|
||||
{% if symbol.slots %}
|
||||
<dl class="slot-list">
|
||||
{% for slot in symbol.slots %}
|
||||
<dt>
|
||||
<code class="symbol-name">{{ slot.name | symbol }}</code>
|
||||
{% if slot.accessors %}
|
||||
<span class="label">Accessor</span>:
|
||||
{% for accessor in slot.accessors %}
|
||||
<code class="symbol-name">{{ accessor }}</code>{% if not forloop.last %} {% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if slot.readers %}
|
||||
<span class="label">Reader</span>:
|
||||
{% for reader in slot.readers %}
|
||||
<code class="symbol-name">{{ reader }}</code>{% if not forloop.last %} {% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if slot.writers %}
|
||||
<span class="label">Writer</span>:
|
||||
{% for writer in slot.writer %}
|
||||
<code class="symbol-name">{{ writer }}</code>{% if not forloop.last %} {% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</dt>
|
||||
{% if slot.docstring %}
|
||||
<dd>{{ slot.docstring }}</dd>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</dl>
|
||||
{% else %}
|
||||
No slots
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
|
||||
{% include "partials/footer.html" %}
|
||||
|
||||
<ul class="breadcrumb-header-container" style="display: none">
|
||||
<li><a href="#global-header" class="top-link lsf">home</a></li>
|
||||
</ul>
|
||||
<div class="pager-link-container" style="display: none">
|
||||
<a class="pager-link lsf-icon" title="up">Prev</a>
|
||||
<a class="pager-link lsf-icon" title="down">Next</a>
|
||||
</div>
|
||||
{% endblock %}
|
70
templates/index.html
Normal file
|
@ -0,0 +1,70 @@
|
|||
{% extends "layouts/default.html" %}
|
||||
{% block title %}Quickdocs{% endblock %}
|
||||
{% block css %}
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/index.css">
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<section class="search-libraries">
|
||||
<h2>Library Documentation Hosting<br/>for Common Lisp</h2>
|
||||
<div class="categories">
|
||||
<h3>Search by Category</h3>
|
||||
<ul>
|
||||
<li><a href="/search?q=web" class="lsf-icon" title="web">Web development</a></li>
|
||||
<li><a href="/search?q=graphics" class="lsf-icon" title="image">Graphics</a></li>
|
||||
<li><a href="/search?q=GUI" class="lsf-icon" title="tile">GUI</a></li>
|
||||
<li><a href="/search?q=system+programming" class="lsf-icon" title="setup">System & Low-level</a></li>
|
||||
<li><a href="/search?q=test" class="lsf-icon" title="check">Testing framework</a></li>
|
||||
<li><a href="/search?q=database" class="lsf-icon" title="server">Database</a></li>
|
||||
<li><a href="/search?q=utilities" class="lsf-icon" title="twinkle">Utility Collection</a></li>
|
||||
<li><a href="/search?q=concurrency" class="lsf-icon" title="shuffle">Concurrency</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="catch">
|
||||
<div class="catch-copy">
|
||||
<strong>Ready</strong> and <strong>Up-to-Date</strong><br/>
|
||||
Documentation<br/>
|
||||
for All Common Lisp Projects.
|
||||
</div>
|
||||
<img class="screen-shot" src="/images/screen-shot.png" />
|
||||
</section>
|
||||
|
||||
<section class="teasers">
|
||||
<div class="teaser">
|
||||
<div class="lsf teaser-icon">network</div>
|
||||
<h3>Same place, same appearance</h3>
|
||||
<p>Don't waste your time looking around for documentation; all CL documentation is here, with the same appearance.</p>
|
||||
</div>
|
||||
<div class="teaser">
|
||||
<div class="lsf teaser-icon">time</div>
|
||||
<h3>Always up-to-date</h3>
|
||||
<p>All documentation is generated automatically, moments after the monthly Quicklisp updates.</p>
|
||||
</div>
|
||||
<div class="teaser">
|
||||
<div class="lsf teaser-icon">code</div>
|
||||
<h3>Code is eloquent</h3>
|
||||
<p>Other documentation generators destroy code structure and context. They split symbols by their types and simply arrange them in alphabetical order.</p>
|
||||
<p>While such documentation may be easy to use as an index, it is not suitable for a quick look at or overview of a library.</p>
|
||||
<p>Quickdocs respects the code and keeps its structure.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="soften" />
|
||||
|
||||
<section class="contribution">
|
||||
<h2>Contributing to Quickdocs</h2>
|
||||
<p>Quickdocs is an open source project that is hosted on GitHub. Feel free to send pull requests, bug reports or suggestions.</p>
|
||||
<a href="https://github.com/fukamachi/quickdocs" class="contribute-button" title="See Quickdocs on GitHub">See <strong class="logo">Quickdocs</strong> on <img src="/images/github.png" width="55px" height="15px" alt="GitHub" /></a>
|
||||
</section>
|
||||
|
||||
<footer id="global-footer">
|
||||
<a href="#global-header" class="back-to-top-link lsf-icon" title="arrowup">Back to Top</a>
|
||||
<div class="dist-version">
|
||||
Quicklisp: {{ ql-dist-version }}
|
||||
</div>
|
||||
|
||||
<small>© 2013-2015 <a href="http://8arrow.org/">Eitaro Fukamachi</a></small>
|
||||
<div class="lisp-logo"></div>
|
||||
</footer>
|
||||
{% endblock %}
|
20
templates/layouts/default.html
Normal file
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<link rel="stylesheet" type="text/css" href="/css/LigatureSymbols/style.css" />
|
||||
{% block css %}{% endblock %}
|
||||
<script type="text/javascript" src="/js/jquery-1.9.1.min.js"></script>
|
||||
<script type="text/javascript" src="/js/underscore-min.js"></script>
|
||||
<script type="text/javascript" src="/js/quickdocs.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
{% include "partials/header.html" %}
|
||||
<div id="content">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
4
templates/partials/footer.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
<footer id="global-footer">
|
||||
<small>© 2013-2015 <a href="http://8arrow.org/">Eitaro Fukamachi</a></small>
|
||||
<div class="lisp-logo"></div>
|
||||
</footer>
|
9
templates/partials/header-links.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
<aside class="header-links">
|
||||
{% if homepage %}
|
||||
<a href="{{ homepage }}" class="lsf-icon" title="web">Website</a>
|
||||
{% endif %}
|
||||
{% if repos-url %}
|
||||
<a href="{{ repos-url }}" class="lsf-icon" title="file">Source Code</a>
|
||||
{% endif %}
|
||||
<a href="{{ archive-url }}" class="lsf-icon" title="download">Download</a>
|
||||
</aside>
|
7
templates/partials/header.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div id="global-header">
|
||||
<h1 class="logo"><a href="/">Quickdocs</a></h1>
|
||||
<form class="search-form" method="get" action="/search">
|
||||
<input type="text" name="q" value="{{ query }}" placeholder="Search for projects" />
|
||||
<input type="submit" class="lsf" value="search" />
|
||||
</form>
|
||||
</div>
|
98
templates/project.html
Normal file
|
@ -0,0 +1,98 @@
|
|||
{% extends "layouts/default.html" %}
|
||||
{% block title %}{{ project-name }} | Quickdocs{% endblock %}
|
||||
{% block css %}
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css">
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<header>
|
||||
<h2 class="project-name"><a href="/{{ project-name }}/">{{ project-name }}</a></h2>
|
||||
<span class="subtitle ql-version">{{ ql-dist-version }}</span>
|
||||
{% include "partials/header-links.html" %}
|
||||
</header>
|
||||
|
||||
<article>
|
||||
{% if readme %}
|
||||
<section class="readme">
|
||||
<div class="readme-body">{{ readme | safe }}</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% if authors or maintainers or licenses or categories %}
|
||||
<section class="information">
|
||||
<dl>
|
||||
{% if authors %}
|
||||
<dt>Author</dt>
|
||||
<dd>{{ authors | join:", " }}</dd>
|
||||
{% endif %}
|
||||
{% if maintainers %}
|
||||
<dt>Maintainer</dt>
|
||||
<dd>{{ maintainers | join:", " }}</dd>
|
||||
{% endif %}
|
||||
{% if licenses %}
|
||||
<dt>License</dt>
|
||||
<dd>{{ licenses | join:", " }}</dd>
|
||||
{% endif %}
|
||||
{% if categories %}
|
||||
<dt>Categories</dt>
|
||||
<dd>
|
||||
{% for category in categories %}
|
||||
<a href="/search?q={{ category }}">{{ category }}</a>{% if not forloop.last %}, {% endif %}
|
||||
{% endfor %}
|
||||
</dd>
|
||||
{% endif %}
|
||||
</dl>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
<aside class="dependencies">
|
||||
<h3>Requirements</h3>
|
||||
<span class="count">{{ dependencies-count }}</span>
|
||||
{% if dependencies %}
|
||||
<ul class="folding-list">
|
||||
{% for dependency in dependencies %}
|
||||
<li>
|
||||
<a href="/{{ dependency.name }}">
|
||||
<span class="name">{{ dependency.name }}</span>
|
||||
<span class="description">{{ dependency.description }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<em class="none">None.</em>
|
||||
{% endif %}
|
||||
</aside>
|
||||
|
||||
<aside class="depending">
|
||||
<h3>Required by</h3>
|
||||
<span class="count">{{ dependees | length }}</span>
|
||||
{% if dependees %}
|
||||
<ul class="folding-list">
|
||||
{% for dependee in dependees %}
|
||||
<li>
|
||||
<a href="/{{ dependee.name }}">
|
||||
<span class="name">{{ dependee.name }}</span>
|
||||
<span class="description">{{ dependee.description }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</aside>
|
||||
|
||||
<aside class="links">
|
||||
<h3>Links</h3>
|
||||
<ul>
|
||||
<li><a href="/{{ project-name }}/api">API Reference</a></li>
|
||||
{% if homepage %}
|
||||
<li><a href="{{ homepage }}">Website</a></li>
|
||||
{% endif %}
|
||||
{% if repos-url %}
|
||||
<li><a href="{{ repos-url }}">Source Code</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</aside>
|
||||
</article>
|
||||
|
||||
{% include "partials/footer.html" %}
|
||||
{% endblock %}
|
38
templates/search.html
Normal file
|
@ -0,0 +1,38 @@
|
|||
{% extends "layouts/default.html" %}
|
||||
{% block title %}Search Results | Quickdocs{% endblock %}
|
||||
{% block css %}
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css">
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<header>
|
||||
{% if query == "" %}
|
||||
<h2>All {{ projects | length }} Projects</h2>
|
||||
{% else %}
|
||||
<h2>Search Results</h2>
|
||||
<div class="search-query">for <strong>{{ query }}</strong></span>
|
||||
{% endif %}
|
||||
<br />
|
||||
</header>
|
||||
|
||||
{% if query != "" %}
|
||||
<p class="search-results-summary"><strong>{{ projects | length }}</strong> projects are found.</p>
|
||||
{% endif %}
|
||||
|
||||
{% if projects %}
|
||||
<ul class="search-result-container">
|
||||
{% for project in projects %}
|
||||
<li class="search-result">
|
||||
<span class="project-name">
|
||||
<a href="/{{ project.name }}/">{{ project.name }}</a>
|
||||
</span>
|
||||
<span class="ql-version">
|
||||
{{ project.release-version }}
|
||||
</span>
|
||||
<p class="description">{{ project.description }}</p>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% include "partials/footer.html" %}
|
||||
{% endblock %}
|